{"version":3,"file":"main.2cb08a51396c5b22.js","mappings":"qIA+HO,MAAMA,EACZ,IAAIC,MACH,0BACWC,EACZ,IAAID,MACH,wCACWE,EACZ,IAAIF,MACH,sCACWG,EACZ,IAAIH,MACH,kCACWI,EACZ,IAAIJ,MACH,8BACWK,EACZ,IAAIL,MACH,4BACWM,EACZ,IAAIN,MACH,yCACWO,EACZ,IAAIP,MACH,iDACWQ,EACZ,IAAIR,MACH,0BACWS,EACZ,IAAIT,MACH,8BACWU,EACZ,IAAIV,MACH,wBACWW,EACZ,IAAIX,MACH,2BACWY,EACZ,IAAIZ,MACH,iBACWa,EACZ,IAAIb,MACH,iCACWc,EACZ,IAAId,MACH,0CACWe,EACZ,IAAIf,MACH,4BACWgB,EACZ,IAAIhB,MACH,qCACWiB,EACZ,IAAIjB,MACH,2BACWkB,EACZ,IAAIlB,MACH,oCACWmB,EACZ,IAAInB,MACH,4BACWoB,EACZ,IAAIpB,MACH,wCACWqB,EACZ,IAAIrB,MACH,6CACWsB,EACZ,IAAItB,MACH,sCACWuB,EACZ,IAAIvB,MACH,qCACWwB,EACZ,IAAIxB,MACH,mDACWyB,EACZ,IAAIzB,MACH,iCACW0B,EACZ,IAAI1B,MACH,yCACW2B,GACZ,IAAI3B,MACH,4CACW4B,GACZ,IAAI5B,MACH,kCACW6B,GACZ,IAAI7B,MACH,2BACW8B,GACZ,IAAI9B,MACH,0DACW+B,GACZ,IAAI/B,MACH,6BACWgC,GACZ,IAAIhC,MACH,uCACWiC,GACZ,IAAIjC,MACH,qCACWkC,GACZ,IAAIlC,MACH,sCACWmC,GACZ,IAAInC,MACH,oCACWoC,GACZ,IAAIpC,MACH,oCAQK,IAAMqC,GAAc,KAArB,MAAOA,GASLC,cACN,CACCC,uBACCxC,EACDyC,qCACCvC,EACDwC,mCACCvC,EACDwC,+BACCvC,EACDwC,2BACCvC,EACDwC,yBACCvC,EACDwC,8CACCtC,EACDuC,sCACCxC,EACDyC,uBACCvC,EACDwC,2BACCvC,EACDwC,qBACCvC,EACDwC,wBACCvC,EACDwC,cACCvC,EACDwC,8BACCvC,EACDwC,uCACCvC,EACDwC,yBACCvC,EACDwC,kCACCvC,EACDwC,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,IAAa4c,aAAaC,eACvCjK,UAAU,EACVqB,QAAS,KACTZ,QAAS,CACR,CACCQ,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KACPpB,MAAO,MAER,CACCoB,MAAO,KAC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ACJzmC,IAAUsG,cACV0K,GAAM8yB,OAAO2C,gBAMX5pC,IAAa4F,MALbkhC,IAAWC,WACZD,IAAWE,WACV7yB,GAAM8yB,MAAM2C,gBACb9C,IAAWK,cACTC,gBAGCyC,GACJ1mC,IAAUsG,cACV0K,GAAM8yB,OAAO4C,cAMX7pC,IAAa4F,MALbkhC,IAAWC,WACZD,IAAWE,WACV7yB,GAAM8yB,MAAM4C,cACb/C,IAAWK,cACTC,gBAGC0C,GACL31B,GAAM8yB,MAAM6C,WACTr0B,IAAag0B,iBACdt1B,GAAM8yB,MAAM6C,YACX9pC,IAAa4F,MAEXmkC,GACL51B,GAAM8yB,MAAM8C,WACTt0B,IAAag0B,iBACdt1B,GAAM8yB,MAAM8C,YACX/pC,IAAa4F,MA8DjB,OA3DCkE,GAAKs5B,cACFt5B,GAAKy5B,4BACJz5B,GAAK25B,iBACJ,OACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,SACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,SACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,kBACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,gBACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,cACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,cACD35B,GAAK85B,OACL95B,GAAK25B,iBACJ,cACD35B,GAAK85B,OACN95B,GAAK85B,OACL95B,GAAK05B,yBACJ15B,GAAK25B,kBACHtvB,GAAM8yB,MAAMx6B,MACXzM,IAAa4F,OAChBkE,GAAK85B,OACL95B,GAAK25B,kBACHtvB,GAAM8yB,MAAM73B,QACXpP,IAAa4F,OAChBkE,GAAK85B,OACL95B,GAAK25B,kBACHtvB,GAAM8yB,MAAMtpC,QACXqC,IAAa4F,OAChBkE,GAAK85B,OACL95B,GAAK25B,iBACJmG,GACD9/B,GAAK85B,OACL95B,GAAK25B,iBACJoG,GACD//B,GAAK85B,OACL95B,GAAK25B,iBACJqG,GACDhgC,GAAK85B,OACL95B,GAAK25B,iBACJsG,GACDjgC,GAAK85B,OACL95B,GAAK25B,kBACHtvB,GA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CnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,cAAeD,EAAEuqC,IACpC,IAAe,CAAEtqC,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAA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L,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK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ACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,MAAO,GAkBT,SAASoG,GAAmB19C,GAG3B,OAFQ,OAASA,EAAE99G,QAAQ4yJ,GAAW,iBAAiB5yJ,QAAQ,SAAS,MAE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8+C,GACAQ,GACAC,GACArR,MACA4kB,MACAC,KACAC,KACAvP,GACAwP,KACA/rB,MACAgsB,MACAxP,GACAC,GACAK,GACAM,GACA6O,KACA5O,GACAld,MACAuf,GACAC,GACAuM,KACAtM,GACA15B,GACA8P,GACAlF,GACA7C,KACAoQ,KACAuR,GACAiQ,GACAsM,MACApM,GACAqM,KACApM,GACAloC,GACAqoC,GACAI,GACAE,GACA1D,KACA9+F,GACAyiG,GACA1yB,GACAq+B,KACAC,KACAxL,GACAlxB,GACAi0B,GACA5c,KACAjvB,KACAu0C,MACAttC,GACAilC,GACApsH,GACAqwH,GACA8B,GACA/iB,KACAslB,KACAC,MACArvF,GACAwG,GACAsmF,GACAwC,MACAC,KACAvC,GACAc,GACAC,GACAhzH,KACAizH,GACAC,GAGAvyD,GACA8+C,GACAQ,GACAC,GACArR,MACA4kB,MACAC,KACAC,KACAvP,GACAwP,KACA/rB,MACAgsB,MACAxP,GACAC,GACAK,GACAM,GACA6O,KACA5O,GACAld,MACAuf,GACAC,GACAuM,KACAtM,GACA15B,GACA8P,GACAlF,GACA7C,KACAoQ,KACAuR,GACAiQ,GACAsM,MACApM,GACAqM,KACApM,GACAloC,GACAqoC,GACAI,GACAE,GACA1D,KACA9+F,GACAyiG,GACA1yB,GACAq+B,KACAC,KACAxL,GACAlxB,GACAi0B,GACA5c,KACAjvB,KACAu0C,MACAttC,GACAilC,GACApsH,GACAqwH,GACA8B,GACA/iB,KACAslB,KACAC,MACArvF,GACAwG,GACAsmF,GACAwC,MACAC,KACAvC,GACAc,GACAC,GACAhzH,KACAizH,GACAC,aAaWM,CAAa,qBC9WdiB,GAAZ,SAAYA,GAMXA,SAAAC,mBAAA,qBAMAD,EAAAE,yBAAA,2BAZWF,CAaZ,CAbA,CAAYA,IAAqB,gBCuB1B,IAAMG,GAAe,MAAtB,MAAOA,EAUMtuM,WADlBxtP,YACkBwtP,GAAAttP,KAAAstP,YAElB,CAUOuuM,WAQCr3b,SAAuD,GAQ9C2pP,gBAA0B,iBAU3C,cAAY2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54xB,UAAY7vE,CAErC,CACA66hB,QAEI,OADe5mjB,KAAK+oS,UAAU,oBAE1B,IAAK,MACD/oS,KAAK013B,WACD113B,KAAK213B,kBACL313B,KAAK413B,cACD513B,KAAK213B,kBACL313B,KAAK613B,aACD713B,KAAK213B,iBACL313B,KAAK813B,cAIjB,MACJ,IAAK,SACD913B,KAAK413B,cACD513B,KAAK213B,kBACL313B,KAAK013B,WACD113B,KAAK213B,kBACL313B,KAAK613B,aACD713B,KAAK213B,iBACL313B,KAAK813B,cAIjB,MACJ,IAAK,OACD913B,KAAK813B,YACD913B,KAAK213B,kBACL313B,KAAK613B,aACD713B,KAAK213B,kBACL313B,KAAK013B,WACD113B,KAAK213B,iBACL313B,KAAK413B,gBAIjB,MACJ,IAAK,QACD513B,KAAK613B,aACD713B,KAAK213B,kBACL313B,KAAK813B,YACD913B,KAAK213B,kBACL313B,KAAK013B,WACD113B,KAAK213B,iBACL313B,KAAK413B,gBAM7B,CACAG,gBACI,GAAmC,SAA/B/13B,KAAK+oS,UAAU,aAAyD,WAA/B/oS,KAAK+oS,UAAU,YAA0B,CAClF,IAAIrnS,EAAS1B,KAAKqgG,GAAGvH,cAAc4F,wBAGnC,MAAO,CAAEM,KAFQt9F,EAAOs9F,KAAOklO,IAAWsyH,sBAEf53V,IADXl9F,EAAOk9F,IAAMslO,IAAWuyH,qBAE5C,CAEI,MAAO,CAAEz3V,KAAM,EAAGJ,IAAK,EAE/B,CACAi3xB,aACI713B,KAAKg23B,SAAS,SACd,IAAIC,EAAaj23B,KAAK+13B,gBAClB/2xB,EAAOi3xB,EAAWj3xB,KAAOklO,IAAW23F,cAAc77Z,KAAKqgG,GAAGvH,eAC1D8F,EAAMq3xB,EAAWr3xB,KAAOslO,IAAW6tgB,eAAe/x0B,KAAKqgG,GAAGvH,eAAiBorO,IAAW6tgB,eAAe/x0B,KAAKuwG,YAAc,EAC5HvwG,KAAKuwG,UAAUnV,MAAM4D,KAAOA,EAAOh/F,KAAK+oS,UAAU,gBAAkB,KACpE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","names":["AuthenticateApiServiceToken","InjectionToken","DisplayComponentDefinitionApiServiceToken","DisplayComponentInstanceApiServiceToken","DisplayComponentTypeApiServiceToken","EntityDefinitionApiServiceToken","EntityInstanceApiServiceToken","EntityInstanceRuleViolationApiServiceToken","EntityInstanceRuleViolationOverrideApiServiceToken","EntityLayoutApiServiceToken","EntityLayoutTypeApiServiceToken","EntityTypeApiServiceToken","EntityVersionApiServiceToken","LogApiServiceToken","OperationDefinitionApiServiceToken","OperationDefinitionParameterApiServiceToken","OperationGroupApiServiceToken","OperationGroupHierarchyApiServiceToken","OperationTypeApiServiceToken","OperationTypeParameterApiServiceToken","RuleDefinitionApiServiceToken","RulePresentationDefinitionApiServiceToken","RulePresentationLogicDefinitionApiServiceToken","RuleValidationDefinitionApiServiceToken","RuleValidatorDefinitionApiServiceToken","RuleViolationWorkflowActionDefinitionApiServiceToken","SecurityApplicationApiServiceToken","SecurityAccessPolicyMappingApiServiceToken","SecurityAccessPolicyDefinitionApiServiceToken","SecurityAccessPolicyApiServiceToken","SecurityGroupApiServiceToken","SecurityGroupRuleDefinitionViolationOverrideApiServiceToken","SecuritySessionApiServiceToken","WorkflowActionDefinitionsApiServiceToken","WorkflowActionInstancesApiServiceToken","WorkflowActionRequisitesApiServiceToken","WorkflowFailureActionsApiServiceToken","WorkflowRequisiteTypesApiServiceToken","ApiTokenLookup","static","AuthenticateApiService","DisplayComponentDefinitionApiService","DisplayComponentInstanceApiService","DisplayComponentTypeApiService","EntityDefinitionApiService","EntityInstanceApiService","EntityInstanceRuleViolationOverrideApiService","EntityInstanceRuleViolationApiService","EntityLayoutApiService","EntityLayoutTypeApiService","EntityTypeApiService","EntityVersionApiService","LogApiService","OperationDefinitionApiService","OperationDefinitionParameterApiService","OperationGroupApiService","OperationGroupHierarchyApiService","OperationTypeApiService","OperationTypeParameterApiService","RuleDefinitionApiService","RulePresentationDefinitionApiService","RulePresentationLogicDefinitionApiService","RuleValidationDefinitionApiService","RuleValidatorDefinitionApiService","RuleViolationWorkflowActionDefinitionApiService","SecurityApplicationApiService","SecurityAccessPolicyMappingApiService","SecurityAccessPolicyDefinitionApiService","SecurityAccessPolicyApiService","SecurityGroupApiService","SecurityGroupRuleDefinitionViolationOverrideApiService","SecuritySessionApiService","WorkflowActionDefinitionsApiService","WorkflowActionInstancesApiService","WorkflowActionRequisitesApiService","WorkflowFailureActionsApiService","WorkflowRequisiteTypesApiService","ApiError","Error","title","messages","constructor","super","this","length","message","description","status","BaseEntityApiService","BaseApiService","cacheService","displayComponentService","operationService","entityService","ruleService","typeGroup","endpoint","httpClient","controllerUrlIndex","get","id","_this","_asyncToGenerator","url","getBaseUrl","lastValueFrom","query","filter","orderBy","offset","limit","last","_this2","formUrlParam","getSingleQueryResult","queryString","allowNullReturn","_this3","queryMatches","aggregate","method","property","groupBy","_this4","AppConstants","apiMethods","create","entity","_this5","resetAssociatedCache","response","post","observe","createdItemId","getCreatedAtRouteIdentifier","headers","Promise","resolve","update","_this6","baseUrl","put","delete","_this7","getForeignKeyMatches","columnName","associatedItems","_this8","commaSeparatedIdArray","map","item","join","characters","comma","AppConfig","settings","webApi","rootUrl","version","getNestedUrl","routeIdentifier","createdAtRouteLocation","parseInt","substring","lastIndexOf","_this9","resetSingletonStorageVariables","split","forwardSlash","cachesAreNullOrInsecure","requestClone","HttpRequest","httpRequestTypes","matchingPerformanceCacheIdentifier","getRequestConfigurationIdentifier","AnyHelper","isNullOrWhitespace","clearExistingResponse","targetController","isNull","apiControllers","displayComponentDefinitions","displayComponentInstances","displayComponentTypes","operationDefinitions","operationDefinitionParameters","operationGroups","operationGroupHierarchies","operationTypes","operationTypeParameters","ruleDefinitions","rulePresentationDefinitions","rulePresentationLogicDefinitions","ruleViolationWorkflowActionDefinitions","workflowActionDefinitions","securityGroupRuleDefinitionViolationOverrides","entityDefinitions","entityLayouts","entityLayoutTypes","entityTypes","entityVersions","getNotImplementedMessage","methodName","supportedMethods","standardMessage","getHandledByOthersMessage","otherService","t","factory","ɵfac","queryOnlyGetHeaders","HttpHeaders","set","httpHeaders","queryOnlyGet","data","empty","key","hasOwnProperty","dataValue","dataIsAnArray","isArray","questionMark","and","encodeParameter","formArrayParameter","index","propertyTypes","string","replace","http","cache","i0","HttpClient","CacheService","getSecurityGroups","nestedRouteTypes","securityGroups","createSecurityGroupMap","securityGroupId","nestedUrl","deleteSecurityGroupMap","entityInstanceRuleViolationOverrides","entityInstanceRuleViolations","_entity","_id","ObserveType","Body","Events","Response","entityInstances","entityInstanceTypeGroup","GetNewService","validateRequest","getActions","actions","getPermissions","getHierarchyPermissions","hierarchyTypeGroups","getHistory","history","getChildren","childTypeGroup","children","getChildrenAggregate","getParents","parentTypeGroup","parents","getParentsAggregate","_this10","_this11","_this12","createEntityInstance","parentId","parameters","_this13","hasParentInformation","isNullOrEmpty","initialTypeGroup","_this14","_this15","patch","_this16","executeAction","actionName","responseType","ResponseType","Json","_this17","executeActionAsObservable","Blob","observeType","anyHttp","startsWith","reportProgress","assignChild","childId","_this18","unAssignChild","_this19","uploadFile","formData","uploadAction","workflowActions","fileUpload","downloadFile","downloadAction","fileDownload","getExternalReportConfiguration","reportType","externalReportConfiguration","params","getReallySimpleSyndicationFeed","feedSourceUrl","reallySimpleSyndicationFeed","addLogEntry","logEntry","logging","serverLogUrl","getLogMessages","i1","createChild","updateChild","deleteChild","operationGroupRelationship","type","login","userName","password","applicationToken","encodedUsernamePassword","btoa","authenticate","application","authorization","pipe","user","body","verify","token","code","verificationCode","encodeURIComponent","reset","getSecurityGroupUsers","users","createSecurityGroupUser","userId","resetCachedUsersUrl","deleteSecurityGroupUser","usersUrl","securitySessions","querySessionEvents","events","aggregateSessionEvents","load","jsonFile","environment","name","HttpXhrBackend","build","XMLHttpRequest","$event","_r4","ctx_r3","validityChanged","ctx_r1","context","source","activeMenuItem","currentData","dynamicFormlyLayout","ClonePowerBiReportComponent","PowerBiWizardStepDirective","powerBiService","powerBiApiService","displayComponentDefinitionApiService","displayComponentInstanceApiService","displayComponentTypeApiService","siteLayoutService","optionsFactory","sessionService","activityService","router","route","insuranceService","lookupType","ReportConstants","powerBiObjectTypes","dataset","initialValidationComplete","reportNameKey","businessIntelligenceUtilityMenu","emptyReportTemplateName","performPostInitActions","addToNext","cloneAndNavigate","bind","useExisting","loadEmptyTemplate","existingReportDefinition","reportDefinition","reportCloneName","reportName","securityGroupOptions","getSecurityGroupOptions","getMasterSecurityGroups","existingReportName","addOrUpdateStepData","newDatasetId","datasetId","newGroupId","customGroupId","newReportName","selectedSecurityGroups","FormlyConstants","customControls","input","wrappers","customFieldWrapper","props","label","tooltip","maxLength","required","validators","noUnderscoreStart","expression","validateNoUnderscoreStart","asyncValidators","uniqueReportName","validateUniqueReportName","customSelect","options","groupedSelectionOptions","groupedOption","groupedIdOptions","items","forEach","option","push","value","group","customMultiSelect","customInputSwitch","default","change","field","setTimeout","publicRulesValidator","formControl","placeholder","showClear","wizardStepLoading","control","indexOf","underscore","isPublicEnabled","definition","isDisabled","disabled","newReportDisplayComponentName","getReportDisplayComponentName","newBasePageDisplayComponentName","basePage","selectedGroupId","matchingReportNames","groupLevelData","report","StringHelper","trim","matchingDisplayNames","commonProperties","matchingBasePageNames","valid","markAsTouched","updateValueAndValidity","emptyReportTemplateWorkspace","standardGroupId","matchingReports","createReportDefinition","cloneSelectedReport","clonedReport","cloneExistingReport","groupId","reportId","datasetGroupId","getDatasetGroupId","createDisplayComponents","buildReportSecurityGroup","find","activeMenuItemData","displayComponentDefinition","populateDisplayComponentDefinition","reportPowerBiCustom","DynamicComponentLookup","supportedTypes","externalReportComponent","basePageDisplayComponentDefinition","genericBasePageComponent","reportDisplayComponentName","basePageDisplayJson","interpolationData","displayComponent","pageButtonBar","loadingPageTitle","pageTitleTemplate","pageContextMenu","pageUtilityMenu","pageInformationMenu","reportDisplayComponent","definitionId","jsonData","JSON","stringify","externalReportType","typeId","public","ownershipSecurityGroupId","basePageDisplayComponent","newDisplayComponent","newBasePageDisplayComponent","newReportDisplayComponentId","newBasePageDisplayComponentId","initialPromiseArray","handleActivity","Activity","_ref","all","storeData","pushState","navigate","moduleNames","bi","display","viewTypes","edit","replaceUrl","_x","apply","arguments","getCleanedValue","commonRegex","alphaNumericOnly","i2","i3","i4","i5","i6","i7","i8","i9","i10","i11","i12","selectors","features","decls","vars","consts","template","rf","ctx","ClonePowerBiReportComponent_ng_template_1_Template","ClonePowerBiReportComponent_ng_template_2_Template","_r2","_r6","ctx_r5","previewReport","_c0","displayReport","ctx_r4","reportContext","_r8","ctx_r7","SelectExistingPowerBiReportComponent_ng_template_2_ng_template_4_Template","SelectExistingPowerBiReportComponent_ng_template_2_ng_template_5_Template","contentCssClass","_c1","displayReportPreview","SelectExistingPowerBiReportComponent","changeDetectorReference","existingOption","newOption","placeholders","selectAnOption","_field","resetReport","hidden","_ref2","handleSelectionChange","_x2","expressions","hide","shouldDisplayReportPreview","selectedItem","itemSelected","detectChanges","reportToClone","SelectExistingPowerBiReportComponent_ng_template_1_Template","SelectExistingPowerBiReportComponent_ng_template_2_Template","reportLocation","existingReportLocation","ngOnInit","setupGroupedSelections","isValid","validStepChanged","definedGroups","groupedOptions","displayTypes","typeFilter","ApiFilterHelper","getEnumerationFilter","displayType","availableReportDefinitions","availableGroups","baseLevelData","definitionInterface","DisplayComponentDefinition","definitionGroupId","jsonDefinition","matchingPowerBiGroups","workspaceType","powerBiWorkspaceTypes","custom","standard","mappedDatasets","getAvailableGroupDatasets","standardDatasetIds","powerBiGroup","groupedItems","mapOption","sortDropdownOptionsByLabel","groupedDropdownOption","powerBiReport","createReportContext","getReportDatasetGroupId","externalReportTypes","powerBi","getReportGroupId","pageName","powerBiDefaults","viewOnly","embedConfiguration","populatePowerBiEmbedConfiguration","createReport","dropdownOptions","sort","firstItem","secondItem","ObjectHelper","sortByPropertyValue","inputs","claimsServiceToken","ClaimsTokenLookup","ClaimsService","AddClaimPaymentComponent","moduleService","entityTypeApiService","entityInstanceApiService","claimsService","claimPaymentEntityType","claimId","claim","claimPaymentId","adjustingCompanies","vendorCompanies","adjusterType","vendorType","pendingStatus","ClaimConstants","claimEntityTypeGroups","claimPayments","claimEntityTypes","claimPayment","claims","serviceProviderEntityTypeGroups","adjustingCompany","getClaimAdjusterOrganizations","vendorCompany","ApiHelper","getFullDataSet","claimPaymentData","createClaimPaymentData","createEntity","navigateToClaimPayment","validPayeeType","payees","involvedParties","party","payeeTypeValidator","payeeData","resourceIdentifier","payee","payeeName","vendor","vendorOrganizationId","legalName","adjuster","adjustingOrganizationId","toNameString","firstName","lastName","entityType","versionNumber","claimNumber","address","SharedTypeConstants","addressType","mailing","subType","city","state","principalSubdivision","postalCode","county","country","entityCreationType","entityInstanceData","entityParentTypeGroup","entityParentId","entityId","automateVerify","queryParams","routeData","mapRouteData","layoutType","layoutTypes","full","_event","setValue","payeeType","initializeDataOptions","_formControl","customDataSelect","dataPromise","labelTemplate","valueTemplate","payeeInformation","vendorInformation","addresses","adjusterInformation","customSectionTitle","parent","fieldGroup","customEmptyWrapper","templateOptions","AddClaimPaymentComponent_ng_template_2_Template","AddClaimPaymentComponent_ng_template_3_Template","AddExposureClaimComponent","exposureDetails","claimPolicy","claimant","asset","getExposureDetails","parameterString","getActionParameters","addExposure","navigateToClaimSummary","details","getAdjusterData","getClaimantData","exposure","assetId","coverage","getAssetData","claimPolicies","assets","level","claimantIdentifier","assignedPartiesIdentifiers","assignedParties","toString","adjustingAndOther","defenseAndCostContainment","loss","adjusterData","InsuranceConstants","insuranceEntityTypeGroups","adjustingOrganizationUserId","customDashboard","dashboardDisplayComponentInstanceName","customTextDisplay","centerText","useMarkDown","usePanelDisplay","content","AddExposureClaimComponent_ng_template_2_Template","AddExposureClaimComponent_ng_template_3_Template","AdjustReservesClaimComponent","idDescendingQuery","ledger","ledgerTransactionClaims","adjustmentAmount","exposureResourceIdentifier","expenseType","expenseTypes","AdjustingAndOther","DefenseAndCostContainment","Loss","identifier","adjustment","amount","setDisplayData","adjustReserves","ledgerEntityTypeGroups","ledgers","priorReserveAmount","reduce","sum","newReserveAmount","titleLabel","AdjustReservesClaimComponent_ng_template_2_Template","AdjustReservesClaimComponent_ng_template_3_Template","ApproveClaimPaymentClaimComponent","exposures","confirmApproval","approveClaimPayment","loadExposures","isNullOrEmptyArray","paymentItems","getLedger","getLedgerTransactions","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_asyncIterator","next","done","paymentItemType","exposureData","exposureId","exposureIndex","findIndex","outstandingReserves","transaction","metadata","getFriendlyTransactionTypeName","approvedAmount","remainingReserves","err","return","additionalPayees","totalPayment","customTableDisplay","loadingTableDefinitions","tableDefinitions","tableTitle","hideSettings","objectSearch","virtualIndex","virtualPageSize","availableColumns","dataKey","columnHeader","displayOrder","dataFormatType","apiPromise","gridColumns","ApproveClaimPaymentClaimComponent_ng_template_2_Template","ApproveClaimPaymentClaimComponent_ng_template_3_Template","CreateClaimComponent","claimEntityCreationType","noteClaimEntityCreationType","unassigned","claimOwnerId","noteClaims","noteClaim","insuranceCompanyId","claimData","createClaimData","noteClaimData","note","createNoteClaimData","policy","system","date","keyDates","lossDate","insuranceCompany","customTextArea","rows","CreateClaimComponent_ng_template_2_Template","CreateClaimComponent_ng_template_3_Template","entityInstanceId","ManageAdditionalPayeesClaimComponent","StatusReasonsDirective","availablePayees","selectedPayees","selectedPayeesResourceIdentifiers","reporterType","getSelectedPayees","getAvailablePayees","availableReasons","selectedReasons","comments","displayCommentBox","confirmPayees","saveAdditionalPayees","additionalPayeesStringObject","manageAdditionalPayees","includes","formatPayees","formattedPayees","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_step2","_iterator2","formatVendor","formatAdjuster","formatPayee","formattedName","payeeAddress","beforeCapitalSpaces","vendorInstance","formattedDescription","formatClaimOrganizationData","vendorAddress","adjusterInstance","organization","userInstance","adjustingType","tpaType","adjusterAddress","ManageAdditionalPayeesClaimComponent_ng_template_2_Template","ManageAdditionalPayeesClaimComponent_ng_template_3_Template","clientMessage","_r7","ctx_r6","ManageClaimOwnerClaimComponent_ng_template_3_ng_template_0_Template","ManageClaimOwnerClaimComponent_ng_template_3_ng_template_1_Template","_r5","ManageClaimOwnerClaimComponent","invalidWizardStepMessage","closedStatus","confirmClaimOwner","isWizardStepValidForDisplay","assignClaimOwner","navigateToClaim","validOrganization","organizationTypeGroup","serviceProviderEntityTypes","thirdPartyAdministrator","getClaimOwnerUsers","organizationValidator","disableAutoSetValue","ManageClaimOwnerClaimComponent_ng_template_2_Template","ManageClaimOwnerClaimComponent_ng_template_3_Template","ManageExposurePartiesClaimComponent","availableParties","selectedParties","selectedPartiesResourceIdentifiers","profileTabIndex","getSelectedParties","getAvailableParties","confirmParty","saveExposureParties","assignedPartiesResourceIdentifiers","ObjectArrayHelper","commaSeparatedPropertyValues","manageExposureParties","activeTabIndex","formatParties","exposureParties","partyIdentifier","partyData","parties","formattedParties","ManageExposurePartiesClaimComponent_ng_template_2_Template","ManageExposurePartiesClaimComponent_ng_template_3_Template","ManagePartiesConfirmationClaimComponent","partyDetails","partyType","partyAction","workflowActionName","getPartyDetails","toAddressString","phone","number","email","setClaimantActionParameters","adjusterName","instance","setAdjusterActionParameters","vendorName","setVendorActionParameters","manageClaimant","adjustingCompanyId","adjustingCompanyUserId","manageAdjuster","vendorCompanyId","manageVendor","ManagePartiesConfirmationClaimComponent_ng_template_2_Template","ManagePartiesConfirmationClaimComponent_ng_template_3_Template","RejectClaimPaymentClaimComponent","confirmRejection","rejectClaimPayment","RejectClaimPaymentClaimComponent_ng_template_2_Template","RejectClaimPaymentClaimComponent_ng_template_3_Template","_r10","ctx_r9","summaryCardClicked","item_r8","summaryTemplate","titleTemplate","summaryCardDisplay","SelectClaimTypeComponent_ng_template_2_ng_template_3_div_0_Template","summaryCardItems","SelectClaimTypeComponent_ng_template_2_ng_template_1_Template","SelectClaimTypeComponent_ng_template_2_ng_template_3_Template","SelectClaimTypeComponent","productIconMap","auto","cssClasses","fontAwesomeCar","dwelling","fontAwesomeHouse","largeFont","renters","homeowners","setupSummaryCardItems","claimProducts","getClaimProducts","product","productName","iconClass","toLowerCase","summaryCardElement","innerText","stepTo","SelectClaimTypeComponent_ng_template_1_Template","SelectClaimTypeComponent_ng_template_2_Template","UpdateClaimExposureStatusClaimComponent_ng_template_3_ng_template_0_Template","UpdateClaimExposureStatusClaimComponent_ng_template_3_ng_template_1_Template","UpdateClaimExposureStatusClaimComponent","openExposureLayout","closeExposureLayout","updateStatusTo","openStatus","confirmExposureStatusUpdate","updateExposureStatus","reopenClaimExposure","closeClaimExposure","reason","formatNote","reasonData","getExposureReasons","reasonType","open","close","validExposure","ledgerTransactions","sumLedgerTransactions","outstandingReservesValidator","Number","claimStatus","closedExposures","openExposures","UpdateClaimExposureStatusClaimComponent_ng_template_2_Template","UpdateClaimExposureStatusClaimComponent_ng_template_3_Template","UpdateClaimStatusClaimComponent_ng_template_3_ng_template_0_Template","UpdateClaimStatusClaimComponent_ng_template_3_ng_template_1_Template","UpdateClaimStatusClaimComponent","openClaimLayout","closeClaimLayout","confirmClaimStatusUpdate","updateClaimStatus","reopenClaim","closeClaim","getClaimReasons","UpdateClaimStatusClaimComponent_ng_template_2_Template","UpdateClaimStatusClaimComponent_ng_template_3_Template","VerifyCoverageClaimComponent","claimParentId","claimParentName","transactionId","transactionSystem","transactionInsuranceCompany","insuranceCompanyData","claimParent","validateInsuranceCompany","verifyCoverage","insuranceCompanies","typeGroups","systems","actionResponse","systemId","parseRadix","transactionInsuranceCompanyId","transactionInsuranceCompanyName","company","VerifyCoverageClaimComponent_ng_template_3_Template","VerifyCoverageClaimComponent_ng_template_4_Template","claimProduct","insuranceEntityTypes","independentAdjustingCompany","claimsVendor","independentAdjustingCompanies","claimsVendors","thirdPartyAdministrators","claimOwnerAssigned","exposureAdded","exposureClosed","exposureReopened","payment","ledgerTransactionClaim","createClaim","payeeIndex_r7","payeeName_r6","ClaimPaymentAdditionalPayeesComponent_ng_template_1_div_1_div_6_Template","additionalPayeeNames","ClaimPaymentAdditionalPayeesComponent_ng_template_1_div_0_Template","ClaimPaymentAdditionalPayeesComponent_ng_template_1_div_1_Template","ClaimPaymentAdditionalPayeesComponent","claimPaymentInstance","loading","entityContext","finishedLoading","emit","ClaimPaymentAdditionalPayeesComponent_ng_template_0_Template","ClaimPaymentAdditionalPayeesComponent_ng_template_1_Template","ClaimPaymentPayeeComponent_ng_template_1_div_0_Template","ClaimPaymentPayeeComponent_ng_template_1_div_1_Template","ClaimPaymentPayeeComponent","ClaimPaymentPayeeComponent_ng_template_0_Template","ClaimPaymentPayeeComponent_ng_template_1_Template","ExposureOutstandingReservesComponent_ng_template_1_div_0_Template","ExposureOutstandingReservesComponent_ng_template_1_div_1_Template","ExposureOutstandingReservesComponent","lossTransactions","aoTransactions","dccTransactions","ledgerTransactionCategory","entityInstance","getLedgerData","ledgerTransaction","ledgerTransactionClaimTypes","category","ExposureOutstandingReservesComponent_ng_template_0_Template","ExposureOutstandingReservesComponent_ng_template_1_Template","ExposurePaymentsComponent_ng_template_1_div_0_Template","ExposurePaymentsComponent_ng_template_1_div_1_Template","ExposurePaymentsComponent","ExposurePaymentsComponent_ng_template_0_Template","ExposurePaymentsComponent_ng_template_1_Template","ExposureRecoveriesComponent_ng_template_1_div_0_Template","ExposureRecoveriesComponent_ng_template_1_div_1_Template","ExposureRecoveriesComponent","ExposureRecoveriesComponent_ng_template_0_Template","ExposureRecoveriesComponent_ng_template_1_Template","ctx_r11","sessionIdentifier","accessDeniedUrl","resources","PolicyDetailsComponent_ng_template_3_ng_template_0_div_1_Template","PolicyDetailsComponent_ng_template_3_ng_template_0_div_2_Template","isOwnershipAllowed","action_r21","_r23","$implicit","command","ctx_r12","tab","icon","_r25","ctx_r24","handleClick","ctx_r13","dynamicFormlyLayoutSummary","ctx_r15","dynamicFormlyLayoutCoverages","ctx_r17","dynamicFormlyLayoutInterests","ctx_r19","dynamicFormlyLayoutIncidents","PolicyDetailsComponent_ng_template_3_ng_template_4_ng_template_3_Template","PolicyDetailsComponent_ng_template_3_ng_template_4_ng_template_5_Template","PolicyDetailsComponent_ng_template_3_ng_template_4_ng_template_7_Template","PolicyDetailsComponent_ng_template_3_ng_template_4_ng_template_9_Template","PolicyDetailsComponent_ng_template_3_ng_template_4_ng_template_11_Template","ctx_r8","tabItems","PolicyDetailsComponent_ng_template_3_ng_template_0_Template","PolicyDetailsComponent_ng_template_3_ng_template_2_Template","PolicyDetailsComponent_ng_template_3_ng_template_4_Template","ctx_r2","_r9","PolicyDetailsComponent","DrawerListDirective","location","resolver","wildcardChildFilter","summaryTab","coveragesTab","interestsTab","incidentsTab","parentPolicy","uig12ClassDiv","dataLabelsSummaryClassDiv","dataSetSummaryClassDiv","dataLabelsCoveragesClassDiv","dataSetCoveragesClassDiv","ellipsisClassDiv","clickablePolicyNumberClass","emptyClassSpan","divEnd","spanEnd","tableSeparator","assetTableSeparator","clickableLinkClassSpan","isPageOwnershipAllowed","path","sessionId","entityInstanceComponent","setSecurityDefinitions","entityDefinition","setTabItems","setClaimPolicyData","setParentPolicy","EntityInstanceComponent","setStoredVariables","verifyEntityTypeAccess","some","allowed","event","target","classList","contains","navigateToPolicy","policies","hasPermission","currentUser","resolveCurrentUser","SecurityHelper","membershipExists","underwriterManager","underwriter","companyCSR","scrubMenuItems","securityRightCategory","SecurityRightCategory","TopLevelRight","securityRightType","SecurityRightType","read","stopPropagation","securityRightPath","Data","securityDefinitions","setSummaryLayout","setCoveragesLayout","setInterestsLayout","setIncidentsLayout","useMarkdown","effectiveDate","DateHelper","formatDate","fromUtcIso","model","term","presetFormats","longDateFormat","expirationDate","policyNumberClassSpan","nautix","policyNumber","transactionNumber","insuranceCompanyAddress","insuranceCompanyPhone","phones","agencyAddress","agency","agencyPhone","producerName","producer","coverages","createMarkdownField","deductibles","modifiers","setAssetsLayout","customRepeater","defaultValue","singular","titleFormat","initialItemValue","fieldArray","assetFieldConfig","fieldConfig","addAssetCoverages","addAssetDeductibles","addAssetModifiers","header","assetPath","markdown","itemName","itemValue","formatBooleanValue","selection","numberToCurrency","interestName","interestPhone","occurrenceDate","reportedDate","lossAmount","paidAmount","appliedTo","applied","scope","PolicyDetailsComponent_ng_template_1_Template","PolicyDetailsComponent_ng_template_3_Template","_r3","resolverService","securityGroupApiService","userService","ledgerId","getFullHierarchyDataSet","organizationType","organizationLegalName","userFirstName","userLastName","organizationTypeExists","formattedOrganizationType","formatOrganizationType","formattedTypes","transactionType","getClaimPaymentExposureLedgerTransactions","getClaimProductByName","claimProductName","getReasons","reasons","active","isClaimReason","isOpenReason","isCloseReason","isExposureReason","validExposureAdjustmentAmount","parseFloat","toFixed","getClaimOwnerOrganizations","dataLimits","large","concat","getValidNamedEvents","validEvents","dateTimeLossDate","DateTime","fromISO","dateTimeReportedDate","namedEvents","namedEvent","startDate","endDate","closureDate","getNamedEventName","namedEventId","getLossCauses","lossCauses","cause","enabled","getLossCauseName","lossCauseId","lossCause","organizationId","claimOwnerUsers","setUserSecurityGroups","membershipSecurityGroups","endsWith","getClaimVendorOrganizations","getKeyActivityReference","activityName","metadataIdentifier","includeActivityName","detailedDescription","activityDescription","colon","space","keyActivities","isGuid","isNaN","getClaimOwnerKeyActivityDescription","getExposureKeyActivityDescription","getPaymentKeyActivityDescription","getReasonDescription","reasonId","matchedReason","getAdjusterOrganizationName","adjusterOrganizationId","adjusterOrganizations","matchingAdjusterOrganization","getVendorOrganizationName","_this20","getOrganizationName","_this21","getUserDisplayName","matchingExposure","claimInstanceId","claimReasonId","_this22","matchingPayment","informationMenuItemsLoaded","informationMenuItems","EntityInstanceComponent_div_2_div_2_Template","ctx_r0","buttonMenuNavigationGroup","_r14","tabSelected","tmp_0_0","ctx_r10","undefined","sectionItems","activeSectionItem","activeTabItem","EntityInstanceComponent_div_3_div_2_Template","EntityInstanceComponent_div_3_ng_template_4_Template","EntityInstanceComponent_div_3_ng_template_5_Template","_c2","displayNavigationDropdown","_r11","_r16","updateFormInstance","_c3","showContentAnimation","entityVersion","entityTypeGroup","entityIdentifier","formlyOptions","entityLayout","pageContext","redrawFormlyEntityLayout","databaseEntityInstance","_r18","formlyEntityLayout","activeTabItemIndex","BasePageDirective","entityVersionApiService","entityLayoutApiService","entityLayoutTypeApiService","operationExecutionService","displayComponentFactory","rulePresentationService","entityTypeGroupDisplay","pageContextOperationGroupName","utilityMenuOperationGroupName","entityTopElementIdentifier","isViewOnly","entityFormComponent","activeDrawerComponent","activeDrawerItemDescription","operationGroupRedraw","formlyLayout","entitySecurityAccessPolicy","redrawing","columnDisplayCount","windowWidth","singleColumnDisplayWidth","standardAccessMessage","entityTypeRouteParameter","idRouteParameter","activeDrawerComponentIdentifier","activeDrawerItemDescriptionIdentifier","layoutTypeQueryParameter","initialSetupDelay","activeTabIndexIdentifier","entityInstanceComponentName","operationButtonBarComponentName","reloadEntity","DocumentHelper","setElementDisplay","entityLayoutMask","entityInstanceSaved","refreshOperationButtonBar","contentComponent","targetComponent","resetOperationButtonBar","initializePage","snapshot","paramMap","toProperCase","getLastSplitValue","period","subscribe","mappedRouteData","mapFromRouteData","generated","EventHelper","dispatchNavigateToAccessDeniedEvent","setSchema","setupInformationMenuItems","setEntityInstanceViolations","subscriptions","add","scrollHeightChangedSubject","debounceTime","tabCalculationDebounceDelay","distinctUntilChanged","scrollHeight","setTabHeights","initialSetupInProgress","nestedEntityType","entityLayoutType","nestedEntityLayoutType","getEntityIdentifier","titleFunction","transformToFunction","titlePromise","transformToDataPromise","summaryDataPaths","summaryTitle","getSummaryDataValue","displayName","updateLastSavedData","getFormlyEntityLayout","applyEntityInstanceRules","setActiveTab","dispatchRedrawDashboardEvent","FormlyHelper","fireViewCheck","dispatchReloadProductSettingsEvent","dispatchRefreshComponentEvent","workItemsComponent","targetComponents","utilityMenuComponent","layoutReloaded","cloneDeep","RefreshBusinessRules","existingOperationGroupName","operationGroupName","getDataTabs","getDataSections","tabCount","isTabWrapper","visible","updateUrlQuery","dispatchSiteLayoutChangedEvent","time","quarterSecond","replaceState","createUrlTree","getPopulatedRuleViolations","sortDirections","ascending","maxResultSet","dispatchRefreshBadgePromiseEvent","rulesComponent","setFieldValue","fieldKey","fieldValue","fireValidityChange","getFieldConfig","fields","getMatchingFieldConfigurations","populateEntity","EntityDefinition","JsonSchemaLayout","generateDefaultLayout","jsonEntityDefinition","EntityType","informationMenuDisplayComponentInstanceName","basePageSections","topIdentifier","sectionIdentifier","getEntityAccessPolicies","EntityLayout","disableAllFields","i13","i14","i15","i16","i17","hostBindings","detail","EntityInstanceComponent_div_2_Template","EntityInstanceComponent_div_3_Template","EntityInstanceComponent_div_6_Template","EntityInstanceComponent_div_7_Template","EntityInstanceComponent_div_8_Template","ContentAnimation","filterCriteriaChanged","selectedCategoryChanged","categoryOptions","filterValue","entitySelectTableDefinitions","selectedEntities","displayKeywordMessage","EntitySelectComponent","EntityTableDirective","useSimpleDisplayMode","searchCriteria","EventEmitter","categorySelected","commonTableContext","selectedCategory","loadingEntityType","categories","summaryDataPathColumns","setFilterKeywordString","setCategories","setCategoryLabel","getDynamicSummaryColumns","selectedColumns","setupTableDefinitions","hideTableTitle","itemSelection","selectionMode","itemSelectionMode","multiple","selectedItemEvent","selected","considerFilteringResults","document","getElementById","commonTableActions","filterInput","focus","filterCriteria","getQueryStringContainsFilter","outputs","EntitySelectComponent_div_2_Template","EntitySelectComponent_div_3_Template","EntitySelectComponent_div_4_Template","parentGroup_r8","getItemTitle","item_r11","_r15","relatedEntities","ctx_r16","parentSelected","ParentSelectionComponent_ng_template_3_div_1_div_2_ul_3_li_1_ng_template_6_Template","displayTitle","ParentSelectionComponent_ng_template_3_div_1_div_2_ul_3_li_1_Template","ParentSelectionComponent_ng_template_3_div_1_div_2_ul_3_Template","parentGroups","ParentSelectionComponent_ng_template_3_div_1_div_1_Template","ParentSelectionComponent_ng_template_3_div_1_div_2_Template","_r19","ctx_r18","ctx_r20","parentRequired","parentSelectionExists","entitySearch","currentParentGroup","ParentSelectionComponent_ng_template_3_div_1_Template","allowedParents","ParentSelectionComponent","entityDefinitionApiService","entityCreationDefinition","entityParentGroup","parentGroup","listSize","entityCreationTypeIdentifier","addToValidator","validateStep","parentSelections","mapParentGroupsFromUrlStorage","loadStepData","parentSelection","existingIndex","relatedEntity","negativeIndex","splice","getParentGroupsForUrlStorage","activeWizardStep","validator","creationEntityDefinitionData","versionId","requiresParent","displayedWizardMenuItems","getAllowedParentDefinitions","getAllowedParentEntityTypes","mapParentGroups","entityTypeCategories","descending","newEntityId","getContextMenuModule","existingParentGroups","relationshipGroup","parentEntities","parentIds","parentTypeArray","parentArray","wildcardFilter","createAllowedParentsWildcardFilter","commaSeparatedTypeIdArray","existingEntities","entityTypeParentGroup","requiredEntityInstanceData","commaSeparatedInstanceIds","requiredLoadEntities","wildcardSplit","getAllowedParentWildcards","newFilter","locationFilter","wildcards","typeSection","currentLocationFilter","parentAssociationGroups","parameterObject","getCreateParameters","createdEntityId","initialEntityCreated","entityParentRelationship","entityParent","createParameters","createParameter","parameterValue","parameterName","ParentSelectionComponent_ng_template_1_Template","ParentSelectionComponent_ng_template_2_Template","ParentSelectionComponent_ng_template_3_Template","categoryLabel","tableRedrawDebonceDelay","filterQuery","searchArray","word","categoryGroup","restoreTableDefinition","EntityService","BaseStoredVariableService","storedVariables","storageProperty","apiService","storedVariable","allowedMaxResultSet","getFormlyLayout","layoutName","nestedEntityVersion","nestedEntityLayout","layoutTypeId","entityInstanceType","entityLayoutTypeName","nestedEntityLayouttype","nestedEntityDefinition","verifyWildcardEntityTypeAccess","entityVersionIds","verifyEntityTypeAccessByGroup","getEntityDefinition","getWildcardChildren","childEntityTypes","supportedChildTypes","asterisk","supportedEntityTypes","getEntityTypesFromNameList","getEntityTypeFilter","queryMultipleEntityTypes","instanceList","promises","apiServiceCopy","promise","then","handleOrderBySort","entityNames","entityName","instanceId","instanceTypeGroup","hierarchyTypeGroup","resultSet","dataCount","nestedResultSet","actionAuthorized","action","rights","execute","getAccumulatedAggregateByType","typeWildCard","apiConfiguration","entityByType","getEntitiesByType","accumulatedAggregate","apiResponse","entityAggregate","existingKey","aggregateKey","object","isEqual","queryPrefix","wildCard","queryOperator","columnIndex","entityDefinitionInterface","entityDefinitionImplementation","summaryDataPath","cleanedPath","anyOfPath","nestedDataKeyPrefix","nestedDataIdentifier","propertyDefinition","getPropertyDefinition","dataFormat","outputFormat","dataLabel","getBusinessLogicEntity","BusinessLogicEntity","decorateUpdatedByUsers","currentEntityInstance","changedByIds","Set","changedById","changedByIdFilter","commaSeparatedStringValues","changedByUsers","changedByUser","changedByUserItem","updatedByUser","entityTypeName","contextMenuModule","disclaimer","paymentResult","transactionDate","itemIndex_r12","MakePaymentDetailsComponent_ng_template_2_ng_container_13_div_1_sup_4_Template","MakePaymentDetailsComponent_ng_template_2_ng_container_13_div_1_Template","itemIndex_r17","feeDisclaimer_r16","MakePaymentDetailsComponent_ng_template_2_ng_template_30_p_1_Template","feeDisclaimers","insured","emails","MakePaymentDetailsComponent_ng_template_2_ng_template_31_div_0_Template","MakePaymentDetailsComponent_ng_template_2_ng_template_9_Template","MakePaymentDetailsComponent_ng_template_2_ng_template_10_Template","MakePaymentDetailsComponent_ng_template_2_ng_container_13_Template","MakePaymentDetailsComponent_ng_template_2_ng_template_30_Template","MakePaymentDetailsComponent_ng_template_2_ng_template_31_Template","displayTabletView","logoUrl","processor","tagline","totalPaymentAmount","getPaymentMethodClass","paymentMethodDescription","paymentMethod","accountNumber","MakePaymentDetailsComponent","sanitizer","paymentMethodSettings","initializeData","paymentMethodTypes","creditCard","fontAwesomePrefix","cssIcons","bank","cardType","toCamelCase","interpolate","systemSettings","getSystemSettings","processorName","paymentMethods","paymentAmount","fees","fee","feeTypes","percent","partialSum","bypassSecurityTrustResourceUrl","logo","MakePaymentDetailsComponent_ng_template_1_Template","MakePaymentDetailsComponent_ng_template_2_Template","reason_r3","StatusReasonsComponent_div_0_ng_template_2_div_1_span_4_Template","StatusReasonsComponent_div_0_ng_template_2_div_2_span_4_Template","StatusReasonsComponent_div_0_ng_template_2_div_1_Template","StatusReasonsComponent_div_0_ng_template_2_div_2_Template","detailedView","_r13","ctx_r14","StatusReasonsComponent_div_0_ng_template_2_Template","StatusReasonsComponent","validityChange","textAreaRowSizes","small","StatusReasonsComponent_div_0_Template","StatusReasonsComponent_div_1_Template","AdjustmentDetailsComponent","transactionNumberValidator","availableEntityTypes","getWildcardFilter","policyTermTransactionWildcard","policyTermTransactionEntityInstance","commissionAdjustmentReasonTypes","correction","recoupment","other","enable","disable","customInputNumber","useCurrency","validAmout","AdjustmentDetailsComponent_ng_template_2_Template","AdjustmentDetailsComponent_ng_template_3_Template","AdjustmentSummaryComponent_ng_template_3_div_2_Template","AdjustmentSummaryComponent_ng_template_3_div_3_Template","AdjustmentSummaryComponent_ng_template_3_div_17_Template","AdjustmentSummaryComponent_ng_template_3_div_18_Template","hasTransactionNumber","adjustmentDetails","priorBalance","newBalance","AdjustmentSummaryComponent","agencyId","ledgerEntityInstance","getAgencyLedger","ledgerPreviosBalance","getLedgerPreviousBalance","adjustmentDetailsData","commissionAdjustment","commissionAdjustmentExecution","navigateToAgencyDashboard","ledgerTransactionInstances","ledgerTransactionWildCard","balance","_reject","agencies","AdjustmentSummaryComponent_ng_template_2_Template","AdjustmentSummaryComponent_ng_template_3_Template","organization_r4","SelectDisbursementOrganizationsComponent_div_0_ng_template_2_div_1_div_3_Template","SelectDisbursementOrganizationsComponent_div_0_ng_template_2_div_1_Template","SelectDisbursementOrganizationsComponent_div_0_ng_template_2_ng_template_2_Template","SelectDisbursementOrganizationsComponent_div_0_ng_template_2_Template","organizations","selectedOrganizations","SelectDisbursementOrganizationsComponent","getAgencies","createDisbursement","disbursements","disbursmentInstance","commissionDisbursement","commissionDisbursements","createPromise","organizationGroup","disbursementDate","snapshotDate","commissionEntityTypes","navigateToComissionDisbursementPage","SelectDisbursementOrganizationsComponent_div_0_Template","SelectDisbursementOrganizationsComponent_ng_template_1_Template","paymentDetails","premium","taxes","total","priorTermTransfer","payments","policyTermWrittenOffBalance","remainingBalance","minimumDue","AdjustmentWriteOffAmountComponent","policyTermEntityInstance","policyTermId","getPolicyTerm","InsuranceHelper","getPriorTermTransferBalance","getPolicyTermWrittenOffBalance","getPaymentsBalance","operationalFees","getPolicyTermOperationalFeeBalance","futureIssuedTransactions","getFutureIssuedTransactions","accountingPayments","accounting","paymentSchedule","generateDraftPaymentPlanSchedule","policyTerms","remainingPayments","getRemainingPaymentSummaries","nextPayment","getNextInstallmentPayment","accountingData","paymentDetailsData","due","policyTermStatusTypes","writtenPremium","writtenFees","writtenTaxes","writtenTotal","getLatestPolicyTermTransactionByPolicyTerm","directWrittenPremium","directWrittenFees","directWrittenTaxes","directWrittenTotal","accountingTypes","tax","positivePaymentAmount","positivePaymentAmountValidator","allowedTotalWritten","allowedTotalRemainingBalanceValidator","AdjustmentWriteOffAmountComponent_ng_template_2_Template","AdjustmentWriteOffAmountComponent_ng_template_3_Template","AdjustmentWriteOffCommentsComponent","writeOff","writeOffExecution","navigateToPolicyTermDashboard","policyTermInstanceData","AdjustmentWriteOffCommentsComponent_ng_template_2_Template","AdjustmentWriteOffCommentsComponent_ng_template_3_Template","BindTransactionComponent","policyTermEntityType","policyTermTransactionEntityType","policyTermTransactionId","getPolicyTermTransaction","transactionBind","reject","executeTransactionBindWorkflow","exception","policyTermTransactionInstanceData","getQueryString","queryParameters","invoiceTo","invoicingMethod","enableAutoPayments","enableAutomaticInstallmentPayments","electronicDocuments","paymentPlanResourceId","paymentPlan","BindTransactionComponent_ng_template_2_Template","BindTransactionComponent_ng_template_3_Template","CreateTransactionComponent","transactionEntityGroup","transactionEntityName","setParentEntityInformation","displayedWizardSteps","alwaysVerify","applicantType","transactionData","createTransactionData","legalStructure","prefix","middleName","suffix","termLength","navigateToQuickQuote","interests","characteristics","quickQuote","validState","products","getActiveProductNamesByState","stateValidator","validTermLength","termLengths","productValidator","customCalendar","useDefaultFunction","labelFunction","productControl","termLengthControl","CreateTransactionComponent_ng_template_1_Template","CreateTransactionComponent_ng_template_2_Template","MakePaymentReceiptComponent","getInsured","backLabel","interest","interestTypes","namedInsured","interestSubTypes","primary","MakePaymentReceiptComponent_ng_template_2_Template","MakePaymentReceiptComponent_ng_template_3_Template","MakePaymentComponent","nextStepName","makePayment","makePaymentExecution","success","policyTermEntityTypeGroupName","executeWorkflow","error","MakePaymentComponent_ng_template_2_Template","MakePaymentComponent_ng_template_3_Template","NonRenewPolicyComponent_ng_template_3_div_0_Template","NonRenewPolicyComponent_ng_template_3_div_1_Template","allowedNonRenew","NonRenewPolicyComponent","nonRenewIsAllowed","policyNonRenew","productEntityInstance","statusReasonTypes","rejection","isNonRenewalReason","nonRenew","navigateToPolicyDashboard","executeWorkflowAction","isRenewable","policyStatusTypes","daysFromExpirationToAllowNonRenew","policyTermInstance","getActivePolicyTerm","today","startOf","local","nonRenewDate","addTimeUnit","NonRenewPolicyComponent_ng_template_2_Template","NonRenewPolicyComponent_ng_template_3_Template","staticFormlyLayout","PaymentBatchApproveComponent_ng_template_2_ng_template_0_Template","PaymentBatchApproveComponent_ng_template_2_ng_template_1_Template","PaymentBatchApproveComponent","entityApprovalType","paymentBatchId","paymentBatch","approve","approveEntity","navigateToPaymentBatch","approveEntityInstance","result","PaymentBatchConstants","paymentBatchStatus","pending","PaymentBatchApproveComponent_ng_template_1_Template","PaymentBatchApproveComponent_ng_template_2_Template","PaymentBatchCreateComponent","batchDate","countOfChecksControl","sumOfChecksControl","parentEntityType","getSystemDateTime","timeUnits","day","matchingEntityTypes","paymentBatchIdentifiers","entityTypePrefix","min","PaymentBatchCreateComponent_ng_template_3_Template","PaymentBatchCreateComponent_ng_template_4_Template","PaymentDetailsComponent_ng_template_3_div_0_Template","PaymentDetailsComponent_ng_template_3_div_1_Template","paymentMethodsData","PaymentDetailsComponent","paymentOption","preferences","generatedPayments","includeUninvoicedOperationalFees","mapPaymentSchedulePaymentSummary","nextPaymentInstallment","policyTerm","paymentAmountValidator","_control","valueField","form","valueKey","paymentMethodsValidator","getPaymentMethods","getPaymentMethodName","getDefaultPaymentMethod","isDefault","accountHolder","normalizeCamelcase","defaultPaymentMethod","validDefinition","customInputRadioButton","formatType","inputGroupItems","optionValue","disabledInput","allowEntry","className","customCheckbox","checkboxText","PaymentDetailsComponent_ng_template_2_Template","PaymentDetailsComponent_ng_template_3_Template","RescindNonRenewPolicyComponent_ng_template_3_div_0_Template","RescindNonRenewPolicyComponent_ng_template_3_div_1_Template","allowedRescindNonRenew","RescindNonRenewPolicyComponent","rescindNonRenewIsAllowed","rescindNonRenew","policyRescindNonRenew","RescindNonRenewPolicyComponent_ng_template_2_Template","RescindNonRenewPolicyComponent_ng_template_3_Template","TransactionCancelEffectiveDateComponent_ng_template_3_ng_template_0_Template","TransactionCancelEffectiveDateComponent_ng_template_3_ng_template_1_Template","TransactionCancelEffectiveDateComponent","TransactionStatusEffectiveDateDirective","createdPendingCancelTransactionId","existingTransactionInstance","updateNavigationData","quickDateSelection","tooltipOptions","tooltipLabel","fromUtcSystemIsoToSimulatedLocalDate","overrideButtonClick","toISO","validEffectiveDate","policyTermInceptionDate","policyTermExpirationDate","minimumEffectiveDate","minimumTransactionEffectiveDate","getMinimumEffectiveDateMessage","formControlStatus","invalid","statusEffectiveDate","inceptionDate","populateInsuranceEntityTypes","isCalculatedEffectiveDate","calculateEffectiveDate","getEffectiveDateBasedTransaction","createTransactionCancel","setOverrideButtonStatus","transactionCancel","navigateToPendingCancelTransaction","cancelReason","cancelReasonType","cancelReasonTypes","underwriting","nonPayment","getEffectiveDateBasedOnSettings","disableEffectiveDateControl","underwritingPeriod","getProductByName","newBusiness","cancelEffectiveDate","plus","cancelReasonsDays","cancelEffectiveDateWithinUnderwritingPeriod","days","cancelEffectiveDateOutsideUnderwritingPeriod","enableEffectiveDateControl","User","hasMembership","disableOverrideButton","flatCancellation","flatCancel","matchEffectiveDateToTransaction","basedOnEntityTypeGroup","basedOnEntityId","cancelSummary","TransactionCancelEffectiveDateComponent_ng_template_2_Template","TransactionCancelEffectiveDateComponent_ng_template_3_Template","hasValidSelectedReasons","TransactionCancelReasonsComponent_ng_template_3_div_0_Template","TransactionCancelReasonsComponent_ng_template_3_div_1_Template","allowedTransactionCancel","TransactionCancelReasonsComponent","isCancelReason","statusEntityId","statusEntityTypeGroup","nextTooltipLabel","getPolicyByPolicyTermId","activePolicyTerm","latestTransaction","renewalTerm","transactionTypes","cancellation","transactionStatusTypes","issued","declined","TransactionCancelReasonsComponent_ng_template_2_Template","TransactionCancelReasonsComponent_ng_template_3_Template","TransactionCancelReinstateCommentsComponent_ng_template_3_ng_template_0_Template","TransactionCancelReinstateCommentsComponent_ng_template_3_ng_template_1_Template","TransactionCancelReinstateCommentsComponent","policyTermIsNotCancelledMessage","transactionEntityType","policyTermTransactionPrefix","getEntityInstance","getProduct","productEntityType","updateGuardComparisonData","termCancelReinstate","reinstateCancel","transactionCancelReinstate","TransactionCancelReinstateCommentsComponent_ng_template_2_Template","TransactionCancelReinstateCommentsComponent_ng_template_3_Template","TransactionDeclineReasonsComponent_ng_template_3_div_0_Template","TransactionDeclineReasonsComponent_ng_template_3_div_1_Template","allowedTransactionDecline","TransactionDeclineReasonsComponent","userCanDecline","getTransaction","transactionDecline","isDeclinationReason","decline","declineTransaction","refreshPolicyTermRules","save","declineReason","declinationReasonType","getPolicyTermByTransaction","policyTermType","getEntityTypeAsync","TransactionDeclineReasonsComponent_ng_template_2_Template","TransactionDeclineReasonsComponent_ng_template_3_Template","comparisonObjectName","endorseTransactionInstance","differences","TransactionEndorseIssueDifferencesComponent_ng_template_2_ng_template_0_Template","TransactionEndorseIssueDifferencesComponent_ng_template_2_ng_template_1_Template","TransactionEndorseIssueDifferencesComponent","excludedDifferenceProperties","createDate","changeDate","createdById","basedOnTransactionNumber","blockingRuleMessage","noDifferenceFoundMessage","setPolicyNumber","isActionBlocked","TransactionEndorseIssueSummaryComponent","setDifferenceData","setEntityDefinition","orderDataValues","getBusinessLogicDifferences","policyTermParents","updateWizardLabel","endorsement","orderedData","TransactionEndorseIssueDifferencesComponent_ng_template_1_Template","TransactionEndorseIssueDifferencesComponent_ng_template_2_Template","customDashboardChanges","endorseAccounting","policyTermTransactions","policyTermLedgers","ledgerEntityType","totalDirectWrittenPremium","accumulator","policyTermTransaction","transactionEffectiveDate","premiumChange","totalPremium","issueEndorsement","transactionEndorseIssue","fireChanges","oneSecond","TransactionEndorseIssueSummaryComponent_ng_template_2_Template","TransactionEndorseIssueSummaryComponent_ng_template_3_Template","TransactionEndorseReasonsComponent","createdPendingEndorsementTransactionId","transactionEndorse","endorse","navigateToPendingEndorseTransaction","TransactionEndorseReasonsComponent_ng_template_2_Template","TransactionEndorseReasonsComponent_ng_template_3_Template","TransactionEndorseStatusEffectiveDateComponent_ng_template_3_ng_template_0_Template","TransactionEndorseStatusEffectiveDateComponent_ng_template_3_ng_template_1_Template","TransactionEndorseStatusEffectiveDateComponent","TransactionEndorseStatusEffectiveDateComponent_ng_template_2_Template","TransactionEndorseStatusEffectiveDateComponent_ng_template_3_Template","TransactionRescindCancelComponent_ng_template_3_div_0_Template","TransactionRescindCancelComponent_ng_template_3_div_1_Template","allowedRescindCancellation","TransactionRescindCancelComponent","policyTermTransactionInstance","termRescindCancel","rescindCancel","transactionRescindCancel","policyTermTransactionTypeGroup","latestTransactions","TransactionRescindCancelComponent_ng_template_2_Template","TransactionRescindCancelComponent_ng_template_3_Template","TransactionRescindEndorseComponent_ng_template_3_div_0_Template","TransactionRescindEndorseComponent_ng_template_3_div_1_Template","allowedRescindEndorsement","TransactionRescindEndorseComponent","termRescindEndorse","rescindEndorse","transactionRescindEndorse","TransactionRescindEndorseComponent_ng_template_2_Template","TransactionRescindEndorseComponent_ng_template_3_Template","commission","manual","rollup","direct","sub","accounts","backOfficeVendors","commissionsSchedules","holdingCompanies","managingGeneralAgencies","account","transfer","refund","reversal","inactive","cancelled","serviceExisting","reinsuranceIntermediary","retail","surplusLines","remove","insuredRequest","archived","bound","obsolete","quote","submitted","renewal","reinstatement","paymentPlanId","updateTermOnly","targetDate","rebase","additional","secondary","AssociatedTransactionDirective","setData","dataProperty","setDefinitionData","getDisplaySubTitle","setIconClass","associationDefinition","setDisplayProperties","_property","displayProperties","claimsModuleEntityTypeGroups","workflowEntityType","workflowInstanceData","itemOne","itemTwo","transactionChildren","childTransactionEntityTypeName","setPolicy","policyParents","currentEffectiveDate","priorChildren","reverse","getItemContext","item_r7","entityListItemComponent","AssociatedEntityListComponent_ng_template_2_ng_template_4_li_0_Template","noResultsMessage","AssociatedEntityListComponent_ng_template_2_ng_template_4_Template","AssociatedEntityListComponent_ng_template_2_ng_template_5_Template","associationLabel","useBorderContainers","AssociatedEntityListComponent","noResultsFoundMessage","listLimit","associationDataPromise","entityRelationship","associatedEntityTypeGroup","associatedEntities","parse","entityListContext","AssociatedEntityListComponent_ng_template_1_Template","AssociatedEntityListComponent_ng_template_2_Template","keyContacts","primaryInsured","agencyInformation","AssociatedKeyContactsComponent_div_1_span_9_Template","AssociatedKeyContactsComponent_div_1_span_17_Template","AssociatedKeyContactsComponent","AssociatedKeyContactsComponent_div_0_Template","AssociatedKeyContactsComponent_div_1_Template","AssociatedOrganizationComponent","navigateToOrganization","taxInformation","doingBusinessAs","domicileState","annualizedPremium","annualizedFees","annualizedTaxes","annualizedTotal","TransactionAccountingDetailsComponent_div_1_div_8_Template","TransactionAccountingDetailsComponent_div_1_div_11_Template","TransactionAccountingDetailsComponent_div_1_div_18_Template","TransactionAccountingDetailsComponent","TransactionAccountingDetailsComponent_div_0_Template","TransactionAccountingDetailsComponent_div_1_Template","item_r3","property_r10","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_8_span_0_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_ng_template_0_span_2_span_1_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_ng_template_0_span_2_span_2_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_ng_template_0_span_2_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_ng_template_0_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_ng_template_1_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_span_4_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_8_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_ng_template_9_Template","TransactionAssetsComponent_div_1_ng_template_2_li_0_Template","TransactionAssetsComponent_div_1_ng_template_2_Template","TransactionAssetsComponent","addressIconClass","assetPropertyName","TransactionAssetsComponent_div_0_Template","TransactionAssetsComponent_div_1_Template","policyCoverage_r12","getCurrencyAmount","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_0_div_6_ng_template_4_Template","coveragesAndDeductibles","policyDeductible_r14","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_0_div_7_ng_template_4_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_0_div_6_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_0_div_7_Template","nonPolicyCoverage_r23","ctx_r22","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_ng_template_4_div_5_ng_template_4_Template","scopeItem_r19","nonPolicyDeductible_r26","ctx_r25","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_ng_template_4_div_6_ng_template_4_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_ng_template_4_div_5_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_ng_template_4_div_6_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_ng_template_4_Template","getScopeTitle","nonPolicyItem_r17","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_ng_template_2_Template","nonPolicy","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_0_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_div_1_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_1_Template","TransactionCoveragesDeductiblesComponent_ng_template_0_ng_template_2_Template","TransactionCoveragesDeductiblesComponent","getCoveragesAndDeductiblesAction","policyScope","setCoveragesAndDeductibles","responseValue","coveragesAndDeductiblesItems","responseItem","setCoverageAndDeductibleValues","existingItemIndex","propertyName","typeItem","nonPolicyItemPath","getNonPolicyObject","Array","from","Object","entries","getCoverageAndDeductibleDescription","matchingItem","displayDescription","getObjectDescription","matchingDefinition","descriptionPropertyKeys","JsonSchemaHelper","getArrayItemDefinition","getSchemaDefinition","dereferencedDataProperties","existingList","setWith","amountValue","TransactionCoveragesDeductiblesComponent_ng_template_0_Template","TransactionCoveragesDeductiblesComponent_ng_template_1_Template","item_r6","TransactionFormsComponent_ng_template_1_div_1_li_4_Template","form_r4","filterMetadata","TransactionFormsComponent_ng_template_1_div_1_Template","forms","TransactionFormsComponent","FileHelper","getCustomMetadata","TransactionFormsComponent_div_0_Template","TransactionFormsComponent_ng_template_1_Template","property_r8","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_7_span_0_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_ng_template_5_span_2_span_1_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_ng_template_5_span_2_span_2_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_ng_template_5_span_2_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_ng_template_5_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_ng_template_6_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_1_span_1_br_4_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_1_span_1_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_1_span_2_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_0_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_ng_template_1_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_7_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_ng_template_8_Template","TransactionInterestsComponent_div_1_ng_template_2_li_0_Template","TransactionInterestsComponent_div_1_ng_template_2_Template","TransactionInterestsComponent","individualIconClass","organizationIconClass","individualType","interestsPropertyName","TransactionInterestsComponent_div_0_Template","TransactionInterestsComponent_div_1_Template","TransactionReasonsComponent","commonTable","CommissionDisbursementDetailsComponent","CommonTablePageDirective","tableFilter","filteredDisbursements","selectedRowCount","selectedAgency","quickfilters","positiveAmount","negativeAmount","zeroAmount","commissionsAmount","adjustmentsAmount","directCommissionsAmount","subCommissionsAmount","getCommissionDisbursementDetails","setfilteredDisbursements","disbursementDetails","flatMap","disbursement","commissions","ledgerTransactionCommission","agencyName","organizationName","policyInstanceId","policyTermTransactionInstanceId","adjustmentType","commissionableAmount","isCommissionType","CommissionsHelper","isAdjustmentType","isDirectCommissionType","isSubCommissionType","detailOne","detailTwo","agencyComparison","localeCompare","dateOne","toMillis","dataFormatTypes","link","linkFunction","currency","exportable","tableHeight","virtualPageSizeBased","minimumDrawerItemHeight","quickFilters","selectedFilterValue","tableRowCount","CommissionDisbursementDetailsComponent_div_0_Template","CommissionDisbursementDetailsComponent_div_1_Template","CommissionDisbursementListExpandComponent_div_1_ng_template_1_Template","CommissionDisbursementListExpandComponent_div_1_ng_template_2_Template","CommissionDisbursementListExpandComponent","parentContext","loadingTableDefinition","nestedTable","sortField","_","CommissionDisbursementListExpandComponent_div_0_Template","CommissionDisbursementListExpandComponent_div_1_Template","CommissionDisbursementSummaryComponent","positive","negative","zero","ach","check","setCommissionDisbursementCalculatedValues","commissionDisbursementEntityInstance","totalCommissions","getCommissionDisbursementCommissionsByAgencyId","totalAdjustments","getCommissionDisbursementAdjustmentsByAgencyId","organizationDisbursementMethod","CommissionDisbursementSummaryComponent_div_0_Template","CommissionDisbursementSummaryComponent_div_1_Template","createNavigation","createClaimOperationDefinitionName","createQuoteOperationDefinitionName","hasClaimsMembership","CreateQuoteOrClaimComponent_ng_template_1_button_1_Template","CreateQuoteOrClaimComponent_ng_template_1_button_2_Template","hasPolicyMembership","CreateQuoteOrClaimComponent","operationDefinitionApiService","claimModuleAccess","policyModuleAccess","operationDefinitionName","operationDefinition","postOperationDefinition","populateOperationDefinition","executeMappedOperation","CreateQuoteOrClaimComponent_ng_template_0_Template","CreateQuoteOrClaimComponent_ng_template_1_Template","item_r5","NextPaymentInstallmentDetailsComponent_ng_template_1_div_5_Template","NextPaymentInstallmentDetailsComponent_ng_template_1_div_31_Template","tmp_2_0","installmentWrittenPremium","tmp_3_0","installmentWrittenFees","tmp_4_0","installmentWrittenTaxes","tmp_5_0","invoicedOperationalFees","summedOperationalFees","totalTransferBalance","summedAdjustments","summedLedgerPayments","summedOtherCredits","tmp_13_0","transferBalance","NextPaymentInstallmentDetailsComponent","wizardPayments","operationalFee","referenceId","previousBalance","Math","max","paymentBalanceForward","realizedPaymentBalanceForward","NextPaymentInstallmentDetailsComponent_ng_template_0_Template","NextPaymentInstallmentDetailsComponent_ng_template_1_Template","selectedType","updateControls","searchText","navigateToEntity","searchTypes","searchPlaceholder","PolicyAndClaimQuickSearchComponent","policyNavigation","camelcaseEntityType","dispatchBannerEvent","activityStatus","entities","PolicyAndClaimQuickSearchComponent_ng_template_0_Template","PolicyAndClaimQuickSearchComponent_ng_template_1_Template","getCommissionDisbursementMethods","ledgerTransactionCommissionType","values","totalAmount","disbursementMethod","getCommissionDisbursementEarnedAmount","transactionCommission","getCommissionDisbursementAdjustmentsAmount","getCommissionDisbursementAmount","commissionTypes","commissionAdjustmentTypes","commissionSource","commissionSourceTypes","policyTermTransactionStatusCheck","includedStatusValues","excludedStatusValues","transactionExcludedStatusValues","ledgerTransactionTypes","ledgerTransactionCategories","ledgerTransactionAdjustmentTypes","modifyPolicyTermPaymentPlan","paymentPlanName","paymentPlanVersion","mapFutureTransactionToTermAccounting","policyTermAccounting","policyTermTransactionAccounting","annualStatementLines","mapFutureAccountingSplitOuts","termSplitOuts","transactionSplitOuts","termSplitOut","transactionSplitOut","splitOut","written","directWritten","insuranceServiceToken","serviceProviderServiceToken","InsuranceTokenLookup","InsuranceService","ServiceProviderService","Transaction","resolveInsurance","declinableTypes","declinableTransactionTypes","approvableTypes","approvableTransactionTypes","statusCheck","getProductByTransaction","userCanRescindDeclination","daysAllowedToRescind","declination","daysToAllowRescind","declineDate","getDateDifference","now","toUTC","userCanApprove","FileEntity","fileEntity","addOrUpdateCustomProperties","properties","addOrUpdateProperties","WorkItem","workItem","getReference","referenceType","references","reference","getIdentifier","unblock","executeWorkItemAction","WorkItemConstants","workItemUnblocked","block","workItemBlocked","ignore","workItemIgnored","markDone","workItemDone","workItemReset","approveFile","fileReviewed","FileState","Approved","rejectFile","Rejected","resetFileReviewState","Pending","reviewState","info","getAssociatedFileEntity","fileId","fileType","fileEntityType","fileInstance","promiseArray","policyEntityType","_ref3","_x3","_ref4","_x4","_ref5","ledgerTransactionEntityType","_x5","policyId","entityRelationships","activePolicyTermInstance","transactionEntityTypeGroup","getPolicyTermsByPolicyId","includeArchived","getLatestPolicyTermByPolicyId","getOriginalPolicyTermByPolicyId","getPolicyTermTransactionEntityType","getEntityTypeFromName","getLatestPolicyTermTransaction","transactionStatus","statusFilter","combinedFilter","entityTransactions","getLatestPolicyTermTransactionByPolicy","getForms","count","getInsuranceReferences","insuranceReferences","getActiveProductPaymentPlanDefinitions","invoiceToResourceId","policyTermEffectiveDate","interestResourceId","selectedInterest","supportedInvoiceInterests","billing","paymentPlans","enabledInvoiceInterests","includeFutureTransactionAccountingData","rebasePaymentPlan","mappedPaymentPlanId","mappedPaymentPlanName","mappedPaymentPlanVersion","mappedStartDate","mappedTargetDate","getPolicyTermInvoiceToDescription","invoiceToResourceIdentifier","individualTypes","getPolicyTermSupportedInvoiceInterests","productInvoiceToInterests","transactionInterest","productInvoiceToInterest","productIdentifier","paymentSchedulePayments","_this23","totalPaid","balanceForward","operationalFeeTotal","sumPaymentDetailSplitOuts","invoicedOperationalFeeTotal","invoicedAmountDue","amountDue","currentDate","dueDate","realizationDate","pastDuePayment","realizedPayment","writtenAmount","statusIcon","getPaymentStatusIcon","paymentAmountDue","initialAmountDue","statusIconTooltip","getPaymentStatusIconTooltip","adjustments","loadFromAccountingPayments","_this24","_this25","remainingAmountDuePaymentSummaries","pastDuePayments","paymentSummary","realizedPayments","getWorkItem","refreshComponents","components","targetType","refreshBadges","dispatchRefreshBadgePromiseEvents","_this26","_this27","_this28","productSubmissionEnabled","_this29","submit","getOrganizationUserGroups","_this30","GetOrganizationSecurityGroupInputItems","_this31","inputGroups","updateOrganizationUser","selectedGroups","_this32","selectedOrganizationGroups","_this33","organizationInstance","_this34","sumFutureIssuedTransactions","accountingSumType","_this35","issuedTransactions","newBusinessOrRenewalTransaction","getPolicySummary","_this36","latestPolicyTerm","summedLedgers","insuredName","matchingAddress","mailingAddress","policyTotal","format","formatTypes","getUniqueStates","_this37","productSettings","productSetting","authority","filteredProducts","_this38","enableCreate","getPolicy","getAccount","accountId","getPolicyByAccountId","_this39","getAccountByPolicyId","_this40","getInsuranceEntityHierarchy","_this41","getPolicyTermHierarchy","_this42","pendingTransactionTypes","pendingTransaction","getHierarchyFiles","policyTermHierarchy","_this43","fileWildcard","issuedTransaction","flat","getHierarchyRuleViolations","_this44","getInstanceRuleViolations","getUserParentAgencies","keywordFilter","_this45","formattedFilter","keywords","getFilteredAgencies","loadFullDataset","_this46","getRecentUserPolicyTerms","numberOfDays","_this47","userFilter","minus","endOf","mapPolicyTermPrimaryInsuredNames","_this48","getPolicyTermPrimaryInsuredName","_this49","primaryInsureds","fromNameObject","navigateToRelatedEntity","relatedEntityType","insuranceEntityHierarchy","_this50","entityHierarchy","navigateToEntityInstance","navigateToEntityType","navigateToLayoutType","pastDueDate","statusIconCssClasses","invoicedDifference","warning","paymentDetailSplitOuts","stopPropogation","executeCommand","useCommandPromise","styleClass","executingCommand","i_r9","firstVisibleButtonIndex","lastVisibleButtonIndex","fixedOverlayLocation","mobileTooltipToggle","preventDefault","OperationButtonBarComponent_span_2_ng_template_2_button_1_Template","OperationButtonBarComponent_span_2_ng_template_2_operation_button_menu_2_Template","ellipsisMenuItem","ctx_r21","OperationButtonBarComponent_span_2_span_4_ng_template_1_Template","OperationButtonBarComponent_span_2_span_4_ng_template_2_Template","standaloneEllipsisDisplayed","redrawEllipsis","_r22","OperationButtonBarComponent_span_2_ng_template_2_Template","OperationButtonBarComponent_span_2_span_4_Template","reserveHeaderBottomRight","contentWidth","twoColumnHeaderBreakpoint","OperationButtonBarComponent","BaseOperationGroupDirective","loadingOperations","loadedOperationsCountChanged","operationContainer","operationDisplayChange","Subject","saveEntityMenuItem","ellipsisOperationPlaceholder","OperationButtonTypeConstants","ellipsisButton","pButtonOutlined","layoutBreakpoints","desktop","ellipsisOperationIdentifier","saveEntityOperationIdentifier","emitSaveEntityOperationIdentifier","operationChangeDebounceDelay","saveButtonDisabled","siteLayoutChanged","enableEntitySave","ngOnChanges","simpleChanges","currentValue","ngOnDestroy","complete","elementIndex","nativeElement","dispatchEvent","Event","MouseEventConstants","mouseEnter","mouseLeave","tooltipMessage","stopImmediatePropagation","handleOperationButtonDisplay","operationContainerWidth","scrollWidth","utilizedTabletWidth","staticLayoutSizes","utilityMenuWidth","collapsedContextMenuWidth","nestedContentPadding","headerBottomRightIconWidth","utilizedDesktopWidth","slimMenuWidth","availableBarDisplayWidth","tooSmall","hiddenMenuItems","menuItem","button","groupButton","canDisplayAnotherItem","getOperationButtonWidth","changeMade","shuffleItems","shuffleItem","calculateEllipsisDisplay","getFirstVisibleButtonIndex","getLastVisibleButtonIndex","buttonPaddingAndMargin","iconWidth","textElement","createElement","appendChild","style","fontFamily","cssValues","fontSize","height","width","position","whiteSpace","innerHTML","ceil","clientWidth","removeChild","excecutableCommand","commandException","console","lastVisibleItemIndex","performPostOperationLoadActions","pButtonPrimary","viewQuery","ElementRef","OperationButtonBarComponent_ul_1_Template","OperationButtonBarComponent_span_2_Template","buttonClick","operationGroup","invertedColors","smallEllipsis","roundedLeftBorder","roundedRightBorder","_c4","OperationButtonMenuComponent","BaseOperationMenuDisplayDirective","useEllipsis","operationMenu","scrollPanel","calculatedOverlayLocation","activeChanged","resetMenu","previousContentWidth","overlayMenuWidth","debounceDelay","setCalculatedOverlayLocation","hideAssociatedMenus","controlIdentifer","closeList","newValue","handleSmallEllipsisLogic","parentElement","setProperty","expanded","itemClicked","setOverlayScrollPanel","closeOverlays","forceCalculation","operationButtonClientContainer","getBoundingClientRect","useTopDisplay","top","mobileHeaderHeight","windowHeight","bottom","left","standardPadding","overlayLocations","topRight","bottomRight","right","responsiveClasses","smallPhoneContent","expandedContextMenuWidth","topLeft","bottomLeft","topCenter","bottomCenter","additionalItems","availableHeight","floor","scrollPanelOverlayHeightPercent","visibleItemsLength","requiredHeight","operationMenuItemHeight","dynamicHeightContainer","el","querySelector","OperationButtonMenuComponent_button_2_Template","OperationButtonMenuComponent_button_3_Template","_c5","DisplayAnimation","trigger","transform","opacity","transition","animate","child_r1","badge","_r17","itemClick","i_r2","OperationMenuSubGroupComponent_ng_template_0_li_0_a_1_div_4_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_1_span_7_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_1_div_9_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_1_span_10_Template","root","_r31","ctx_r30","ctx_r33","ctx_r32","ctx_r34","_r24","ctx_r36","OperationMenuSubGroupComponent_ng_template_0_li_0_a_2_div_4_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_2_div_8_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_2_span_9_Template","routerLink","_r39","ctx_r38","isActive","OperationMenuSubGroupComponent_ng_template_0_li_0_a_1_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_a_2_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_div_7_Template","OperationMenuSubGroupComponent_ng_template_0_li_0_ul_10_Template","badgeStyleClass","OperationMenuSubGroupComponent_ng_template_0_li_0_Template","OperationMenuSubGroupComponent","_reset","val","activeIndex","_parentActive","parentActive","menuItemClicked","srcEvent","originalEvent","element","attrs","OperationMenuSubGroupComponent_ng_template_0_Template","styles","animation","EaseAnimation","backgroundColor","contentAnimation","translateXZero","keyframes","OperationMenuComponent","loggerService","class","activeMenuItemAlteredEvent","activeMenuItemChanged","operationMenuDebounceDelay","previousActiveMenuItem","clickedOutside","dispatchHideAssociatedMenusEvent","LoggerService","OperationService","OperationExecutionService","SiteLayoutService","initialModel","associatedEntityTypeIdentifier","visibleParameterName","enabledParameterName","disabledMessageParameterName","populateOperationGroup","slice","mapChildRelationships","childRelationships","catch","exceptionMessage","logError","genericErrorMessage","definitions","relationship","populatedOperationDefinition","disabledMessage","resolveStringPromise","contextMenuIdentifiers","addRelatedContextMenuIdentifier","currentMenuItem","getIcon","operationType","leftSquareBracket","rightSquareBracket","operationAction","isNested","singularEndpoints","endPoint","contextMenuRelationships","groupItem","resolveBooleanPromise","promiseParameterName","booleanPromise","typeParameter","definitionParameterValue","transformAndExecuteBooleanPromise","messagePromise","OperationFactory","injector","operationTypeName","OperationTokenLookup","tokens","operationTypeParameter","AddDrawerActionToken","AddRelatedContextMenuActionToken","ChangeLayoutColorActionToken","ChangeThemeActionToken","ContextOperationActionToken","DeleteEntityActionToken","EmitEventActionToken","ExecuteOperationPromiseActionToken","ExecuteWorkflowActionToken","GenerateDocumentActionToken","GenerateFilesActionToken","LogOutActionToken","NavigationActionToken","PrintFileActionToken","SaveEntityActionToken","AddDrawer","AddRelatedContextMenu","ChangeLayoutColor","ChangeTheme","ContextOperation","DeleteEntity","EmitEvent","ExecuteWorkflow","ExecuteOperationPromise","GenerateDocument","GenerateFiles","LogOut","Navigation","PrintFile","SaveEntity","operationFactory","order","canDeactivateOperation","blockInterface","operationSuccessMessage","operationName","operationFailureMessage","variableTypes","executePostOperationActions","handleUnblockingInterface","unblockInterface","historyComponent","oneThirdSecond","operationDefinitionParameterApiService","operationGroupApiService","operationGroupHierarchyApiService","operationTypeApiService","operationTypeParameterApiService","throwErrorIfNull","populateChildRelationships","cleanGroupsWithoutChildren","definitionTypeParameters","definitionParameter","typeParameterId","operationParameter","populateChildOperationGroup","hierarchy","parentGroupId","childGroupId","childDefinitionId","populateChildGroups","getRelationshipsByType","populateChildDefinitions","childDefinitionRelationships","childRelationshipIds","childGroupRelationships","providedIn","iconActions","translateXMinusFivePercent","translateXMinusTwoPointFivePercent","translateXHundredPercent","DrawerAnimation","zeroEaseInOut","ListDrawerAnimation","ShakeAnimation","translateXZeroPercent","translateXTwoPointFivePercent","DropInAnimation","SlideDownAnimation","transitionVisibleHidden","standardAnimation","transitionHiddenVisible","SlideRightAnimation","BooleanFadeAnimation","visibility","resolveApiService","resolveShared","toEntityInstance","updatePromise","updateDisplayName","addOrUpdateProperty","parentType","excludedParentTypes","excludedParents","resource_r2","AccessDeniedContentComponent","logger","drawerDisplay","drawerName","formattedMessage","logWarning","getAccessDeniedObject","LogLevel","Warning","accessDeniedObject","copyAccessDeniedToClipboard","copyToClipboard","AccessDeniedContentComponent_li_25_Template","AccessDeniedContentComponent_div_26_Template","ColorSwatchComponent","updateRouteData","sectionComponentDisplayed","section_r3","parameterLayoutData","dashboardDisplayComplete","CommonDashboardComponent_div_1_ng_template_1_Template","dashboardSections","CommonDashboardComponent","DisplayComponentParameterDirective","routeParameters","useRouteUrl","fullPageDashboard","headerContextContent","authorizedSectionCount","displayedSectionCount","dashboardType","displayComponentInstance","parameterLayoutSchema","sessionUserTypeGroup","sessionUser","redrawDashboard","setupDashboard","emitHeaderContextContent","scroll","unsubscribe","displayParameterFilter","layoutChanged","oneHundredMilliseconds","displayComponentContainer","populateDisplayComponentContainer","handleAccessDenied","container","getParameterData","getMergedInitialParameterData","jsonInitialParameters","getParameterLayoutSchema","jsonParameterDefinition","jsonParameterLayout","displayComponents","dashboardSectionPromise","setupDashboardSection","dashboardSectionInstance","sectionDisplayComplete","associatedSection","sectionParameterSet","dashboardSection","dashboardSectionSubscription","subscribeToDisplayComponentContainer","jsonInterpolationData","widgets","widgetCount","availableWidgetsCount","authorizedWidgetCount","dashboardWidgetPromise","setupDashboardWidget","dashboardSectionParameterSet","dashboardWidgetInstance","handleRemovedWidget","associatedWidget","translatedData","dashboardWidget","filterSection","dashboardSectionOne","dashboardSectionTwo","dashboardTabOne","dashboardTabTwo","dashboardWidgetOne","dashboardWidgetTwo","showAccessDenied","getDashboardResources","pageSections","widget","settingsActive","CommonDashboardComponent_div_0_Template","CommonDashboardComponent_div_1_Template","section","widgetChanged","widgetComponentDisplayed","bubbleAppliedWidgetParameters","widget_r2","dashboardDisplayCompleted","DashboardSectionComponent","sectionParametersApplied","sectionFullyDisplayed","displayedWidgetCount","changes","previousValue","applyParameters","handleChildParameterData","sectionWidget","DashboardSectionComponent_span_1_Template","settingsClicked","cancelClicked","DashboardSectionComponent_ng_template_5_Template","parentParameterLayoutData","deactivateTooltip","handleTooltipClickEvent","toogleTooltipDisplay","activeTooltip","tooltipId","escape","CommonIconTooltipComponent_ng_template_0_span_0_Template","CommonIconTooltipComponent_ng_template_0_span_1_Template","tooltipRedraw","accessExternalLink","CommonIconTooltipComponent","externalLink","allowTooltipActivation","iconClick","tooltipViewChangedSubject","setTooltipId","startWith","twentyFiveMilliseconds","changedTooltip","activate","unbindEvents","redrawTooltip","clickEvent","updateFieldValueAndValidity","window","windowTargets","blank","Tooltip","CommonIconTooltipComponent_ng_template_0_Template","CommonIconTooltipComponent_ng_template_1_Template","Jsep","addUnaryOp","op_name","max_unop_len","unary_ops","addBinaryOp","precedence","isRightAssociative","max_binop_len","binary_ops","right_associative","addIdentifierChar","char","additional_identifier_chars","addLiteral","literal_name","literal_value","literals","removeUnaryOp","getMaxKeyLen","removeAllUnaryOps","removeIdentifierChar","removeBinaryOp","removeAllBinaryOps","removeLiteral","removeAllLiterals","expr","charAt","charCodeAt","obj","keys","k","isDecimalDigit","ch","binaryPrecedence","op_val","isIdentifierStart","String","fromCharCode","has","isIdentifierPart","throwError","runHook","node","hooks","env","run","searchHook","callback","call","gobbleSpaces","SPACE_CODE","TAB_CODE","LF_CODE","CR_CODE","nodes","gobbleExpressions","COMPOUND","untilICode","ch_i","SEMCOL_CODE","COMMA_CODE","gobbleExpression","gobbleBinaryExpression","gobbleBinaryOp","to_check","substr","tc_len","biop","prec","stack","biop_info","i","cur_biop","gobbleToken","right_a","comparePrev","prev","pop","BINARY_EXP","operator","PERIOD_CODE","gobbleNumericLiteral","SQUOTE_CODE","DQUOTE_CODE","gobbleStringLiteral","OBRACK_CODE","gobbleArray","argument","UNARY_EXP","gobbleIdentifier","LITERAL","raw","this_str","THIS_EXP","OPAREN_CODE","gobbleGroup","gobbleTokenProperty","QUMARK_CODE","optional","MEMBER_EXP","computed","CBRACK_CODE","CALL_EXP","gobbleArguments","CPAREN_CODE","callee","chCode","str","startIndex","closed","start","IDENTIFIER","termination","args","separator_count","arg","SEQUENCE_EXP","ARRAY_EXP","elements","Hooks","first","assign","plugins","Plugins","jsep","registered","register","_len","_key","plugin","init","COLON_CODE","true","false","null","stdClassProps","getOwnPropertyNames","prop","m","test","consequent","alternate","newTest","patternIndex","inCharSet","pattern","flags","RegExp","e","assignmentOperators","updateOperators","assignmentPrecedence","updateNodeTypes","updateBinariesToAssignments","op","c","BLOCKED_PROTO_PROPERTIES","SafeEval","evalAst","ast","subs","evalBinaryExpression","evalCompound","evalConditionalExpression","evalIdentifier","evalLiteral","evalMemberExpression","evalUnaryExpression","evalArrayExpression","evalCallExpression","evalAssignmentExpression","SyntaxError","||","a","b","&&","|","^","&","==","!=","===","!==","<",">","<=",">=","<<",">>",">>>","+","-","*","/","%","hasOwn","ReferenceError","TypeError","typeof","arr","unshift","NewError","avoidNew","JSONPath","opts","otherTypeCallback","optObj","json","resultType","flatten","wrap","sandbox","eval","ignoreEvalErrors","parentProperty","autostart","ret","evaluate","prototype","currParent","currParentProperty","currResultType","currEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","shift","_hasParentSelector","_trace","ea","isParentSelector","hasArrExpr","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","loc","x","addRet","elems","_walk","_slice","safeLoc","nested","exec","_eval","at","addType","valueType","isFinite","locProp","parts","part","rett","tmp","tl","tt","f","n","len","step","end","_v","_vname","_$_parentProperty","_$_parent","_$_property","_$_root","_$_v","containsPath","_$_path","scriptCacheKey","script","replaceAll","safeVm","Script","vm","CurrEval","runInNewContext","pathArr","p","subx","$0","$1","ups","exp","match","SafeScript","keyMap","funcs","conditionCb","il","moveToAnotherArray","vr","s","func","fString","lastStatementEnd","Function","lodash_es_set","baseSet","customizer","isObject","castPath","lastIndex","toKey","objValue","isIndex","assignValue","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","$cptable","_getchar","_getansi","DENSE","Base64_map","Base64_encode","o","c1","c2","c3","e1","e2","e3","e4","Base64_decode","has_buf","Buffer","process","versions","Buffer_from","nbfs","buf","enc","new_raw_buf","alloc","Uint8Array","new_unsafe_buf","allocUnsafe","s2a","s2ab","ArrayBuffer","view","a2s","bconcat","bufs","isBuffer","maxlen","chr0","chr1","_strrev","pad0","v","d","fill","pad_","rpad_","p2_32","pow","pad0r","pad0r1","round","pad0r2","SSF_isgeneral","months","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","q","SSF_parse_date_code","b2","dow","dout","out","T","u","y","H","M","S","abs","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","getTime","SSFbase1904","datenum_local","epoch","getTimezoneOffset","SSF_strip_decimal","SSF_general","SSF_general_num","V","log","LOG10E","toPrecision","SSF_small_exp","w","toExponential","SSF_large_exp","SSF_normalize_exp","toUpperCase","SSF_format","SSF_write_date","fmt","ss0","ss","outl","commaify","j","pct1","write_num_exp","idx","ee","fakee","$$","$2","$3","frac1","dec1","closeparen","hashq","cc","rnd","dd","dec","_frac","write_num_flt","ffmt","write_num_cm","write_num","write_num_pct","sfmt","mul","r","ri","ff","aval","sign","write_num_f1","den","rr","base","myn","myd","carry","oa","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","dateNF","table","choose_fmt","SSF_split_fmt","in_str","l","lat","m1","m2","eval_fmt","flen","dt","lst","hr","ssm","bt","jj","nstr","myv","ostr","vv","decpt","lasti","retval","SSF_load","SSF_load_table","tbl","make_ssf","SSF_init_table","dateNFregex","CRC32","T0","signed_crc_table","Int32Array","TT","slice_by_16_tables","subarray","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","bstr","crc32_bstr","seed","C","L","crc32_buf","crc32_str","CFB","fs","exports","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_extra_field","blob","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","mt","get_fs","file","parse_zip","parse_mad","di","row","mboundary","boundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","line","parse_mime","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","check_get_mver","chk","HEADER_SIGNATURE","check_shifts","dir_cnt","sectors","sectorify","nsectors","sleuth_fat","sector_list","make_sector_list","sl","chkd","buf_chain","modulus","seen","addr","__readInt32LE","__toBuffer","ENDOFCHAIN","Paths","read_directory","files","mini","minifat_store","pl","sector","namelen","__utf16le","color","R","clsid","size","ct","read_date","storage","get_sector_list","get_mfat_entry","build_full_paths","FI","FP","dad","entry","payload","MSSZ","new_buf","cnt","__readUInt32LE","cfb","CLSID","seed_cfb","nm","rebuild_cfb","gc","_file","fullPaths","HEADER_CLSID","namecmp","Z","elt","_write","_opts","write_mad","fp","fi","ca","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_zip","cdirs","compression","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","DIFSECT","FATSECT","_nm","copy","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","h","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","h1","h2","_inflate","usz","inflate","woff","OL","max_len_1","max_len_2","bits","dst","warn_or_throw","wrn","msg","csz","efsz","fcsz","EF","parse_local_file","meth","parse_dos_date","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","_csz","_usz","ef","_inflateRawSync","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","cfb_add","unsafe","ContentTypeMap","htm","xml","gif","jpg","png","mso","thmx","sh33tj5","ctype","ext","text","encoded","si","fdata","fname","cte","parse_quoted_printable","oi","fpath","utils","cfb_gc","UCFullPaths","UCPaths","UCPath","read_file","readFileSync","write","writeFileSync","writeFile","write_file","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","_fs","blobify","a2u","write_dl","Deno","TextEncoder","encode","utf8write","IE_SaveFile","navigator","msSaveBlob","saveAs","URL","createObjectURL","chrome","downloads","download","revokeObjectURL","href","click","$","File","Folder","encoding","ks","o2","evert_key","K","evert","evert_num","basedate","datenum","dnthresh","refdate","refoffset","numdate","setTime","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","debomit","utf16beread","TextDecoder","decode","dup","fuzzynum","NaN","wt","lower_months","fuzzydate","getYear","lower","zip_add_file","zip","res","utf8decode","widx","ridx","zip_new","XML_HEADER","rencoding","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","utf8reada","orig","utf8readb","ww","utf8readc","utf8corpus","utf8read","htmldecode","wtregex","writetag","g","wxt_helper","writextag","write_w3cdtf","toISOString","XMLNS","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","dc","dcterms","dcmitype","mx","sjs","vt","xsi","xsd","XMLNS_main","XLMLNS","html","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","Infinity","__double","is_buf","readUInt32LE","readDoubleLE","cpdoit","__readInt16LE","__readInt32BE","oI","oR","oo","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","write_double_le","bs","av","LN2","hexstr","fld","pos","parsenoop","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","ba","XLSBRecordEnum","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","format_cell","z","BErr","safe_format_cell","XF","numFmtId","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","origin","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","write_RfX","parse_Xnum","write_Xnum","write_BrtColor","theme","nTS","tint","rgb","DocSummaryPIDDSI","SummaryPIDSI","rgbify","XLSIcv","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","charts","dialogs","macros","write_ct","type2ct","evert_arr","xmlns","Extension","ContentType","f1","PartName","bookType","f2","f3","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","PEOPLE","VBA","get_rels_path","write_rels","rels","rid","add_rels","rId","relobj","targetmode","Id","Type","Target","TargetMode","write_rdf_type","tag","write_rdf_has","write_meta_ods","cp_doit","write_core_props","Props","CreatedDate","WTF","ModifiedDate","PseudoPropsPairs","write_ext_props","W","Application","Worksheets","baseType","write_cust_props","pid","write_vt","fmtid","XLMLDocPropsMap","Title","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","write_TypedPropertyValue","write_FILETIME","XLSPSSkip","guess_property_type","write_PropertySet","RE","PIDSI","hdr","piao","pr","pio","pinfo","write_PropertySetStream","entries2","clsid2","ps0","ps1","writebool","parseuint16","writeuint16","write_Bes","parse_ShortXLUnicodeString","cch","write_XLUnicodeRichExtendedString","xlstr","otext","write_XLUnicodeString","write_HyperlinkString","write_Hyperlink","hl","hashidx","F","Pretarget","write_XLSCell","ixfe","parse_XTI","parse_Ref8U","rwFirst","rwLast","write_Ref8U","write_BOF","wb","write_BoundSheet8","hs","write_Format","b5","write_XF","ixfeP","write_HLink","O","ref","write_HLinkTooltip","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","dbf_to_aoa","ft","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","hend","sheetRows","wch","_RLEN","to_workbook","dbf_to_workbook","to_sheet","from_sheet","sheet_to_dbf","aoa","sheet_to_json","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","_f","hb","rout","_n","_s","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","sylk_to_workbook","sheet_to_sylk","preamble","RS","write_ws_cols_sylk","rec","wpx","width2px","px2char","write_ws_rows_sylk","px2pt","coord","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","dif_to_workbook","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sep","meta","sheet_to_eth_data","eth_to_workbook","sheet_to_eth","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","prn_to_sheet_str","FS","dsv_to_sheet_str","sepcc","startcc","_re","dateNF_regex","finish_cell","fuzzyfmla","dateNF_fix","Y","datestr","timestr","cellText","cellNF","outer","prn_to_aoa_str","lines","prn_to_sheet","bytes","firstbyte","prn_to_workbook","sheet_to_prn","WK_","lotushopper","cb","Enum","WK1Enum","RT","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","parse_cell","parse_LABEL","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","rel","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","v1","v2","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","parse_RANGE","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","argc","argL","argR","parse_SHEETNAMELP","parse_LABEL_16","parse_NUMBER_18","parse_FORMULA_19","parse_XFORMAT","parse_NUMBER_25","parse_FORMULA_28","parse_SHEETINFOQP","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","book_to_wk3","write_BOF_WK3","wscnt","lotus_to_workbook","straywsregex","write_sst_xml","sst","bookSST","Count","uniqueCount","Unique","sitag","write_BrtSSTItem","write_RichStr","write_sst_bin","write_BrtBeginSst","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","Verifier","PasswordDecoded","_JS2ANSI","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","sheet_to_rtf","rgb2Hex","MDW","px","char2width","chr","coll","customWidth","PPI","pt","write_sty_xml","SSF","write_numFmts","NF","formatCode","write_cellXfs","cellXfs","write_BrtFmt","rev_XLSBFillPTNames","XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","patternType","write_BrtXF","write_Blxf","parse_BrtBorder","write_sty_bin","write_FMTS_bin","write_FONTS_bin","write_BrtFont","font","write_FontFlags","italic","strike","outline","shadow","condense","extend","bold","sss","vertAlign","underline","family","charset","scheme","write_FILLS_bin","write_BORDERS_bin","write_BrtBorder","border","write_CELLSTYLEXFS_bin","fontId","fillId","borderId","write_CELLXFS_bin","write_STYLES_bin","write_BrtStyle","xfId","builtinId","write_DXFS_bin","write_TABLESTYLES_bin","write_BrtBeginTableStyles","defTableStyle","defPivotStyle","write_theme","Themes","themeXLSX","write_xlmeta_bin","write_BrtMdtinfo","write_BrtBeginEsfmd","write_BrtBeginEsmdb","cm","write_BrtMdb","mdb","write_xlmeta_xml","_shapeid","write_comments_vml","csize","bbox","joinstyle","gradientshapeok","coordsize","fillopts","color2","angle","fillparm","fillxml","fillcolor","strokecolor","on","obscured","write_comments_xml","iauthor","ID","lastauthor","ts","write_tcmnt_xml","people","carr","rootid","tcopts","tcid","personId","parse_BrtCommentAuthor","write_comments_bin","comment","write_BrtCommentAuthor","write_BrtBeginComment","write_BrtCommentText","write_StrRun","VBAFMTS","rcregex","rcbase","rcfunc","fstr","crefregex","$4","$5","delta","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parsebool","parse_XLUnicodeString2","parse_XLUnicodeString","parse_XLUnicodeStringNoCch","fHighByte","parse_PtgExtraMem","cce","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","parse_PtgExp","parse_PtgStr","parse_PtgSheet","parse_PtgEndSheet","parse_PtgErr","parse_PtgBool","parse_PtgInt","parse_PtgNum","parse_PtgArray","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","parsetab","Cetab","parse_PtgName","nameindex","parse_PtgRef","parse_PtgArea","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgAreaErr","parse_PtgRefN","parse_RgceLocRel","parse_RgceLocRel_BIFF2","rl","cl","parse_PtgAreaN","area","parse_RgceAreaRel","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgNameX","parse_PtgNameX_BIFF5","ixti","parse_PtgRef3d","parse_PtgArea3d","parse_PtgRefErr3d","parse_PtgAreaErr3d","PtgDupes","Ptg18","parse_PtgList","coltype","rt","parse_PtgSxName","Ptg19","parse_PtgAttrNoop","parse_PtgAttrSemi","parse_PtgAttrIf","bitIf","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrSum","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgAttrIfError","parse_RgbExtra","rgce","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti_raw","supbooks","XTI","SID","Name","get_ixti","ixtiraw","formula_quote_sheet_name","sname","stringify_formula","nameidx","last_sp","sp","fflen","lbl","names","xlfn","externbook","bookidx","itab","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","parse_XLSBParsedFormula","parse_Rgce","ptgs","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","csf_to_ods_formula","csf_to_ods_3D","browser_has_Map","Map","get_sst_id","revarr","col_obj_w","outlineLevel","default_margins","margins","mode","defs","footer","get_cell_style","revssf","ssf","applyNumberFormat","check_ws","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_cell","oldt","oldv","os","Strings","revStrings","write_ws_xml","rdata","_drawing","write_ws_xml_sheetpr","needed","vbaraw","cname","Workbook","CodeName","codeName","outlineprops","summaryBelow","summaryRight","above","write_ws_xml_sheetviews","sview","workbookViewId","Views","rightToLeft","RTL","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","write_ws_xml_cols","write_ws_xml_data","_cell","ht","customHeight","write_ws_xml_protection","write_ws_xml_autofilter","Names","Sheet","Ref","write_ws_xml_merges","merges","relc","write_ws_xml_margins","margin","ignoreEC","numberStoredAsText","sqref","write_row_header","write_BrtRowHdr","miyRw","ncolspan","lcs","caddr","parse_BrtWsDim","write_BrtWsDim","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","last_seen","write_BrtShortIsst","ncell","write_BrtCellIsst","write_BrtShortSt","write_BrtCellSt","write_BrtShortRk","write_BrtCellRk","write_BrtShortReal","write_BrtCellReal","write_BrtShortBool","write_BrtCellBool","write_BrtShortError","write_BrtCellError","write_BrtShortBlank","write_BrtCellBlank","write_ws_bin","write_BrtWsProp","write_WSVIEWS2","write_BrtBeginWsView","write_COLINFOS","write_BrtColInfo","write_CELLTABLE","cap","write_SHEETPROTECT","write_BrtSheetProtection","write_AUTOFILTER","write_MERGECELLS","write_BrtBeginMergeCells","write_HLINKS","write_BrtHLink","locidx","write_BrtMargins","write_IGNOREECS","write_BrtCellIgnoreEC","write_LEGACYDRAWING","WBPropsDef","badchars","check_ws_name","safe","_good","write_wb_xml","write_names","workbookPr","WBProps","Hidden","sheetId","Comment","localSheetId","write_BrtBundleSh","iTabID","strRelID","write_wb_bin","write_BrtFileVersion","write_BrtWbProp","filterPrivacy","write_BOOKVIEWS","vistab","write_BrtBookView","write_BUNDLESHS","write_ws","write_cmnt","write_name_xlml","write_ws_xlml_cell","attr","marr","mi","escapexlml","write_ws_xlml_comment","xlml_unfixstr","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","write_ws_xlml_table","skip","write_ws_xlml_wsopts","objects","scenarios","selectLockedCells","selectUnlockedCells","write_xlml","General","write_props_xlml","xlml_write_docprops","Custprops","xlml_write_custprops","BLACKLIST","write_sty_xlml","xf","write_names_xlml","PSCLSID","SI","DSI","UDI","parse_BrtRowHdr","parse_BrtCellBlank","parse_BrtCellRk","parse_BrtCellError","parse_BrtCellBool","parse_BrtCellReal","parse_BrtCellSt","parse_BrtCellIsst","parse_BrtFmlaString","cellFormula","parse_BrtFmlaNum","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtShortBlank","parse_BrtShortRk","parse_BrtShortError","parse_BrtShortBool","parse_BrtShortReal","parse_BrtShortSt","parse_BrtShortIsst","parse_BrtName","Ptg","parse_BrtFont","grbit","parse_FontFlags","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","bCharSet","parse_BrtColor","xColorType","bR","bG","bB","icv","parse_BrtFmt","parse_BrtXF","ixfeParent","ifmt","parse_Int32LE","parse_BrtMdb","parse_ColInfo","cellStyles","colFirst","colLast","coldx","parse_BrtCellRString","parse_BrtCalcChainItem$","parse_BrtDVal","parse_BrtBeginWsView","parse_BrtWsProp","parse_BrtPane","parse_BrtWbProp","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","parse_BrtBundleSh","parse_BrtBeginSst","parse_BrtMdtinfo","parse_BrtBeginEsmdb","parse_ExternSheet","parse_BIFF5ExternSheet","parse_BrtArrFmla","rfx","fAlwaysCalc","parse_BrtShrFmla","parse_BrtMargins","parse_BrtWsFmtInfo","parse_BrtHLink","relId","parse_BrtBeginComment","parse_BrtCsProp","parse_BrtDVal14","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2INT","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_ws_biff8_cell","bf","write_Formula","o1","write_FormulaValue","o3","write_Number","write_BoolErr","write_LabelSst","write_Label","b8","write_ws_biff8","_WB","_sheet","MAX_ROWS","write_Guts","guts","write_ws_cols_biff8","write_ColInfo","write_Dimensions","write_Window2","write_MergeCells","write_ws_biff8_hlinks","HL","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","write_Window1","safe1904","parsexmlbool","write_FONTS_biff8","write_Font","write_FMTS_biff8","write_CELLXFS_biff8","write_Country","write_biff_continue","write_SST","blen","write_biff_buf","write_biff8_buf","fix_write_opts","write_biff2_buf","write_ws_biff2","make_html_row","rowspan","colspan","editable","HTML_BEGIN","HTML_END","sheet_to_html","make_html_preamble","sheet_add_dom","or_R","or_C","getElementsByTagName","midx","is_dom_element_hidden","elts","hasAttribute","getAttribute","_t","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","ownerDocument","defaultView","getComputedStyle","getPropertyValue","write_styles_ods","master_styles","write_content_ods","write_text_p","null_cell_xml","ods","ROWS","textp","_Fref","text_p","_tgt","fods","cidx","colobj","write_automatic_styles_ods","write_ods","manifest","rdf","write_rdf","write_manifest","u8_to_dataview","array","DataView","buffer","byteOffset","byteLength","stru8","u8concat","u8a","acc","u8","parse_varint49","ptr","varint","write_varint49","varint_to_i32","i32","parse_shallow","num","write_shallow","proto","parse_iwa_file","_a","ai","fl","merge","write_iwa_file","ias","ia","midata","aipayload","mid","parse_snappy_chunk","chunks","decompress_iwa_file","compress_iwa_file","frame","write_new_storage","dv","writeDecimal128LE","mantissa","setFloat64","setUint32","write_old_storage","parse_TSP_Reference","write_tile_row","tri","_b","_c","_d","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","setUint16","fix_opts_func","defaults","write_numbers_iwa","numbers","trunc","dependents","indices","packet2","deps","x2","y2","indices_varint","ivi","mess","u8contains","search","docroot","xi","packet","sheetrootref","pb","cruidsref","oldbucket","cruids","uuid","store","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sstroot","sentry","sx","sxi","sstdata","newsst","raw32","tile","tileref","tileroot","tentry","tx","tiledata","rowload","R2","tilerow","raw3","write_zip_xlsxb","wbrels","foo","wbext","vbafmt","threadedcomments","links","coreprops","extprops","custprops","themes","calcchains","vba","drawings","TODO","_sn","_i","wsrels","need_vml","cf","rId1","write_sst","write_wb","write_sty","write_xlmeta","write_zip_xlsx","needtc","write_people_xml","person","providerId","write_cfb_ctr","write_string_type","bom","write_binary_type","writeSync","reset_cp","reset_ansi","check_wb","check_wb_names","N","codes","cn","write_stxt_type","sheet_to_txt","sheet_to_csv","write_cfb_type","write_xlscfb","wbpath","write_xls_props","Keys","DSEntries","SEntries","CEntries","DocSummaryRE","SummaryRE","CEntries2","fill_vba_xls","newpath","write_zip_type","write_zip_denouement","oopts","ftype","nodebuffer","generate","encrypt_agile","make_json_row","defval","isempty","defineProperty","enumerable","__rowNum__","rawNumbers","outi","counter","header_cnt","skipHidden","blankrows","qreg","make_csv_row","rs","txt","forceQuotes","endregex","strip","sheet_add_json","js","skipHeader","JS","ws_get_cell_stub","RC","cell_set_hyperlink","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_new","book_append_sheet","roll","book_set_sheet_visibility","sh","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","author","sheet_set_array_formula","dynamic","rng","rngstr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","DataExportService","locale","currencyPipe","CurrencyPipe","decimalPipe","DecimalPipe","percentPipe","PercentPipe","exportDataAsCommaSeparatedValues","fileName","commaSeparatedValues","transformToCommaSeparatedValues","exportDataAsExcel","worksheet","workbook","excelBuffer","exportTableData","exportType","columns","filteredData","filterAndTransformTableData","exportTypes","excel","exportAllTableData","searchObject","searchObjectClone","fullDataset","fullDatasetGathered","column","reservedTableDisplayOrders","actionColumn","columnOne","columnTwo","tableColumn","formatColumn","columnValue","dataFunction","getFormattedColumn","shortDate","dateTime","longDate","localeDefinitions","unitedStatesDollars","symbol","formattedRoundingPrecision","decimal","csvRows","carriageReturn","lineFeed","LOCALE_ID","tableLevelEllipsis","quickFilterDisplayed","filterVisible","initialLoadComplete","toggleSettingsDisplay","settingsVisible","_r20","toggleExportDisplay","exportVisible","tableFullyLoaded","tableData","toggleCreateDisplay","displayMode","displayTable","expandTitle","dynamicComponent","_r37","validAdditionalLayoutExpandComponentChanged","ctx_r35","formlyDefinitions","additionalLayout","validExpandComponentChanged","CommonTableComponent_div_12_ng_template_5_div_4_div_3_Template","layout","CommonTableComponent_div_12_ng_template_5_div_3_Template","CommonTableComponent_div_12_ng_template_5_div_4_Template","_r42","ctx_r41","_c6","ctx_r40","expandActions","CommonTableComponent_div_12_ng_template_6_span_1_Template","ctx_r26","displayingExpandActions","column_r43","tmp_1_0","column_r44","ctx_r49","getTableColumnData","item_r45","column_r47","ctx_r50","ctx_r51","currencySymbol","ctx_r52","ctx_r53","ctx_r54","_r72","ctx_r70","_c7","ctx_r55","hasLinkRouteData","_r84","ctx_r82","updateIndex","_r87","ctx_r85","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_2_a_1_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_2_a_2_Template","_c8","ctx_r76","virtualData","_r91","ctx_r89","selectItem","_r94","ctx_r92","ctx_r79","rowLevelEllipsis","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_2_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_3_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_4_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_ng_template_5_Template","ctx_r56","ctx_r57","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_3_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_4_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_5_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_6_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_7_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_8_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_9_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_10_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_11_Template","CommonTableComponent_div_12_ng_container_23_ng_container_2_div_12_Template","ctx_r46","loadingTableData","loadingNextDataset","actionColumnDisplayOrder","ellipsis","_r98","ctx_r97","CommonTableComponent_div_12_ng_container_23_ng_container_2_Template","_c9","ctx_r29","rowActionsExist","navigationHighlighting","isItemSelected","visibleColumns","_r100","ctx_r99","sidebarVisible","CommonTableComponent_div_12_ng_template_4_Template","CommonTableComponent_div_12_ng_template_5_Template","CommonTableComponent_div_12_ng_template_6_Template","CommonTableComponent_div_12_ng_container_13_Template","ctx_r101","checkIfLastItem","CommonTableComponent_div_12_ng_container_21_Template","CommonTableComponent_div_12_ng_container_23_Template","_c10","rowHeight","_r106","ctx_r105","scrollTableToBottom","ctx_r102","_r108","ctx_r107","ctx_r103","filterResultsSuggestionCount","CommonTableComponent_div_20_ng_template_1_Template","CommonTableComponent_div_20_ng_template_2_Template","_r104","CommonTableComponent","dataExportService","fieldContext","rowIdentifier","selectedItems","fireFormlyChangeDetection","viewport","tableContainer","tableSummary","customContext","currentIndex","exportAllowed","createVisible","layoutIsValid","additionalLayoutIsValid","selectedPageSizeChanged","settingsApplied","dataSubscription","pixelIdentifier","sidebarClassIdentifier","additionalColumnRequiredWidth","minimumColumnCharacterWidth","maximumColumnCharacterWidth","actionItemWidth","headerOnlyHeight","sidebarUpdateDelay","minimumDynamicTableHeightRows","numberDataFormatTypes","resetTableData","setTableItemIdentifier","setMinimumDrawerItemHeight","decorateTableColumns","setSelectedColumns","setCommonTableContext","setRowActionsExist","setNavigationHighlighting","setExportAllowed","loadTableData","updateExpandActions","getRoundingPipeFormat","roundingPrecision","roundPrecisionIsDefined","getLinkRouteData","single","selectedRow","shouldToggleSelectedItem","capturedSelectedItemEventPromise","shouldHandleItemSelection","shouldHandleItemDrillInAction","shouldHandleItemCreationCommandString","shouldRunViewOrUpdateCommands","configureSelectedItemDisplayMode","updateDirection","setAdditionalSelectedItemData","tableExpandDefinition","additionalSelectedItemDataPromise","useAdditionalSelectedItemDataPromise","transformToFieldDataPromise","setTableDimensions","addSelectedItem","isFunction","decorateViewModel","scrollToIndex","updateSelectedItem","deleteSelectedItem","initializeSettingsDisplay","updateSidebarLocation","initializeExportDisplay","applySettings","exportData","exportColumns","enableFullDatasetExport","exportAll","exportMappingDataPromise","transformToValueDataPromise","displayed","scrollTableToTop","handleValidity","deleteStatement","deleteStatementPromise","navigateTo","linkRouteData","getCommonTableContext","drillIn","navigationAccess","exportAllowedPromise","settingsLayout","appendTo","appendToTargets","multipleOf","validPageSize","exportLayout","lazyLoadEvent","apiPromiseString","calculateTableHeight","calculateColumnWidths","calculatedItemCount","reservedSpace","getPageHeaderHeight","fullPageReservedHeight","displayableTableItems","isBelowMinimumSidebarHeight","setTableHeight","itemCount","calculatedTableHeight","explicitHeight","dataLengthArray","getDataLengthArray","actionItemCount","getActionItemCount","displayActionColumn","reservedColumnWidth","getReservedColumnWidth","weight","smallPhone","totalWidth","widthPercent","standardColumnWidth","tablet","largeDesktop","columnHeaderLength","columnDataLength","displayableTableItemCount","belowMinimumVirtualHeight","belowMinimumExplicitHeight","drawerElement","displayFullScreenView","borderTopLeftRadius","borderBottomLeftRadius","drawerWidthPercentage","expandDefinition","component","customMessage","disabledExpandItem","commandString","CdkVirtualScrollViewport","CommonTableComponent_span_7_Template","CommonTableComponent_span_8_Template","CommonTableComponent_span_9_Template","CommonTableComponent_span_10_Template","CommonTableComponent_span_11_Template","CommonTableComponent_div_12_Template","CommonTableComponent_div_17_Template","CommonTableComponent_div_18_Template","CommonTableComponent_div_19_Template","CommonTableComponent_div_20_Template","CommonTableComponent_div_21_Template","_c11","_c12","_c13","dataLevel","objectDifferenceDescription","DifferenceDisplayComponent_div_0_ng_template_1_div_0_div_1_Template","DifferenceDisplayComponent_div_0_ng_template_1_div_0_span_10_Template","previousSibling","mappedDifference","getObjectDisplayIcon","getObjectDisplayType","itemValue_r17","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_div_2_span_10_Template","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_div_2_div_11_Template","difference","updatedValue","originalValue","_r30","_r28","ctx_r27","itemValue_r25","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_div_4_span_10_Template","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_div_2_Template","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_div_4_Template","_r34","DifferenceDisplayComponent_div_0_ng_template_1_div_1_div_6_Template","getLabelValue","differenceType","DifferenceDisplayComponent_div_0_ng_template_1_div_0_Template","DifferenceDisplayComponent_div_0_ng_template_1_div_1_Template","isNumericKey","_r40","_r46","_r44","ctx_r39","_r49","DifferenceDisplayComponent_div_0_ng_template_2_div_0_div_5_Template","DifferenceDisplayComponent_div_0_ng_template_2_div_0_div_6_Template","DifferenceDisplayComponent_div_0_ng_template_2_div_0_Template","displayObjectName","nestedDifference_r51","nestedDifferences","i_r52","DifferenceDisplayComponent_div_0_ng_template_1_Template","DifferenceDisplayComponent_div_0_ng_template_2_Template","DifferenceDisplayComponent_div_0_ng_template_4_Template","DifferenceDisplayComponent","parentValue","modelDisplayDefinition","labelledDifferenceTypes","differenceTypes","updatedParentValue","mapModelDisplay","schemaDefinition","getFormattedValue","isPrimitiveArrayDifference","handleArrayObjectDescriptions","getPageContext","arrayItem","getPrimitiveArrayValue","formatPromise","iconPrefix","iconFunction","itemDefinition","arrayValue","descriptionPromise","primitiveValue","descriptionType","propertyKeys","descriptionPropertyType","schemaProperties","getSchemaProperties","propertyKey","propertyData","schemaProperty","schema","none","outputPromise","DifferenceDisplayComponent_div_0_Template","scrollPanelDisplayed","handleChanges","mappedDifference_r3","DifferencesDisplayComponent","useMinimumWidth","objectName","initialObject","comparisonObject","differencesDisplayScrollPanel","mappedDifferences","mapDifferences","scrollYRatio","fiftyMilliseconds","getMappedDifference","mapDifferenceLevel","sortDifferences","mappedDifferenceDefinitions","rootLevelDifferences","nestedDifference","firstLevelParts","finalDifferences","firstLevelPart","firstLevelDifferences","firstLevelDifference","mappedValues","mapParentValues","newModelDisplayDefinition","comparisonLevelValue","originalParentValue","initialLevelValue","childDifference","newKey","initialMappedDifference","splitKeys","nestedSchemaKey","currentSchemaDefinition","differenceObject","getCleanedProperty","objectValue","keyPart","updatedArrayItem","sortedComparisonArray","sortBusinessLogicArray","updatedResourceIdentifier","directDifference","levelDifference","primitiveArrayDifference","objectArrayDifference","mappedDifferenceDefinition","isObjectArrayDifference","comparisonItem","itemOneIsPrimitiveArray","itemTwoIsAPrimitiveArray","DifferencesDisplayComponent_div_2_Template","DifferencesDisplayComponent_ng_template_5_Template","DynamicFormlyComponent","dataSet","initialData","layoutSchema","valuesChanged","formGroup","UntypedFormGroup","formValidityChanged","formValueChanged","statusChanges","checkBusinessLogicEquality","valueChanges","_newData","initializeCustomDataControls","markAllAsTouched","asyncValidator","asyncValidationPromise","setContextInChildren","DynamicComponent","viewContainerReference","showLoader","componentReference","ngAfterViewInit","clear","createComponent","changeDetectorRef","DynamicComponent_ng_template_0_Template","SearchFilterComponent","dynamicFormlyComponent","searchOptions","loadedCategoryOption","loadedFilterCriteria","alignCentered","noCategoryFilter","categoryChanged","keywordTooltip","setDynamicFormlyDefinitions","sortSearchOptions","searchOptionOne","searchOptionTwo","searchValue","layoutField","keyBoardKeyConstants","enter","backspace","attributes","keydown","contextMenuCapturedWidth","chartReadyForDisplay","chartDefinition","chartConfiguration","chartColors","groupByCount","chartPivotProperty","chartPivotProperties","chartRadialGaugeChart","squareCardDisplay","overlayDynamicComponent","summaryDisplay","SummaryCardComponent_ng_template_5_div_0_Template","SummaryCardComponent_ng_template_5_div_1_Template","summaryCardLoading","SummaryCardComponent","changeDetector","overlayDynamicContext","summaryFunction","summaryPromise","summaryCardClick","titleDisplay","largeSummary","overlayMenuActive","_overlayMenuActive","eventEmitDebounceDelay","populateCard","currentlyActive","dynamicComponentContext","setActiveCard","_r0","SummaryCardComponent_ng_template_4_Template","SummaryCardComponent_ng_template_5_Template","AppEventConstants","addBanner","addBannerEvent","addDrawer","addDrawerEvent","addFullScreenBanner","addFullScreenBannerEvent","addLoginMessage","addLoginMessageEvent","alterUtilityTitle","alterUtilityTitleEvent","chatModalDisplayed","chatModalDisplayedEvent","contextMenuActive","contextMenuActiveEvent","displayContextOverlay","displayContextOverlayEvent","displayDrawerOverlay","displayDrawerOverlayEvent","hideAssociatedMenusEvent","navigateToAccessDenied","navigateToAccessDeniedEvent","redrawDashboardEvent","refreshBadgePromise","refreshBadgePromiseEvent","refreshComponent","refreshComponentEvent","reloadProductSettings","reloadProductSettingsEvent","repeaterItemAltered","repeaterItemAlteredEvent","repeaterCleanModel","repeaterCleanModelEvent","ruleOverride","ruleOverrideEvent","setBadgePromise","setBadgePromiseEvent","setContentContext","setContentContextEvent","setUtilityMenu","setUtilityMenuEvent","siteLayoutChangedEvent","tableExpansionPanelLoaded","tableExpansionPanelLoadedEvent","themeChanged","themeChangedEvent","walkthroughEnd","walkthroughEndEvent","walkthroughStart","walkthroughStartEvent","logs","ruleValidationDefinitions","ruleValidatorDefinitions","securityAccessPolicies","securityAccessPolicyDefinitions","securityAccessPolicyMappings","securityApplications","workflowActionInstances","workflowActionRequisites","workflowFailureActions","workflowRequisiteTypes","average","headerIdentifier","dollarSign","doubleQuote","leftBracket","leftParantheses","hyphen","pound","rightParantheses","accessPolicyId","actionId","assignedTo","createdBy","doneDate","layoutId","ruleDefinitionId","rulePresentationDefinitionId","ruleValidationDefinitionId","ruleWorkflowDefinitionId","subtype","standardWidgetTableHeight","translateXMinusThreeSixtyPx","exclamation","flag","handDown","handUp","infoCircle","star","starOpen","visa","masterCard","americanExpress","discover","dinersClub","payPal","money","customTooltip","displayNone","drawer","exclamationCircle","fontAwesomeBell","fontAwesomeCalendarCheckMark","fontAwesomeComments","fontAwesomeFullWidth","fontAwesomeCalendar","fontAwesomeEdit","fontAwesomeInfoCircle","fontAwesomeHistory","fontAwesomeHourglass","fontAwesomeKey","fontAwesomePencil","fontAwesomeQuestion","lineOne","overlayDrawer","pAccordionHeaderText","pButtonSecondary","pButtonDanger","pContentSmallPhone","pDropDownLabel","pinned","pinnedDrawerOverlay","productSettingsOverlay","scrollPanelContent","scrollPanelHidden","scrollPanelVerticalScrollBar","scrollPanelWrapper","sectionTitle","sectionTitleText","selectedErrorContainerBorder","sortAscending","sortDescending","stonlyWidget","tabViewTitle","textSecondaryColor","textErrorColor","textWarningColor","textSuccessColor","textInfoColor","visuallyHidden","warningColor","fitContent","maxContent","addCreateActionIdentifier","medium","extraLarge","pngImage","pastThirtyDays","pastNinetyDays","pastOneHundredAndEightyDays","basePageEntityCreate","reportPowerBiStandard","div","fontAwesomeIcons","equal","notEqual","lessThan","lessOrEqual","greaterThan","greaterOrEqual","or","boolean","entityTypeDisplay","yesNoBoolean","head","notModified","preconditionFailed","unauthorized","widgetfullWidth","pinnableDrawerWidth","simple","summary","tableExpand","failure","javascript","markup","typescript","sql","csharp","warn","contactSupportForPermissions","ownershipNotAllowed","pageAccessNotAllowed","pleaseEnterCredentials","requiredValueMessage","sessionExpired","switchCaseNotHandled","admin","dashboard","profile","firefox","edge","safari","granted","denied","prompt","unknown","geolocation","noAvailableOptions","primaryNavigation","profileActions","settingActions","function","bigint","sidebar","global","phoneContent","tabletContent","largeTabletContent","desktopContent","largeDesktopContent","loginPage","changePasswordPage","dashboardPage","blocked","continue","administratorDisplay","administrators","supportUserDisplay","supportUsers","userDisplay","waterStreetStandard","adminModuleAccess","biModuleAccess","organizationModuleAccess","workitemsModuleAccess","calendarInputIcon","drawerWidth","expandedNavigationMenuWidth","helpIconPadding","helpIconWidth","parameterButtonSetHeight","parameterContainerTitleHeight","circularChartInformationBottomMargin","circularChartInformationCardTopMargin","circularChartSquareCardBottomMargin","smallPadding","standardCommonTableWidgetHeight","standardContentPadding","summaryCardChartBottomMargin","squareCardChartBottomMargin","radialGaugeChartBottomPadding","radialGaugeChartCircumference","radialGaugeChartInformationCardBottomMargin","radialGaugeChartRotation","radialGaugeChartStandardCutOut","radialGaugeChartTopPadding","tableSearchHeight","tinyPadding","securityTokenKey","securityUserKey","securityMultiFactorAuthenticationEnabledKey","securityMultiFactorAuthenticationMethodKey","securityExpiryKey","sessionValidKey","sessionExpiryKey","sessionIdKey","systemTimeZone","workflowEngine","fiveMilliseconds","tenMilliseconds","threeHundredMilliSeconds","halfSecond","threeQuarterSecond","twoSeconds","threeSeconds","fourSeconds","fiveSeconds","oneMinute","fiveMinutes","thirtyMinutes","sevenDays","thirtyDays","zeroMinutes","oneHundred","companies","workItemQueues","workItemQueue","imperial","metric","authorizationKey","tokenKey","multiFactorKey","tokenExpiryKey","eTag","ifMatch","ifNoneMatch","killAllSessions","runBusinessRules","preRequisite","postRequisite","list","timeline","secondaryList","secondaryView","childList","ChartConstants","canvasElement","bar","doughnut","pie","scatter","hour","amber","black","blue","darkGray","gray","green","indigo","lightBlue","lightGray","lightGreen","pink","purple","orange","red","teal","yellow","second","minute","month","year","Active","Removed","Text","Action","StorageType","Persisted","Embedded","Referenced","associatedRules","fieldIndex","sectionIndex","tabIndex","customTabContent","customIconInput","customIframe","customImageInput","customInputPassword","customInputSearch","customMaskedInput","customOperationButton","customResourceIdentifier","customSummaryCard","propsDisabled","formState","halfGrid","fullGrid","fullSize","mouseOut","mouseOver","tap","entityTypeIdentifier","parentNavigationEntityIdentifer","parentNavigationEntityType","paymentBatchIdentifier","approved","rejected","PermissionConstants","page","visual","employer","physical","SystemServiceConstants","chat","chatData","componentName","deploymentId","knowledgeBase","knowledgeBaseUrl","modalService","offline","offlineMessage","walkthrough","widgetId","WindowEventConstants","beforeUnloadEvent","messageEvent","resizeEvent","scrollEvent","keyup","workItemIdentifier","high","normal","low","ignored","overdue","manage","tabMenu","tabItemHeights","Subscription","fixedHeightContentClass","tabMenuWidth","verticalOffsetHeight","getBoundingRectangleById","scrollY","setAvailableContentHeight","setTabDisplay","ngAfterViewChecked","setScrollToCommand","tabMenuItem","reservedHeight","getElementVerticalPositionById","contentTopIdentifier","activeTabHeight","informationMenuPageContext","displayComponentCounter","displayComponentPromise","summaryCard","summaryCardOne","summaryCardTwo","displayArray","sectionId","scrollToElementById","displaySelectedElementBorderById","BIReportSettingDirective","iconActionIds","navigateToEditReport","navigateToViewReport","deleteReport","getDeleteStatement","navigateToDisplay","commandArguments","basePageReportDisplayComponentName","displayComponentInstanceName","powerBIReportMapping","embedUrl","isFromPbix","isOwnedByMe","web","getMatchingReportNames","getmatchingDisplayNames","displayComponentName","getItemSelectedInfo","navigateAction","ClickOutsideDirective","elementRef","contentDisplayed","ignoreAppendedBodyPanelClicks","clickOutside","appendedPanelClickDepth","onClick","clickedInside","panelClicked","includedClassLists","includedPath","composedPath","clickOutsidePanelControl","removeEventListener","addEventListener","CommonChildListDirective","CommonListDirective","instanceBasedPermissions","hiddenCommonListItem","descriptionLineFormat","informationLineFormat","informationIcons","getWildcardEntityTypes","namesFromList","sorter","sorters","refreshCommonListContext","loadItems","enabledFilters","getPrimaryFilter","filters","direction","getSupportedChildPermissions","setInstanceBasedPermissions","listData","accessPolicy","changeSelectedItem","changeDisplayMode","commonListContext","creatableEntityTypes","requiredImplementationMessage","handleSortingChange","handleFilterChange","firstLoad","performPreMappingRequirements","mapToListItem","listItem","generateCommonListContext","performPostLoadActions","getData","_filter","_orderBy","_offset","setCreatableEntityTypes","childTypeWildCard","supportedChildPermissions","supportedChildPermission","entityTypeId","OwnershipSecurityGroupId","_data","pageActions","tableFilterQuery","setupPage","setupPageVariables","setupPageCharts","setupPageActions","refreshDataQueries","closeChartTooltips","mouseOutEvent","MouseEvent","querySelectorAll","chartClasses","parameterSchema","parentChanged","displayChild","_index","formlyFieldConfig","objectChanged","dataClone","nestedFormlyFieldConfig","cleanedDataKey","clearNestedDataIdentifier","dataChanged","displayModes","itemActions","entityDisplayName","initialCreateData","isDisplayModeAvailable","toLocaleLowerCase","parentEntityDefinition","MobileTooltipDirective","onScroll","deactivate","ProductSettingDirective","productAuthorityTypes","TooltipDisplayDirective","tooltips","RuleWorkflowDisplayDirective","blockingTooltip","warningTooltip","ruleViolationWorkflowActions","overrideAllowed","blockedTooltipMessage","warningTooltipMessage","getOverrideAllowed","ruleViolationWorkflowAction","overridable","ActivityListComponent","iconAsc","iconDesc","activityChanged","getSortedActivities","activities","activity","actionClick","dismissAllActivities","dismissActivity","filteredActivities","isFiltered","statusFilterCount","regEx","getFilteredActivities","activityA","activityB","lastActivityTime","timePassed","fromMillis","descriptionLine","statusMessage","informationLineRelativeDateTime","searchable","sortable","supportMarkdown","searchFilterFormat","onFilterChange","onSortChange","location_r1","copyAddressToClipboard","getAddressLineOne","getAddressLineTwo","AddressListComponent","_location","AddressListComponent_ng_template_4_Template","ApplicationSearchComponent","BIReportComponent_ng_template_4_ng_template_0_div_1_Template","BIReportComponent_ng_template_4_ng_template_0_div_2_Template","cancelAction","updateEntity","reportButtonActions","saveEnabled","drawerAction","setDrawerButtonAction","BIReportComponent_ng_template_4_ng_template_2_div_0_div_7_Template","drawerOptions","reportData","pageMode","deleteConfirmationMessage","BIReportComponent_ng_template_4_ng_template_2_div_0_Template","BIReportComponent_ng_template_4_ng_template_2_div_1_Template","deleteMode","BIReportComponent_ng_template_4_ng_template_0_Template","BIReportComponent_ng_template_4_ng_template_2_Template","BIReportComponent","clonePowerBiReportComponent","pendingChanges","viewMode","userSecurityGroups","standardWorkspaceType","editEnabled","basePageInstance","editInProgress","displayModal","powerBiReportLookup","allowedSecurityGroups","allowedBaseSecurityGroups","userEntityInstance","reportSearchUrl","viewReport","deleteReportConfirmation","validateEditMode","editReport","allowedDisplayComponentSecurityGroups","displayComponentInstanceId","basePageInstanceId","initDrawer","initLayout","setDrawerButtonDefinition","externalReport","pageUrl","lookupReportData","isFavorite","createdDate","lastUpdatedById","lastUpdatedDate","trimRight","updateSecurityGroups","deleteSecurityGroups","updateDisplayComponent","reportDisplayJson","reloadPage","basePageComponentDefinitionInstance","basePageJsonData","renamePowerBIReport","BIReportComponent_ng_template_1_Template","BIReportComponent_ng_template_3_Template","BIReportComponent_ng_template_4_Template","FORMATS","datetime","DATETIME_MED_WITH_SECONDS","millisecond","TIME_WITH_SECONDS","TIME_SIMPLE","week","quarter","_adapters","_date","override","_create","chartOptions","fromFormat","fromJSDate","fromObject","valueOf","toFormat","toLocaleString","unit","diff","as","weekday","radialGaugeChart","ChartComponent_div_1_ng_template_2_span_0_Template","ChartComponent_div_1_ng_template_1_Template","ChartComponent_div_1_ng_template_2_Template","ChartComponent","chartTransform","maintainAspectRatio","pivotProperty","pivotProperties","fillMissingDataSets","chartContainer","colorSwatch","chartData","displayMissingDataMessage","displayConfigured","changeDebounceDelay","setChartContext","toSummaryChart","toRadialGaugeChart","toSquareChart","xAxes","scales","toThemeColor","chartTypes","stacked","datasets","cloneChartData","handleChartData","chartContext","handleAggregateData","labels","ChartComponent_ng_template_0_Template","ChartComponent_div_1_Template","ChartComponent_div_2_Template","chatOfflineMessage","chatOfflineSecondaryMessage","CloudChatComponent","CloudChatContainer","destroyed","chatService","chatOffline","drawerTitle","positionModalContent","getDrawerIndex","loadChatSettings","openModalChat","closeModalChat","getChatConfiguration","systemInstance","systemService","findByProperty","services","drawers","drawerIndex","childNodes","textContent","CloudChatComponent_ng_template_0_Template","CloudChatComponent_div_4_Template","CommissionDisbursementStatus","CommissionsListComponent","entityservice","createdByList","searchFlag","createdByIds","createdByFilter","getFullCreatorDataSet","listFilters","navigateToWizard","filterChanged","activeExists","activeDisbursementExists","skipLocationChange","activeSnapshotExists","cancelRoute","decisionDate","decidedBy","createdByName","decidedByName","statusColor","searchfilters","searchTerm","createdByMatch","creator","CommissionsListComponent_ng_template_1_Template","CommissionsListComponent_ng_template_2_Template","commissionsValuesChanged","commissionsData","archivedCommissionsData","CommissionsScheduleUpdateComponent_ng_template_1_ng_template_3_Template","applyCommissionsCorrections","shouldSave","saving","CommissionsScheduleUpdateComponent","allowedUserAccess","productCommissionSchedules","commissionsSchedulesPath","getProductCommissionSchedules","setCommissions","setAgenciesName","userEffectivePermissions","getDataSecurityRights","commissionSchedule","changed","agencyEntityInstance","isPolicyTermActive","hideSingularIdentifier","scheduleType","CommissionsScheduleUpdateComponent_ng_template_0_Template","CommissionsScheduleUpdateComponent_ng_template_1_Template","CommissionsComponent_ng_template_3_div_1_Template","CommissionsComponent_ng_template_3_div_2_Template","CommissionsComponent_ng_template_5_ng_template_0_Template","CommissionsComponent","groupWildCard","drawerComponent","entityAltered","CommissionsComponent_ng_template_1_Template","CommissionsComponent_ng_template_3_Template","CommissionsComponent_ng_template_5_Template","_r12","handleSearchTextAdd","toggle","quickFilterMenuItems","action_r17","enabledFilter_r22","ctx_r23","handleRemoveFilterEvent","CommonListComponent_div_6_ng_template_3_Template","handleSortChangeEvent","selectedSorter","_r33","_r35","_r29","CommonListComponent_div_8_ng_template_4_Template","CommonListComponent_div_8_ng_template_5_Template","_r27","sorterMenuItems","action_r48","_r51","item_r40","ctx_r42","ctx_r43","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_div_12_span_1_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_div_12_span_2_Template","_r60","ctx_r59","allowClickThrough","listItemComponent","_r64","ctx_r63","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_ng_template_4_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_ng_template_7_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_ng_template_8_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_div_12_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_div_13_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_ng_template_15_Template","CommonListComponent_ng_template_10_ng_template_0_ng_template_2_Template","ctx_r37","CommonListComponent_ng_template_10_ng_template_0_Template","CommonListComponent_ng_template_10_ng_template_1_Template","_r38","CommonListComponent","filterChipsContainer","sortMenuContainer","listOffset","itemContainerSelector","moreSelector","commonListSelector","line1Selector","themeHighlightColor","themeHighlightColorOpacity","selectedClass","addQuickFilter","addSorter","changeSort","handleAddFilterEvent","addFilter","removeFilter","inputValue","itemContainer","closest","commonListContainer","line1Container","alreadySelected","deselectItems","getThemeColor","clientHeight","commonListElement","chipRowCount","chipRowHeight","newOffset","firstRowOffset","emptyChipRowOffset","initialListOffset","mobileOffset","rawColor","sortEvent","actionEvent","CommonListComponent_ng_template_2_Template","CommonListComponent_ng_template_4_Template","CommonListComponent_ng_template_5_Template","CommonListComponent_div_6_Template","CommonListComponent_div_7_Template","CommonListComponent_div_8_Template","CommonListComponent_ng_template_9_Template","CommonListComponent_ng_template_10_Template","DynamicCommonTableComponent","activityListComponent","addClaimPaymentComponent","addressListComponent","addExposureClaimComponent","adjustmentDetailsComponent","adjustmentSummaryComponent","adjustmentWriteOffAmountComponent","adjustmentWriteOffCommentsComponent","adjustReservesClaimComponent","applicationSearchComponent","approveClaimPaymentClaimComponent","associatedEntityListComponent","associatedKeyContactsComponent","associatedOrganizationComponent","chartComponent","cloudChatComponent","commissionDisbursementSummaryComponent","commissionDisbursementDetailsComponent","commissionDisbursementListExpandComponent","commissionsComponent","commissionsListComponent","commonListComponent","commissionsScheduleUpdateComponent","bindTransactionComponent","claimPaymentAdditionalPayeesComponent","claimPaymentPayeeComponent","createClaimComponent","createQuoteOrClaimComponent","createTransactionComponent","finalWizardLayoutStepComponent","filesComponent","dynamicCommonTableComponent","dynamicFormlyWrapperComponent","dynamicReallySimpleSyndicationFeedReaderComponent","dynamicSummaryCardComponent","dynamicWeatherCardComponent","dynamicWizardComponent","exposureOutstandingReservesComponent","exposurePaymentsComponent","exposureRecoveriesComponent","fortePaymentMethodComponent","genericDashboardComponent","makePaymentComponent","makePaymentReceiptComponent","manageAdditionalPayeesClaimComponent","manageClaimOwnerClaimComponent","manageExposurePartiesClaimComponent","managePaymentMethodComponent","managePartiesConfirmationClaimComponent","nextPaymentInstallmentDetailsComponent","nonRenewPolicyComponent","notesComponent","paymentDetailsComponent","parentSelectionComponent","paymentBatchApproveComponent","paymentBatchComponent","paymentBatchCreateComponent","paymentMethodProcessorComponent","paymentReversalConfirmationComponent","policyAndClaimQuickSearchComponent","refundConfirmationComponent","paymentReversalSelectionComponent","policyDetailsComponent","processOnePaymentMethodComponent","productSettingsComponent","productSettingListComponent","rejectClaimPaymentClaimComponent","ruleListItemComponent","rescindNonRenewPolicyComponent","selectDisbursementOrganizationsComponent","selectExistingPowerBiReportComponent","selectClaimTypeComponent","stonlyHelpComponent","termAlterPaymentPlanComponent","transactionAccountingDetailsComponent","transactionAssetsComponent","transactionCancelEffectiveDateComponent","transactionCancelReasonsComponent","transactionCancelReinstateCommentsComponent","transactionCoveragesDeductiblesComponent","transactionFormsComponent","transactionEndorseIssueDifferencesComponent","transactionEndorseIssueSummaryComponent","transactionEndorseReasonsComponent","transactionEndorseStatusEffectiveDateComponent","transactionInterestsComponent","transactionReasonsComponent","transactionRescindCancelComponent","transactionRescindEndorseComponent","transactionDeclineReasonsComponent","updateClaimExposureStatusClaimComponent","updateClaimStatusClaimComponent","verifyCoverageClaimComponent","workItemListComponent","biReportComponent","__webpack_require__","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","_ref26","_ref27","_ref28","DynamicFormlyWrapperComponent","_ref29","DynamicReallySimpleSyndicationFeedReaderComponent","_ref30","DynamicSummaryCardComponent","_ref31","DynamicWeatherCardComponent","_ref32","DynamicWizardComponent","_ref33","_ref34","_ref35","_ref36","ExternalReportComponent","_ref37","FinalWizardLayoutStepComponent","_ref38","FilesComponent","_ref39","FortePaymentMethodComponent","_ref40","HistoryComponent","_ref41","_ref42","_ref43","_ref44","_ref45","_ref46","_ref47","ManagePaymentMethodComponent","_ref48","_ref49","_ref50","_ref51","NotesComponent","_ref52","_ref53","_ref54","_ref55","PaymentBatchComponent","_ref56","_ref57","PaymentMethodProcessorComponent","_ref58","PaymentReversalConfirmationComponent","_ref59","RefundConfirmationComponent","_ref60","PaymentReversalSelectionComponent","_ref61","_ref62","_ref63","ProcessOnePaymentMethodComponent","_ref64","ProductSettingsComponent","_ref65","ProductSettingListComponent","_ref66","_ref67","_ref68","RulesComponent","_ref69","RuleListItemComponent","_ref70","_ref71","_ref72","_ref73","_ref74","_ref75","_ref76","StonlyHelpComponent","_ref77","TermAlterPaymentPlanComponent","_ref78","_ref79","_ref80","_ref81","_ref82","_ref83","_ref84","_ref85","_ref86","_ref87","_ref88","_ref89","_ref90","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","WorkItemListComponent","_ref97","WorkItemsComponent","_ref98","feedContent","image","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_2_ng_template_1_Template","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_2_ng_template_2_Template","feedItem_r9","publicationDate","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_3_ng_template_0_ng_template_2_div_2_Template","cardClicked","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_3_ng_template_0_ng_template_2_Template","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_3_ng_template_0_Template","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_2_Template","ReallySimpleSyndicationFeedReaderComponent_div_1_ng_template_3_Template","feedItemGroups","responsiveOptions","ReallySimpleSyndicationFeedReaderComponent","reallySimpleSyndicationFeedReaderService","feedItemsChunkSize","setFeedItemGroups","readFeedContent","setFeedImage","feedItem","itemGroupChunkSize","getItemGroupChunkSize","feedItemGroup","getExtraLargeScreen","getLargeScreen","ReallySimpleSyndicationFeedReaderComponent_div_0_Template","ReallySimpleSyndicationFeedReaderComponent_div_1_Template","chartSummaryFunction","expansionActive","allowLocationAction","WeatherForecastComponent_div_1_ng_template_1_Template","WeatherForecastComponent_div_1_ng_template_2_Template","locationPermissionsState","locationPermissionStates","currentWeatherForecast","currentUtcDateTime","smallWidgetDisplay","hourly_r14","iconSource","temperature","daily_r15","WeatherForecastComponent_div_2_ng_template_1_ng_template_12_Template","WeatherForecastComponent_div_2_ng_template_1_ng_template_13_Template","WeatherForecastComponent_div_2_ng_template_1_ng_template_31_Template","WeatherForecastComponent_div_2_ng_template_1_ng_template_34_Template","geographicLocation","windSpeed","weatherDescription","humidity","hourlySplitOut","dailySplitOut","retryAction","WeatherForecastComponent_div_2_ng_template_1_Template","WeatherForecastComponent_div_2_ng_template_2_Template","somethingWentWrong","WeatherForecastComponent","weatherForecastService","hourlyWeatherForecast","dailyWeatherForecast","permissionGranted","dailySplitoutEndIndex","hourlySplitoutEndIndex","setHourlySplitOut","setDailySplitOut","setAllowLocationMenuAction","handleLocationPermissions","buildWeatherContent","commandAction","navigatorPermissionStates","getGeolocationPermissions","setCurrentForecast","setDailyForecast","setHourlyForecast","capitalizeAllWords","geographicLocations","getGeographicLocation","getCurrentForecast","getWeatherIconSource","weatherIcon","sizeIdentifiers","getHourlyForecast","hourlyForecast","getDailyForecast","dailyForecast","dailyForecastEndIndex","getForecastEndIndex","hourlyForecastEndIndex","smallIndex","largeIndex","breakpointWidth","WeatherForecastComponent_div_0_Template","WeatherForecastComponent_div_1_Template","WeatherForecastComponent_div_2_Template","stepDataChanged","lastContactData","stepLayout","DynamicWizardComponent_div_11_ng_template_1_div_3_ng_template_1_Template","DynamicWizardComponent_div_11_ng_template_1_div_3_ng_template_2_Template","allowedToContinue","DynamicWizardComponent_div_11_ng_template_1_div_3_Template","stepDefinition","displayCenter","redraw","back","nextLabel","DynamicWizardComponent_div_11_ng_template_1_Template","DynamicWizardComponent_div_11_ng_template_2_Template","DynamicWizardComponent_div_11_a_5_Template","DynamicWizardComponent_div_11_button_7_Template","wizardViewport","pageSource","activeStepIndex","valueChanged","forwardStepDirection","displayLeftMask","displayRightMask","draggable","_wizardStepLoading","afterViewInitDebounceDelay","layoutChangedDebounceDelay","scrollMultiplier","stepIdentifier","currentStepLabelIdentifier","canDeactivate","cleanedInitialData","cleanedData","scrollWizardViewportTo","scrollLeft","setScrollMasks","initializeWizardStepFunctions","wizardSteps","calculateWizardStepDisplayValues","wizardMenuItems","every","wizardStep","stepDisplay","handleStepLayoutRefresh","ngAfterContentChecked","relativeTo","updatedLabel","appendToCurrent","functionToAdd","translatedValidationAction","validatorRaw","translatedNextAction","nextActionRaw","nextAction","backAction","stepName","targetIndex","matchingWizardStepMenuItem","targetWizardMenuItem","currentStepLabel","scrollToActiveStep","horizontalScroll","getHorizontalScrollWidth","scrollRight","press","pressUp","swipe","deltaX","overallVelocityX","scrollTo","behavior","wizardStepContainer","DynamicWizardComponent_div_11_Template","changeDetection","elementReferenceContainer","creationMode","authenticationRefreshTimeout","powerBiReportReference","powerBiEventConstants","dataSelected","loaded","selectionChanged","visualClicked","closeOverlayEvents","onMessage","powerBiEmbedEndpoint","eventName","embed","setAuthenticationUpdates","clearTimeout","updatePowerBiAuthentication","accessTokenRefreshDelay","accessTokenExpiry","utc","milliseconds","embedToken","generateEmbedToken","tileId","setAccessToken","FileConstants","attachment","FileDirective","subTypes","printAndMailHistoryTableDefinitions","childrenEntityTypeGroup","progressVisible","progressMode","progressAmount","errorMessage","viewModes","defaultFileExtension","customMetadata","storageType","getCategoryFromType","fileExtension","extension","fileTypeGroup","fileCategory","sizeInBytes","sizeFormatted","oneKilobyte","oneMegabyte","setCustomMetadata","setItemActions","_objectSearch","authorizedActions","HasRight","FileCategory","entityTypeSecurityDefinition","enum","securityDefinition","FileProgressType","Unhandled","CreatingEntity","EntityCreated","UpdatingEntity","EntityUpdated","UploadStarted","UploadProgress","DownloadStarted","DownloadProgress","Processing","ResponseStatus","Complete","FileProgressReporter","reportEvent","subscriber","fileProgress","HttpEventType","Sent","ResponseHeader","statusText","FileService","instanceService","typeApiService","definitionApiService","defaultTypeGroup","defaultType","fileBaseType","addNewFile","referenceUrl","fileEntityGroup","fileSubType","fileState","generateEntity","FormData","append","Observable","progressSubscriber","reporter","getSupportedFileTypes","fileParentEntityDefinition","getAuthorizedCategories","permissions","getSupportedFilePermissions","permission","dto","availableTypes","getFiles","fileTypeGroups","getFilesOfAllTypes","instances","finally","updateFile","modifiedEntity","storageTypeChanged","fileChanged","successMessage","stateChangeReason","EmbeddedFileEncoding","Base64","progress","FileProgressComponent","FileProgressComponent_div_2_Template","FileProgressComponent_div_3_Template","FileProgressComponent_div_4_Template","FileProgressComponent_div_5_Template","progressMessage","progressHeader","progressPercent","fileSelected","AddFileComponent_div_1_div_2_div_5_ng_template_7_Template","fileUrlChanged","urlControl","subTypeControl","subTypeOptions","AddFileComponent_div_1_div_2_div_5_Template","AddFileComponent_div_1_div_2_div_6_Template","AddFileComponent_div_1_div_2_div_7_Template","AddFileComponent_div_1_div_2_div_8_Template","AddFileComponent_div_1_div_2_div_18_Template","AddFileComponent_div_1_div_2_div_25_Template","AddFileComponent_div_1_div_2_div_26_Template","onAddClicked","fileUploader","nameControl","categoryControl","addForm","AddFileComponent_div_1_app_file_progress_1_Template","AddFileComponent_div_1_div_2_Template","addDocumentVisible","AddFileComponent","fileService","workItemService","added","storageTypes","UntypedFormControl","Validators","setErrors","emitEvent","fileRequired","documentGroup","_storageType","fakeProgressTimer","setName","findKnownExtension","tryGetFileName","systemEntityInstance","matchingFileSubtype","fileSubtypes","clearValidators","addValidators","hasCategories","controlName","fileRequiresReview","policyFileRequiresReview","handleProgress","displayError","startingUpload","uploading","calculateProgressPercent","fakeProgress","progressEvent","amountToAdd","ok","showRandomMessages","setInterval","clearInterval","AddFileComponent_div_0_Template","AddFileComponent_div_1_Template","action_r4","DeleteFileComponent_div_2_ng_template_5_Template","DeleteFileComponent_div_2_div_15_Template","removeClicked","reasonControl","DeleteFileComponent","removed","removeFormVisible","entityToRemove","changeDateTime","DeleteFileComponent_app_file_progress_1_Template","DeleteFileComponent_div_2_Template","action_r3","DownloadFileComponent_div_2_ng_template_2_Template","DownloadFileComponent","downloaded","showDownload","printWindow","openOrDownload","onOpenClicked","getFile","onSaveClicked","onPrintClicked","fileUrl","anchor","print","DownloadFileComponent_app_file_progress_1_Template","DownloadFileComponent_div_2_Template","action_r6","subTypeChanged","EditFileComponent_div_2_div_17_div_1_ng_template_7_Template","Cancel","EditFileComponent_div_2_div_17_div_1_Template","EditFileComponent_div_2_div_17_div_2_Template","EditFileComponent_div_2_div_17_div_3_Template","EditFileComponent_div_2_div_17_div_4_Template","EditFileComponent_div_2_ng_template_5_Template","EditFileComponent_div_2_div_14_Template","changeFile","editForm","EditFileComponent_div_2_div_17_Template","nameChanged","EditFileComponent_div_2_div_27_Template","ctx_r28","descriptionChanged","ctx_r31","onUpdateClicked","changeFileDisabled","descriptionControl","EditFileComponent","originalFileEntity","updated","editedFileEntity","editDocumentVisible","showUploader","invalidErrors","hasFiles","noErrors","dirty","updateSuccess","setValidators","changeType","setExtension","updating","uploadingNewFile","EditFileComponent_app_file_progress_1_Template","EditFileComponent_div_2_Template","property_r3","FileComponent","FileComponent_div_10_Template","FileComponent_div_32_Template","FileComponent_div_33_Template","action_r1","FileDetailsComponent","FileDetailsComponent_ng_template_3_Template","FilesComponent_ng_template_0_div_1_Template","FilesComponent_ng_template_0_div_2_Template","FilesComponent_ng_template_2_div_2_div_1_Template","FilesComponent_ng_template_2_div_2_ng_template_2_Template","filesModified","creatableCategories","fileRemoved","FilesComponent_ng_template_2_ng_template_0_Template","FilesComponent_ng_template_2_div_2_Template","FilesComponent_ng_template_2_app_add_file_3_Template","FilesComponent_ng_template_2_app_file_details_4_Template","FilesComponent_ng_template_2_app_edit_file_5_Template","FilesComponent_ng_template_2_app_delete_file_6_Template","FilesComponent_ng_template_2_app_download_file_7_Template","getReadableCategories","getCreatableTypes","loadFiles","fileTypes","indexToRemove","sortList","fileGroups","idFilter","userIds","_category","stateFilter","baseFilter","getInQueryFilter","itemA","itemB","observable","tripCount","generateActivityBanner","categoryName","mimeType","getFileIconClass","supportedCategories","getActionSecurityRights","FilesComponent_ng_template_0_Template","FilesComponent_ng_template_2_Template","FinalWizardLayoutStepComponent_ng_template_1_Template","FinalWizardLayoutStepComponent_ng_template_2_Template","enabledFilter_r12","HistoryTimelineComponent_div_15_ng_template_4_i_3_Template","HistoryTimelineComponent_div_15_ng_template_4_Template","HistoryTimelineComponent_div_15_div_5_Template","event_r29","event_r30","_r32","_r36","event_r33","HistoryTimelineComponent_p_scrollPanel_25_ng_template_3_ng_template_1_Template","HistoryTimelineComponent_p_scrollPanel_25_ng_template_3_ng_template_2_Template","HistoryTimelineComponent_p_scrollPanel_25_ng_template_3_ng_template_3_Template","filteredEvents","HistoryTimelineComponent_p_scrollPanel_25_ng_template_5_ng_template_1_Template","HistoryTimelineComponent_p_scrollPanel_25_ng_template_5_ng_template_3_Template","keyDateEvents","keyActivityEvents","changeEvents","_r41","HistoryTimelineComponent_p_scrollPanel_25_ng_template_3_Template","HistoryTimelineComponent_p_scrollPanel_25_ng_template_5_Template","HistoryTimelineComponent","storageMap","reservedPageHeight","historyTimelineHeader","storageLoaded","siteLayoutChange","keyDatesDisplayed","keyActivitiesDisplayed","changesDisplayed","storageSettings","keyDatesIdentifier","changesIdentifier","timelineEventElementIdentifier","minimumEventElementHeight","localStorageKey","beforeUnloadHandler","calculateTimelineHeights","loadStorageSettings","filterEvents","saveStorageSettings","filterIdentifier","handleSortDirection","searchFilters","getFilteredEvents","matchesFilter","totalTimelineLength","getFinalElementsReservedHeight","initialItemAdded","previousEvent","heightPercent","expectedHeight","timelineEvents","_item","minHeight","previousHeight","expectedFinalEvents","remainingItems","deserializeFilters","serializedCommand","_r1","HistoryTimelineComponent_div_15_Template","HistoryTimelineComponent_ng_template_21_Template","HistoryTimelineComponent_ng_template_22_Template","HistoryTimelineComponent_div_24_Template","HistoryTimelineComponent_p_scrollPanel_25_Template","EntityArrayHelper","decorateBusinessLogicDifferences","previousEntityInstance","differenceProperties","splitKey","differenceSummary","previousHistoryRecord","previousHistoryRecordDifferences","previousHistoryRecordDifferenceSummary","HistoryComponent_div_1_ng_template_1_span_2_Template","HistoryComponent_div_1_ng_template_3_div_1_Template","HistoryComponent_div_1_ng_template_3_div_2_Template","HistoryComponent_div_1_ng_template_5_ng_template_2_ng_template_1_Template","HistoryComponent_div_1_ng_template_5_ng_template_2_ng_template_3_Template","HistoryComponent_div_1_ng_template_5_ng_template_0_Template","HistoryComponent_div_1_ng_template_5_ng_template_2_Template","HistoryComponent_div_1_ng_template_1_Template","HistoryComponent_div_1_ng_template_3_Template","HistoryComponent_div_1_ng_template_5_Template","businessLogicHistory","keyActivityIcon","keyDateIcon","changeEventIcon","createDateOffset","getEntityTypeTitle","setBusinessLogicHistory","createHistoryTimelineEvents","setExcludedDifferenceProperties","definitionExcludedDifferenceProperties","mapObjectToTimelineItems","mapObjectArrayToTimelineItems","createChangeEvents","historyItem","objectToMap","objectEvents","objectArrayToMap","getKeyActivitiesDescriptionPromise","keyActivityPromise","objectEvent","HistoryComponent_div_0_Template","HistoryComponent_div_1_Template","NoteDirective","getDateTime","getNoteCustomData","getPropertyDisplayValue","getDisplayName","getSupportedNoteTypes","childNotePermissions","NoteListComponent","supportedNoteTypes","loadNotes","queryData","_error","canCreate","getFiltersForTypes","createableTypes","NoteListComponent_ng_template_1_Template","NoteListComponent_ng_template_2_Template","propertyName_r1","NoteComponent","NoteComponent_div_8_Template","NoteViewComponent_ng_template_1_ng_template_5_Template","NoteViewComponent","NoteViewComponent_ng_template_0_Template","NoteViewComponent_ng_template_1_Template","validDataChanged","noteData","formlyNoteLayout","selectedNoteType","handleNoteTypeChange","NoteCreateComponent_ng_template_1_ng_template_1_ng_template_12_Template","createNote","noteTypes","noteLayout","NoteCreateComponent_ng_template_1_ng_template_0_Template","NoteCreateComponent_ng_template_1_ng_template_1_Template","NoteCreateComponent","mapEntityTypesToNoteTypes","createDisplayName","newNoteId","layouts","existingNoteType","NoteCreateComponent_ng_template_0_Template","NoteCreateComponent_ng_template_1_Template","NoteDeleteComponent_ng_template_1_ng_template_5_Template","deleteItem","NoteDeleteComponent","NoteDeleteComponent_ng_template_0_Template","NoteDeleteComponent_ng_template_1_Template","NotesComponent_ng_template_3_div_1_Template","NotesComponent_ng_template_3_div_2_Template","_r26","NotesComponent_ng_template_5_ng_template_0_Template","NotesComponent_ng_template_5_ng_template_2_Template","NotesComponent_ng_template_5_ng_template_4_Template","NotesComponent_ng_template_5_ng_template_6_Template","NotesComponent_ng_template_1_Template","NotesComponent_ng_template_3_Template","NotesComponent_ng_template_5_Template","PaymentBatchListComponent","_superprop_getLoadItems","loadedItems","creatorIds","navigateToCreate","decisionUser","decisionUserId","createdByUser","scrubbedInfoActions","scubbedEditActions","PaymentBatchListComponent_ng_template_1_Template","PaymentBatchListComponent_ng_template_2_Template","PaymentBatchComponent_ng_template_3_div_1_Template","PaymentBatchComponent_ng_template_3_div_2_Template","PaymentBatchComponent_ng_template_5_ng_template_0_Template","paymentBatchItemTypes","PaymentBatchComponent_ng_template_1_Template","PaymentBatchComponent_ng_template_3_Template","PaymentBatchComponent_ng_template_5_Template","executableAction","actionButtonLabel","ProductSettingActionComponent_ng_template_1_div_7_Template","displaySubTitle","productSettingsDataSet","productSettingFormlyLayout","ProductSettingActionComponent","updateEntityInstance","selectedProduct","selectedState","productsByState","productSettingIndex","createView","commissionOptions","authorityOptions","commissionSchedules","states","productAuthorities","createDisplaySubTitle","drawerActionLabels","productsTypeGroup","commissionsTypeGroup","setDynamicContent","setProductSettingFormlyLayout","createProductSetting","itemIndex","productInstance","updateProductSetting","getCommissionSchedules","getCommissionOptions","getDropdownOptions","handleStateOnChange","validProductSetting","handleProductOnChange","commissionValidator","setCommissionScheduleDetails","productField","filteredProductOptions","updateValueAndDropdownOptions","updateDynamicFields","dynamicCommissionOptions","dynamicAuthorityOptions","requiredField","updateDataOptions","optionItems","labelKey","optionItem","createData","commissionScheduleName","subCommissionScheduleName","executeCommonAction","updateData","contextProductSetting","pendingMessage","completedMessage","successDetails","failureDetails","actionPromise","productInstanceId","getCommissionScheduleDetails","commissionScheduleInstance","calculation","calculationBase","calculationModifiers","newBusinessPercent","newBusinessAmount","renewalPercent","renewalAmount","basedOn","distributionFrequency","commissionScheduleDetailsControlKey","commissionScheduleDetailsTextArea","reloadTextDisplay","ProductSettingActionComponent_ng_template_0_Template","ProductSettingActionComponent_ng_template_1_Template","ProductSettingListComponent_ng_template_2_ng_template_0_Template","ProductSettingListComponent_ng_template_2_ng_template_1_Template","productSettingFilter","productSettingsPath","loadProductSettings","activeFilters","filterProductSettings","insuranceType","informationIcon","getInformationIcon","validProductSettings","insideFilterCriteria","activeFilter","ProductSettingListComponent_ng_template_1_Template","ProductSettingListComponent_ng_template_2_Template","ProductSettingsComponent_ng_template_5_div_1_ng_template_1_Template","ProductSettingsComponent_ng_template_5_div_1_ng_template_3_Template","ProductSettingsComponent_ng_template_5_div_0_Template","ProductSettingsComponent_ng_template_5_div_1_Template","selectedItemIndex","workItemIdentifiers","ProductSettingsComponent_ng_template_1_Template","ProductSettingsComponent_ng_template_3_Template","ProductSettingsComponent_ng_template_5_Template","EntityInstanceRuleViolation","iEntityInstanceRuleViolation","ruleDefinition","parsedJson","messageKey","RuleListItemComponent_div_4_ng_template_4_ng_template_6_Template","RuleListItemComponent_div_4_ng_template_4_ng_template_7_Template","RuleListItemComponent_div_4_ng_template_4_span_10_Template","ruleViolationWorkflowAction_r11","workflowActionDefinition","overridden","RuleListItemComponent_div_4_ng_template_2_Template","RuleListItemComponent_div_4_ng_template_3_Template","RuleListItemComponent_div_4_ng_template_4_Template","rulePresentationDefinition_r20","navigateToControl","RuleListItemComponent_div_7_ng_template_3_span_5_Template","getFormattedDataKey","RuleListItemComponent_div_7_ng_template_2_Template","RuleListItemComponent_div_7_ng_template_3_Template","displayOverride","loadingTables","entityInstanceRuleViolation","getUniqueViolationPresentationDefinitions","matchingResourceIdentifier","openTab","expandContainers","displayElement","wrappingDiv","currentAttempt","maximumAttempts","matchingElement","elementToDisplay","parentTabSection","tabKey","nodeValue","tabElement","matchFound","currentElement","parentAccordion","borderDisplayElement","focusElement","scrollIntoView","inline","rulePresentationDefinition","dataKeyPart","RuleListItemComponent_div_1_Template","RuleListItemComponent_div_2_Template","RuleListItemComponent_div_3_Template","RuleListItemComponent_div_4_Template","RuleListItemComponent_div_5_Template","RuleListItemComponent_div_6_Template","RuleListItemComponent_div_7_Template","RuleListItemComponent_span_9_Template","RuleListComponent","entityInstanceRuleViolationApiService","blockedIdentifier","isAscendingOrder","mainInput","secondaryInput","violationActionDefinitions","violationActionDefinitionsLength","nonBlockingViolationsLength","blockingViolationsLength","overriddenViolationsLength","colorClass","filterItems","combinedFilters","commonListItem","combinedFilterValue","getCombinedFilterValue","violationWorkflowAction","ruleViolationListItem","RuleListComponent_ng_template_1_Template","RuleListComponent_ng_template_2_Template","RuleOverrideListComponent","entityInstanceRuleViolationOverrideApiService","generatedCommonListContext","overrideUsers","ruleViolationOverride","ruleDefinitionItem","workflowActionDefinitionItem","workflowActionDefinitionId","overrideUser","overrideUserDisplayName","deletedRuleSummary","ruleDefinitionName","ruleDescription","workflowActionDefinitionName","overrideDateIsoString","uniqueFiltersMap","ruleName","RuleOverrideListComponent_ng_template_1_Template","RuleOverrideListComponent_ng_template_2_Template","resetValues","undoTooltipMessage","overrideAll","AriaInputOverrideAll","RuleOverrideComponent_div_7_ng_template_3_span_8_ng_template_2_Template","RuleOverrideComponent_div_7_ng_template_3_span_8_ng_template_3_Template","overrideAllDisplayMode","RuleOverrideComponent_div_7_ng_template_3_span_8_Template","ruleViolationWorkflowAction_r15","overrideSelectionChanged","RuleOverrideComponent_div_7_ng_template_4_ng_template_6_Template","RuleOverrideComponent_div_7_ng_template_4_ng_template_7_Template","RuleOverrideComponent_div_7_ng_template_4_div_10_Template","RuleOverrideComponent_div_7_ng_template_2_Template","RuleOverrideComponent_div_7_ng_template_3_Template","RuleOverrideComponent_div_7_ng_template_4_Template","cancel","syncViolations","overrideFormlyData","overrideFormlyLayout","isChanged","validReason","RuleOverrideComponent","undoTooltip","archivedRuleViolationWorkflowActions","syncArchivedValues","previousOverriddenValue","matchingViolationOverride","ruleViolationWorkflow","RuleOverrideComponent_div_5_Template","RuleOverrideComponent_div_6_Template","RuleOverrideComponent_div_7_Template","RuleOverrideDetailsComponent","getRuleOverrideFormlyLayout","getContentValue","boldEntireSection","subtitleValueDisplay","noVerticalPadding","handleBackAction","action_r12","RulesComponent_ng_template_1_div_3_ng_template_2_Template","action_r16","getActionLabel","RulesComponent_ng_template_1_div_4_ng_template_2_Template","nestedItemActions","RulesComponent_ng_template_1_span_2_Template","RulesComponent_ng_template_1_div_3_Template","RulesComponent_ng_template_1_div_4_Template","RulesComponent_ng_template_3_div_1_Template","RulesComponent_ng_template_3_div_2_Template","RulesComponent_ng_template_5_ng_template_0_Template","RulesComponent_ng_template_5_ng_template_2_Template","RulesComponent_ng_template_5_ng_template_4_Template","RulesComponent_ng_template_5_ng_template_6_Template","listDisplayMode","RulesComponent_ng_template_1_Template","RulesComponent_ng_template_3_Template","RulesComponent_ng_template_5_Template","stonlyService","stonlyHelpContainer","stonlyIFrame","observer","customTooltipClass","getStonlyWidget","positionStonlyWidget","installStonly","onload","IFrameLoaded","initializeStonlyWidget","MutationObserver","mutationsList","mutation","mutationRecordTypes","subtree","cleanupStonlyWidget","disconnect","displayStonlyWidget","dispatchWalkthroughEndEvent","initializeWidget","hideTooltip","closeWidget","boundingContainer","widgetContainer","paddingOffset","drawerOverlayUsed","innerWidth","createStonlyWidgetTooltip","widgetOffset","existingTooltip","rightOffset","documentElementTypes","StonlyHelpComponent_div_0_Template","activeStatusValues","workItemStatus","shortDateFormat","priorityIcon","priority","workItemPriority","getLongEntityDisplayName","workItemEntityTypePrefix","instanceAccessPolicy","navigateToWorkbenchItem","scrubbedEditActions","workItemInstance","workItemId","module","queue","WorkItemListComponent_ng_template_1_Template","WorkItemListComponent_ng_template_2_Template","DrawerEntityComponentDirective","selectedEntityType","selectedEntityDisplaySetup","handleEntityTypeChange","entityData","EntityCreateComponent_ng_template_1_ng_template_2_div_4_Template","EntityCreateComponent_ng_template_1_ng_template_2_div_6_Template","EntityCreateComponent_ng_template_1_ng_template_1_Template","EntityCreateComponent_ng_template_1_ng_template_2_Template","EntityCreateComponent","mapCreatableEntityTypes","itemDisplayComponent","jsonEntityLayout","EntityCreateComponent_ng_template_0_Template","EntityCreateComponent_ng_template_1_Template","EntityUpdateComponent_ng_template_1_ng_template_6_Template","EntityUpdateComponent_ng_template_1_ng_template_9_Template","EntityUpdateComponent_ng_template_1_span_13_Template","EntityUpdateComponent","actionMenuOperationGroupName","handleUpdate","EntityUpdateComponent_ng_template_0_Template","EntityUpdateComponent_ng_template_1_Template","action_r5","EntityViewComponent_ng_template_1_ng_template_5_Template","EntityViewComponent_ng_template_1_ng_template_8_Template","EntityViewComponent","EntityViewComponent_ng_template_0_Template","EntityViewComponent_ng_template_1_Template","WorkItemsComponent_ng_template_3_div_1_Template","WorkItemsComponent_ng_template_3_div_2_Template","WorkItemsComponent_ng_template_5_ng_template_0_Template","WorkItemsComponent_ng_template_5_ng_template_2_Template","WorkItemsComponent_ng_template_5_ng_template_4_Template","WorkItemsComponent_ng_template_5_ng_template_6_Template","workItemTypes","WorkItemsComponent_ng_template_1_Template","WorkItemsComponent_ng_template_3_Template","WorkItemsComponent_ng_template_5_Template","DisplayComponentFactory","includeSecondaryDisplay","widgetDefinition","widgetDisplayComponentInstance","populateDisplayComponentInstance","widgetData","getDynamicComponentContext","getDashboardWidget","componentDefinition","reportLookup","reportFilter","visualName","simpleDataPromiseTable","displayColumnCounter","dataFilter","displayColumn","commonTableObject","dataOrderBy","dataLimit","pageSize","dataApiPromise","dataApiService","drillInCommand","tableFixedHeight","commonTableAttributes","itemSelectionCommand","overlayDisplayComponent","overlayDisplayDefinition","overlayDisplay","chartDisplay","chartDisplayComponent","overlayChartDisplay","overlayDisplayContext","getChartDefinition","withPromise","populateChartDisplayComponent","dynamicLayout","widgetDisplayComponentDefinition","wizard","userHasEditRolePermissions","editPowerBiReportRoles","isStandardReport","currentStepIndex","decoratedWizardSteps","currentStepDefinition","stepDisplayComponent","reloadVerify","currentWizardStepContext","stepAlwaysVerify","backLabelIndexZero","defaultLabel","hideNextButton","backActionRaw","stepDisplayRaw","allowedToContinueRaw","emptyFunction","initialParameterJson","secondaryParameterJson","parameterDefinition","parameterLayout","colors","dynamicComponentName","widgetContext","secondaryWidget","secondaryDisplayComponent","floatingIcon","forceSecondaryOverlay","removeBoxShadow","secondaryDynamicComponent","secondaryDynamicContext","secondaryHeight","secondaryWidth","secondaryTopAlign","topAlign","secondaryFloatingIcon","responsiveWidthMultiplier","useClickOnDisplay","flipCard","chartDisplayComponentName","OptionsFactory","mapStringOptions","addAnyOption","normalizeLabel","any","isString","nullOrWhitespaceToEmptyString","getBetweenDateFilter","initialFilter","getDateFilter","pivotComparator","enumeration","getLastNumberOfDaysFilter","getStartOfDayFilter","matches","splitMatches","isWildcard","cleanedFilter","quoteCharacter","useExcludeFilter","filterCondition","filterQueryOperators","types","wildcardTypeFilter","criteria","existingFilter","inQueryString","partialFilter","transformBusinessLogicData","stringifiedData","fullIsoExpression","replaceWithTimeZoneUtc","setZone","Settings","defaultZone","ChartHelper","getHourLabelsByDay","getTimeBasedLabels","getLastNumberOfDayLabels","initialDayDateTime","initialTime","finalTime","timeUnit","timeUnitStepSize","nextDateTime","toLocal","finalDateTime","labelSet","dateAndHourFormat","dayOfWeekAndTimeFormat","internationalDateFormat","internationalFullDateFormat","years","hours","minutes","seconds","initialDate","numberOfUnitsToAdd","luxonTimeUnit","luxonDateFormat","includeTimeUnit","multipleTimeUnit","dateDifference","getDaysFromNow","isoString","dateToCheck","diffString","getDateRange","convertUnixToUTCDateTime","unixDateTime","fromSeconds","zone","getLocalTimeZone","getBusinessDaysFromRange","workDays","presetZones","convertToTrueLocal","Intl","DateTimeFormat","resolvedOptions","timeZone","keepLocalTime","toJSDate","fromSimulatedLocalDateToUtcSystemIso","systemDateTime","localOffset","isDate","dateString","localDate","elementId","formVerticalOffset","scrollToElement","scrollTop","fadeDelay","selectedElementClass","selectedElement","elementSelector","setElementOpacity","ErrorHelper","getGenericErrorLogEntry","promiseErrorStart","httpError","getHttpErrorResponseLogEntry","errorMessageLines","promiseErrorEnd","getErrorLogEntry","getApiErrorLogEntry","HttpErrorResponse","errorMessages","applicationMessage","isTrusted","errorDetails","formatApplicationMessage","applicationMessageDetail","formatDetailDescription","ClientMessageDetail","ClientMessage","safeContent","safeTitle","displayChanged","extendedDetailsExist","extendedDetails","setExtendedDetails","errorLogEntry","preRequisiteResponses","postRequisiteResponses","dispatchAddDrawerEvent","startOpen","overlayClassName","CustomEvent","dispatchAlterUtilityTitleEvent","utilityId","dispatchSetBadgePromiseEvent","badgePromise","contentComponents","dispatchLoginMessageEvent","dispatchMessage","dispatchFullScreenBannerEvent","dispatchContextMenuActiveEvent","dispatchChatModalDisplayedEvent","dispatchContextOverlayEvent","overlay","dispatchDrawerOverlayEvent","dispatchRepeaterItemAlteredEvent","repeaterKey","repeaterFilter","repeaterAction","dispatchRepeaterCleanModelEvent","dispatchSetContentContextEvent","contentContext","dispatchSetUtilityMenuEvent","dispatchWalkthroughStartEvent","fileBaseTypeCategory","segments","segment","mimeTypes","getContentMimeType","contentMimeType","fileIcons","includeProperties","formatMetadataValue","valueString","extendUpdateValueAndValidity","additionalMethod","_fields","currentValidityMethod","dipatchRepeaterCleanModelEvent","markAsDirty","updateChildren","jsonLayout","tabAdded","mapField","nestedFields","getMatchingChildFieldConfigurations","attributeKeys","fieldGroups","wrapperType","displayPromise","isEmptyWrapper","isCustomFieldWrapper","hasNestedFieldGroup","getValidatorFunctions","validationSet","clearDisabledExpressions","disableChildren","updateFieldBasedOnOptions","expressionMappings","nestedLocation","convertToFormlyField","setActionPerFieldGroup","arraySchemaDefinition","itemType","anyOf","anyOfDefinition","const","propertiesJsonSchemaKey","parentObjectName","parentObjectDescription","existingSchemaProperties","newObject","objectPropertyName","itemsJsonSchemaKey","objectJsonSchemaKey","parentDescription","currentObject","currentParentObjectDescription","descriptionJsonSchemaKey","itemProperties","objectProperties","lodash_es_differenceBy","differenceBy","baseRest","iteratee","isArrayLikeObject","baseDifference","baseFlatten","baseIteratee","getObjectArrayDifferences","initialArray","comparisonArray","matchValue","groupByProperty","groupedByProperty","propertyValue","JSONCrushSwap","forward","swapGroups","swapInternal","regex","lodash_es_differenceWith","differenceWith","comparator","filterByNumberValue","filterBy","objectOne","objectTwo","sortBy","useDateComparison","objectOneData","objectTwoData","propertyOne","propertyTwo","sortOrder","sortSplitout","primarySplitSort","primarySortKey","getSortKey","primarySortDirection","getSortDirection","secondarySplitSort","secondarySortKey","secondarySortDirection","compareTwoObjects","initialObjectKeys","comparisonObjectKeys","checkNullBusinessLogicObjectEquality","altered","checkNestedBusinessLogicEquality","excludedPropertyKeys","initialObjectValue","comparisonObjectValue","getFilteredPropertyKeys","createMissingProperties","uniqueInitialValues","isArrayItemUnique","uniqueComparisonValues","getDifferenceDefinition","objectKey","getNestedBusinessLogicDifferences","keysToCheck","objectToCheck","nullEqivalent","keyToCheck","removeNullsInObject","objectToClean","each","filteredItems","mapObject","stringified","maxRouteDataSize","compressToEncodedURIComponent","crush","maxSubstringLength","crushed","JSCrush","replaceCharacters","replaceCharacterPos","splitString","ByteLength","encodeURI","HasUnmatchedSurrogate","substringCount","substringLength","substringPos","bestSubstring","replaceCharacter","bestLengthDelta","replaceByteLength","lengthDelta","newSubstringCount","newSubstring","crushedString","JSONCrush","urlParameters","stringParts","uncrushedString","character","splitArray","uncrush","decompressFromEncodedURIComponent","inlineValue","formattedValue","fromEntries","allPropertyValuesExist","isObjectArray","sortedArray","sortedByComparisonArray","comparisonArrayItem","matchingArrayIndex","arrayPlaceholder","nestedKey","filterKey","formattedFilterKey","desiredObject","objectKeys","desiredObjectKeys","keyDifferences","keyDifference","isArrayPlaceholder","arrayPlaceholderIdentifier","initialValue","comparisonValue","dateComparisonDelta","isObjectComparison","isDateComparisonDifference","sortedInitialValue","sortedComparisonValue","splitSingularOrderBy","firstValue","secondValue","firstSecondarySortValue","secondSecondarySortValue","RuleHelper","populatedRuleViolations","populatedRuleViolation","ruleViolationWorkflowActionDefinition","wildcardIdentifier","pathToFind","dataSecurityPermissions","getWildCardPermissions","wildcard","actionSecurityPermissions","getNullRights","getSecurityPermissionIndex","dataPath","dataPathPrefix","foundWildCard","getWildCardPaths","childBaseType","supportedTypeNames","typeName","supportedEntityTypeGroups","allowedGroups","menuItems","directEntityType","directAccessPolicyDefinition","authorizedMenuItems","mergedSecurityDefinitions","mergeDirectAccessPolicyDefinitions","hasRight","dataRights","itemRights","getSecurityRestrictions","systemSecurity","passwords","passwordRestrictions","requires","uppercase","lowercase","special","minimumLength","maximumLength","allowPasswordReuse","historyReuseRestriction","isValidPassword","securityRestrictions","upperCount","lowerCount","numberCount","specialCount","wildCardFinder","groups","wildCardPath","CountryCodeNames","ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","YEM","ZAF","ZMB","ZWE","InterpolationHelper","getTemplateParser","parserCache","createParser","formattedTemplate","cleanMatch","dataName","getDataName","dataExpressionMatches","reHasUnicode","_hasUnicode","hasUnicode","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","_stringToArray","stringToArray","unicodeToArray","asciiToArray","lodash_es_upperFirst","createCaseFirst","strSymbols","trailing","castSlice","baseSlice","_deburrLetter","basePropertyOf","reLatin","reComboMark","reAsciiWord","reHasUnicodeWord","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsEmoji","reUnicodeWord","lodash_es_words","words","guard","hasUnicodeWord","unicodeWords","asciiWords","reApos","lodash_es_camelCase","createCompounder","arrayReduce","initAccum","deburr","deburrLetter","capitalize","upperFirst","Md5","_dataLength","_bufferLength","_state","_buffer","_buffer8","_buffer32","Uint32Array","hashStr","onePassHasher","appendStr","hashAsciiStr","appendAsciiStr","_hex","hc","hexChars","ho","hexOut","_md5cycle","stateIdentity","buf8","buf32","bufLen","appendByteArray","getState","buflen","setState","dataBitsLen","buffer32Identity","lo","hi","fromCodePoint","betweenNumberSpaces","$this","trimLeft","defaultWhitespace","getHash","stringsToRemove","regexReplace","splitCharacter","splitStrings","excludeBaseType","getConcatenatedValue","concatenateString","concatenateKey","useProperCase","numberToWords","chunk","ints","units","tens","chunksLen","functionAsString","booleanPromiseAsString","parameter","transformToLayoutPromise","promiseString","clipboard","writeText","getProperEnumeration","useAnd","commaOrEmpty","existingFilterCriteria","locales","internationalFormat","currencyOptions","maximumSignificantDigits","NumberFormat","splitValues","upperCaseArray","splitValue","shorten","replaceValue","regularExpressionFlags","parsedInt","parsedFloat","minimumFractionDigits","yesNoOutput","nullHandler","booleanValue","firstNameExists","lastNameExists","nameObject","namePrefix","displayNameExists","legalNameExists","interestTypeExists","interestTypePrefix","combinedName","countryCode","uSACountryCode","commaPossibleValue","addressValue","cityValue","stateValue","principalSubdivisionValue","postalCodeValue","countryName","internationalAddress","offPostalCountryCodes","removeTabsAndNewLines","camelCase","splitNumbersAndWords","activityAction","definitionDescription","definitionEnum","definitionFormat","definitionRequired","definitionItems","definitionItemsEnum","defaultLayout","definitionProperties","definitionType","disabledLayout","isRepeater","jsonKeyName","jsonRecursiveKeyName","layoutfieldArray","layoutKey","layoutProperties","layoutWrapper","mapperKey","mapperProperties","mapperType","objectMapper","require","repeaterLayoutType","requiredFields","dereferencedSchema","objectIdentifier","arrayIdentifier","customSelectPlaceHolder","defaultLayoutBuilder","layoutBuilder","jref","dereference","getRequiredFields","setDefinitionValues","recursiveDefinitions","layoutTypeDefinition","mappingLogic","layoutObjectMapper","keyLayout","customSelectOptionsSetup","setRepeater","repeaterProperties","repeaterProperty","nestedPropertyArray","getNestedRepeater","repeaterLayoutKey","repeaterLayoutWrapper","repeaterLayoutProperties","repeaterBuilder","primaryRepeaterName","repeaterItemProperties","repeaterPropertyArray","nestedRepeaterPropertyName","arrayProperty","selectProperties","typeMap","propsMap","recursiveProperties","layoutSectionTitle","recursiveProperty","propsMapBuilder","_value","minItems","specificProperties","getOption","maxItems","maximum","minimum","tempType","iDisplayComponentDefinition","definitionKey","jsonInterpolationSchema","interpolationSchemaKey","setDefinitionProperty","updatedJsonData","iEntityDefinition","operationGroupNameKey","pageContextOperationGroupNameKey","utilityMenuOperationGroupNameKey","actionMenuOperationGroupNameKey","informationMenuDisplayComponentInstanceNameKey","contextMenuModuleKey","chatDataPromise","getSummaryDataValues","summaryDataValues","summaryIndex","EntitySecurity","repeater","tabContent","emptyWrapper","getScrubbedFormlyLayout","securityPermissions","securityLayout","getGenericScrubbedLayout","securityScrub","iterableFormly","formlyField","securityAccessPolicy","getSecurityIndex","scrubbedFieldsLayout","repeaterCondition","fieldCondition","scrubbedSectionsLayout","scrubbedRepeatersLayout","scrubbedTabsLayout","tabCondition","getScrubbedVisibleTabs","initialLayout","entitySecurityConfiguration","getNestedFormlyLayout","getScrubbedLayout","scrubbedLayout","getScrubbedFormlyField","getScrubbedField","getScrubbedTab","getScrubbedRepeater","setGenericScrubbedFormlyField","canUpdate","scrubbedField","tabs","visibleTabs","nestedField","nestedIndex","nestedLayout","nestedIterableFormly","iEntityLayout","nestedSections","mapDataSections","dataSectionTypes","mappedSections","iEntityType","iUser","securityGroup","mappedGroup","DateTimeToTrueLocalPipe","pure","EmailValidatorToken","MaximumLengthValidatorToken","MinimumLengthValidatorToken","MaximumNumberValidatorToken","MinimumNumberValidatorToken","PasswordValidatorToken","RegularExpressionValidatorToken","RequiredValidatorToken","RuleTokenLookup","Email","MaximumLength","MinimumLength","MaximumNumber","MinimumNumber","RegularExpressionFormat","Required","idCounter","ActivityService","successStatus","throwException","uniqueId","syncActivitiesLocally","newActivity","clearActivities","updatedActivities","safeActivities","storageSafeActivities","clonedActivity","settingLocalStorage","clearStoredVariables","storedPromiseArray","currentSubscriptions","serviceWorkerConfiguration","freshnessStrategyIdentifier","performanceStrategyIdentifier","serviceWorkerConfigFileIdentifier","getServiceWorkerConfigurationDataGroups","dataGroups","clearAllCaches","currentApiCaches","caches","cacheToClear","eachRequest","clearAllSubscriptions","subscription","getCachedResponse","request","matchingResponse","lookupMatchingResponse","responseArrayBuffer","clone","arrayBuffer","HttpResponse","getCachedETag","isCachedRequest","dataGroup","urls","urlIdentifier","isFreshnessRequest","matchingServiceWorkerDefinitions","cacheConfig","strategy","isPerformanceRequest","configurationStrategy","matchingUrls","clearPartials","currentApiCache","cacheToSearch","urlCacheResponses","matchAll","ignoreSearch","urlCacheResponse","clearExistingStartsWithResponses","startsWithUrl","serviceWorker","DisplayComponentInstance","iDisplayComponentInstance","initialParametersDataKey","interpolationDataKey","rawDisplayPromise","parameterDefinitiontDataKey","parameterLayoutDataKey","titleDataKey","DisplayComponentService","stringInterpolationIdentifier","propertyInterpolationIdentifier","displayContainerSubscription","displayComponentTypeName","displayComponentDefinitionComponentName","displayComponentType","displayDefinition","returnInstanceIfHidden","getDisplayComponentInstance","interpolatedDisplayComponentInstance","interpolateDisplayComponent","displayComponentArray","getDisplayDefinitionsWithPropertyValue","startsWithDisplayTypeName","requiredPropertyValue","matchingDisplayComponentDefinitions","displayTypeIds","mappedValue","currentDisplayComponentInstance","displayInstance","interpolationDataName","None","Information","Debug","Trace","logApiService","consoleLogEnabled","consoleLogLevel","serverLogLevel","logDebug","logInformation","logTrace","sendEntryToConsole","sendEntryToServer","shouldLog","configuredLogLevel","ModuleService","getContextMenuName","OperationIdentifiers","PowerBiApiService","accessTokenPromise","minutesBeforeExpireToRenew","_accessTokenExpiry","accessToken","embedUsername","embedReportRoles","dataReader","basePowerBiApiUrl","generateTokenIdentifier","expiredToken","getAuthenticationHeaders","authenticationHeaders","dashboardTileId","calculatedReportType","getCalculatedReportType","accessLevel","generateToken","generateCreateToken","models","Permissions","ReadWrite","dataType","reportLevelData","reportDataType","getAccessToken","powerBiBaseUrl","tokenType","TokenType","Embed","Read","ViewMode","View","bars","actionBar","panes","bookmarks","expand","pageNavigation","syncSlicers","visualizations","visualEmbedConfiguration","Edit","LayoutType","MobilePortrait","MobileLandscape","dashboardId","populatePowerBiCreateConfiguration","createReportEmbedURL","reportGroupId","targetModelId","targetWorkspaceId","apiReport","apiDashboard","tiles","castResponse","clientEmbedUsername","isEffectiveIdentityRequired","identities","username","roles","PowerBiService","powerBiCoreService","service","Service","factories","hpmFactory","wpmpFactory","routerFactory","configuration","ReallySimpleSyndicationFeedReaderService","feedChannelContent","localDataExpiry","minutesBeforeRefresh","expiredData","getLocalData","getReallySimpleSyndicationFeedResponse","convertfeedContentToDataModel","cachedData","getFreshData","feedItems","getFeedItems","mainLink","updateFrequency","updatePeriod","generator","lastBuildDate","language","channelFeedItems","pubDate","categorizationTaxonomy","globallyUniqueid","guid","syndicationFeed","XMLParser","feed","rss","channel","ResolverService","helperClasses","anyHelper","apiFilterHelper","apiHelper","chartHelper","dateHelper","formlyHelper","insuranceHelper","objectArrayHelper","commissionsHelper","objectHelper","ruleHelper","stringHelper","eventHelper","providerName","resolveRouter","SharedTokenLookup","resolveStatic","helperName","helperMethod","helperParameters","resolveActivity","completeMessage","SessionService","resolveClaims","resolveWorkItems","WorkItemTokenLookup","RulePresentationService","eventTypes","onChange","onChangeValidation","onChangeValidationAsync","OnFormDisplay","propertyDisabledIdentifier","formIdentifier","entityVersionId","getPopulatedRulePresentationDefinitions","formattedLayout","formRules","mapForm","decorateAssociatedRuleChangeNotification","updatedChangeFunction","changeField","associatedRuleDefinitions","formRulePresentationDefinitions","formRulePresentationDefinition","eventType","validateAndReturnRequiredParameterData","convertToRuleField","getMatchingRulePresentationDefinitions","matchingRulePresentationDefinitions","existingChangeFunction","existingDisableFunction","decorateOnChangeRule","decorateOnChangeValidationRule","decorateOnChangeValidationAsyncRule","decorateAssociatedRuleDefinitionAttribute","classReference","rulePresentationLogicDefinition","associatedDataKeys","associatedFields","associatedField","disableField","formlyMethodParameters","clearOnDisableValue","clearOnDisable","minimumNumber","maximumNumber","regularExpression","dynamicValidatorField","isRuleFiltered","getContainerResourceIdentifier","isRuleBlocking","nonBlocking","dynamicMessageField","getDynamicMessage","validatorInstance","mappedExpression","validatorField","existingMessage","existingMessageIsAFunction","messageAsFunctionDefinition","isRuleFilteredAsync","containerResourceIdentifier","ruleFilter","matchingRuleViolations","blockingActions","existingAssociatedRuleDefinitionsValue","dynamicMessage","traverseControl","currentLevel","RuleService","securityGroupRuleDefinitionViolationOverrideApiService","ruleDefinitionApiService","rulePresentationDefinitionApiService","rulePresentationLogicDefinitionApiService","ruleViolationWorkflowActionDefinitionApiService","workflowActionDefinitionApiService","instanceFilter","getRuleViolationWorkflowActions","ruleDefinitionIds","presentationDefinition","presentationLogic","presentationLogicDefinitionId","matchingRuleViolationOverrides","mappedWorkflowAction","actionTypeId","ruleActionTypes","entityInstanceRuleViolationOverride","isViolationOverridable","securityRuleViolationOverride","MILLISECONDS_IN_A_SECOND","MILLISECONDS_IN_A_MINUTE","MILLISECONDS_IN_AN_HOUR","MILLISECONDS_IN_A_DAY","AppTimeSpan","_seconds","_minutes","_hours","_days","Parse","totalMilliSeconds","calcMilliSeconds","_milliseconds","_totalMilliSeconds","totalSeconds","totalMinutes","totalHours","timeSpan","bigParts","smallPart","Subtract","date1","date2","Day","Hour","Week","Month","aMonthAgo","addTo","getMilliseconds","subtractFrom","roundValue","maximumValue","modulu","addition","newMilliSecond","newSecond","newminutes","newDays","authenticateApiService","securitySessionApiService","operationGroupsStored","defaultServiceConfiguration","localSystemTimeZone","localStorage","getItem","setItem","localSystemSettings","userStringified","expiryDate","localExpiry","expiry","localToken","localSessionId","multiFactorMethod","localMultiFactorMethod","isMultiFactorEnabled","isLoggedIn","isValidLoggedInAndReady","security","forcePasswordChange","shouldChangePassword","setFromHeaders","setFromUserSettings","decorateSystemSettings","setSessionId","decorateUserSecurityGroups","resetUser","changePassword","newPassword","newEntityInstance","resetExpiryDate","logOut","resetChat","securitySession","membershipFilter","decorateSystemTimeZone","decorateChatConfiguration","decorateKnowledgeBaseConfiguration","decorateWalkthroughConfiguration","internetAssignedNumbersAuthority","messageLevel","addLocalStorageEventListener","storageEvent","handleStorageEvent","oldValue","reload","MenuOrientation","OVERLAY","SLIM","getDefaultTheme","getDefaultLayout","menuMode","pinnedDrawerCount","changeTheme","changeLayout","changeMenuMode","changeToOverlayMenu","changeToSlimMenu","resetColors","userLayoutColor","userThemeColor","getContentCssClass","StonlyService","stonlyCommands","stonlyEvents","guidedTourStart","guidedTourEnd","stonlyWidgetScript","STONLY_WID","stonlyWidgetInterface","StonlyWidget","scriptTypes","eventAction","mappedAction","UserService","membershipGroups","updateUserSecurityGroups","initialSecurityGroups","changedSecurityGroups","initialSecurityGroup","changedSecurityGroup","WeatherForecastService","oneCallApiResource","reverseGeocodingApiResource","baseOpenWeatherApiUrl","coordinatesSubstring","oneCallOpenWeatherData","browserName","cachedLocationPermissionState","milesPerHour","baseOpenWeatherImageUrl","getBrowserName","navigatorBrowserNames","getlocationPermissionsState","queryGeolocationPermissions","navigatorPermissionTypes","browserUserAgent","userAgent","splitBrowserHeader","browserIdentifier","getOneCallOpenWeatherResponse","getWeatherForecastObject","current","hourlyOneCallForecastData","hourly","hourlyData","dailyOneCallForecastData","daily","dailyData","getGeographicLocationResponse","iconId","iconSize","getCoordinatesSubstring","coordinates","getGeolocationPositionCoordinates","latitude","longitude","getCurrentPosition","coords","enableHighAccuracy","apiUrl","openWeatherApiKey","fetch","forecastData","timezone","sunriseDateTime","sunrise","sunsetDateTime","sunset","temp","humanPerceptionTemperature","feels_like","atmosphericTemperature","dew_point","pressure","cloudiness","clouds","uvIndex","uvi","wind_speed","windDireccion","wind_deg","weatherId","weather","weatherName","main","unitsOfMeasurement","activitytServiceToken","chartFactoryToken","ruleServiceToken","entityServiceToken","genesysChatServiceToken","sessionServiceToken","userServiceToken","optionsFactoryToken","ChartFactory","GenesysChatService","ChartTransform","defaultColor","cloneChartConfiguration","cloneChartOptions","currentOptions","legend","hover","padding","pieChartOptions","circumference","rotation","cutout","responsive","point","radius","dataSetIndex","backgroundColors","themeColor","fillColors","getFillColor","hoverBackgroundColor","setThemeColor","themeColors","chartDataSet","chartType","xAxesType","handleTimeLineAggregate","unitStepSize","handleCircularData","handleCommonAggregate","handleStackedBarAggregate","dateRange","dateFormat","stackedTimeFormat","dataSetLabels","currentChartDataSet","sortedData","useDataLabels","matchingData","newDataSet","dataSetLabel","dateRangeIndex","dateValue","getTimeBasedAggregateKey","matchingAggregate","getsMatchingTimeBasedAggregate","matchingAggregates","objectMethod","dateTimeObjectInput","fillColor","borderColor","waitForElement","elementForTheme","selector","WorkItemService","getQueueByName","queueName","getCurrentUserWorkItems","includeReminders","customFilter","reminderFilter","workItemFilter","workItemPromises","workItemDisplayName","setQueueUserSecurityGroups","getQueueSecurityGroups","sharedAddMessage","addedSecurityGroups","removedSecurityGroups","userIsInGroup","addSecurity","removeSecurity","detailMessages","getDetailMessages","syncCurrentUserSecurityGroups","deleteUserQueueSecurityGroups","sharedDetailMessage","getSharedDetailMessage","getQueueUsers","nameFilter","mappedSecurityGroups","flattenedResults","userIdFilter","getAvailableWorkItemQueues","supportedWorkItemTypes","getAvailableAssignedToUsers","selectedUserName","getSplitNameFilter","availableUsers","selectedUser","filterAddition","filteredUsers","userOne","userTwo","workItemChildExists","instanceEntityType","workItemInstanceEntityType","allowedStatusValues","workItemInstances","fileSubtype","reviewFileDefinition","workItems","requiredFileReviews","subtypes","getRequiredPolicyLifecycleFiles","policyLifecycle","parentEntityId","policyLifecycleSettings","requiredFiles","hierarchyFiles","hierarchyRules","requiredFileDescriptions","requireAllFiles","requiredFileDefinition","getRequiredFileDefinitionDescription","requiredRule","allowedStatuses","aggregateMonthlyAverages","dataArray","firstInstance","results","aggregateMethods","monthsElapsed","toObject","averagePerMonth","promiseResults","mapResultOne","mapResultTwo","mapResult","getCompletedPercent","completedWorkItems","remainingWorkItems","totalCompleted","totalRemaining","completedPercent","completed","remaining","NavigateToWorkitemParent","navigationEntityType","navigationId","navigationModule","deleteMessage","clearingViewPermissions","clearingManagePermissions","groupPermissionDetails","sessionServiceUser","addCurrentUserSecurityGroup","removeCurrentUserSecurityGroup","currentSecurityGroups","securityGroupToAdd","securityGroupToRemove","groupIndex","conditionalRuleName","approvalRequired","matchingFiles","matchingApprovedFile","rule","splitNameFilter","splitName","workItemServiceToken","production","AdminComponent","TableHelper","getExpandTitle","staticTitle","CaretLeftIcon","BaseIcon","ɵCaretLeftIcon_BaseFactory","standalone","getClassNames","ariaLabel","ariaHidden","role","encapsulation","SlideMenuSub_ng_template_2_li_0_Template","processedItem_r2","getItemProp","getItemId","getSeparatorItemClass","SlideMenuSub_ng_template_2_li_1_a_3_span_1_Template","SlideMenuSub_ng_template_2_li_1_a_3_span_2_Template","getItemLabel","SlideMenuSub_ng_template_2_li_1_a_3_ng_template_3_Template","SlideMenuSub_ng_template_2_li_1_a_3_span_5_Template","SlideMenuSub_ng_template_2_li_1_a_3_ng_container_6_AngleRightIcon_1_Template","SlideMenuSub_ng_template_2_li_1_a_3_ng_container_6_2_ng_template_0_Template","SlideMenuSub_ng_template_2_li_1_a_3_ng_container_6_2_Template","SlideMenuSub_ng_template_2_li_1_a_3_ng_container_6_Template","slideMenu","submenuIconTemplate","a1","SlideMenuSub_ng_template_2_li_1_a_3_Template","isItemGroup","SlideMenuSub_ng_template_2_li_1_a_4_span_1_Template","SlideMenuSub_ng_template_2_li_1_a_4_span_2_Template","SlideMenuSub_ng_template_2_li_1_a_4_ng_template_3_Template","SlideMenuSub_ng_template_2_li_1_a_4_span_5_Template","SlideMenuSub_ng_template_2_li_1_a_4_ng_container_6_AngleRightIcon_1_Template","SlideMenuSub_ng_template_2_li_1_a_4_ng_container_6_2_ng_template_0_Template","SlideMenuSub_ng_template_2_li_1_a_4_ng_container_6_2_Template","SlideMenuSub_ng_template_2_li_1_a_4_ng_container_6_Template","exact","SlideMenuSub_ng_template_2_li_1_a_4_Template","SlideMenuSub_ng_template_2_li_1_p_slideMenuSub_5_Template","itemMouseEnter","autoDisplay","menuId","activeItemPath","focusedItemId","menuWidth","SlideMenuSub_ng_template_2_li_1_Template","_r45","onItemClick","processedItem","ctx_r48","index_r3","getItemClass","isItemActive","isItemFocused","isItemDisabled","getAriaSetSize","getAriaPosInset","isItemVisible","SlideMenuSub_ng_template_2_Template","a0","a2","SlideMenu_div_0_CaretLeftIcon_9_Template","SlideMenu_div_0_10_ng_template_0_Template","SlideMenu_div_0_10_Template","showTransitionParams","hideTransitionParams","SlideMenu_div_0_Template","onOverlayClick","onOverlayAnimationStart","onOverlayAnimationEnd","logFocus","onMenuFocus","onKeyDown","onItemMouseEnter","goBack","onNavigationKeyDown","popup","showTransitionOptions","hideTransitionOptions","viewportHeight","processedItems","tabindex","ariaLabelledBy","baseZIndex","autoZIndex","effectDuration","easing","focused","backIconTemplate","SlideMenuSub","renderer","cd","menuFocus","menuBlur","menuKeydown","sublistViewChild","ObjectUtils","getItemValue","getItemKey","isNotEmpty","isFocus","onMenuKeyDown","DOCUMENT","forwardRef","SlideMenu","hostAttrs","dependencies","AngleRightIcon","platformId","config","overlayService","_model","_processedItems","createProcessedItems","onShow","onHide","templates","rootmenu","containerViewChild","backward","backwardViewChild","slideMenuContentViewChild","outsideClickListener","resizeListener","transitionEndListener","transitionStartListener","animating","relativeAlign","signal","focusedItemInfo","parentKey","searchTimeout","visibleItems","focusedItem","effect","bindOutsideClickListener","bindResizeListener","unbindOutsideClickListener","unbindResizeListener","documentFocusListener","UniqueComponentId","ngAfterContentInit","getType","newItem","getProccessedItemLabel","isProcessedItemGroup","isSelected","isValidSelectedItem","isValidItem","isItemSeparator","isItemMatched","isProccessedItemGroup","grouped","onItemChange","metaKey","ctrlKey","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onSpaceKey","onEnterKey","onEscapeKey","onTabKey","isPrintableCharacter","searchItems","to","findNextItemIndex","findFirstFocusedItemIndex","changeFocusedItemIndex","altKey","findPrevItemIndex","findLastFocusedItemIndex","parentItem","isEmpty","findFirstItemIndex","findLastItemIndex","DomHandler","findSingle","anchorElement","bindTransitionListeners","findVisibleItem","onMenuBlur","activeLevel","listen","activeMenu","firstElementChild","newActiveItemPath","lastActiveParent","unbindTransitionListeners","toState","moveOnTop","appendOverlay","alignOverlay","scrollInView","onOverlayHide","relativePosition","absolutePosition","ZIndexUtils","restoreOverlayAppend","zIndex","menu","show","currentTarget","markForCheck","matched","selectedIndex","findSelectedItemIndex","findLastIndex","matchedItemIndex","isPlatformBrowser","isTouchDevice","isOutsideContainer","isOutsideTarget","PLATFORM_ID","contentQueries","dirIndex","PrimeTemplate","SlideMenuModule","imports","CommonModule","RouterModule","RippleModule","TooltipModule","SharedModule","SlideMenuComponent","filterChange","stepIndexChange","slideMenuViewChild","stepIndex","loadingLabel","pageContextChanged","loadingMenuItem","contextMenuHeight","contextMenuWidth","getCurrentStepIndex","filterMenuItems","loadingModuleMenu","sectionTitleIdentifier","sectionTitleIconIdentifier","caretLeftIcon","noResultsFoundIdentifier","loadDebounceDelay","pageContextIdentifiers","componentSizes","backButtonHeight","filterHeight","headerHeight","calculateContextMenuHeight","refreshContextMenu","separatorIndex","separator","contentMenuHeight","setAttribute","populateMenuItems","getMenuLabelItem","slideMenuClicked","labelMenuItem","currentMenuItemIcon","relatedContextMenu","addCreateAction","recursiveMenuItem","baseMenuLabelItem","creationEntityType","parentEntityTypeGroup","menuItemCollection","comparisonLabel","getNoResultsFoundMenuItem","currentLeftSlideValue","filterControlChanged","AppContextMenuComponent","formBuilder","menuExpansion","currentDisplayMode","menuFilter","displayFilter","widthChanged","overlayIdentifier","contextMenuFilterControlIdentifier","filterInputDebounceDelay","widthChangeDebounceDelay","handleSetContext","contextMenuFilterControl","expansionButtonClick","toggleExpansionButtonClick","resetSlideMenu","newFilterValue","newStepIndex","currentEntityFilter","AppContextMenuComponent_form_8_Template","headerExpansion","headerExpanded","buttonBarItemCountChanged","operationGroupDisplayName","additionalHeaderContent","operationGroupInitialModel","BasePageComponent_div_7_span_2_Template","BasePageComponent_div_7_div_6_Template","BasePageComponent_div_7_div_7_Template","operationButtonBarDisplayed","pageTitle","operationGroupExists","BasePageComponent","basePageCssClass","contextMenuExpanded","contextMenuExpansion","BasePageComponent_div_6_Template","BasePageComponent_div_7_Template","EntityAccessPoliciesComponent","securityAccessPolicyApiService","securityAccessPolicyDefinitionApiService","entityDefinitionId","uniqueName","createAction","deleteAction","createAccessPolicy","newAccessPolicy","createdAccessPolicyId","newAccessPolicyDefinition","existingAccessPolicyDefinitions","instanceAccessPoliciesFilter","securityGroupEntityInstanceAccessPolicies","deleteAccessPolicy","securityAccessPolicyFilter","accessDefinition","existingActions","EntityAccessPoliciesComponent_div_1_Template","EntityAccessPoliciesComponent_div_2_Template","EntityManagerDirective","layoutFields","contextData","loadingDefinitions","formValuesChanged","databaseData","formValidity","initialLoad","saveTitle","saveContent","saveAction","setFormlyDefinitions","setTableDefinitions","emitFormValidityChangedEvent","setContextData","setLayoutFields","formValuesChange","handleFormChangesAndValidity","formValidityChange","apiData","EntityAccessPolicyDefinitionComponent","accessPolicyDefinition","accessPolicyIdQueryParameter","accessPolicyDefinitionDataObject","definitionValidator","EntityAccessPolicyDefinitionComponent_div_1_Template","EntityAccessPolicyDefinitionComponent_div_2_Template","systemEngines","preRequisiteTableDefinitions","postRequisiteTableDefinitions","EntityActionDefinitionComponent","workflowActionDefinitionsApiService","workflowFailureActionsApiService","workflowRequisiteTypesApiService","workflowActionRequisitesApiService","loadingPostRequisiteTableDefinitions","loadingPreRequisiteTableDefinitions","requisiteTypes","requisiteOptions","preRequisiteAvailableColumns","preRequisiteSelectedColumns","postRequisiteAvailableColumns","postRequisiteSelectedColumns","postRequisiteCommonTableContext","preRequisiteCommonTableContext","actionIdQueryParameter","workflowActionDataObject","classDefinition","failureActionId","actionDefinition","setPreRequisiteTableDefinitions","setPostRequisiteTableDefinitions","requisiteType","actionRequisites","preRequisites","actionRequisite","decorateActionRequisiteViewModel","uniqueOrder","createRequisite","updateOrderIndex","deleteRequisite","postRequisites","_x6","requisiteActionDefinitionId","requisiteTypeId","actionDefinitionId","uniqueCombination","_x7","failureAction","mapWorkflowFailureAction","oneOf","validCSharpFormat","isValidCSharpFormat","getRequisiteTableContext","actionDefinitions","workflowRequisites","createdId","sortCommonTableByOrder","indexReference","orderedRequisites","neighborOrderIndex","findSelectedChildIndex","selectedChild","EntityActionDefinitionComponent_div_1_Template","EntityActionDefinitionComponent_div_2_Template","EntityActionDefinitionComponent_div_4_Template","EntityActionDefinitionComponent_div_5_Template","EntityActionDefinitionComponent_div_6_Template","EntityActionDefinitionComponent_div_7_Template","EntityActionsComponent","createEntityAction","newAction","newActionDefinitionId","existingRequisites","layoutTypeName","EntityActionsComponent_div_1_Template","EntityActionsComponent_div_2_Template","CommonFormlyFieldConstants","EntityDefinitionsComponent","firstLevelKeyProperties","propertyLevelKeyProperties","entityDefinitionDataObject","entityVersionDataObject","versionData","entityTypeDataObject","publicField","ownershipSecurityGroupField","controls","validEndDate","firstLevelProperty","isExistingKey","propertyLevelKey","EntityDefinitionsComponent_div_1_Template","EntityDefinitionsComponent_div_2_Template","EntityLayoutDefinitionComponent","layoutIdQueryParameter","nonDataBasedControls","entityLayoutDataObject","jsonValue","EntityLayoutDefinitionComponent_div_1_Template","EntityLayoutDefinitionComponent_div_2_Template","EntityLayoutsComponent","layoutTypeNameOptions","layoutTypeOne","layoutTypeTwo","optionOne","optionTwo","uniqueLayoutType","createLayout","deleteLayout","createLayoutAction","newEntityLayout","emptyArray","newEntityLayoutId","deleteFunction","existingLayout","EntityLayoutsComponent_div_1_Template","EntityLayoutsComponent_div_2_Template","EntityOverviewComponent","EntityOverviewComponent_div_1_Template","AppCanDeactivateGuard","confirm","EntityRuleDefinitionComponent","ruleValidatorDefinitionApiService","ruleValidationDefinitionApiService","appCanDeactivateGuard","workflowTableDefinitions","workflowAvailableColumns","workflowSelectedColumns","serverValidationsTableDefinitions","serverAvailableColumns","serverSelectedColumns","serverValidationsCommonTableContext","presentationLogicTableDefinitions","presentationLogicAvailableColumns","presentationLogicSelectedColumns","presentationLogicCommonTableContext","workflowActionDefinitionOptions","ruleValidatorDefinitionOptions","presentationLogicDefinitionOptions","ruleDefinitionIdQueryParameter","uniqueRuleName","ruleDefinitionDataObject","setWorkflowTableDefinitions","setServerValidationsTableDefinitions","setPresentationLogicTableDefinitions","ruleViolations","actionDefinitionName","actionType","ruleActionTypeNames","uniqueWorkflowName","createViolationWorkflow","deleteViolationWorkflow","ruleValidations","ruleValidation","validationName","validationVersion","ruleValidator","validatorDefinitionId","uniqueValidatorDefinitionName","createServerValidations","deleteServerValidations","rulePresentations","rulePresentation","presentationName","createPresentationDefinition","deletePresentationDefinition","existingRules","existingruleViolationWorkflowActionDefinitions","existingRuleValidatorDefinition","createServerValidationAction","validatorJsonData","validatorJsonDataObject","validationDataObject","newRuleValidationDefinitionActionDefinition","jsonTabIndent","newRuleValidationId","createViolationWorkflowAction","newRuleViolationWorkflowActionDefinition","newViolationWorkflowId","newPresentationDefinitionAction","presentationLogicJsonData","presentationLogicDefinitionJsonDataObject","presentationDefinitionDataObject","newRulePresentationDefinition","newRulePresentationId","neighbor","EntityRuleDefinitionComponent_div_1_Template","EntityRuleDefinitionComponent_div_2_Template","EntityRulePresentationComponent","eventTypeOptions","rulePresentationDefinitionIdQueryParameter","presentationLogicName","rulePresentationDataObject","validDataKey","dataKeyValidator","EntityRulePresentationComponent_div_1_Template","EntityRulePresentationComponent_div_2_Template","EntityRuleValidationsComponent","ruleValidationDefinition","ruleValidationDefinitionIdQueryParameter","validatorName","ruleValidationDataObject","EntityRuleValidationsComponent_div_1_Template","EntityRuleValidationsComponent_div_2_Template","EntityRuleWorkflowComponent","securityGroupRuleViolationOverrideApiService","ruleActionTypeOptions","securityGroupRuleDefinitionViolationOverride","ruleWorkflowDefinitionIdQueryParameter","securityRuleViolation","ruleWorkflowDataObject","securityGroupIndex","existingGroup","securityRule","getSecurityRuleViolationOverrideId","securityRuleViolationOverrideDataObject","EntityRuleWorkflowComponent_div_1_Template","EntityRuleWorkflowComponent_div_2_Template","EntityRulesComponent","createRuleAction","newRule","newRuleId","EntityRulesComponent_div_1_Template","EntityRulesComponent_div_2_Template","EntityManagerSearchComponent","searchInputElement","searchInputValue","searchOnEnterKeyPress","searchEntity","versionEnabled","versionStartDate","versionEndDate","EntityManagerSearchComponent_div_5_Template","EntityManagerSearchComponent_div_6_Template","securityApplicationsTableDefinitions","ApplicationsComponent","securityApplicationApiService","securitySessionsApiService","uniqueNameValidator","uniqueKey","uniqueKeyValidator","createApplication","updateNameValidator","updateApplication","deleteApplication","applicationName","applicationKey","originalApplication","currentIsoDateTime","aMonthFromCurrentIsoDateTime","activeSessions","ApplicationsComponent_div_1_Template","ApplicationsComponent_div_2_Template","PageContextDirective","SessionEventsComponent","lineChart","borderWidth","spanGaps","hoverRadius","tension","grid","intersect","ticks","tickValue","_ticks","yAlign","xAlign","barChart","beginAtZero","maxBarThickness","stackedBarChart","pieChart","doughnutChart","timeLineChart","tooltipFormat","sampleSize","displayFormats","securitySessionEventTableDefinitions","SessionComponent","chartFactory","lastActiveDate","expireDate","userLabel","eventByResponseChartDefinition","chartLabels","eventByMethodChartDefinition","eventsByMethod","partiallyMaskedToken","datesSetup","getUserName","getApplication","setupContextMenuItems","sessionEvents","millisecondsCounter","millisecondsDateDifference","responseTime","getAverageTime","successCounter","redirectionCounter","errorCounter","firstCharacter","eventCounter","getCounter","putCounter","postCounter","firstCharacters","millisecondsAverage","userFullName","applicationId","dbCreateDate","dateFormatter","dbLastActiveDate","dbExpireDate","toRelative","fullToken","partialToken","SessionComponent_div_28_Template","SessionComponent_div_29_Template","SessionComponent_div_30_Template","overlayActive","overlayContext","InformationMenuComponent","informationMenu","closeOverlayPanel","scrollInformationMenuTo","displayOverlay","scrollToSummaryCard","summaryCardComponent","setAsActive","elementLocation","elementMiddle","informationMenuMiddle","InformationMenuComponent_li_6_Template","InformationMenuComponent_div_9_Template","securitySessionsTableDefinitions","SessionsComponent","activeSessionsFilter","activeUsersCount","activeUsersFilter","startOfDayFilter","todaysHourLabels","lastThirtyDaysFilter","thirtyDayLabels","pageCharts","sessionsLastThirtyDays","usersLastThirtyDays","numberOfSessions","numberOfUsers","primaryGroupByValues","hourGroupByValue","session","showTime","updateSession","SessionsComponent_div_4_Template","SessionsComponent_div_5_Template","manageUserGroupTableDefinitionsView","manageUserGroupTableDefinitionsUpdate","ManageUserGroupComponent_span_12_div_1_Template","ManageUserGroupComponent_span_12_div_2_Template","ManageUserGroupComponent","viewAvailableColumns","viewSelectedColumns","updateAvailableColumns","updateSelectedColumns","asyncValidatorErrorMessage","routeDebounceTime","sharedTableDefinitions","manageGroupUsers","validUsername","validUserName","securityGroupUsers","subscribedUser","entityInstanceUser","ManageUserGroupComponent_span_12_Template","ManageUserGroupComponent_div_13_Template","manageUserGroupsTableDefinitions","ManageUserGroupsComponent","validGroupName","createSecurityGroup","updateSecurityGroup","deleteSecurityGroup","userGroup","ManageUserGroupsComponent_div_1_Template","ManageUserGroupsComponent_div_2_Template","manageUserTableDefinitionsView","manageUserTableDefinitionsUpdate","ManageUserComponent","setSecurityGroups","baseTableDefinitions","validSecurityGroup","isValidSecurityGroup","addUserSecurityGroup","removeUserSecurityGroup","ManageUserComponent_div_8_Template","ManageUserComponent_div_9_Template","ManageUserComponent_div_10_Template","manageUsersTableDefinitions","ManageUsersComponent","createObject","updateUser","taxId","updateInstanceObject","deleteEntityInstance","uniqueUserName","uniqueUsername","validation","resetPassword","sendWelcomeLetter","resetUserPassword","sendUserWelcomeLetter","ManageUsersComponent_div_4_Template","ManageUsersComponent_div_5_Template","requestHost","callsite","LogComponent","requestUrl","timeLog","formatRequestUrl","formatTime","getMethodClassName","requestMethod","LogComponent_ng_template_11_Template","LogComponent_ng_template_12_Template","logsTableDefinitions","LogsComponent","pieChartDefinition","logsLastThirtyDays","numberOfLogs","LogsComponent_div_4_Template","LogsComponent_div_5_Template","MaintenanceComponent","MinusIcon","ɵMinusIcon_BaseFactory","Panel_div_1_span_1_Template","Panel_div_1_ng_container_3_Template","Panel_div_1_5_ng_template_0_Template","Panel_div_1_5_Template","Panel_div_1_button_6_ng_container_1_ng_container_1_span_1_Template","expandIcon","Panel_div_1_button_6_ng_container_1_ng_container_1_MinusIcon_2_Template","Panel_div_1_button_6_ng_container_1_ng_container_1_Template","Panel_div_1_button_6_ng_container_1_ng_container_2_span_1_Template","collapseIcon","Panel_div_1_button_6_ng_container_1_ng_container_2_PlusIcon_2_Template","Panel_div_1_button_6_ng_container_1_ng_container_2_Template","Panel_div_1_button_6_ng_container_1_Template","collapsed","Panel_div_1_button_6_2_ng_template_0_Template","Panel_div_1_button_6_2_Template","Panel_div_1_button_6_Template","onIconClick","buttonAriaLabel","headerIconTemplate","Panel_div_1_Template","_r21","onHeaderClick","headerTemplate","iconPos","iconTemplate","toggleable","Panel_ng_container_5_Template","Panel_div_6_ng_container_2_Template","Panel_div_6_Template","footerTemplate","transitionParams","Panel","showHeader","toggler","transitionOptions","collapsedChange","onBeforeToggle","onAfterToggle","footerFacet","contentTemplate","collapse","getBlockableElement","onToggleDone","Footer","ngContentSelectors","PlusIcon","PanelModule","i_r5","removeParam","TestBuilderComponent","servicesForm","apiMethod","createParamItem","servicesArray","injectedService","methodsArray","showTypeGroup","tempArray","throwAngularError","throwHttpResponseError","throwApiError","onSelectService","isEntityInstanceApiService","resetMethodsDropdown","resetParam","ownMethodsObject","getPrototypeOf","parentMethodsObject","getAllMethods","firstElement","secondElement","secondName","onSelectMethod","onSubmit","typeGroupValue","selectedMethod","paramsList","paramItem","tempParam","paramValue","isParamObject","addParam","removeAt","paramsArray","serviceName","TestBuilderComponent_div_19_Template","TestBuilderComponent_div_29_Template","TestBuilderComponent_div_32_Template","DefaultsComponent","DisplayDefinitionsComponent","displayTypeNameKey","displayTypeDescriptionKey","displayTypePublicKey","displayTypeOwnershipSecurityGroupKey","displayDefinitions","apiDefinitions","apiDefinition","decoratedDefinitions","alphaNumeric","uniqueType","isExistingType","validJson","isValidJson","createDisplayDefinition","useCodeBlock","codeBlockType","markdownLanguages","allowToUpdateType","updateDisplayDefinition","deleteDisplayDefinition","displayComponentTypeId","displayComponentDefinitionData","createDisplayComponentDefinition","updateDisplayComponentDefinition","displayComponentInstanceRelationships","deleteDisplayComponentDefinition","allowedToUpdate","DisplayDefinitionsComponent_div_1_Template","DisplayDefinitionsComponent_div_2_Template","dynamicFormValidity","staticFormValidity","DisplayManagementExpandComponent_span_1_div_4_Template","loadingDynamicLayout","DisplayManagementExpandComponent","staticValidity","dynamicValidity","setStaticFormlyLayout","checkValidity","displayComponentTypeOptions","displayComponentDefinitionOptions","setDynamicFormlyLayout","isExistingName","interpolationSchema","interpolationItem","initialParameters","validAttibute","attributeValidator","attributeObject","isValidType","propertyTypeChecker","duplicates","propertyType","typedOperationName","existingOperation","DisplayManagementExpandComponent_div_0_Template","DisplayManagementExpandComponent_span_1_Template","DisplayManagementComponent","dataChunkLimit","operationQueryParams","displayManagementContext","dataReturn","decoratedDisplayManagement","createDisplayInstance","deleteDisplayInstance","updateDisplayInstance","existingSecurityGroups","existingSecurityGroup","deleteDisplayComponentInstance","DisplayManagementComponent_div_1_Template","DisplayManagementComponent_div_2_Template","LogosComponent","parametersTableDefinitionsView","operationGroupsTableDefinitionsView","parametersTableDefinitionsUpdate","operationGroupsTableDefinitionsUpdate","OperationDefinitionComponent_span_0_ng_template_2_div_3_div_1_Template","OperationDefinitionComponent_span_0_ng_template_2_div_3_span_2_Template","OperationDefinitionComponent_span_0_ng_template_2_div_3_Template","OperationDefinitionComponent_span_0_ng_template_1_Template","OperationDefinitionComponent_span_0_ng_template_2_Template","OperationDefinitionComponent","parametersViewAvailableColumns","parametersViewSelectedColumns","operationGroupsViewAvailableColumns","operationGroupsViewSelectedColumns","parametersUpdateAvailableColumns","parametersUpdateSelectedColumns","operationGroupsUpdateAvailableColumns","operationGroupsUpdateSelectedColumns","operationGroupOptions","operationTypeParameterOptions","loadingOperationDefinition","setAvailableParameterOptions","setupParameterTableDefinitions","setupOperationGroupsTableDefinitions","getAssociatedSecurityGroup","dataSetup","getOperationGroupParents","operationGroupLayout","uniqueOperationGroup","associatedGroup","createGroupAssociation","deleteGroupAssociation","displayParameters","operationDefinitionFilterString","operationDefinitionParameter","mapDisplayParameter","createNewParameter","removeParameter","persistedData","typeParameterName","operationGroupId","isNotExisting","childOperationGroupHierarchies","operationGroupsParents","childOperationGroupHierarchy","OperationDefinitionComponent_span_0_Template","OperationDefinitionComponent_div_1_Template","operationDefinitionsTableDefinitions","OperationDefinitionsComponent","operationDefinitionsApiService","operationTypeOptions","fieldValueDebounceTime","itemLayout","externalLinkTooltip","externalUrls","updateLayout","layoutItem","allowedToChange","createOperationDefinition","updateOperationDefinition","deleteOperationDefinition","deleteStatementLogic","getOperationTypeName","operationDefinitionData","mappedSecurityGroup","createdOperationId","typedOperationNames","existingOperations","allowToChange","existingParameters","typeParameterDefinition","emitModelToViewChange","emitViewToModelChange","OperationDefinitionsComponent_div_1_Template","OperationDefinitionsComponent_div_2_Template","createFormlylayout","OperationGroupCreateChildComponent","FieldType","changeRef","operationChildType","loadingLayout","layoutRedrawDebounceDelay","populateOperations","operationQueryReturn","defineFormlyLayout","pristine","mapDefinitionNames","operationGroupRelationships","child","operationQueryDefinitions","dataChunk","operations","OperationGroupCreateChildComponent_span_0_Template","OperationGroupCreateChildComponent_div_1_Template","childrenTableDefinitionsView","OperationGroupComponent_ng_template_1_div_4_Template","OperationGroupComponent_ng_template_1_div_5_Template","childrenTableDefinitionsUpdate","OperationGroupComponent_ng_template_2_div_3_Template","OperationGroupComponent_ng_template_2_div_4_Template","OperationGroupComponent","childViewAvailableColumns","childViewSelectedColumns","childUpdateAvailableColumns","childUpdateSelectedColumns","decorateViewModelArray","childrenData","baseIdCounter","baseId","orderedChildren","OperationGroupComponent_ng_template_1_Template","OperationGroupComponent_ng_template_2_Template","operationGroupsTableDefinitions","OperationGroupsComponent","validatorDebounceTime","allowToUpdateName","createOperationGroup","updateOperationGroup","deleteOperationGroup","childRelationship","OperationGroupsComponent_div_1_Template","OperationGroupsComponent_div_2_Template","StylesComponent","ActionDefinitionRouterComponent","ActionDefinitionComponent","actionDefinitionsApiService","ActionDefinitionComponent_div_1_Template","ActionDefinitionComponent_div_2_Template","formlyLayoutDefinition","ActionDefinitionExpandComponent_div_5_span_1_span_1_Template","ActionDefinitionExpandComponent_div_5_span_1_div_2_Template","ActionDefinitionExpandComponent_div_5_span_1_div_3_Template","ActionDefinitionExpandComponent_div_5_span_1_Template","item_r14","item_r15","actionInstanceTableDefinitions","ActionDefinitionExpandComponent_span_6_div_3_Template","ActionDefinitionExpandComponent_span_6_div_5_Template","ActionDefinitionExpandComponent_span_6_span_7_Template","ActionDefinitionExpandComponent_span_6_span_8_Template","chartItem","loadingInstanceTableDefinitions","ActionDefinitionExpandComponent","workflowRequisiteTypeApiService","workflowActionInstanceApiService","loadingFormlyDefinitions","actionInstanceAvailableColumns","actionInstanceSelectedColumns","actionExpandDefinitionsContext","displayRequisiteTables","instancesByState","setFormlyLayoutDefinition","setActionInstanceTableDefinitions","actionInstances","averageResponse","actionInstance","getAverageResponseTime","dataId","completeStateCount","failedStateCount","pendingStateCount","averageTime","dateTimeFromEpoch","hideRequiredMarker","entityTypeDropdownOptions","failureActionDropdownOptions","stateId","preRequisiteDropdownOptions","_x8","_x9","_x10","_x11","postRequisiteDropdownOptions","_x12","_x13","ActionDefinitionExpandComponent_span_1_Template","ActionDefinitionExpandComponent_span_4_Template","ActionDefinitionExpandComponent_div_5_Template","ActionDefinitionExpandComponent_span_6_Template","ActionDefinitionsComponent","actionDefinitionsContext","entityTypeFilterOptions","workflowDefinitions","definitionViewModels","createActionDefinition","updateActionDefinition","deleteActionDefinition","entityVersionNumber","ActionDefinitionsComponent_div_1_Template","ActionDefinitionsComponent_div_2_Template","ActionHistoryExpandComponent","setFormlyLayoutDefinitions","entityInstanceIdOptions","getEntityInstanceLabel","actionMenuItems","getCreateDateLabel","addonMenuItems","getCustomIcon","statusId","getCustomStyle","getChangeDateLabel","duration","getAverageTimeDuration","ActionHistoryExpandComponent_span_2_Template","ActionHistoryExpandComponent_div_3_Template","ActionExecutionHistoryComponent","workflowActionInstancesApiService","actionHistoryContext","lastSevenDaysFilter","sevenDayLabels","todayFilter","sevenDayFilter","actionNames","definitionNameFilterOptions","actionsLastThirtyDays","numberOfActionInstances","actionsLastSevenDays","populateNames","queryReturn","currentInitialDateTime","sevenDaysAgoFromCurrentDateTime","averageDuration","filterOptions","ActionExecutionHistoryComponent_div_1_Template","ActionExecutionHistoryComponent_div_2_Template","ActionExecutionHistoryComponent_div_3_Template","backNavigate","AccessDeniedComponent","accessDeniedUrlQueryParameter","resourcesQueryParameter","clientMessageQueryParameter","AccessDeniedComponent_div_1_Template","validParametersChanged","parametersChanged","useFixedHeightScrollPanel","archivedParameterLayoutData","cancelClick","containerClicked","DisplayComponentParameterComponent_ng_template_0_ng_template_3_Template","DisplayComponentParameterComponent_ng_template_0_ng_template_4_Template","DisplayComponentParameterComponent_ng_template_0_a_7_Template","applyClick","useOverlay","displayAbove","useScrollPanel","alwaysDisplayCancel","DisplayComponentParameterComponent","pageHeaderParameters","appliedParameters","fullHeightForm","fullDynamicFormHeight","lastCalendarTarget","appendedCalendarPanelClass","calculateHeaderParameterDisplay","panelStyleClass","pageTop","clickEventPath","appendedCalendarPanel","finalWidth","DisplayComponentParameterComponent_ng_template_0_Template","getChipValue","DisplayComponentParameterHeaderComponent_div_0_div_1_ng_template_2_Template","displayEditClicked","editDisplayTooltip","iconTooltipPosition","iconStyleClass","displaySecondaryClicked","displayingSecondary","displayingSettings","alternateDisplayTooltip","displaySettingsClicked","alterDataTooltip","differenceCount","DisplayComponentParameterHeaderComponent_div_0_div_1_Template","DisplayComponentParameterHeaderComponent_div_0_div_2_Template","DisplayComponentParameterHeaderComponent_div_0_div_3_Template","DisplayComponentParameterHeaderComponent_div_0_div_4_Template","DisplayComponentParameterHeaderComponent_div_0_div_6_Template","displayEditOption","displaySecondaryOption","displayParameterOption","DisplayComponentParameterHeaderComponent","displayEditClick","displaySecondaryClick","displaySettingsClick","getChildParameterDataDifferences","dropdownTypes","getChipTitle","selectOption","parentChangeCount","DisplayComponentParameterHeaderComponent_div_0_Template","GenericBasePageComponent_div_1_div_2_Template","GenericBasePageComponent_div_5_ng_template_1_Template","GenericBasePageComponent","editMode","displayComponentIdentifier","basePageIdentifier","displayComponentParameterValue","initializeDynamicComponent","pageGuardPromise","pageGuardResources","pageGuardMessage","basePageData","mergedData","initializeBasePage","setupPrimaryDisplayComponent","pageDefinition","informationMenuDisplayComponentName","GenericBasePageComponent_div_1_Template","GenericBasePageComponent_div_2_Template","GenericBasePageComponent_div_4_Template","GenericBasePageComponent_div_5_Template","TabMenu_button_2_ChevronLeftIcon_2_Template","TabMenu_button_2_3_ng_template_0_Template","TabMenu_button_2_3_Template","TabMenu_button_2_Template","navBackward","previousIconTemplate","TabMenu_li_7_a_2_span_3_Template","item_r12","iconStyle","TabMenu_li_7_a_2_span_4_Template","TabMenu_li_7_a_2_ng_template_5_Template","TabMenu_li_7_a_2_span_7_Template","TabMenu_li_7_a_2_Template","TabMenu_li_7_a_3_span_3_Template","TabMenu_li_7_a_3_span_4_Template","TabMenu_li_7_a_3_ng_template_5_Template","TabMenu_li_7_a_3_span_7_Template","TabMenu_li_7_a_3_Template","routerLinkActiveOptions","fragment","queryParamsHandling","preserveFragment","TabMenu_li_7_ng_container_4_Template","a3","TabMenu_li_7_Template","restoredCtx","i_r13","onKeydownItem","onMenuItemFocus","itemTemplate","TabMenu_button_10_ChevronRightIcon_2_Template","TabMenu_button_10_3_ng_template_0_Template","TabMenu_button_10_3_Template","TabMenu_button_10_Template","navForward","nextIconTemplate","TabMenu","_focusableItems","activeItem","scrollable","activeItemChange","navbar","inkbar","prevBtn","nextBtn","tabLink","tabChanged","backwardIsDisabled","forwardIsDisabled","timerIdForInitialAutoScroll","focusableItems","updateInkBar","initAutoScrollForActiveItem","initButtonState","clearAutoScrollHandler","foundElement","tabLinks","toArray","findNextItem","findPrevItem","onTabKeyDown","nextItem","prevItem","tabHeader","getWidth","getOffset","getVisibleButtonWidths","updateButtonState","updateScrollBar","lastPos","ChevronLeftIcon","ChevronRightIcon","TabMenuModule","TabPanel_div_0_ng_container_2_ng_container_1_Template","TabPanel_div_0_ng_container_2_Template","TabPanel_div_0_Template","tabView","getTabContentId","getTabHeaderActionId","TabView_button_3_ChevronLeftIcon_2_Template","TabView_button_3_3_ng_template_0_Template","TabView_button_3_3_Template","TabView_button_3_Template","prevButtonAriaLabel","TabView_ng_template_8_li_0_ng_container_2_span_1_Template","tab_r13","leftIcon","TabView_ng_template_8_li_0_ng_container_2_span_2_1_ng_template_0_Template","TabView_ng_template_8_li_0_ng_container_2_span_2_1_Template","TabView_ng_template_8_li_0_ng_container_2_span_2_Template","leftIconTemplate","TabView_ng_template_8_li_0_ng_container_2_span_5_Template","rightIcon","TabView_ng_template_8_li_0_ng_container_2_span_6_1_ng_template_0_Template","TabView_ng_template_8_li_0_ng_container_2_span_6_1_Template","TabView_ng_template_8_li_0_ng_container_2_span_6_Template","rightIconTemplate","TabView_ng_template_8_li_0_ng_container_2_Template","TabView_ng_template_8_li_0_ng_container_3_Template","TabView_ng_template_8_li_0_ng_container_4_TimesIcon_1_Template","TabView_ng_template_8_li_0_ng_container_4_span_2_Template","TabView_ng_template_8_li_0_ng_container_4_3_ng_template_0_Template","TabView_ng_template_8_li_0_ng_container_4_3_Template","TabView_ng_template_8_li_0_ng_container_4_Template","closeIconTemplate","TabView_ng_template_8_li_0_Template","ctx_r45","i_r14","headerStyleClass","headerStyle","tooltipPosition","tooltipPositionStyle","tooltipStyleClass","closable","TabView_ng_template_8_Template","TabView_button_11_ChevronRightIcon_2_Template","TabView_button_11_3_ng_template_0_Template","TabView_button_11_3_Template","TabView_button_11_Template","nextButtonAriaLabel","TabPanel","viewContainer","_headerStyle","_headerStyleClass","_selected","_disabled","_header","_leftIcon","_rightIcon","TabView","controlClose","_activeIndex","preventActiveIndexPropagation","findSelectedTab","selectOnFocus","autoHideButtons","onClose","activeIndexChange","tabPanels","initialized","tabChangesSubscription","resizeObserver","buttonVisible","elementToObserve","initTabs","bindResizeObserver","ResizeObserver","offsetWidth","unbindResizeObserver","unobserve","tabId","onTabArrowLeftKey","onTabArrowRightKey","onTabHomeKey","onTabEndKey","prevHeaderAction","findPrevHeaderAction","changeFocusedTab","nextHeaderAction","findNextHeaderAction","firstHeaderAction","findFirstHeaderAction","lastHeaderAction","findLastHeaderAction","selfCheck","headerElement","nextElementSibling","previousElementSibling","lastEl","lastElementChild","selectedTab","selectedTabIndex","findTabIndex","closeTab","tabPanel","TimesIcon","TabViewModule","sectionItem_r5","sectionMenuItemClicked","BasePageTabMenuComponent_ng_template_0_ng_template_1_div_1_Template","BasePageTabMenuComponent_ng_template_0_ng_template_1_Template","sectionItem_r14","BasePageTabMenuComponent_ng_template_2_ng_template_1_ng_template_2_div_1_Template","BasePageTabMenuComponent_ng_template_2_ng_template_1_ng_template_2_Template","tabItem_r12","BasePageTabMenuComponent_ng_template_2_ng_template_1_Template","BasePageTabMenuComponent","tabSelectedEvent","BasePageTabMenuComponent_ng_template_0_Template","BasePageTabMenuComponent_ng_template_2_Template","GenericDashboardComponent_div_1_div_2_Template","GenericDashboardComponent_div_1_ng_template_4_Template","GenericDashboardComponent_div_1_ng_template_5_Template","GenericDashboardComponent_div_1_div_7_Template","GenericDashboardComponent","dashboardTitle","dashboardTypeIdentifier","dashboardParameterValue","getDashboardDisplayName","getDashboardDisplayTitle","dashboardDisplayTitle","setHeaderContextContent","contextContent","getRouteDataForUrlStorage","dashboardParameterSet","GenericDashboardComponent_div_1_Template","entitySearchTableDefinitions","EntitySearchComponent","entityTypesParam","entityTypeParam","entityFilterParam","entityOrderByParam","loadingCategories","nestedParentKey","entityRowCount","_loadingEntityType","entityFilter","entityOrderBy","orderByGroup","fullEntityLayoutType","originalTypeParameter","setDynamicColumns","EntitySearchComponent_div_2_Template","EntitySearchComponent_div_3_Template","EntitySearchComponent_div_4_Template","EntityComponent","AppAuthGuard","canActivate","messageText","routeRole","ModuleGuard","lowerCaseModuleName","invalidTimingValue","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","preStyles","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","player","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","makeAnimationEvent","triggerName","fromState","totalTime","getOrSetDefaultValue","parseTimelineCommand","separatorPos","documentElement","getParentElement","parentNode","host","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","multi","elem","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","matchesElement","_element","_selector","computeStyle","delay","previousPlayers","scrubberAccessRequested","ɵprov","AnimationDriver","NOOP","AnimationStyleNormalizer","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","copyObj","destination","convertToMap","styleMap","copyStyles","backfill","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","steps","sequence","PARAM_REGEX","extractStyleParams","interpolateParams","original","varName","localVal","invalidParamValue","iteratorToArray","iterator","DASH_CASE_REGEXP","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","nodeType","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","ANY_STATE","parseTransitionExpr","transitionValue","parseInnerTransitionStr","eventStr","parseAnimationAlias","alias","invalidTransitionAlias","invalidExpression","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","invalidTrigger","def","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","invalidState","metadataName","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","fn","buildStyles","stateName","styler","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","destroy","_getPlayer","missingPlayer","baseEvent","play","pause","restart","finish","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","listener","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","registerTrigger","_fetchNamespace","isElementNode","insertBefore","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","flush","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","doc","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","eventPhase","SpecialCasedStyles","initialStylesByElement","WeakMap","_startStyles","_endStyles","initialStyles","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","_resetDomPlayerState","_convertKeyframesToObject","kfs","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","DISABLE_ANIMATIONS_FLAG","BaseAnimationRenderer","delegate","_onDestroy","ɵtype","destroyNode","queueMicrotask","namespace","createComment","createText","newChild","refChild","isMove","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","nextSibling","removeAttribute","setStyle","removeStyle","AnimationRenderer","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","scheduleListenerCallback","AnimationRendererFactory","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","createRenderer","onRendererDestroy","animationTriggers","begin","_scheduleCountTask","animationCallbacksBuffer","runOutsideAngular","SHARED_ANIMATION_PROVIDERS","provide","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","useClass","InjectableAnimationEngine","appRef","RendererFactory2","instantiateRendererFactory","ɵAnimationRendererFactory","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","withConfig","ngModule","providers","ɵmod","ɵinj","BrowserModule","ApiModule","HttpClientModule","LoginMessageService","messageObject","_baseUnset","baseUnset","baseGet","AccordionTab_ng_container_3_ng_container_1_span_1_Template","accordion","AccordionTab_ng_container_3_ng_container_1_ChevronDownIcon_2_Template","AccordionTab_ng_container_3_ng_container_1_Template","AccordionTab_ng_container_3_ng_container_2_span_1_Template","AccordionTab_ng_container_3_ng_container_2_ChevronRightIcon_2_Template","AccordionTab_ng_container_3_ng_container_2_Template","AccordionTab_ng_container_3_Template","AccordionTab_4_ng_template_0_Template","AccordionTab_4_Template","AccordionTab_span_5_Template","AccordionTab_ng_container_6_Template","AccordionTab_ng_content_7_Template","AccordionTab_ng_container_11_ng_container_1_Template","AccordionTab_ng_container_11_Template","AccordionTab","tabStyle","contentStyle","tabStyleClass","contentStyleClass","headerAriaLevel","selectedChange","headerFacet","onOpen","updateActiveIndex","hasHeaderFacet","onKeydown","Accordion","Header","ChevronDownIcon","updateSelectionState","_headerAriaLevel","tabList","tabListSubscription","onTabArrowDownKey","onTabArrowUpKey","ind","isTabActive","getTabProp","AccordionModule","getRepeaterItemCount","addItemAction","CustomSectionTitleComponent","addAction","addItemInterval","topSectionTitle","cleanLabelIdentifier","addItemTasks","isTopSectionTitle","setAddItemInterval","CustomSectionTitleComponent_span_3_Template","CustomSectionTitleComponent_ng_container_4_Template","CustomSectionTitleComponent_span_5_Template","FieldValidationMessageComponent","FieldValidationMessageComponent_div_0_Template","customField_r1","removeItem","itemIndex_r2","onTabExpand","CustomRepeaterComponent_div_1_p_accordion_1_div_4_Template","getCustomTitle","isDisabledItem","addItemVisible","CustomRepeaterComponent_div_1_p_accordion_1_Template","CustomRepeaterComponent","FieldArrayType","arrayChangeObserver","cleanModelField","cleanExistingModelFields","InitializeFormControls","repeaterActions","fieldChanges","valueChangeTypes","removeFromArray","updateNestedRepeaterContext","validateControl","repeaterModelSync","removeAddItem","setRepeaterCountValidity","_controls","fieldGroupItem","fieldArrayItem","updateViewValidations","addItem","addToArray","newItemIndex","alignInitialItemValues","fieldToRemove","hasAValidRepeaterCount","customField","currentField","indexNumberAsWord","itemIdentifier","getCurrentItemTitleValues","keyValuePair","formattedTitle","dropdownOption","currentItem","wordTokens","wordToken","titleControl","titleControlValue","wordValue","minItemMessage","maxItemMessage","arrayLength","removeFromModel","unregisterControl","formArray","setParent","intervalTime","interval","take","concatAll","existingFieldItems","existingFieldItem","fieldIndexInModel","nestedObjectKey","unset","CustomRepeaterComponent_div_1_Template","ExtendedCustomControlDirective","inputStyleClass","updateCustomDisplay","controlStatus","displayDate","dateChange","CustomCalendarComponent_ng_template_2_ng_template_1_Template","minDate","CustomCalendarComponent","refreshCalendar","_controlIdentifer","setDisplayDate","getDefaultDate","inputDate","inputYear","yearDateTime","newDateIso","CustomCalendarComponent_ng_template_2_Template","CustomCheckboxComponent","CustomDashboardComponent","CustomDashboardComponent_ng_template_0_Template","CustomDashboardComponent_ng_template_1_Template","loadingDashboard","CustomActionMenuDirective","actionMenuItemElements","inputGroupContainer","calculatedFieldWidth","actionMenuSubscription","loadingActionItems","resetEllipsisMenu","activeEllipsisMenu","ellipsisActionItems","activeEllipsisMenuChanged","ellipsisMenuOffsetLeft","ellipsisMenuOffsetTop","initialActionMenuItemElements","calculatedActionMenuWidth","actionMenuConfigurationData","initialActionMenuItems","ellipsisMenuLargeWidth","ellipsisMenuSmallWidth","ellipsisItemHeigth","maxEllipsisItemsCount","ellipsisActionItemWidth","actionMenuWidthPercentage","additionalOffsetWidth","setActionMenuConfiguration","updateActionMenu","populateActionMenuConfiguration","setVisibleActionMenuItems","actionMenuConfiguration","actionMenuItem","displayActionItem","calculateDropdownFieldWidth","actionItemElement","actionItemIndex","actionItemwidth","actionMenuAvailableWidth","ellipsisRequiredWidth","accumulatedWidth","actionMenuWidth","actionMenuWidthLimit","maxWidth","addEllipsisMenuItem","calculateEllipsisMenuLocation","ellipsisActionItemButton","actionItem","ellipsisDomRect","offsetLeft","offsetParent","offsetTop","executeActionMenuItemCommand","closeEllipsisMenu","SelectCustomControlDirective","dataOptions","archivedDisable","archivedPlaceHolder","modifiedValueOptions","modifiedLabelOptions","updatedSelection","modifiedDataOption","disableSelectionLogic","MultiSelectItem_ng_container_3_CheckIcon_1_Template","MultiSelectItem_ng_container_3_span_2_1_ng_template_0_Template","MultiSelectItem_ng_container_3_span_2_1_Template","MultiSelectItem_ng_container_3_span_2_Template","checkIconTemplate","MultiSelectItem_ng_container_3_Template","MultiSelectItem_span_4_Template","MultiSelectItem_ng_container_5_Template","MultiSelect_ng_container_7_ng_container_1_Template","MultiSelect_ng_container_7_ng_container_2_div_1_ng_container_4_TimesCircleIcon_1_Template","item_r13","removeOption","MultiSelect_ng_container_7_ng_container_2_div_1_ng_container_4_span_2_ng_container_1_Template","MultiSelect_ng_container_7_ng_container_2_div_1_ng_container_4_span_2_Template","removeTokenIconTemplate","MultiSelect_ng_container_7_ng_container_2_div_1_ng_container_4_Template","MultiSelect_ng_container_7_ng_container_2_div_1_Template","getLabelByValue","MultiSelect_ng_container_7_ng_container_2_ng_container_2_Template","MultiSelect_ng_container_7_ng_container_2_Template","chipSelectedItems","modelValue","MultiSelect_ng_container_7_Template","MultiSelect_ng_container_8_Template","MultiSelect_ng_container_9_TimesIcon_1_Template","MultiSelect_ng_container_9_span_2_1_ng_template_0_Template","MultiSelect_ng_container_9_span_2_1_Template","MultiSelect_ng_container_9_span_2_Template","clearIconTemplate","MultiSelect_ng_container_9_Template","MultiSelect_ng_container_11_span_1_Template","dropdownIcon","MultiSelect_ng_container_11_ChevronDownIcon_2_Template","MultiSelect_ng_container_11_Template","MultiSelect_span_12_1_ng_template_0_Template","MultiSelect_span_12_1_Template","MultiSelect_span_12_Template","dropdownIconTemplate","MultiSelect_ng_template_15_div_3_ng_container_2_Template","MultiSelect_ng_template_15_div_3_ng_container_3_ng_container_1_Template","MultiSelect_ng_template_15_div_3_ng_container_3_Template","ctx_r47","filterTemplate","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_ng_container_5_CheckIcon_1_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_ng_container_5_span_2_1_ng_template_0_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_ng_container_5_span_2_1_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_ng_container_5_span_2_Template","ctx_r58","allSelected","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_ng_container_5_Template","_c14","_c15","MultiSelect_ng_template_15_div_3_ng_template_4_div_0_Template","_r62","ctx_r61","onToggleAll","onHeaderCheckboxKeyDown","ctx_r64","onHeaderCheckboxFocus","ctx_r65","onHeaderCheckboxBlur","toggleAllDisabled","readonly","toggleAllAriaLabel","headerCheckboxFocus","MultiSelect_ng_template_15_div_3_ng_template_4_div_1_SearchIcon_3_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_1_span_4_1_ng_template_0_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_1_span_4_1_Template","MultiSelect_ng_template_15_div_3_ng_template_4_div_1_span_4_Template","ctx_r68","filterIconTemplate","MultiSelect_ng_template_15_div_3_ng_template_4_div_1_Template","ctx_r71","onFilterInputChange","ctx_r73","onFilterKeyDown","ctx_r74","onInputClick","ctx_r75","onFilterBlur","_filterValue","autocomplete","filterPlaceHolder","focusedOptionId","ariaFilterLabel","MultiSelect_ng_template_15_div_3_ng_template_4_TimesIcon_3_Template","MultiSelect_ng_template_15_div_3_ng_template_4_span_4_1_ng_template_0_Template","MultiSelect_ng_template_15_div_3_ng_template_4_span_4_1_Template","MultiSelect_ng_template_15_div_3_ng_template_4_span_4_Template","MultiSelect_ng_template_15_div_3_ng_template_4_Template","_r79","ctx_r78","showToggleAll","selectionLimit","closeAriaLabel","MultiSelect_ng_template_15_div_3_Template","MultiSelect_ng_template_15_p_scroller_5_ng_template_2_ng_container_0_Template","_c16","MultiSelect_ng_template_15_p_scroller_5_ng_template_2_Template","items_r83","scrollerOptions_r84","_r43","MultiSelect_ng_template_15_p_scroller_5_ng_container_3_ng_template_1_ng_container_0_Template","MultiSelect_ng_template_15_p_scroller_5_ng_container_3_ng_template_1_Template","scrollerOptions_r87","ctx_r86","loaderTemplate","MultiSelect_ng_template_15_p_scroller_5_ng_container_3_Template","MultiSelect_ng_template_15_p_scroller_5_Template","_r90","onLazyLoad","visibleOptions","virtualScrollItemSize","_itemSize","lazy","virtualScrollOptions","MultiSelect_ng_template_15_ng_container_6_ng_container_1_Template","_c17","MultiSelect_ng_template_15_ng_container_6_Template","MultiSelect_ng_template_15_ng_template_7_ng_template_2_ng_container_0_span_2_Template","option_r98","getOptionGroupLabel","optionGroup","MultiSelect_ng_template_15_ng_template_7_ng_template_2_ng_container_0_ng_container_3_Template","MultiSelect_ng_template_15_ng_template_7_ng_template_2_ng_container_0_Template","ctx_r106","i_r99","scrollerOptions_r93","ctx_r100","itemSize","getOptionIndex","groupTemplate","MultiSelect_ng_template_15_ng_template_7_ng_template_2_ng_container_1_Template","_r109","onOptionSelect","ctx_r111","onOptionMouseEnter","ctx_r114","getOptionLabel","isOptionDisabled","focusedOptionIndex","ariaSetSize","MultiSelect_ng_template_15_ng_template_7_ng_template_2_Template","ctx_r95","isOptionGroup","MultiSelect_ng_template_15_ng_template_7_li_3_ng_container_1_Template","ctx_r116","emptyFilterMessageLabel","MultiSelect_ng_template_15_ng_template_7_li_3_ng_container_2_Template","MultiSelect_ng_template_15_ng_template_7_li_3_Template","ctx_r96","emptyFilterTemplate","emptyTemplate","emptyFilter","MultiSelect_ng_template_15_ng_template_7_li_4_ng_container_1_Template","ctx_r120","emptyMessageLabel","MultiSelect_ng_template_15_ng_template_7_li_4_ng_container_2_Template","MultiSelect_ng_template_15_ng_template_7_li_4_Template","MultiSelect_ng_template_15_ng_template_7_Template","items_r92","hasFilter","MultiSelect_ng_template_15_div_9_ng_container_2_Template","MultiSelect_ng_template_15_div_9_Template","ctx_r44","MultiSelect_ng_template_15_Template","_r126","ctx_r125","onFirstHiddenFocus","ctx_r127","onLastHiddenFocus","panelStyle","virtualScroll","_c18","_c19","removeChip","_c20","MULTISELECT_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","MultiSelect","MultiSelectItem","ariaPosInset","onMouseEnter","onOptionClick","CheckIcon","filterService","inputId","filterLocale","overlayVisible","displaySelectedLabel","_displaySelectedLabel","maxSelectedLabels","_maxSelectedLabels","selectedItemsLabel","emptyFilterMessage","emptyMessage","resetFilterOnHide","optionLabel","optionDisabled","optionGroupLabel","optionGroupChildren","overlayOptions","filterMatchMode","autofocusFilter","_autoZIndex","_baseZIndex","_showTransitionOptions","_hideTransitionOptions","_defaultLabel","_placeholder","_options","selectAll","_selectAll","focusOnHover","filterFields","autoOptionFocus","onFilter","onFocus","onBlur","onClear","onPanelShow","onPanelHide","onSelectAllChange","overlayViewChild","filterInputChild","focusInputViewChild","itemsViewChild","scroller","lastHiddenFocusableElementOnOverlay","firstHiddenFocusableElementOnOverlay","headerCheckboxViewChild","_selectionLimit","_filteredOptions","onModelChange","onModelTouched","valuesAsString","filtered","selectedItemsTemplate","preventModelTouched","preventDocumentDefault","itemsWrapper","startRangeIndex","selectedOptions","containerClass","inputClass","panelClass","inputStyle","ripple","labelClass","getTranslation","TranslationKeys","EMPTY_MESSAGE","EMPTY_FILTER_MESSAGE","filled","isVisibleClearIcon","translation","aria","flatOptions","filteredOptions","searchFields","optionGroups","getOptionGroupChildren","getSelectedItemsLabel","autoUpdateModel","resetFilter","maxSelectionLimitReached","hasSelectedOption","findFirstFocusedOptionIndex","getOptionValue","updateModel","equals","equalityKey","findSelectedOptionIndex","isValidSelectedOption","onOptionSelectRange","findNearestSelectedOptionIndex","rangeStart","rangeEnd","isValidOption","firstCheckUp","matchedOptionIndex","findPrevSelectedOptionIndex","findNextSelectedOptionIndex","findFirstSelectedOptionIndex","findFirstOptionIndex","resolveFieldData","isOptionMatched","scrollerOptions","virtualScrollerDisabled","getItemOptions","matchedOption","onPageDownKey","onPageUpKey","onShiftKey","pressedInInputText","optionIndex","findNextOptionIndex","shiftKey","changeFocusedOptionIndex","findPrevOptionIndex","findLastFocusedOptionIndex","setSelectionRange","onDeleteKey","hasFocusableElements","onContainerClick","isSameNode","tagName","preventScroll","focusableEl","relatedTarget","getFirstFocusableElement","onInputFocus","onInputBlur","getLastFocusableElement","checked","writeValue","registerOnChange","registerOnTouched","setDisabledState","setContentEl","selectedListItem","hasClass","isHidden","findLastSelectedOptionIndex","findLastOptionIndex","activateFilter","filteredGroups","optgroup","filteredSubOptions","getFocusableElements","hostVars","SearchIcon","TimesCircleIcon","MultiSelectModule","OverlayModule","ScrollerModule","tmp_8_0","CustomMultiSelectComponent","onfilterEvent","CustomMultiSelectComponent_ng_template_2_Template","CustomMultiSelectComponent_ng_template_3_Template","tmp_11_0","addonMenuItem_r10","actionMenuItem_r11","CustomSelectComponent_ng_template_3_span_3_Template","CustomSelectComponent_ng_template_3_span_7_Template","CustomSelectComponent_ng_template_3_span_8_Template","CustomSelectComponent","archivedShowClear","isAnArray","isGrouped","availableOptions","groupedDataOption","CustomSelectComponent_ng_template_2_Template","CustomSelectComponent_ng_template_3_Template","CustomDataSelectComponent_ng_template_2_ng_template_0_Template","CustomDataSelectComponent_ng_template_2_ng_template_1_Template","CustomDataSelectComponent_ng_template_2_ng_template_3_Template","filterApiLoading","useMultiSelect","CustomDataSelectComponent","filterDebounceDelay","loadingFilterMessage","interpolationValueBaseIdentifier","forceRedraw","_superprop_getNgOnInit","useApiFilter","useLabelFunction","useObjectValue","interpolationTypes","useGroupedDropdown","groupItemDataPromise","of","loadDataPromise","mapDropdownData","loadedOption","groupData","populateGroupData","mapGroupItem","initializeFilter","dataSelectOptions","promiseAsString","dataContext","mapDropdownOption","disabledFunction","dataPromiseSort","groupLabelTemplate","CustomDataSelectComponent_ng_template_1_Template","CustomDataSelectComponent_ng_template_2_Template","CustomIconInputComponent","htmlIconClassName","dataModel","spinnerIconClassName","loadingIconDebounceTime","setIconClassName","inputChange","Sidebar_div_0_ng_container_2_ng_container_1_Template","Sidebar_div_0_ng_container_2_Template","headlessTemplate","Sidebar_div_0_ng_template_3_ng_container_1_Template","Sidebar_div_0_ng_template_3_button_2_TimesIcon_1_Template","Sidebar_div_0_ng_template_3_button_2_span_2_1_ng_template_0_Template","Sidebar_div_0_ng_template_3_button_2_span_2_1_Template","Sidebar_div_0_ng_template_3_button_2_span_2_Template","Sidebar_div_0_ng_template_3_button_2_Template","ariaCloseLabel","Sidebar_div_0_ng_template_3_ng_container_5_Template","Sidebar_div_0_ng_template_3_ng_container_6_ng_container_2_Template","Sidebar_div_0_ng_template_3_ng_container_6_Template","Sidebar_div_0_ng_template_3_Template","showCloseIcon","a4","a5","a6","Sidebar_div_0_Template","onAnimationStart","onAnimationEnd","fullScreen","transformOptions","modal","showAnimation","hideAnimation","Sidebar","blockScroll","dismissible","closeOnEscape","_visible","_position","_fullScreen","visibleChange","mask","maskClickListener","documentEscapeListener","animationEndListener","enableModality","disableModality","addMultipleClasses","blockBodyScroll","destroyModal","unbindMaskClickListener","unblockBodyScroll","unbindAnimationEndListener","appendContainer","bindDocumentEscapeListener","unbindGlobalListeners","which","unbindDocumentEscapeListener","useAnimation","SidebarModule","CustomIframeComponent_ng_template_1_ng_container_5_Template","CustomIframeComponent_ng_template_1_ng_container_6_Template","allowFullScreen","iframeHeight","iframeTargetUrl","CustomIframeComponent_ng_template_2_ng_container_3_Template","CustomIframeComponent_ng_template_2_ng_container_4_Template","CustomIframeComponent","hostMessage","isFullScreen","iframes","iframeSize","sendDataToIframe","setIframeHeight","lowerCaseIframeSize","setIframeSource","iframeLocator","iframeIndex","contentWindow","postMessage","heightViewPort","useCustomHeight","defaultHeightViewPort","CustomIframeComponent_ng_template_1_Template","CustomIframeComponent_ng_template_2_Template","CustomIframeComponent_ng_container_8_Template","EyeIcon","ɵEyeIcon_BaseFactory","RefreshIcon","pathId","ɵRefreshIcon_BaseFactory","SearchMinusIcon","ɵSearchMinusIcon_BaseFactory","SearchPlusIcon","ɵSearchPlusIcon_BaseFactory","UndoIcon","ɵUndoIcon_BaseFactory","FocusTrap","pFocusTrapDisabled","onkeydown","focusableElement","getNextFocusableElement","select","FocusTrapModule","Image_button_2_ng_container_2_ng_container_1_Template","Image_button_2_ng_container_2_Template","indicatorTemplate","Image_button_2_ng_template_3_Template","Image_button_2_Template","onImageClick","zoomImageAriaLabel","Image_div_3_RefreshIcon_4_Template","Image_div_3_5_ng_template_0_Template","Image_div_3_5_Template","Image_div_3_UndoIcon_7_Template","Image_div_3_8_ng_template_0_Template","Image_div_3_8_Template","Image_div_3_SearchMinusIcon_10_Template","Image_div_3_11_ng_template_0_Template","Image_div_3_11_Template","Image_div_3_SearchPlusIcon_13_Template","Image_div_3_14_ng_template_0_Template","Image_div_3_14_Template","Image_div_3_TimesIcon_17_Template","Image_div_3_18_ng_template_0_Template","Image_div_3_18_Template","Image_div_3_div_19_Template","onPreviewImageClick","imagePreviewStyle","previewImageSrc","src","previewImageSrcSet","previewImageSizes","Image_div_3_Template","onMaskClick","onMaskKeydown","handleToolbarClick","rotateRight","rotateLeft","zoomOut","zoomIn","closePreview","maskVisible","rightAriaLabel","rotateRightIconTemplate","leftAriaLabel","rotateLeftIconTemplate","isZoomOutDisabled","zoomOutAriaLabel","zoomOutIconTemplate","isZoomInDisabled","zoomInAriaLabel","zoomInIconTemplate","previewVisible","Image","imageClass","imageStyle","srcSet","sizes","alt","preview","onImageError","previewButton","closeButton","rotate","scale","previewClick","wrapper","zoomSettings","zoomImage","imageError","onKeydownHandler","ImageModule","images","removeButtonClicked","imageCustomUploader","CustomImageInputComponent_div_5_ng_template_2_ng_template_2_Template","autoUpload","CustomImageInputComponent_div_5_div_1_Template","CustomImageInputComponent_div_5_ng_template_2_Template","CustomImageInputComponent","fileUploadRef","getImageData","imageData","thumbnail","altText","logoExists","objectURL","changingThisBreaksApplicationSecurity","xmlHttpRequest","base64String","byte","send","onloadend","alwaysDisplayUploader","CustomImageInputComponent_span_3_Template","CustomImageInputComponent_span_4_Template","CustomImageInputComponent_div_5_Template","percentDisplay","onPercentKeyDown","setPercentDisplay","minFractionDigits","maxFractionDigits","useGrouping","CustomInputNumberComponent","defaultMaximumPercent","defaultMaximumPercentDecimalPrecision","decimalPrecisionOffset","usePercent","maxPercent","maxPercentDecimalPrecision","setPercentageValue","explicitValue","inputElement","confirmAllowedInputValue","cancelFieldUpdate","getKeyDownExpectedValue","filterDigitsAndFirstPeriod","parsedNumber","isDigit","isValidPeriod","selectionStart","selectionEnd","valueBefore","valueAfter","roundToNearest","roundedValue","digitDecimalValue","CustomInputNumberComponent_ng_template_0_Template","CustomInputNumberComponent_ng_template_2_Template","CustomInputNumberComponent_ng_template_4_Template","EyeSlashIcon","ɵEyeSlashIcon_BaseFactory","Password_ng_container_6_TimesIcon_1_Template","Password_ng_container_6_3_ng_template_0_Template","Password_ng_container_6_3_Template","Password_ng_container_6_Template","Password_ng_container_7_ng_container_1_EyeSlashIcon_1_Template","onMaskToggle","Password_ng_container_7_ng_container_1_span_2_1_ng_template_0_Template","Password_ng_container_7_ng_container_1_span_2_1_Template","Password_ng_container_7_ng_container_1_span_2_Template","hideIconTemplate","Password_ng_container_7_ng_container_1_Template","Password_ng_container_7_ng_container_2_EyeIcon_1_Template","Password_ng_container_7_ng_container_2_span_2_1_ng_template_0_Template","Password_ng_container_7_ng_container_2_span_2_1_Template","Password_ng_container_7_ng_container_2_span_2_Template","showIconTemplate","Password_ng_container_7_ng_container_2_Template","Password_ng_container_7_Template","unmasked","Password_div_8_ng_container_2_Template","Password_div_8_ng_container_3_ng_container_1_Template","Password_div_8_ng_container_3_Template","Password_div_8_ng_template_4_Template","meter","strengthClass","infoText","Password_div_8_ng_container_6_Template","Password_div_8_Template","MapperPipe","mapper","Password_VALUE_ACCESSOR","promptLabel","mediumRegex","strongRegex","weakLabel","mediumLabel","strongLabel","feedback","toggleMask","mediumCheckRegExp","strongCheckRegExp","scrollHandler","translationSubscription","promptText","translationObserver","updateUI","bindScrollListener","unbindScrollListener","minWidth","getOuterWidth","onInput","onKeyUp","testStrength","weakText","strength","mediumText","strongText","ConnectedOverlayScrollHandler","inputFieldClass","PASSWORD_PROMPT","WEAK","MEDIUM","STRONG","restoreAppend","inputType","PasswordModule","InputTextModule","getPasswordSpecialCharacters","tmp_6_0","tmp_7_0","CustomInputPasswordComponent","enableMaskToogle","passwordSpecialCharacters","setSystemSecurity","handleKeyUpEvent","CustomInputPasswordComponent_ng_template_1_Template","CustomInputPasswordComponent_ng_template_2_Template","RadioButton_label_6_Template","labelStyleClass","RADIO_VALUE_ACCESSOR","RadioButton","RadioControlRegistry","accessors","accessor","isSameGroup","controlPair","registry","formControlName","inputViewChild","NgControl","checkName","radioButton","throwNameError","RadioButtonModule","inputGroupItem_r1","setInput","CustomInputRadioButtonComponent_div_1_input_4_Template","CustomInputRadioButtonComponent_div_1_p_inputNumber_5_Template","focusedRadioButton","CustomInputRadioButtonComponent","inputGroupItem","inputItem","CustomInputRadioButtonComponent_div_1_Template","searchTooltip","CustomInputSearchComponent","onKeyPress","CustomInputSearchComponent_span_3_Template","INPUTSWITCH_VALUE_ACCESSOR","InputSwitch","trueValue","falseValue","InputSwitchModule","handleInputChanges","inputGroupItem_r6","CustomInputSwitchComponent_ng_template_1_div_0_span_4_Template","handleInputGroupChanges","CustomInputSwitchComponent_ng_template_1_div_0_Template","CustomInputSwitchComponent","useInputGroupFunction","changedValue","inputGroupKey","CustomInputSwitchComponent_ng_template_0_Template","CustomInputSwitchComponent_ng_template_1_Template","addonMenuItem_r7","actionMenuItem_r8","CustomInputComponent_ng_template_1_span_3_Template","CustomInputComponent_ng_template_1_span_7_Template","CustomInputComponent_ng_template_1_span_8_Template","CustomInputComponent","CustomInputComponent_ng_template_0_Template","CustomInputComponent_ng_template_1_Template","InputMask_ng_container_2_TimesIcon_1_Template","InputMask_ng_container_2_span_2_1_ng_template_0_Template","InputMask_ng_container_2_span_2_1_Template","InputMask_ng_container_2_span_2_Template","InputMask_ng_container_2_Template","INPUTMASK_VALUE_ACCESSOR","InputMask","slotChar","autoClear","maxlength","ariaRequired","unmask","characterPattern","autoFocus","keepBuffer","_mask","initMask","onComplete","tests","partialPosition","firstNonMaskPos","lastRequiredNonMaskPos","oldVal","defaultBuffer","focusText","caretTimeoutId","androidChrome","ua","maskTokens","getPlaceholder","checkVal","updateFilledState","caret","activeElement","createRange","duplicate","moveStart","createTextRange","moveEnd","isCompleted","seekNext","seekPrev","shiftL","writeBuffer","shiftR","handleAndroidInput","curVal","createEvent","initEvent","onInputKeydown","iPhone","keyCode","getUserAgent","clearBuffer","isClient","proxy","allow","lastMatch","onInputChange","handleInputChange","getUnmaskedValue","unmaskedBuffer","InputMaskModule","AutoFocusModule","CustomMaskedInputComponent","maskedInput","existingValue","CustomMessageComponent","CustomOperationButtonComponent","executeOperation","operationPromise","CustomResourceIdentifierComponent","Guid","summaryCardConfiguration","CustomSummaryCardComponent","CustomSummaryCardComponent_div_0_Template","CustomSummaryCardComponent_div_1_Template","CustomTableDisplayComponent","defaultExpandTitle","CustomTableDisplayComponent_div_0_Template","CustomTableDisplayComponent_div_1_Template","CustomInputTextAreaComponent","autoResize","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_2_span_0_i_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_2_span_0_span_2_Template","copiedToClipboard","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_2_span_0_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_3_span_0_i_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_3_span_0_span_2_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_3_span_0_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_2_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_ng_template_3_Template","hasContent","CustomTextDisplayComponent_ng_template_0_ng_template_1_p_accordion_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_1_span_0_i_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_1_span_0_span_2_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_1_span_0_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_2_span_0_i_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_2_span_0_span_2_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_2_span_0_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_ng_template_2_Template","CustomTextDisplayComponent_ng_template_0_ng_template_1_Template","CustomTextDisplayComponent_ng_template_0_ng_template_2_Template","CustomTextDisplayComponent","copyToClipboardDisplayTime","setContent","onTextDisplayReload","contentPromise","sanitize","SecurityContext","HTML","bypassSecurityTrustHtml","getCodeBlock","CustomTextDisplayComponent_ng_template_0_Template","CustomTextDisplayComponent_ng_template_1_Template","CustomFieldWrapperComponent_div_2_strong_2_Template","CustomFieldWrapperComponent_div_2_ng_container_3_Template","CustomFieldWrapperComponent_div_2_ng_container_4_Template","labelStyleWidth","hideLabel","CustomFieldWrapperComponent","FieldWrapper","fieldWrapper","requiredViaRules","cssStyles","dynamicGridSubscription","dynamicGridColumnPropagation","handleDynamicGridColumnPropagation","setGridColumns","setLabelStyleWidth","fieldWrapperElement","labelWidth","fieldWrapperWidth","dynamicGridSizeRelationship","getDynamicGridSizeRelationship","dynamicGridColumns","isAllowedToPropagateDynamicGridColumns","dynamicGridColumnsToPropagate","getOppositeDynamicGridColumns","labelOverflow","isLabelOverflow","propagateDynamicGridColumns","gridSizeRelationship","calculatedAvailableWidth","CustomFieldWrapperComponent_div_2_Template","CustomFieldWrapperComponent_ng_template_4_Template","CustomFieldWrapperComponent_span_6_Template","CustomEmptyWrapperComponent","CustomTabContentComponent","applyDefaultOptions","modelOptions","debounce","emailValidator","emailValidatorMessage","requiredValidator","minimumLengthValidator","minLength","minimumStringLengthValidationMessage","maximumLengthValidator","maximumStringLengthValidationMessage","minimumNumberValidator","currentLength","isArrayValue","minimumNumberValidationMessage","repeaterStatement","maximumNumberValidator","maximumNumberValidationMessage","regularExpressionValidator","invalidFormatValidationMessage","passwordValidator","invalidPassword","passwordValidatorReactiveForms","passwordValidatorMessage","FormlyWrapperFormField_label_1_span_2_Template","FormlyWrapperFormField_label_1_Template","FormlyWrapperFormField_small_4_Template","FormlyWrapperFormField","ɵFormlyWrapperFormField_BaseFactory","ɵcmp","showError","FormlyFormFieldModule","ReactiveFormsModule","FormlyModule","forChild","FormlyFieldInput_input_0_Template","FormlyFieldInput_ng_template_1_Template","FormlyFieldInput","ɵFormlyFieldInput_BaseFactory","FormlyInputModule","extends","defaultOptions","FormlyFieldTextArea","ɵFormlyFieldTextArea_BaseFactory","FormlyTextAreaModule","InputTextareaModule","FormlySelectOptionsPipe","dispose","observableOf","transformSelectProps","transformOption","groupProp","labelProp","opt","valueProp","disabledProp","selectPropFn","_subscription","BehaviorSubject","asObservable","ɵpipe","FormlySelectModule","FormlyFieldRadio_div_0_Template","option_r1","disabledControl","FormlyFieldRadio","FormControl","ɵFormlyFieldRadio_BaseFactory","FormlyRadioModule","FormlyFieldCheckbox","ɵFormlyFieldCheckbox_BaseFactory","FormlyCheckboxModule","CheckboxModule","FormlyFieldSelect","ɵFormlyFieldSelect_BaseFactory","DropdownModule","FormlySelectModule$1","FormlyPrimeNGModule","BaseOperationAction","disabledMessagePromise","postOperationAction","postOperationPromise","allowedEntries","promptCanDeactivateGuard","arrayDisplayDelimiter","_blockInterface","_unblockInterface","createOperationPromise","interpolation","validateParameters","validationInput","validateNonEmptyParameter","ExecuteOperationPromiseAction","AddDrawerAction","allowedContentComponents","allowedTargetComponents","getValidationErrorMessage","targetArray","AddRelatedContextMenuAction","pageContextDataName","translationApiService","translationBaseNavigationUrl","translationLabelFormat","translationLabelFunction","translationFallbackLabel","translationRelationshipKey","routeDataPromise","getChildrenMethodIdentifier","getChildMethodIdentifier","getParentsMethodIdentifier","getParentMethodIdentifier","getSingleQueryResultMethodIdentifier","entityTypeGroupPropertyIdentifier","relatedQueryLimit","relatedSingularQueryLimit","queryLimit","configurationOrderBy","configurationAssociatedEntityTypeGroup","configurationTranslationLabelFormat","translationService","baseNavigationUrl","fallbackLabel","labelFormat","relationshipKey","pageObject","replacePlaceholderText","useTranslationService","getAllEntityFamilyMatches","getAllQueryMatches","getRelatedItems","currentOffset","useTranslationApiService","relatedItems","relatedItem","routeDataCommand","queryFilter","utcCurrentDate","ChangeLayoutColorAction","ChangeThemeAction","ContextOperationAction","operationDisplayName","contextOperationPromise","DeleteEntityAction","EmitEventAction","ExecuteWorkflowAction","businessRuleActions","clearServerCache","bodyParameter","validateWorkflowParameters","_superprop_getExecutePostOperationActions","performClientSideBusinessRules","GenerateDocumentAction","attach","fileDescription","outputType","templateName","templateParameters","templateType","contextSource","setQueryParameters","clearCachedEntityRelationships","entityInstanceUrl","interpolatedTemplateParameters","GenerateFilesAction","forceGenerate","generatorFilter","returnType","generatedFilesParent","HandleBlobResponse","LogOutAction","NavigationAction","allowedNavigationTypes","navigationType","directComponent","fullUrl","mappedUrl","populateMappedUrl","getMappedParameters","validateUrlParameters","interpolatedRouteData","SaveEntityAction","PrintFileAction","setParameters","OperationModule","ButtonModule","ScrollPanelModule","SplitButtonModule","AngularCdkModule","ScrollingModule","secondaryDisplayActive","useFixedIcon","DashboardWidgetComponent_ng_template_4_div_7_span_5_Template","clickOnDisplay","DashboardWidgetComponent_ng_template_4_div_5_Template","DashboardWidgetComponent_ng_template_4_ng_template_6_Template","DashboardWidgetComponent_ng_template_4_div_7_Template","displayingOverlay","DashboardWidgetComponent_ng_template_5_div_8_span_5_Template","DashboardWidgetComponent_ng_template_5_ng_template_7_Template","DashboardWidgetComponent_ng_template_5_div_8_Template","flipState","secondaryDisplayClicked","displayingSecondaryOverlay","DashboardWidgetComponent","parameterDisplayReady","widgetChange","widgetDisplayed","widgetParametersApplied","primaryDisplayElement","secondaryOverlayElement","minimumParameterDisplaySize","clickOutsideDebounce","flipDefaultState","flipFlippedtate","decorateWidgetActions","settingsDisplayClicked","clickOutsideEvent","primaryContainer","sectionContainer","editDisplayClicked","jsonDisplayComponentDefinition","DashboardWidgetComponent_ng_template_4_Template","DashboardWidgetComponent_ng_template_5_Template","DashboardWidgetComponent_div_10_Template","Listbox_div_3_ng_container_2_Template","Listbox_div_3_Template","Listbox_div_4_div_1_ng_container_5_CheckIcon_1_Template","Listbox_div_4_div_1_ng_container_5_span_2_1_ng_template_0_Template","Listbox_div_4_div_1_ng_container_5_span_2_1_Template","Listbox_div_4_div_1_ng_container_5_span_2_Template","Listbox_div_4_div_1_ng_container_5_Template","Listbox_div_4_div_1_Template","Listbox_div_4_ng_container_2_ng_container_1_Template","Listbox_div_4_ng_container_2_Template","Listbox_div_4_ng_template_3_div_0_SearchIcon_3_Template","Listbox_div_4_ng_template_3_div_0_span_4_1_ng_template_0_Template","Listbox_div_4_ng_template_3_div_0_span_4_1_Template","Listbox_div_4_ng_template_3_div_0_span_4_Template","Listbox_div_4_ng_template_3_div_0_Template","Listbox_div_4_ng_template_3_Template","filterResultMessageText","Listbox_div_4_Template","checkbox","Listbox_p_scroller_6_ng_template_2_ng_container_0_Template","Listbox_p_scroller_6_ng_template_2_Template","items_r40","scrollerOptions_r41","Listbox_p_scroller_6_ng_container_3_ng_template_1_ng_container_0_Template","Listbox_p_scroller_6_ng_container_3_ng_template_1_Template","scrollerOptions_r44","Listbox_p_scroller_6_ng_container_3_Template","Listbox_p_scroller_6_Template","_r47","Listbox_ng_container_7_ng_container_1_Template","Listbox_ng_container_7_Template","Listbox_ng_template_8_ng_template_2_ng_container_0_span_2_Template","option_r55","Listbox_ng_template_8_ng_template_2_ng_container_0_ng_container_3_Template","Listbox_ng_template_8_ng_template_2_ng_container_0_Template","i_r56","scrollerOptions_r50","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_ng_container_2_CheckIcon_1_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_ng_container_2_span_2_1_ng_template_0_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_ng_container_2_span_2_1_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_ng_container_2_span_2_Template","ctx_r69","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_ng_container_2_Template","ctx_r67","Listbox_ng_template_8_ng_template_2_ng_container_1_div_2_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_span_3_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_ng_container_4_Template","Listbox_ng_template_8_ng_template_2_ng_container_1_Template","_r76","onOptionDoubleClick","ctx_r80","onOptionMouseDown","ctx_r83","onOptionTouchEnd","ctx_r88","Listbox_ng_template_8_ng_template_2_Template","Listbox_ng_template_8_li_3_ng_container_1_Template","emptyFilterMessageText","Listbox_ng_template_8_li_3_ng_container_2_Template","Listbox_ng_template_8_li_3_Template","Listbox_ng_template_8_li_4_ng_container_1_Template","Listbox_ng_template_8_li_4_ng_container_2_Template","Listbox_ng_template_8_li_4_Template","Listbox_ng_template_8_Template","_r96","onListFocus","onListBlur","ctx_r98","onListKeyDown","items_r49","Listbox_div_10_ng_container_2_Template","Listbox_div_10_Template","Listbox_span_11_Template","LISTBOX_VALUE_ACCESSOR","Listbox","searchMessage","emptySelectionMessage","selectionMessage","searchLocale","filterMessage","listStyle","listStyleClass","metaKeySelection","onDblClick","filterViewChild","lastHiddenFocusableElement","firstHiddenFocusableElement","listViewChild","optionTouched","filterMessageText","searchMessageText","emptySearchMessage","selectionMessageText","emptySelectionMessageText","selectedMessageText","onOptionSelectMultiple","onOptionSelectSingle","firstFocusableEl","onFocusout","onHeaderCheckboxTabKeyDown","ListboxModule","QuickFiltersComponent","quickFilterDisplayedEvent","quickFilterSelectedEvent","filterListActive","quickFilterSelected","toggleFilterListDisplay","AutoComplete_input_2_Template","onInputPaste","onInputKeyUp","autofocus","AutoComplete_ng_container_3_TimesIcon_1_Template","AutoComplete_ng_container_3_span_2_1_ng_template_0_Template","AutoComplete_ng_container_3_span_2_1_Template","AutoComplete_ng_container_3_span_2_Template","AutoComplete_ng_container_3_Template","AutoComplete_ul_4_li_2_ng_container_2_Template","AutoComplete_ul_4_li_2_span_3_Template","option_r32","AutoComplete_ul_4_li_2_TimesCircleIcon_5_Template","AutoComplete_ul_4_li_2_span_6_1_ng_template_0_Template","AutoComplete_ul_4_li_2_span_6_1_Template","AutoComplete_ul_4_li_2_span_6_Template","removeIconTemplate","AutoComplete_ul_4_li_2_Template","i_r33","focusedMultipleOptionIndex","selectedItemTemplate","AutoComplete_ul_4_Template","onMultipleContainerFocus","onMultipleContainerBlur","onMultipleContainerKeyDown","multiContainerClass","focusedMultipleOptionId","AutoComplete_ng_container_5_SpinnerIcon_1_Template","AutoComplete_ng_container_5_span_2_1_ng_template_0_Template","AutoComplete_ng_container_5_span_2_1_Template","AutoComplete_ng_container_5_span_2_Template","loadingIconTemplate","AutoComplete_ng_container_5_Template","AutoComplete_button_6_span_2_Template","ctx_r60","AutoComplete_button_6_ng_container_3_ChevronDownIcon_1_Template","AutoComplete_button_6_ng_container_3_2_ng_template_0_Template","AutoComplete_button_6_ng_container_3_2_Template","AutoComplete_button_6_ng_container_3_Template","AutoComplete_button_6_Template","_r66","handleDropdownClick","dropdownAriaLabel","AutoComplete_ng_container_10_Template","AutoComplete_p_scroller_11_ng_template_2_ng_container_0_Template","AutoComplete_p_scroller_11_ng_template_2_Template","items_r70","scrollerOptions_r71","AutoComplete_p_scroller_11_ng_container_3_ng_template_1_ng_container_0_Template","AutoComplete_p_scroller_11_ng_container_3_ng_template_1_Template","scrollerOptions_r74","AutoComplete_p_scroller_11_ng_container_3_Template","AutoComplete_p_scroller_11_Template","_r77","AutoComplete_ng_container_12_ng_container_1_Template","AutoComplete_ng_container_12_Template","AutoComplete_ng_template_13_ng_template_2_ng_container_0_span_2_Template","option_r85","AutoComplete_ng_template_13_ng_template_2_ng_container_0_ng_container_3_Template","AutoComplete_ng_template_13_ng_template_2_ng_container_0_Template","ctx_r93","i_r86","scrollerOptions_r80","ctx_r87","AutoComplete_ng_template_13_ng_template_2_ng_container_1_span_2_Template","ctx_r94","AutoComplete_ng_template_13_ng_template_2_ng_container_1_ng_container_3_Template","AutoComplete_ng_template_13_ng_template_2_ng_container_1_Template","_r99","ctx_r104","getOptions","AutoComplete_ng_template_13_ng_template_2_Template","AutoComplete_ng_template_13_li_3_ng_container_1_Template","searchResultMessageText","AutoComplete_ng_template_13_li_3_ng_container_2_Template","AutoComplete_ng_template_13_li_3_Template","AutoComplete_ng_template_13_ng_container_4_Template","AutoComplete_ng_template_13_Template","items_r79","showEmptyMessage","AUTOCOMPLETE_VALUE_ACCESSOR","AutoComplete","autoHighlight","forceSelection","unique","completeOnFocus","dropdown","dropdownMode","suggestions","_suggestions","handleSuggestionsChange","completeMethod","onSelect","onUnselect","onDropdownClick","containerEL","inputEL","multiInputEl","multiContainerEL","dropdownButton","timeout","suggestionsUpdated","highlightOption","highlightOptionChanged","_filled","listId","emptySearchMessageText","isInputClicked","isDropdownClicked","matchedValue","onArrowLeftKeyOnMultiple","onArrowRightKeyOnMultiple","onBackspaceKeyOnMultiple","onBackspaceKey","removedValue","isHide","removedOption","updateInputValue","_hide","viewInit","SpinnerIcon","AutoCompleteModule","BadgeDirective","_size","setSizeClasses","createTextNode","severity","nodeName","firstChild","BadgeModule","BreadcrumbModule","HomeIcon","ColorPicker_input_2_Template","inputBgColor","ColorPicker_div_3_Template","onColorDragStart","onDrag","onDragEnd","onColorMousedown","onHueMousedown","onHueDragStart","COLORPICKER_VALUE_ACCESSOR","ColorPicker","shown","documentClickListener","documentResizeListener","documentMousemoveListener","documentMouseupListener","documentHueMoveListener","selfClick","colorDragging","hueDragging","colorSelectorViewChild","colorHandleViewChild","hueViewChild","hueHandleViewChild","colorSelector","colorHandle","hue","hueHandle","bindDocumentMousemoveListener","bindDocumentMouseupListener","pickHue","changedTouches","pickColor","pageY","pageYOffset","validateHSB","updateColorSelector","getValueToUpdate","unbindDocumentMousemoveListener","unbindDocumentMouseupListener","pageX","rect","saturation","brightness","HSBtoHEX","HSBtoRGB","HEXtoHSB","RGBtoHSB","hsb","bindDocumentClickListener","bindDocumentResizeListener","togglePanel","unbindDocumentClickListener","onWindowResize","unbindDocumentResizeListener","validateRGB","validateHEX","hex","HEXtoRGB","hexValue","t1","t2","t3","RGBtoHEX","ColorPickerModule","ConfirmDialogModule","ContextMenuModule","ThLargeIcon","ɵThLargeIcon_BaseFactory","BarsIcon","ɵBarsIcon_BaseFactory","DataViewModule","PaginatorModule","WindowMaximizeIcon","ɵWindowMaximizeIcon_BaseFactory","WindowMinimizeIcon","ɵWindowMinimizeIcon_BaseFactory","DialogModule","DragDropModule","Editor_div_1_ng_container_2_Template","Editor_div_1_Template","Editor_div_2_Template","EDITOR_VALUE_ACCESSOR","Editor","modules","bounds","scrollingContainer","debug","_readonly","onInit","onTextChange","onSelectionChange","toolbar","delayedCommand","quill","isAttachedQuillEditorToDOM","quillElements","editorElement","isConnected","initQuillElements","initQuillEditor","setContents","convert","setText","getQuill","toolbarElement","defaultModule","Quill","readOnly","oldContents","getText","htmlValue","textValue","oldRange","editor","EditorModule","FieldsetModule","GalleriaModule","MegaMenuModule","AngleDownIcon","MenubarModule","MessageModule","InfoCircleIcon","ExclamationTriangleIcon","OrderListModule","AngleDoubleDownIcon","AngleDoubleUpIcon","AngleUpIcon","OrganizationChartModule","ChevronUpIcon","OverlayPanelModule","PanelMenuModule","ProgressSpinner","strokeWidth","animationDuration","ProgressSpinnerModule","BanIcon","ɵBanIcon_BaseFactory","StarIcon","ɵStarIcon_BaseFactory","StarFillIcon","ɵStarFillIcon_BaseFactory","Rating_ng_container_1_div_1_span_3_Template","iconCancelClass","iconCancelStyle","Rating_ng_container_1_div_1_BanIcon_4_Template","Rating_ng_container_1_div_1_Template","isFocusVisible","cancelAriaLabel","Rating_ng_container_1_ng_template_2_ng_container_3_span_1_Template","iconOffStyle","iconOffClass","Rating_ng_container_1_ng_template_2_ng_container_3_StarIcon_2_Template","Rating_ng_container_1_ng_template_2_ng_container_3_Template","Rating_ng_container_1_ng_template_2_ng_container_4_span_1_Template","iconOnStyle","iconOnClass","Rating_ng_container_1_ng_template_2_ng_container_4_StarFillIcon_2_Template","Rating_ng_container_1_ng_template_2_ng_container_4_Template","Rating_ng_container_1_ng_template_2_Template","star_r12","starAriaLabel","Rating_ng_container_1_Template","starsArray","Rating_ng_template_2_span_0_ng_container_1_Template","Rating_ng_template_2_span_0_Template","cancelIconTemplate","Rating_ng_template_2_span_1_ng_container_1_Template","Rating_ng_template_2_span_1_Template","star_r30","i_r31","getIconTemplate","Rating_ng_template_2_Template","RATING_VALUE_ACCESSOR","Rating","stars","onRate","onCancel","onIconTemplate","offIconTemplate","isFocusVisibleItem","isCustomIcon","RatingModule","Skeleton","shape","borderRadius","containerStyle","SkeletonModule","Slider_span_1_Template","handleValues","Slider_span_2_Template","Slider_span_3_Template","handleValue","Slider_span_4_Template","Slider_span_5_Template","onDragStart","onMouseDown","dragging","orientation","Slider_span_6_Template","rangeStartLeft","rangeStartBottom","handleIndex","Slider_span_7_Template","rangeEndLeft","rangeEndBottom","SLIDER_VALUE_ACCESSOR","Slider","ngZone","onSlideEnd","sliderHandle","sliderHandleStart","sliderHandleEnd","dragListener","mouseupListener","initX","initY","barWidth","barHeight","sliderHandleClick","startHandleValue","startx","starty","updateDomData","bindDragListeners","touchobj","clientX","clientY","offsetHeight","setValueFromHandle","onBarClick","handleChange","decrementValue","incrementValue","updateValue","pageKey","calculateHandleValue","documentTarget","unbindDragListeners","getValueFromHandle","handleStepChange","updateHandleValue","updateDiffAndOffset","isVertical","getWindowScrollLeft","getWindowScrollTop","getDiff","getNormalizedValue","minVal","maxVal","getDecimalsCount","decimalsCount","SliderModule","SPINNER_VALUE_ACCESSOR","Spinner","formatInput","decimalSeparator","thousandSeparator","precision","keyPattern","timer","negativeSeparator","localeDecimalSeparator","localeThousandSeparator","thousandRegExp","calculatedPrecision","inputfieldViewChild","repeat","dir","clearTimer","spin","getPrecision","parseValue","formatValue","power","onUpButtonMousedown","onUpButtonMouseup","onUpButtonMouseleave","onDownButtonMousedown","onDownButtonMouseup","onDownButtonMouseleave","maximumFractionDigits","SpinnerModule","TerminalModule","FormsModule","ToastModule","ToggleButton_Conditional_1_span_0_Template","onIcon","offIcon","ToggleButton_Conditional_1_Template","ToggleButton_Conditional_2_ng_container_0_Template","ToggleButton_Conditional_2_Template","ToggleButton_span_3_Template","hasOnLabel","onLabel","hasOffLabel","offLabel","TOGGLEBUTTON_VALUE_ACCESSOR","ToggleButton","ToggleButtonModule","ToolbarModule","TreeModule","TreeTableModule","ArrowDownIcon","ArrowUpIcon","SortAltIcon","SortAmountUpAltIcon","SortAmountDownIcon","PrimeNgModule","CalendarModule","CardModule","CarouselModule","ChartModule","ChipsModule","DividerModule","FileUploadModule","MenuModule","MessagesModule","PickListModule","ProgressBarModule","SelectButtonModule","StepsModule","TableModule","TieredMenuModule","TimelineModule","SettingPreferenceType","chatDataPreference","utilityMenuPinPreference","SettingsService","settingKey","storageKey","loadSettings","saveSettings","addOrUpdateSetting","setting","filteredSettings","filterSetting","pinDrawer","drawerMenuItem","AppDrawerComponent","drawerPinButtonClicked","drawerCloseButtonClicked","closeDrawer","pinnable","AppDrawerComponent_a_11_Template","AppDrawerComponent_div_13_Template","AppDrawerComponent_div_14_Template","closeDrawerClick","pinDrawerClick","overlayDrawerItem","pinnedDrawerItems","drawerMenuItem_r5","AppDrawersComponent","AppDrawersComponent_div_0_Template","AppDrawersComponent_ng_template_2_Template","drawerMenuItem_r2","utilityMenuItemClick","AppUtilityMenuComponent_ul_5_ng_template_2_Template","AppUtilityMenuComponent_ul_5_ng_template_3_Template","badgeItem","drawerMenuItem_r10","AppUtilityMenuComponent_ul_9_ng_template_3_Template","AppUtilityMenuComponent_ul_9_ng_template_4_Template","AppUtilityMenuComponent","settingsService","globalUtilities","initializeChat","handlePinPreferences","pinnedDrawerCountChange","messengerOpened","walkthroughInProgress","contextUtilities","apiUtilityCount","drawerItem","isPinnable","firstMenuItem","secondMenuItem","handleActiveDrawer","matchingDrawerItem","getMatchingDrawerItem","rawBadgePromise","refreshDrawer","displayUtilityMenu","utilityMenuGroup","globalMenuItem","pinnedDrawerCountChanged","closeOverlay","numberOfDrawersToRemove","drawerToRemove","currentPinnedItems","AlterUtilityTitle","pinnedPreferences","pinPreference","preference","matchingDrawerItems","pinnedItems","handlePinPreference","storeContextPinSettings","utilityItem","setAsInactive","maximumPinnableDrawerCount","drawerToPin","retryCount","activeDrawer","isOverlaid","isPinned","pinnedItem","setActiveDrawerItem","listElement","AppUtilityMenuComponent_ul_5_Template","AppUtilityMenuComponent_ul_9_Template","chatOpened","installSubject","installSubscription","messengerElementId","customAttributesDataName","genesysCommands","genesysEvents","cobrowseReady","cobrowseSessionStarted","cobrowseSessionEnded","conversationClosed","conversationStarted","conversationOpened","hideLauncher","launcherReady","messengerClear","messengerCleared","messengerClose","messengerClosed","messengerOpen","messengerReady","removeData","genesysScript","installChat","Genesys","handleMessengerEvents","handleConversationEvents","messengerCloseEvent","displayChat","drawerPrefix","drawerSuffix","chatElement","genesys","takeUntil","getInitialChatData","getDecoratedChatData","messaging","customAttributes","BaseRuleValidator","EmailValidator","MaximumLengthValidator","MaximumNumberValidator","MinimumLengthValidator","MinimumNumberValidator","PasswordValidator","RegularExpressionValidator","RequiredValidator","HighlightModule","MessageService","LuxonModule","MarkdownModule","forRoot","extensions","prePopulate","extras","lazyRender","resetFieldOnHide","validationMessages","AdminModule","redirectTo","pathMatch","NEVER","noop","DEFAULT_CONFIG","connector","connect","operate","subject","innerFrom","fromSubscribable","subscribable","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","createOperatorSubscriber","mergeMap","mapTo","ERR_SW_NOT_SUPPORTED","NgswCommChannel","controllerChanges","fromEvent","controller","currentController","defer","controllerWithChanges","worker","registration","switchMap","getRegistration","publish","multicast","subjectOrSubjectFactory","subjectFactory","ConnectableObservable","errorObservable","sw","toPromise","postMessageWithOperation","operationNonce","waitForOperationCompleted","generateNonce","random","eventsOfType","filterFn","nextEventOfType","nonce","isEnabled","SwPush","pushManager","subscriptionChanges","notificationClicks","workerDrivenSubscriptions","pm","getSubscription","requestSubscription","pushOptions","userVisibleOnly","decodeBase64","serverPublicKey","applicationServerKey","atob","SwUpdate","versionUpdates","unrecoverable","checkForUpdate","activateUpdate","SCRIPT","ngswAppInitializer","readyToRegister$","registrationStrategy","delayWithTimeout","whenStable","scheduler","asyncScheduler","ApplicationRef","isStable","stable","ngswCommChannelFactory","SwRegistrationOptions","provideServiceWorker","makeEnvironmentProviders","APP_INITIALIZER","Injector","ServiceWorkerModule","SessionRefreshService","rendererFactory","resetIntervalsCalled","serverRefreshInterval","clientLogoutInterval","clientNotificationInterval","serverRefreshSubscription","clientLogoutSubscription","clientNotificationSubscription","serverExpirationInterval","clientExpirationInterval","serverRefreshTime","clientNotificationTime","resetThrottleTime","inlineTimerScript","stop","serviceInterval","setupRefreshConditions","throttleTime","duration$","throttle","durationSelector","leading","hasValue","sendValue","throttled","isComplete","endThrottling","cleanupThrottling","startThrottle","resetIntervals","refreshServerConnection","handleServerRefresh","handleClientNotification","handleClientExpiration","inlineScript","loginMessages","LoginComponent_div_0_app_login_dialog_6_Template","LoginComponent_div_0_app_login_change_password_7_Template","LoginComponent_div_0_app_login_verify_8_Template","LoginComponent_div_0_app_login_reset_9_Template","showLogin","showChangePassword","showVerify","showResetUser","LoginComponent","reallySimpleSindicationFeedReaderService","sessionRefreshService","displayChangePassword","clearedSiteDataMessage","addMessage","displayVerify","clearMessages","displayLogin","displayResetUser","LoginComponent_div_0_Template","LoginChangePasswordComponent_ng_template_0_span_0_Template","LoginChangePasswordComponent_ng_template_1_form_0_div_16_Template","LoginChangePasswordComponent_ng_template_1_form_0_div_25_Template","changePasswordForm","hasInvalidPassword","confirmIsDisabled","submitInProgress","LoginChangePasswordComponent_ng_template_1_form_0_Template","LoginChangePasswordComponent","loginComponent","newPasswordElement","confirmPasswordElement","confirmPassword","hasError","touched","loginStatus","LoginChangePasswordComponent_ng_template_0_Template","LoginChangePasswordComponent_ng_template_1_Template","LoginDialogComponent","loginMessageService","loginForm","brandingName","branding","loginIsDisabled","userNameElement","passwordElement","apiError","httpStatusCodes","LoginDialogComponent_div_23_Template","LoginResetComponent","resetForm","resetIsDisabled","LoginResetComponent_div_19_Template","LoginVerifyComponent","verifyForm","verifyIsDisabled","codeElement","verifyMethod","maskedVerifyDestination","getMaskedEmail","getMaskedPhone","cellphone","firstPart","LoginVerifyComponent_div_19_Template","BiComponent","validForm","tableDefinition","ReportsComponent","bIReportSettingDirective","SearchReportsFilter","searchInput","searchReportsOptions","itemsInDeleteMode","selectedFilterCriteria","selectedReports","allTypesFilter","customTypeFilter","standardTypeFilter","searchReportFilterValue","searchReportsByKeyword","reports","keyword","lowerKeyword","setFilterTypes","getTypeFilter","mappedData","mapDisplayComponents","filteredReports","creators","reportDisplayComponentInstance","basePageReportDisplayComponentInstanceId","reportDisplayComponentInstanceId","basePageSecurityGroupIdentifiers","reportSecurityGroupIdentifiers","tableContextSource","lastItem","lastItemExists","reportListItem","filterListItems","arrayToClean","reportDefinitionToRemove","keypress","ReportsComponent_button_5_Template","ReportsComponent_div_6_Template","ReportsComponent_div_7_Template","ReportsComponent_div_8_Template","BiModule","ClaimsComponent","dynamicFormly","policySearchTableDefinitions","InsurancePolicySearchComponent","availableTransactionEntityTypes","loadingTransactionTypes","exactPropertyOrderBy","searchMode","latestTransactionsByProduct","defaultFilters","selectedTransactionEntityTypes","dateLimits","tabletReservedScreenHeight","desktopReservedScreenHeight","changedBy","termColumnKeys","compilePrimaryFilter","assetCharacteristics","interestCharacteristics","userDisplayName","splitEntitType","validProductSelection","decoratePolicyTermColumns","navigateToParent","overallTransactionInstances","existingPolicies","clearLatestTransactionsByProduct","existingPolicyNumbers","splitGroups","latestTransactionFilter","compileLatestTransactionFilter","transactionInstances","loadRecursiveUniqueValues","updateLatestTransactionsByProduct","transactionIds","filterString","matchingTerm","termEffectiveDate","uniquePolicies","getLatestTransactionByProduct","compileCreatedOrChangedByFilter","compileTypeFilter","compileStatusFilter","compileKeywordsFilter","compileDateRangeFilter","filterItem","overallFilter","getFilterValue","changedByFilter","latestTransactionByProduct","apiSortField","latestPolicyTransaction","sortValue","transactionInstance","routeModule","routeType","routeLayoutType","routeId","routeTypeGroup","InsurancePolicySearchComponent_div_1_Template","InsurancePolicySearchComponent_div_3_Template","InsurancePolicySearchComponent_div_4_Template","InsuranceComponent","getServiceProviderDescription","serviceProviderId","serviceProviderType","serviceProviderEffectiveDate","serviceProviderInstance","getServiceProviderInstance","serviceProviderDisplayName","getEntityDisplayName","getDetailedServiceProviders","serviceProviders","detailedServiceProviders","serviceProvider","addServiceProvider","addServiceProviderPromise","serviceProviderAction","serviceProviderActionNames","serviceProviderSubtype","getAvailableServiceProviderInstances","policyServiceProviders","parentAgencyResourceIds","apiFilter","apiOrderBy","excludeEffective","serviceProviderTypes","getAvailableAgencyServiceProviderInstances","getAvailableProducerServiceProviderInstances","getMatchingServiceProvidersByResourceId","resourceIdentifiers","resourceId","getEffectiveServiceProviders","includeFutureEffective","agencyEffectiveServiceProviders","getAgencyEffectiveServiceProviders","producerEffectiveServiceProvider","getEffectiveServiceProvider","futureEffectiveServiceProviders","getFutureEffectiveServiceProviders","pastServiceProviders","getServiceProvidersByType","previous","reduceToMostRecent","serviceProviderEntityTypeGroup","isActiveProductSettingByProduct","productSettingAuthorities","getActiveServiceProviderInstance","serviceProviderSubtypes","effectiveServiceProvider","getKeyContacts","effectiveServiceProviders","effectiveServiceProviderBySubType","getExcludeEffectiveProvidersFilter","excludeEffectiveFilter","effectiveProvider","commonFilterPart","getProducersInstancesAsAgencyChildren","agencyServiceProviders","parentAgencyServiceProviders","InsuranceModule","ClaimsModule","EntityFormComponent","componentInstance","apiTokenLookup","calculateSectionGridColumns","setNestedDynamicGridColumns","setDynamicGridColumns","EntityFormComponent_div_0_Template","EntityFormComponent_div_1_Template","EntityModule","AppCacheHttpInterceptor","displayModifiedRefreshBannerDebounceDelay","intercept","handle","cachedETagValue","interceptGet","interceptModify","interceptDelete","requestWithETag","getRequestWithETag","handleGetResponse","catchError","handleGetError","resetAssociatedCaches","queryOnlyGetHeader","handleModifyError","cachedRequest","freshnessRequest","eTagValue","displayAlteredData","cachedResponse","getRefreshRequest","displayModifiedData","eTagMatchIdentifier","headerETagValue","currentRequest","errorHeaders","refreshRequest","AppDataTransformHttpInterceptor","AppErrorHandler","handlePowerBiMessageEvent","userMessage","handleError","handlerError","loggerError","AppHammerConfig","HammerGestureConfig","overrides","velocity","AppSecurityHttpInterceptor","requestWithCredentials","withCredentials","urlWithParams","refreshApiEndpoint","parentEntityInstance","parentFormlyEntityLayout","WorkItemExpandComponent_div_1_div_8_Template","summaryFormlyLayout","WorkItemExpandComponent","selectedEntityDefinition","assigneeName","createdOn","organizationTypeWildcard","getEntityType","getAssigneeDisplayName","getCreatedByName","parentNavigationReference","parentEntityTypeReference","getSummaryFormlyLayout","lastExpandAction","completeDate","subtextContainerClose","WorkItemExpandComponent_div_0_Template","WorkItemExpandComponent_div_1_Template","item_r10","cancelFilterChanges","filterValidityChange","filterValuesChange","WorkbenchComponent_div_3_span_3_ng_template_5_a_8_Template","clearFilters","applyFilters","filterLayoutData","archivedFilterLayoutData","filterLayoutSchema","filterValuesChanged","filterValidity","toggleFilterDisplay","WorkbenchComponent_div_3_span_3_ng_template_3_Template","WorkbenchComponent_div_3_span_3_ng_template_5_Template","filterActive","WorkbenchComponent_div_3_div_2_Template","WorkbenchComponent_div_3_span_3_Template","loadingTableFilters","loadingPageGuard","workbenchTableDefinition","WorkbenchComponent","filterValidityChanged","dynamicFilterLayoutSchema","moduleOptions","moduleLayoutConfigurations","dashboardRefreshTimeout","assignedToName","staticLayoutFieldCount","calendarTypes","mapRouteDataFromUrlStorage","setupTableFilters","handleModuleChange","calculateFilter","updateDashboard","workItemTypeIds","workItemType","getTitle","itemOneDueDate","itemTwoDueDate","loadAllowedModules","loadFilterEntityTypes","userChipValue","setScrollActions","dropdownClearIcons","dropdownClearIcon","selectedModule","scrollToNewLayout","staticLayoutFields","dynamicLayoutFields","dynamicField","scrollFilterPanel","additionalLayoutSchema","layoutConfiguration","scrollpanelContent","verticalScrollBar","removeStatusCheck","calculateModuleFilter","calculateArrayFilter","moduleOption","multiSelectFilter","selectedValue","getScrollElement","runOnce","bubbles","getModuleFilterLayoutName","allowedLayouts","layoutConfigurations","moduleName","mappedItem","WorkbenchComponent_div_3_Template","WorkbenchComponent_div_5_Template","WorkbenchComponent_div_6_Template","WorkbenchComponent_div_7_Template","WorkbenchComponent_div_8_Template","WorkItemsModule","AccountComponent","AccountDirective","formlyLayoutDefinitions","formIsValid","saveActivityAction","formValidityBackup","SecurityComponent","setUserEntityInstance","multiFactorAuthenticationEnabled","multiFactorAuthenticationMethod","isNewPassword","SecurityComponent_div_1_Template","SecurityComponent_div_2_Template","SiteSettingsComponent","changethemeAction","getThemeOptions","excecuteChangeThemeAction","changeThemeAction","SiteSettingsComponent_div_1_Template","SiteSettingsComponent_div_2_Template","UserProfileComponent","UserProfileComponent_div_1_Template","UserProfileComponent_div_2_Template","AccountModule","UpdateService","appReference","swUpdate","checkForUpdatesSubscriber","updateFoundSubscriber","unrecoverableStateSubscriber","watchForUnrecoverableState","watchForUpdatesFound","checkForUpdatesEvery","onLoginPage","refresh","updateFound","timeInMilliSeconds","stabilityObservable","intervalObservable","detail_r2","AppBannerDetailComponent_ul_1_ng_template_1_Template","extendedDetail","AppBannerDetailComponent","AppBannerDetailComponent_ul_1_Template","detail_r6","AppBannerComponent_ng_template_0_div_10_ng_template_3_Template","message_r1","bannerMouseIn","bannerMouseOut","AppBannerComponent_ng_template_0_span_6_Template","AppBannerComponent_ng_template_0_span_9_Template","AppBannerComponent_ng_template_0_div_10_Template","dismissBanner","getBannerXPosition","AppBannerComponent","currentMaxId","fadeTime","fadeAnimationTime","clientMessages","fadeBanner","AppBannerComponent_ng_template_0_Template","AppFooterComponent","performBannerActionAndClose","AppFullScreenBannerComponent","primaryAction","AppFullScreenBannerComponent_ng_template_0_Template","AppMenuComponent","primaryNavigationGroupName","primaryOperationGroups","closeNavigationMenu","closeOverlaysEvent","BaseSessionUserDirective","userEmailHash","userTitle","profileDisplayClick","AppProfileComponent","activeProfileChanged","closeListWhenActive","AppProfileComponent_div_1_Template","AppTopBarComponent","rotateMenuButton","overlayMenuButtonClick","profileGroupName","settingsGroupName","overlayMenuButtonClicked","hideOverlayMenu","AppComponent_div_1_div_18_Template","isOverlay","isSlim","staticMenuDesktopInactive","staticMenuMobileActive","activeProfileMenu","initialProfileModel","resetProfileMenu","AppComponent","titleService","updateService","handleRouteChange","layoutMenuScrollerViewChild","contextMenuDisplayed","layoutMenuScroller","drawerCount","displayContextMenuOverlay","onChatModalDisplayed","onResize","setTitle","setSiteLayoutVariables","checkForUpdatesInterval","moveBar","pinnedDrawerWidth","innerHeight","routerChangeEvent","NavigationStart","AppComponent_app_login_0_Template","AppComponent_div_1_Template","AppRoutes","AppRouteReuseStrategy","BaseRouteReuseStrategy","shouldReuseRoute","future","routeConfig","initializeApp","AppModule","bootstrap","APP_BASE_HREF","ErrorHandler","HAMMER_GESTURE_CONFIG","HTTP_INTERCEPTORS","LocationStrategy","PathLocationStrategy","RouteReuseStrategy","HammerModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","XMLBuilder","XMLValidator","nameStartChar","nameRegexp","regexName","arrayMode","isExist","allmatches","util","allowBooleanAttributes","unpairedTags","isWhiteSpace","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tags","tagFound","reachedRoot","tagStartPos","closingTag","validateTagName","readAttributeStr","attrStr","attrStrStart","validateAttributeString","tagClosed","otg","openPos","afterAmp","validateAmpersand","singleQuote","startChar","validAttrStrRegxp","getAllMatches","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","re","lineNumber","isName","buildFromOrderedJs","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","processEntities","stopNodes","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","j2x","buildTextValNode","buildObjectNode","jObj","arrayNodeName","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","Ks","closeTag","tagEndExp","piClosingChar","arrToStr","jPath","indentation","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","piTextNodeName","newIdentation","tagStart","tagValue","attrMap","attrVal","toXml","jArray","readEntityExp","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","readDocType","hasBody","regx","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","xmlNode","toNumber","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","resolveNameSpace","attrsRegx","buildAttributesMap","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","addChild","endIndex","docTypeEntities","rawTagName","isItStopNode","tagContent","readStopNodeData","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","tagExpWithClosingIndex","attrBoundary","openTagCount","shouldParse","OrderedObjParser","apos","gt","lt","quot","cent","yen","euro","copyright","reg","inr","buildOptions","prettify","validationOption","validate","orderedObjParser","orderedResult","addEntity","compress","compressedObj","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","onerror","initMouseEvent","self","HTMLAnchorElement","webkitURL","msSaveOrOpenBlob","autoBom","HTMLElement","FileReader","readAsDataURL","EMPTY","gen","createEmpty","toJSON","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","deprecate","deprecationMessage","output","nextKey","dest","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","uniqueArray","prefixed","_uniqueId","getWindowForElement","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","computeInputData","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","getAngle","distance","getDistance","computeDeltaXY","offsetDelta","prevDelta","prevInput","deltaY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityY","getScale","getRotation","maxPointers","computeIntervalInputData","velocityX","velocityY","lastInterval","recognize","p1","p2","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","touches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","targetTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","touchMap","cssSupports","CSS","supports","TouchAction","compute","touchAction","recognizers","recognizer","getTouchAction","cleanTouchActions","hasPanX","hasPanY","preventDefaults","prevented","hasNone","preventSrc","STATE_POSSIBLE","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","handlers","oldCssProps","createInputInstance","toggleCssProps","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","threshold","directionTest","hasMoved","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","force","stopped","curRecognizer","existing","triggerDomEvent","gestureEvent","gesture","INPUT_MOVE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press","define","dereference_1","traverse_1","traverse","clone_1","resolve_1","getProperties","getProperties_1","memory","$ref","toString_1","isFragment","stepThrough","decoder","decodeURIComponent","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsVarRange","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","setter","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","chrSymbols","charsEndIndex","escapeHtmlChar","escapeStringChar","mapToArray","overArg","replaceHolders","setToArray","stringSize","unicodeSize","unescapeHtmlChar","runInContext","uid","pick","arrayProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Symbol","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","configurable","writable","baseAt","paths","upper","baseClone","bitmask","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","getSymbolsIn","baseAssignIn","keysIn","copySymbols","getSymbols","initCloneByTag","Ctor","cloneArrayBuffer","cloneDataView","dataView","cloneTypedArray","cloneRegExp","regexp","cloneSymbol","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","isCommon","valuesLength","valuesIndex","templateSettings","variable","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","isOwn","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","baseInvoke","baseIsArguments","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","isMasked","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","safeGet","isTyped","isPlainObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","comparer","compareMultiple","objCriteria","othCriteria","ordersLength","compareAscending","basePickBy","basePullAll","basePullAt","indexes","baseRepeat","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","isIterateeCall","iterable","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","reorder","arrLength","oldArray","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setWrapToString","createRound","toInteger","pair","createToPairs","setToPairs","baseToPairs","createWrap","mergeData","srcBitmask","newBitmask","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","memoize","subString","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","before","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","timeWaiting","debounced","isInvoking","leadingEdge","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gte","baseIsArrayBuffer","baseIsDate","isError","isInteger","baseIsMap","isNumber","baseIsRegExp","baseIsSet","baseIsTypedArray","lte","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","baseKeysIn","nativeKeysIn","isProto","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","propertyOf","pullAllBy","pullAllWith","rest","shuffle","sortedUniq","sortedUniqBy","spread","tail","takeRight","takeRightWhile","takeWhile","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isEqualWith","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isUnwrapped","onlyLazy","chainName","lazyClone","lazyReverse","lazyValue","isRight","getView","iterLength","takeCount","iterIndex","wrapperChain","commit","wrapperCommit","wrapperNext","wrapperPlant","wrapperReverse","wrapped","wrapperValue","wrapperToIterator","LZString","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","compressToBase64","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","compressToUint8Array","uncompressed","TotalLen","current_value","decompressFromUint8Array","decompress","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","resb","maxpower","dictionary","enlargeIn","dictSize","numBits","ObjectMapper","_undefined","srckey","destkey","setKeyValue","getKeyValue","keystr","ix","select_arr","negative_array_access","select_obj","select_obj_keys","pix","set_data","update_obj","update_arr","applyTransform","update_arr_ix","nulls","key_str","delimiter","key_arr","name_begin","name_end","ix_begin","ix_end","esc","__webpack_modules__","installedModules","__nested_webpack_require_626__","moduleId","HttpPostMessage","windowPostMessageProxy","defaultHeaders","defaultTargetWindow","addTrackingProperties","trackingProperties","getTrackingProperties","isErrorMessage","statusCode","targetWindow","__unused_webpack_module","__nested_webpack_require_612__","extendStatics","__extends","setPrototypeOf","__proto__","__","TextAlignment","CommonErrorCodes","BookmarksPlayMode","ExportDataType","QnaMode","PageNavigationPosition","BrowserPrintAdjustmentsMode","AggregateFunction","DataCacheMode","CredentialType","isPercentOfGrandTotal","isColumnAggr","isHierarchyLevelAggr","isHierarchyLevel","isColumn","isMeasure","getFilterType","isBasicFilterWithKeys","isFilterKeyColumnsTarget","HierarchyFilter","AdvancedFilter","TupleFilter","IdentityFilter","BasicFilterWithKeys","BasicFilter","RelativeTimeFilter","RelativeDateFilter","TopNFilter","IncludeExcludeFilter","NotSupportedFilter","Filter","RelativeDateOperators","RelativeDateFilterTimeUnit","FilterType","FiltersLevel","FiltersOperations","MenuLocation","ContrastMode","SectionVisibility","ReportAlignment","HyperlinkClickBehavior","VisualContainerDisplayMode","BackgroundType","DisplayOption","PageSizeType","TraceType","validateVisualHeader","validateExportDataRequest","validateQnaInterpretInputData","validateLoadQnaConfiguration","validateSaveAsParameters","validateUpdateFiltersRequest","validateFilter","validatePage","validateTileLoad","validateDashboardLoad","validateQuickCreate","validateCreateReport","validatePaginatedReportLoad","validateReportLoad","validateMenuGroupExtension","validateExtension","validateCustomPageSize","validateVisualizationsPane","validateSyncSlicersPane","validateSelectionPane","validatePageNavigationPane","validateFieldsPane","validateFiltersPane","validateBookmarksPane","validatePanes","validateSettings","validateCaptureBookmarkRequest","validateApplyBookmarkStateRequest","validateApplyBookmarkByNameRequest","validateAddBookmarkRequest","validatePlayBookmarkRequest","validateSlicerState","validateSlicer","validateVisualSelector","isIExtensionArray","isIExtensions","isGroupedMenuExtension","isFlatMenuExtension","isReportFiltersArray","isOnLoadFilters","VisualDataRoleKindPreference","VisualDataRoleKind","CommandDisplayOption","SlicerTargetSelector","VisualTypeSelector","VisualSelector","PageSelector","Selector","SortDirection","LegendPosition","validatePrintSettings","validateZoomLevel","validateCustomTheme","validateCommandsSettings","validateVisualSettings","validator_1","Verbose","ExpectedError","UnexpectedError","Fatal","Widescreen","Standard","Cortana","Letter","Custom","Mobile","FitToPage","FitToWidth","ActualSize","Default","Transparent","Visible","Master","Navigate","NavigateAndRaiseEvent","RaiseEvent","Left","Center","Right","AlwaysVisible","HiddenInViewMode","Copy","Create","All","Aad","HighContrast1","HighContrast2","HighContrastBlack","HighContrastWhite","Bottom","Top","RemoveAll","ReplaceAll","Add","Replace","Report","Page","Visual","Advanced","Basic","Unknown","IncludeExclude","RelativeDate","TopN","Tuple","RelativeTime","Identity","Hierarchy","Days","Weeks","CalendarWeeks","Months","CalendarMonths","Years","CalendarYears","Minutes","Hours","InLast","InThis","InNext","filterType","$schema","schemaUrl","displaySettings","notSupportedTypeName","isExclude","timeUnitsCount","timeUnitType","includeToday","requireSingleSelection","keyValues","numberOfKeys","keyValue","lengthOfArray","logicalOperator","conditions","extractedConditions","hierarchyData","advancedFilter","aggregationFunction","measure","hierarchyLevel","percentOfGrandTotal","NoConnection","OnBehalfOf","Anonymous","Import","DirectQuery","Sum","Min","Max","Average","DistinctCount","NoAdjustments","Interactive","ResultOnly","Summarized","Underlying","Off","Presentation","TokenExpired","NotFound","InvalidParameters","LoadReportFailed","NotAuthorized","FailedToLoadModel","TopCenter","BottomCenter","RightCenter","LeftCenter","Ascending","Descending","visualType","menuExtension","groupName","normalizeError","Enabled","Disabled","Grouping","Measure","GroupingOrMeasure","visualSelectorValidator","slicerValidator","slicerStateValidator","playBookmarkRequestValidator","addBookmarkRequestValidator","applyBookmarkByNameRequestValidator","applyBookmarkStateRequestValidator","captureBookmarkRequestValidator","settingsValidator","reportPanesValidator","bookmarksPaneValidator","filtersPaneValidator","fieldsPaneValidator","pageNavigationPaneValidator","selectionPaneValidator","syncSlicersPaneValidator","visualizationsPaneValidator","customPageSizeValidator","extensionValidator","menuGroupExtensionValidator","reportLoadValidator","paginatedReportLoadValidator","reportCreateValidator","quickCreateValidator","dashboardLoadValidator","tileLoadValidator","pageValidator","filterValidator","updateFiltersRequestValidator","saveAsParametersValidator","loadQnaValidator","qnaInterpretInputDataValidator","exportDataRequestValidator","visualHeaderValidator","visualSettingsValidator","commandsSettingsValidator","customThemeValidator","zoomLevelValidator","printSettingsValidator","__nested_webpack_require_46167__","barsValidator_1","bookmarkValidator_1","commandsSettingsValidator_1","customThemeValidator_1","dashboardLoadValidator_1","datasetBindingValidator_1","exportDataValidator_1","extensionsValidator_1","filtersValidator_1","layoutValidator_1","pageValidator_1","panesValidator_1","qnaValidator_1","reportCreateValidator_1","reportLoadValidator_1","paginatedReportLoadValidator_1","saveAsParametersValidator_1","selectorsValidator_1","settingsValidator_1","slicersValidator_1","tileLoadValidator_1","visualSettingsValidator_1","anyOfValidator_1","fieldForbiddenValidator_1","fieldRequiredValidator_1","mapValidator_1","typeValidator_1","parameterPanelValidator_1","datasetCreateConfigValidator_1","quickCreateValidator_1","printSettingsValidator_1","AddBookmarkRequestValidator","advancedFilterTypeValidator","EnumValidator","advancedFilterValidator","AdvancedFilterValidator","anyArrayValidator","ArrayValidator","AnyOfValidator","StringValidator","NumberValidator","BooleanValidator","anyFilterValidator","BasicFilterValidator","IncludeExcludeFilterValidator","NotSupportedFilterValidator","RelativeDateFilterValidator","TopNFilterValidator","RelativeTimeFilterValidator","HierarchyFilterValidator","anyValueValidator","actionBarValidator","ActionBarValidator","statusBarValidator","StatusBarValidator","ApplyBookmarkByNameRequestValidator","ApplyBookmarkStateRequestValidator","applyBookmarkValidator","backgroundValidator","basicFilterTypeValidator","basicFilterValidator","booleanArrayValidator","BooleanArrayValidator","booleanValidator","BookmarksPaneValidator","captureBookmarkOptionsValidator","CaptureBookmarkOptionsValidator","CaptureBookmarkRequestValidator","columnSchemaArrayValidator","ColumnSchemaValidator","commandDisplayOptionValidator","commandExtensionSelectorValidator","VisualSelectorValidator","VisualTypeSelectorValidator","commandExtensionArrayValidator","CommandExtensionValidator","commandExtensionValidator","commandsSettingsArrayValidator","CommandsSettingsValidator","conditionItemValidator","ConditionItemValidator","contrastModeValidator","credentialDetailsValidator","MapValidator","credentialsValidator","CredentialsValidator","credentialTypeValidator","customLayoutDisplayOptionValidator","customLayoutValidator","CustomLayoutValidator","CustomPageSizeValidator","CustomThemeValidator","DashboardLoadValidator","dataCacheModeValidator","datasetBindingValidator","DatasetBindingValidator","datasetCreateConfigValidator","DatasetCreateConfigValidator","datasourceConnectionConfigValidator","DatasourceConnectionConfigValidator","displayStateModeValidator","displayStateValidator","DisplayStateValidator","ExportDataRequestValidator","extensionArrayValidator","ExtensionValidator","extensionsValidator","ExtensionsValidator","extensionPointsValidator","ExtensionPointsValidator","fieldForbiddenValidator","FieldForbiddenValidator","fieldRequiredValidator","FieldRequiredValidator","FieldsPaneValidator","filterColumnTargetValidator","FilterColumnTargetValidator","filterDisplaySettingsValidator","FilterDisplaySettingsValidator","filterConditionsValidator","filterHierarchyTargetValidator","FilterHierarchyTargetValidator","filterMeasureTargetValidator","FilterMeasureTargetValidator","filterTargetValidator","FilterKeyColumnsTargetValidator","FilterKeyHierarchyTargetValidator","FilterValidator","filterTypeValidator","filtersArrayValidator","filtersOperationsUpdateValidator","filtersOperationsRemoveAllValidator","FiltersPaneValidator","hyperlinkClickBehaviorValidator","includeExcludeFilterValidator","includeExludeFilterTypeValidator","hierarchyFilterTypeValidator","hierarchyFilterValuesValidator","HierarchyFilterNodeValidator","layoutTypeValidator","LoadQnaValidator","menuExtensionValidator","FlatMenuExtensionValidator","GroupedMenuExtensionValidator","menuGroupExtensionArrayValidator","MenuGroupExtensionValidator","menuLocationValidator","notSupportedFilterTypeValidator","notSupportedFilterValidator","numberArrayValidator","NumberArrayValidator","numberValidator","onLoadFiltersBaseValidator","OnLoadFiltersBaseValidator","OnLoadFiltersBaseRemoveOperationValidator","pageLayoutValidator","VisualLayoutValidator","PageNavigationPaneValidator","pageNavigationPositionValidator","pageSizeTypeValidator","pageSizeValidator","PageSizeValidator","PageValidator","pageViewFieldValidator","PageViewFieldValidator","pagesLayoutValidator","PageLayoutValidator","paginatedReportCommandsValidator","PaginatedReportCommandsValidator","PaginatedReportLoadValidator","paginatedReportsettingsValidator","PaginatedReportSettingsValidator","parameterValuesArrayValidator","ReportParameterFieldsValidator","parametersPanelValidator","ParametersPanelValidator","permissionsValidator","PlayBookmarkRequestValidator","PrintSettingsValidator","QnaInterpretInputDataValidator","qnaPanesValidator","QnaPanesValidator","qnaSettingValidator","QnaSettingsValidator","QuickCreateValidator","rawDataValidator","relativeDateFilterOperatorValidator","relativeDateFilterTimeUnitTypeValidator","relativeDateFilterTypeValidator","relativeDateFilterValidator","relativeDateTimeFilterTypeValidator","relativeDateTimeFilterUnitTypeValidator","relativeTimeFilterTimeUnitTypeValidator","relativeTimeFilterTypeValidator","relativeTimeFilterValidator","reportBarsValidator","ReportBarsValidator","ReportCreateValidator","reportLoadFiltersValidator","OnLoadFiltersValidator","ReportLoadValidator","ReportPanesValidator","SaveAsParametersValidator","SelectionPaneValidator","SettingsValidator","singleCommandSettingsValidator","SingleCommandSettingsValidator","slicerSelectorValidator","SlicerTargetSelectorValidator","SlicerStateValidator","slicerTargetValidator","SlicerValidator","stringArrayValidator","StringArrayValidator","stringValidator","SyncSlicersPaneValidator","tableDataArrayValidator","TableDataValidator","tableSchemaListValidator","TableSchemaValidator","TileLoadValidator","tokenTypeValidator","topNFilterTypeValidator","topNFilterValidator","UpdateFiltersRequestValidator","RemoveFiltersRequestValidator","viewModeValidator","visualCommandSelectorValidator","visualHeaderSelectorValidator","visualHeaderSettingsValidator","VisualHeaderSettingsValidator","VisualHeaderValidator","visualHeadersValidator","VisualizationsPaneValidator","visualLayoutValidator","VisualSettingsValidator","visualTypeSelectorValidator","RangeValidator","__nested_webpack_require_63052__","multipleFieldsValidator_1","MultipleFieldsValidator","ObjectValidator","fieldValidatorsPairs","fieldsPath","fieldValidators","SchemaValidator","ValueValidator","TypeValidator","itemValidators","expectedType","possibleValues","schemaValue","minValue","maxValue","__nested_webpack_require_78931__","__nested_webpack_require_87407__","__nested_webpack_require_94440__","__nested_webpack_require_96594__","__nested_webpack_require_99593__","__nested_webpack_require_101863__","__nested_webpack_require_104207__","ExtensionItemValidator","MenuExtensionBaseValidator","__nested_webpack_require_116698__","RelativeDateTimeFilterValidator","FilterValidatorBase","__nested_webpack_require_150670__","__nested_webpack_require_157149__","__nested_webpack_require_162589__","__nested_webpack_require_174335__","__nested_webpack_require_180046__","__nested_webpack_require_182904__","__nested_webpack_require_187025__","__nested_webpack_require_191349__","__nested_webpack_require_193630__","typeValidator_2","__nested_webpack_require_199088__","__nested_webpack_require_205084__","__nested_webpack_require_208514__","__nested_webpack_require_211786__","__nested_webpack_require_219195__","keyValidators","valueValidators","__nested_webpack_require_221879__","__nested_webpack_require_224247__","datasourceConnectionConfig","mashupDocument","tableSchemaList","__nested_webpack_require_234302__","__nested_webpack_require_237175__","__webpack_module_cache__","__nested_webpack_require_239527__","cachedModule","__nested_webpack_require_617__","__nested_webpack_require_1897__","RouteRecognizer","Router","getRouteRecognizer","patchRouteRecognizer","postRouteRecognizer","putRouteRecognizer","deleteRouteRecognizer","registerHandler","routeRecognizer","addHandler","matchingRoutes","__nested_webpack_require_6218__","$$route$recognizer$dsl$$Target","matcher","$$route$recognizer$dsl$$Matcher","routes","$$route$recognizer$dsl$$generateMatch","startingPath","nestedCallback","fullPath","$$route$recognizer$dsl$$addRoute","routeArray","$$route$recognizer$dsl$$eachRoute","baseRoute","willAddRoute","contextEntered","$$route$recognizer$$escapeRegex","$$route$recognizer$$isArray","$$route$recognizer$$StaticSegment","$$route$recognizer$$DynamicSegment","$$route$recognizer$$StarSegment","$$route$recognizer$$EpsilonSegment","$$route$recognizer$$parse","specificity","$$route$recognizer$$State","charSpec","nextStates","charSpecs","$$route$recognizer$$recognizeChar","$$route$recognizer$$RecognizeResults","$$route$recognizer$$decodeQueryParamPart","eachChar","invalidChars","validChars","returned","$$route$recognizer$$RouteRecognizer","rootState","allSegments","handlersFor","hasRoute","generateQueryString","arrayPair","parseQueryString","keyLength","pathLen","queryStart","isSlashDropped","decodeURI","solutions","$$route$recognizer$$sortSolutions","$$route$recognizer$$findHandler","captures","currentCapture","isDynamic","addRouteCallback","$$route$recognizer$$default","amd","webpackPolyfill","AdvancedFilterBuilder","powerbi_models_1","addCondition","FilterBuilder","BasicFilterBuilder","isRequireSingleSelection","in","notIn","basicFilter","withTargetObject","withColumnTarget","tableName","withMeasureTarget","withHierarchyLevelTarget","withColumnAggregation","withHierarchyLevelAggregationTarget","RelativeTimeFilterBuilder","RelativeDateFilterBuilder","TopNFilterBuilder","basicFilterBuilder_1","advancedFilterBuilder_1","topNFilterBuilder_1","relativeDateFilterBuilder_1","relativeTimeFilterBuilder_1","isTodayIncluded","inLast","inThis","inNext","orderByTarget","orderByTargetValue","__awaiter","_arguments","fulfilled","throw","adopt","__generator","sent","trys","ops","verb","BookmarksManager","util_1","errors_1","iframe","getBookmarks","isRDLEmbed","APINotSupportedForRDLError","hpm","response_1","bookmarkName","response_2","playMode","playBookmarkRequest","response_3","capture","response_4","applyState","response_5","embed_1","phasedRender","isBootstrap","getId","createConfig","findIdFromEmbedUrl","configChanged","getDefaultEmbedUrlEndpoint","isSaved","isSavedInternal","datasetIdMatch","sdkSessionId","getSdkSessionId","eventHooks","accessTokenProvider","tokenProviderSupplied","Dashboard","loadPath","phasedLoadPath","allowedEvents","dashboardIdMatch","dashboardIdAttribute","baseConfig","validatePageView","pageView","typeAttribute","sdkConfig","autoAuthInEmbedUrl","EmbedUrlNotSupported","eventHandlers","iframeLoaded","embedtype","commands","populateConfig","isCreate","setIframe","saveAsParameters","getCorrelationId","timeNow","bootstrapped","sdkVersion","lastLoadRequest","getTimeDiffInMilliseconds","fakeEvent","eventHandler","eventHandlerToRemove","embedType","accessTokenAttribute","globalAccessToken","_e","_g","_h","_j","bootstrapConfig","getEmbedUrl","getGroupId","addLocaleToEmbedUrl","getUniqueId","initialLayoutType","extensionsArray","validateEventHooks","applicationContextProvider","addParamToUrl","localeSettings","formatLocale","embedUrlAttribute","getDefaultEmbedUrl","hostname","defaultEmbedHostName","nameAttribute","createRandomString","findGroupIdFromEmbedUrl","fullscreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","isFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isLoad","iframeContent","getNumberOfComponents","maxFrontLoadTimes","frontLoadHandler","frontLoadSendConfig","setComponentTitle","setComponentTabIndex","removeComponentTabIndex","_tabIndex","groupIdMatch","response_6","window_post_message_proxy_1","http_post_message_1","powerbi_router_1","config_1","wpmp","sdkType","sdkWrapperVersion","logMessages","eventSourceOverrideWindow","WindowPostMessageProxy","processTrackingProperties","suppressWarnings","visualDescriptor_1","isActivePage","defaultSize","defaultDisplayOption","mobileSize","background","wallpaper","getFilters","updateFilters","operation","updateFiltersRequest","filtersOperation","removeFilters","setFilters","setActive","setDisplayName","getVisuals","VisualDescriptor","response_7","getVisualByName","response_8","setVisualDisplayState","displayState","moveVisual","resizeVisual","resizePage","pageSizeType","resizeActivePage","getSlicers","response_9","hasLayout","layoutTypeEnum","response_10","Qna","setQuestion","question","qnaData","_isBootstrap","QuickCreate","req","_res","invokeSDKHook","__spreadArray","pack","ar","page_1","bookmarksManager_1","bookmarksManager","reportIdMatch","render","addPage","deletePage","renamePage","reportIdAttribute","getPages","getPageByName","getActivePage","activePage","response_11","setPage","response_12","updateSettings","customLayout","extensionElement","response_13","isMobileSettings","filterPaneEnabledAttribute","navContentPaneEnabledAttribute","filterPaneEnabled","navContentPaneEnabled","switchMode","newMode","viewModeToString","response_14","response_15","applyTheme","applyThemeInternal","resetTheme","getTheme","response_16","resetPersistentFilters","response_17","savePersistentFilters","response_18","arePersistentFiltersApplied","response_19","removeContextMenuCommand","commandName","contextMenuTitle","commandCopy","indexOfCommand","findCommandMenuIndex","visualContextMenu","addContextMenuCommand","commandTitle","menuLocation","newCommands","createMenuCommand","removeOptionsMenuCommand","optionsMenuTitle","visualOptionsMenu","addOptionsMenuCommand","commandIcon","newSettings","validateVisual","buildLayoutSettingsObject","switchLayout","isInitialMobileSettings","isPassedMobileSettings","newSetting","menuTitle","newCommandObj","activeMenuCommand","visualLayout","pagesLayout","visualsLayout","response_20","getZoom","response_21","setZoom","zoomLevel","closeAllOverlays","error_1","clearSelectedVisuals","clearPopOutState","error_2","__assign","report_1","create_1","dashboard_1","tile_1","qna_1","visual_1","quickCreate_1","registeredComponents","wpmpName","uniqueSessionId","generateUUID","handleEvent","embeds","defaultConfig","autoEmbedOnContentLoaded","enableAutoEmbed","powerBiElement","powerBiEmbed","addOrOverwriteEmbed","quickCreate","embedInternal","outerHTML","embedExisting","embedNew","getSDKVersion","componentType","scrubbedConfig","createEmbedComponent","Component","embedComponent","registeredComponent","registeredComponentType","embedElement","handleTileEvents","hook","raiseCustomEvent","preload","setSdkInfo","embedComponentFactory","routerEventUrls","Tile","onError","tileIdMatch","xs","getRandomValue","cryptoObj","crypto","msCrypto","randomValueArray","getRandomValues","customEvent","cancelable","initCustomEvent","performance","paramName","parameterPrefix","displayOption","GetPagesNotSupportedError","_pageName","SetPageNotSupportedError","_config","RenderNotSupportedError","getVisualDescriptor","embeddedVisuals","embeddedVisual","currentPage","pageVisual","visualNotFoundError","detailedMessage","filtersLevel","getFiltersLevelUrl","exportDataType","exportDataRequestBody","setSlicerState","getSlicerState","__nested_webpack_require_650__","defaultAddTrackingProperties","defaultGetTrackingProperties","defaultIsErrorMessage","receiveWindow","pendingRequestPromises","windowMessageHandler","onMessageReceived","messagePropertyName","createDeferred","deferred","removeHandler","handlerIndex","sendResponse","sendingWindow","canMessageBeHandled","responseMessagePromise","responseMessage","warningMessage","__webpack_exports__","FilterBuilders_1","powerbi","powerBISDKGlobalServiceInstanceName","getter","__esModule","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Scope","Container","Format","Leaf","Scroll","Block","Inline","Attributor","Attribute","Class","Style","Store","ParchmentError","classes","ANY","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","TYPE","DATA_KEY","ATTRIBUTE","BLOT","BLOCK_BLOT","INLINE_BLOT","BLOCK_ATTRIBUTE","INLINE_ATTRIBUTE","BlotClass","bubble","blot","Definitions","Definition","blotName","keyName","NULL_CHARACTER","Delta","insert","newOp","retain","lastOp","chop","passed","failed","changeLength","iter","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","strings","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","transformPosition","nextType","toStr","gOPD","getOwnPropertyDescriptor","hasOwnConstructor","hasIsPrototypeOf","getProperty","copyIsArray","deep","BlockEmbed","bubbleFormats","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_get","receiver","desc","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","_possibleConstructorReturn","_inherits","subClass","superClass","_Parchment$Embed","domNode","attribute","insertAt","_Parchment$Block","descendants","leaf","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","sliceIterator","_arr","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","__quill","addContainer","emitter","whitelist","keyboard","addModule","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","mutations","lastRange","modify","contents","overwrite","refNode","setRange","_overload","_overload2","deleteText","getSelection","formatLine","formatText","setSelection","SILENT","API","_overload3","_overload4","_overload5","_overload6","getBounds","containerBounds","getLength","_overload7","_overload8","getContents","getFormat","MAX_VALUE","getRange","_overload9","_overload10","hasFocus","insertEmbed","_overload11","_overload12","insertText","dangerouslyPasteHTML","_overload13","_overload14","removeFormat","deleted","applyDelta","_overload15","_overload16","Range","USER","userConfig","DEFAULTS","import","themeConfig","moduleConfig","moduleClass","modifier","strict","oldDelta","shiftRange","_emitter","_emitter2","_map2","_map3","_map4","parchment","_Parchment$Inline","compare","isolate","moveChildren","selfIndex","otherIndex","TextBlot","_Parchment$Text","_eventemitter2","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","_len2","_key2","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","levels","_console","newLevel","pSlice","deepEqual","actual","expected","objEquiv","isUndefinedOrNull","ka","kb","canAdd","Code","_block2","_Inline","CodeBlock","_Block","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","optimize","unwrap","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","getDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","bullet","_scroll$line","_scroll$line2","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","cursorIndex","textBlot","CONTENTS","oldText","newText","combined","merged","_toConsumableArray","arr2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rangeCount","getRangeAt","normalizeNative","normalized","normalizedToRange","positions","startContainer","endContainer","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","scrollBounds","removeAllRanges","addRange","blur","rangeToNative","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","forEachAt","lengthLeft","detach","childBlot","refBlot","insertInto","targetParent","inclusive","addedNodes","removedNodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","replaceChild","FormatBlot","replaceWith","replacement","move","LeafBlot","lib","keepNull","Iterator","retOp","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","keyChild","valueChild","entryChild","symbols","allPropertyNames","__objToStr","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","takeRecords","SHORTKEY","_quill2","platform","Keyboard","_Module","bindings","addBinding","ENTER","handleEnter","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","evt","normalize","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","makeEmbedArrowHandler","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","outdent","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","protocol","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","togglePicker","buildItem","buildLabel","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","ClassAttributor","camelize","StyleAttributor","Theme","GUARD_TEXT","contentNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","align","justify","blockquote","clean","rtl","float","ordered","video","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","undo","redo","changeDelta","undoDelta","timestamp","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","textbox","pickers","picker","extendToolbar","buttons","icons","selects","fillSelect","fileInput","reader","_Tooltip","boundsContainer","linkRange","restoreFocus","extractVideoUrl","LinkedList","cur","curNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","ScrollBlot","mark","markParent","grandChild","InlineBlot","obj1","obj2","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","execCommand","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","longtext","shorttext","hm","diff_halfMatch_","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","v_offset","v_length","front","k1start","k1end","k2start","k2end","k1_offset","y1","x1","k2_offset","diff_bisectSplit_","diff_cleanupMerge","fix_cursor","norm","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","ndiffs","cursor_pointer","d_next","merge_tuples","fix_emoji","starts_with_pair_end","ends_with_pair_start","fixed_diffs","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","count_delete","count_insert","text_delete","text_insert","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","EE","_events","_eventsCount","eventNames","exists","available","removeListener","removeAllListeners","addListener","setMaxListeners","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","DOM_KEY","CLIPBOARD_CONFIG","matchBreak","deltaEndsWith","ELEMENT_NODE","fontStyle","fontWeight","applyFormat","textIndent","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchVisual","addMatcher","_prepareMatching","prepareMatching","_prepareMatching2","paste","elementMatchers","textMatchers","_pair","endText","childrenDelta","nodeHeight","marginTop","marginBottom","replacer","Bold","addControls","Toolbar","_ret","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","addButton","addSelect","_Picker","colorLabel","stroke","IconPicker","defaultItem","TEMPLATE","rootBounds","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","List","_Container","listEventHandler","Italic","_Bold","Strike","Underline","_link","ATTRIBUTES","Video","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","_subscribe","thrownError","_throwIfClosed","lift","observerOrNext","isSubscriber","Subscriber","isObserver","isSubscription","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipeFromArray","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","currentObservers","observers","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","kind","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","hasConfig","_hasValue","EmptyError","_subject","_refCount","_connection","hasLift","getSubject","_teardown","connection","refCount","higherOrderRefCount","popScheduler","observableFactory","subscribeOn","schedule","scheduleAsyncIterable","executeSchedule","asyncIterator","scheduled","isInteropObservable","scheduleObservable","observeOn","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","resultSelector","mapOneOrManyArgs","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","fromInteropObservable","obs","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__asyncValues","e_1_1","concurrent","popNumber","mergeAll","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","isValidDate","onNext","onFinalize","OperatorSubscriber","shouldUnsubscribe","handledResult","innerSub","syncUnsub","concatMap","project","activeTask","lastValue","lastTime","emitWhenIdle","targetTime","defaultIfEmpty","keySelector","defaultCompare","previousKey","currentKey","finalize","hasDefaultValue","throwIfEmpty","mergeInternals","onBeforeNext","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","refCounter","sharedConnection","conn","share","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","onSubscriber","shareReplay","configOrBufferSize","windowTime","bufferSize","innerSubscriber","innerIndex","outerIndex","notifier","tapObserver","isUnsub","defaultErrorFactory","work","intervalProvider","AsyncAction","recycleAsyncId","requestAsyncId","_scheduler","_execute","errorValue","errored","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","animationFrameProvider","requestAnimationFrame","cancelAnimationFrame","animationFrameScheduler","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","async","getSymbolIterator","popResultSelector","getKeys","argsArgArrayOrObject","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","isObservable","__asyncGenerator","getReader","__await","releaseLock","liftedSource","callOrApply","fns","hexRegex","numRegex","consider","decimalPoint","trimmedStr","skipLike","numTrimmedByZeros","trimZeros","numStr","stateChangeExpr","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","inject","RTL_LOCALE_PATTERN","Directionality","_document","_resolveDirectionality","rawValue","BidiModule","coerceNumberProperty","fallbackValue","_isNumberValue","coerceArray","coerceElement","elementOrRef","extendStyles","importantProperties","removeProperty","toggleNativeDragInteractions","toggleVisibility","combineTransforms","initialTransform","parseCssTimeUnitsToMs","parseCssPropertyValue","computedStyle","getMutableClientRect","clientRect","isInsideClientRect","adjustClientRect","isPointerNearClientRect","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","scrollPosition","getViewportScrollPosition","handleScroll","_getEventTarget","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","scrollX","deepCloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","getContext","drawImage","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","activeEventListenerOptions","dragImportantProperties","DragRef","_dropContainer","_toggleNativeDragInteractions","_handles","_ngZone","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_disabledHandles","dragStartDelay","beforeStarted","released","ended","entered","exited","dropped","moved","_pointerDown","targetHandle","_getTargetHandle","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_endDragSequence","isDragging","isReceiving","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","constrainPosition","_initialClientRect","activeTransform","_applyRootElementTransform","_getDragDistance","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","getPlaceholderElement","getRootElement","getVisibleElement","withHandles","handles","disabledHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","_removeRootElementListeners","_initialTransform","SVGElement","_ownerSVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","_containInsideBoundaryOnResize","_parentDragRef","_anchor","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","disableHandle","enableHandle","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_preview","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","dropContainer","_createPlaceholderElement","shadowRoot","_getShadowRoot","_createPreviewElement","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isFakeEvent","isFakeTouchstartFromScreenReader","radiusX","radiusY","isFakeMousedownFromScreenReader","rootStyles","pointerMove","pointerUp","scrolled","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","isPointerOverContainer","_isOverContainer","previousIndex","previousContainer","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","rootRect","viewRef","createEmbeddedView","getRootNode","matchElementSize","getTransform","placeholderRect","getTransformTransitionDurationInMs","transitionedProperties","propertyIndex","rawDurations","rawDelays","placeholderConfig","placeholderTemplate","elementRect","handleElement","referenceRect","_getViewportScrollPosition","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","rootNodes","sourceRect","moveItemInArray","toIndex","transferArrayItem","currentArray","SingleAxisSortStrategy","_itemPositions","_previousSwap","drag","overlaps","withItems","pointerDelta","siblings","newIndex","_getItemIndexFromPointerPosition","isHorizontal","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","sibling","isDraggedItem","elementToOffset","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","withSortPredicate","_sortPredicate","getActiveItemsSnapshot","updateOnScroll","elementToMeasure","immediateSibling","itemPositions","lastItemRect","firstItemRect","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","receivingStarted","receivingStopped","_isDragging","_draggables","_siblings","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","_scrollNode","scrollStep","scrollBy","withScrollableParents","registerDropContainer","_sortStrategy","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_cacheParentPositions","previousItems","connectedTo","withOrientation","_scrollableElements","_clientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","getElementScrollDirections","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","_stopReceiving","_canReceive","elementFromPoint","_startReceiving","activeSiblings","initiator","draggedItems","activeCapturingEventOptions","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","_clearGlobalListeners","streams","eventOptions","DragDrop","createDrag","createDropList","CDK_DRAG_PARENT","CDK_DRAG_HANDLE","CDK_DRAG_PLACEHOLDER","CDK_DRAG_PREVIEW","CDK_DRAG_CONFIG","CDK_DROP_LIST","CdkDrag","_dragRef","_viewContainerRef","_dir","dragDrop","_changeDetectorRef","_selfHandle","_parentDrag","movedEvent","_assignDefaults","_dropListRef","_syncInputs","_handleEvents","onStable","_updateRootElement","_setupHandlesListener","freeDragPosition","rootSelectorChange","rootElementSelector","positionChange","firstChange","_getBoundaryElement","templateRef","startEvent","releaseEvent","endEvent","enterEvent","exitEvent","dropEvent","draggingDisabled","childHandleElements","_stateChanges","handleInstance","dragRef","i1$1","ɵdir","booleanAttribute","exportAs","CDK_DROP_LIST_GROUP","CdkDropListGroup","_items","_uniqueIdCounter","CdkDropList","_dropLists","_group","_scrollDispatcher","_unsortedItems","_setupInputSyncSubscription","_syncItemsWithRef","getSortedItems","_scrollableParentsResolved","scrollableParents","getAncestorScrollContainers","getElementRef","listAutoScrollDisabled","listOrientation","CdkScrollableModule","hasV8BreakIterator","v8BreakIterator","supportsPassiveEvents","rtlScrollAxisType","scrollBehaviorSupported","shadowDomIsSupported","Platform","_platformId","isBrowser","EDGE","TRIDENT","BLINK","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","supportsPassiveEventListeners","supportsScrollBehavior","Element","scrollToFunction","getRtlScrollAxisType","scrollContainer","overflow","_supportsShadowDom","createShadowRoot","attachShadow","rootNode","ShadowRoot","resolved","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","clearImmediate","immediateProvider","asapScheduler","AsapScheduler","AsapAction","auditTime","audit","durationSubscriber","endDuration","cleanupDuration","DataSource","ArrayDataSource","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","applyChanges","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","adjustedPreviousIndex","_insertView","viewArgsFactory","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","_VIEW_REPEATER_STRATEGY","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","_viewport","_minBufferPx","_maxBufferPx","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","viewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","_scrollStrategy","CdkFixedSizeVirtualScroll","ScrollDispatcher","_platform","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","scrollingContainers","_scrollableContainsElement","_getWindow","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","isRtl","_applyScrollToOptions","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","VIRTUAL_SCROLLABLE","CdkVirtualScrollable","measureViewportSize","viewportEl","SCROLL_SCHEDULER","_orientation","_calculateSpacerSize","viewportRuler","_detachedSubject","_renderedRangeSubject","appendOnly","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","checkViewportSize","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","newLength","_doChangeDetection","measureBoundingClientRectWithScrollOffset","rangesEqual","r1","r2","getOffsetToRenderedContentStart","axis","_renderedContentTransform","measureRenderedContentSize","_from","measureViewportOffset","fromRect","scrollerClientRect","contentEl","_contentWrapper","measureRangeSize","runAfter","runAfterChangeDetection","virtualScrollable","Optional","Inject","CdkVirtualForOf","cdkVirtualForOf","_cdkVirtualForOf","isDataSource","_dataSourceChanges","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","_needsUpdate","cdkVirtualForTemplate","_template","cdkVirtualForTemplateCacheSize","_viewRepeater","_differs","viewChange","pairwise","hasPrev","_changeDataSource","_differ","_onRenderedDataChange","renderedStartIndex","rangeLen","firstNode","lastNode","ngDoCheck","_renderedItems","_applyChanges","_updateContext","oldDs","newDs","_updateComputedContextProperties","_adjustedPreviousIndex","_getEmbeddedViewArgs","forEachIdentityChange","even","odd","CdkVirtualScrollableElement","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","port","pathname","newPath","go","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","includeHash","externalUrl","HashLocationStrategy","Location","locationStrategy","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","baseHref","_basePath","_stripOrigin","_stripIndexHtml","isCurrentPathEqualTo","_stripBasePath","basePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","NumberSymbol","Group","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleNumberSymbol","ɵfindLocaleData","ɵLocaleDataIndex","NumberSymbols","getLocaleNumberFormat","NumberFormats","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parseNumber","digits","integerLen","zeros","exponent","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","digit","dropTrailingZeros","minLen","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","minusSign","patternParts","positiveParts","integer","fraction","trunkLen","parseCookieValue","cookieStr","cookie","eqIndex","cookieName","cookieValue","WS_REGEXP","EMPTY_ARRAY","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","initialClasses","klass","ngClass","rawClass","_updateState","_applyStateDiff","nextEnabled","stateEntry","_toggleClass","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","ngForTemplate","applyViewChange","ilen","ngTemplateContextGuard","NgIf","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","_shouldRecreateView","viewContext","_createContextForwardProxy","Proxy","_target","Reflect","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","JsonPipe","_locale","isValue","formatNumber","strToNumber","formatPercent","_defaultCurrencyCode","currencyCode","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","formatCurrency","getNumberOfCurrencyDigits","DEFAULT_CURRENCY_CODE","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","isPlatformServer","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","pageXOffset","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","nextNode","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","Headers","setHeaderEntries","getAll","lcName","copyFrom","applyUpdate","toDelete","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","updates","cloneFrom","encoder","fromString","paramParser","rawParams","codec","param","eqIdx","appendAll","eKey","HttpContext","isBlob","isFormData","third","fourth","mightHaveBody","transferCache","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","addBody","events$","res$","jsonp","callbackParam","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","PRIMARY_HTTP_BACKEND","legacyInterceptorFnFactory","pendingTasks","ɵInitialRenderPendingTasks","taskId","HttpInterceptorHandler","backend","primaryHttpBackend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","runInInjectionContext","XSSI_PREFIX","xhrFactory","ɵloadImpl","xhr","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","onLoad","responseText","originalBody","sentHeaders","onDownProgress","lengthComputable","partialText","onUpProgress","upload","readyState","DONE","abort","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","provideHttpClient","feature","ɵproviders","LEGACY_INTERCEPTOR_FN","withInterceptorsFromDi","makeHttpFeature","ɵkind","defaultEquals","is","activeConsumer","inNotificationPhase","SIGNAL","setActiveConsumer","consumer","REACTIVE_NODE","lastCleanEpoch","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","consumerOnSignalRead","producerAccessed","assertConsumerNode","consumerIsLive","producerRemoveLiveConsumerAtIndex","producerAddLiveConsumer","producerUpdateValueVersion","consumerPollProducersForChange","producerNotifyConsumers","consumerMarkDirty","producerUpdatesAllowed","consumerBeforeComputation","consumerAfterComputation","prevConsumer","seenVersion","consumerDestroy","indexOfThis","assertProducerNode","lastIdx","idxProducer","UNSET","COMPUTING","ERRORED","COMPUTED_NODE","computation","throwInvalidWriteToSignalErrorFn","defaultThrowError","throwInvalidWriteToSignalError","postSignalSetFn","signalSetFn","signalValueChanged","producerIncrementEpoch","SIGNAL_NODE","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","cleanupFn","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","NG_ENV_ID","__NG_ENV_ID__","renderStringify","throwProviderNotFoundError","injectorName","assertDefined","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Host","Self","SkipSelf","_injectImplementation","getInjectImplementation","setInjectImplementation","impl","injectRootLimpMode","notFoundValue","injectableDef","_global","globalThis","_desc","ngMetadataName","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","convertToBitFlags","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","decorator","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","ShadowDom","EMPTY_OBJ","classIndexOf","classToSearch","startingIndex","foundIndex","setUpAttributes","namespaceURI","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","baseDef","getNgDirectiveDef","onPush","directiveDefs","pipeDefs","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","imul","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","inputTransforms","inputConfig","findHostDirectiveDefs","hostDirectives","debugInfo","defExtractor","dep","HOST","TVIEW","FLAGS","PARENT","NEXT","T_HOST","HYDRATION","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","EFFECTS_TO_SCHEDULE","REACTIVE_TEMPLATE_CONSUMER","HEADER_OFFSET","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","LContainerFlags","HasTransplantedViews","HasChildViewsToRefresh","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","SimpleChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","hostView","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","markViewForRefresh","markAncestorsForTraversal","requiresRefreshOrTraversal","updateAncestorTraversalFlagsOnAttach","storeLViewOnDestroy","onDestroyCallback","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isParent","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","setActiveConsumer$1","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","tData","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","annotationCls","deepForEach","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","provider","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","scopes","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","resolveInjectorInitializers","initializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","prevInjector","assertInInjectionContext","debugFn","getCurrentInjector","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","NULL","isNgModule","setDocument","getDocument","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","CSP_NONCE","ɵɵresolveWindow","ɵɵresolveDocument","maybeUnwrapFn","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","viewOrContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","nativeParent","nativeParentNode","nativeRemoveChild","applyContainer","parentRElement","applyView","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","detachView","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","consumerDestroy$1","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","policy$1","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","anchorNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","DOMParserHelper","inertDocumentHelper","getInertBodyElement","DOMParser","parseFromString","InertDocumentHelper","defaultDoc","inertDocument","implementation","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","startElement","endElement","checkClobberedElement","elAttrs","elAttr","encodeEntities","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","NONE","STYLE","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","resolveComponentFactory","noComponentFactoryError","ComponentFactoryResolver$1","injectElementRef","createElementRef","unwrapElementRef","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","Version","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","createComputed","createComputed$1","SIGNAL$1","signalFn","createSignal","createSignal$1","signalSetFn$1","updateFn","signalUpdateFn","signalUpdateFn$1","asReadonly","signalAsReadonlyFn","readonlyFn","nonReactiveReadsFn","isListLikeIterable","isJsObject","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","freeConsumers","REACTIVE_LVIEW_CONSUMER_NODE","REACTIVE_NODE$1","getOriginalError","originalError","_findOriginalError","INTERNAL_APPLICATION_ERROR_HANDLER","PRESERVE_HOST_CONTENT","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","directives","pipes","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","queries","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","elementAttributeInternal","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","errorHandler","textBindingInternal","updateTextNode","refreshView","inlineEffectRunner","currentConsumer","viewShouldHaveReactiveConsumer","getOrBorrowReactiveLViewConsumer","borrowReactiveLViewConsumer","consumerBeforeComputation$1","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","notifyEffect","consumerAfterComputation$1","maybeReturnReactiveLViewConsumer","detectChangesInViewIfAttached","detectChangesInComponent","hostLView","componentHostIdx","detectChangesInView","shouldRefreshView","consumerPollProducersForChange$1","markViewDirty","ViewRef$1","_cdRefInjectingView","notifyErrorHandler","_appRef","_attachedToViewContainer","viewRefs","reattach","detectChangesInternal","afterRenderEventManager","detectChangesInViewWhileDirty","retries","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DestroyRef","injectDestroyRef","NodeInjectorDestroyRef","removeLViewOnDestroy","APP_EFFECT_SCHEDULER","EffectScheduler","ZoneAwareMicrotaskScheduler","ZoneAwareQueueingScheduler","queuedEffectCount","queues","scheduleEffect","creationZone","flushQueue","hasQueuedFlush","flushTask","EffectHandle","effectFn","destroyRef","allowSignalWrites","watcher","createWatch","registerOnCleanup","notify","isInNotificationPhase","destroyWatchNode","isWatchNodeDestroyed","createWatch$1","onCleanup","runEffect","unregisterOnDestroy","manualCleanup","Zone","cdr","markedFeatures","performanceMarkFeature","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","isAngularZone","onInvokeTask","task","applyThis","applyArgs","shouldBeIgnoredByZone","__ignore_ng_zone__","invokeTask","onEnter","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","AfterRenderPhase","EarlyRead","Write","MixedReadWrite","NOOP_AFTER_RENDER_REF","afterNextRender","AfterRenderEventManager","callbackHandler","AfterRenderCallbackHandlerImpl","unregister","unregisterFn","AfterRenderCallback","callbackFn","executingCallbacks","buckets","deferredCallbacks","validateBegin","bucket","renderDepth","internalCallbacks","renderComponent","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","computeStaticStyling","writeToHost","ComponentFactoryResolver","ComponentFactory","toRefArray","nonMinified","ChainedInjector","parentInjector","refArray","stringifyCSSSelectorList","selectorList","isBoundToModule","projectableNodes","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","interpolation1","v0","interpolation2","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","_findMatchingDehydratedViewImpl","findMatchingDehydratedView","createAndRenderEmbeddedLView","declarationLView","templateTNode","embeddedTView","embeddedLView","dehydratedView","declarationViewLQueries","shouldAddViewToDom","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","createEmbeddedViewImpl","insertImpl","componentFactoryOrType","isComponentFactory","ngModuleRef","componentFactory","contextInjector","componentRef","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","_populateDehydratedViewsInLContainer","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","_locateOrCreateContainerAnchor","populateDehydratedViewsInLContainer","createContainerAnchorImpl","ɵɵconditional","containerIndex","matchingTemplateIndex","getLContainer","removeLViewFromLContainer","getExistingTNode","getLViewFromLContainer","ɵɵelementStart","elementStartFirstCreatePass","elementStart","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","LocaleDataIndex","PluralCase","ng","common","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","Eras","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","CurrencyCode","CurrencySymbol","CurrencyName","ExtraData","DEFAULT_LOCALE_ID","LOCALE_ID$1","isSubscribable","ɵɵlistener","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵpropertyInterpolate2","ɵɵpropertyInterpolate8","v3","v4","v5","v6","v7","interpolation8","ɵɵreference","getContextLView","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","interpolation3","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_parent","_bootstrapComponents","destroyCbs","componentFactoryResolver","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","_injector","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵsetComponentScope","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","bindingRoot","getPureFunctionReturnValue","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction5","exp5","ɵɵpureFunction6","exp6","ɵɵpureFunction7","exp7","ɵɵpureFunctionV","exps","pureFunctionVInternal","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind4","symbolIterator","_results","QueryList","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","POSITIVE_INFINITY","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createTemplateRef","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","Console","InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","ApplicationInitStatus","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_BOOTSTRAP_LISTENER","optionsReducer","objs","_bootstrapListeners","_runningTick","_destroyListeners","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","compRef","_loadComponent","tick","attachView","viewCount","warnIfDestroyed","NgZoneChangeDetectionScheduler","applicationRef","initialize","_onMicrotaskEmptySubscription","ngZoneApplicationErrorHandlerFactory","userErrorHandler","getGlobalLocale","$localize","PLATFORM_DESTROY_LISTENERS","PlatformRef","_modules","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","exceptionHandler","_callAndReportToErrorHandler","initStatus","setLocaleId","localeId","_moduleDoBootstrap","compilerOptions","compileNgModuleFactory","ngDoBootstrap","destroyListeners","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","setThrowInvalidWriteToSignalError$1","runPlatformInitializers","createPlatformInjector","assertPlatform","requiredToken","platformCore","ApplicationModule","reflectComponentType","isSignal","BaseControlValueAccessor","_elementRef","onTouched","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredTrue","requiredTrueValidator","minLengthValidator","maxLengthValidator","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","composeAsync","minlength","requiredLength","actualLength","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","presentValidators","composeValidators","forkJoin","remainingCompletions","remainingEmissions","sourceIndex","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","untouched","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","ControlContainer","formDirective","valueAccessor","AbstractControlStatus","_cd","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearAsyncValidators","onlySelf","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","addControl","removeControl","setControl","patchValue","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","initValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","isPropertyUpdated","viewModel","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","removeListItem","isFormControlState","_onChange","_applyFormState","nonNullable","initialValueIsDefault","AbstractFormGroupDirective","_checkParentType","addFormGroup","removeFormGroup","getFormGroup","ɵAbstractFormGroupDirective_BaseFactory","formControlBinding$1","NgModel","resolvedPromise","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","ɵNumberValueAccessor_BaseFactory","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningSentOnce","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","ngSubmit","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","getControl","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","syncPendingControls","onReset","oldCtrl","newCtrl","isFormControl","setUpFormContainer","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","REQUIRED_VALIDATOR","ɵRequiredValidator_BaseFactory","MIN_LENGTH_VALIDATOR","MinLengthValidator","ɵMinLengthValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","ɵMaxLengthValidator_BaseFactory","ɵInternalFormsSharedModule","FormArray","_registerControl","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","UntypedFormBuilder","controlsConfig","ɵUntypedFormBuilder_BaseFactory","warnOnNgModelWithFormControl","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","relativePath","baseURI","resetBaseElement","getCookie","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_plugins","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","appId","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","svg","xhtml","xlink","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","throwOnSyntheticProps","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","decoratePreventDefault","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Up","Down","Menu","Win","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","withServerTransition","newTitle","createTitle","EVENT_NAMES","pan","panstart","panmove","panend","pancancel","panleft","panright","panup","pandown","pinch","pinchstart","pinchmove","pinchend","pinchcancel","pinchin","pinchout","pressup","rotatestart","rotatemove","rotateend","rotatecancel","swipeleft","swiperight","swipeup","swipedown","doubletap","HAMMER_LOADER","buildHammer","mc","HammerGesturesPlugin","loader","_loaderPromise","isCustomEvent","cancelRegistration","eventObj","ɵConsole","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","combineLatest","observables","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","hasChildren","posParams","consumed","shallowEqual","getDataKeys","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","currentRoute","childOutlets","childSnapshot","outlet","createUrlTreeFromSegmentGroup","nav","computeNavigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","isMatrixParams","createPositionApplyingDoubleDots","ci","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","curr","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","NavigationSkipped","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","Tree","_root","pathFromRoot","findNode","findPath","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_futureSnapshot","_routerState","_paramMap","getInherited","paramsInheritanceStrategy","loadComponent","_resolvedData","hasStaticTitle","_resolve","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRoute","activatedRouteData","cmp","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","mirror","createNode","routeReuseStrategy","prevState","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","standardizeConfig","loadChildren","getOutlet","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","ApplyRedirects","lineralizeSegments","applyRedirectCommands","newTree","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","isCanMatch","createWildcardMatchResult","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","NoLeftoversInUrl","configLoader","rootComponentType","applyRedirects","absoluteRedirectCount","allowRedirects","noMatchError","freeze","routeState","createUrlTreeFromSnapshot","inheritParamsAndData","processSegmentGroup","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","scan","scanInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","newSegments","getChildConfig","childConfig","childInjector","_loadedComponent","getResolve","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","cfg","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","flattenRouteTree","switchTap","nextResult","TitleStrategy","buildTitle","getResolvedTitleForRoute","DefaultTitleStrategy","updateTitle","ROUTER_CONFIGURATION","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","CREATE_VIEW_TRANSITION","VIEW_TRANSITION_OPTIONS","createViewTransition","startViewTransition","skipNextTransition","resolveViewTransitionStarted","viewTransitionStarted","createRenderPromise","onViewTransitionCreated","NavigationTransitions","hasRequestedNavigation","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","titleStrategy","urlHandlingStrategy","afterPreactivation","handleNavigationRequest","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","extractedUrl","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","initialUrl","previousNavigation","urlTransition","navigated","isUpdatingInternalState","isUpdatedBrowserUrl","onSameUrlNavigation","serializer","recognize$1","finalUrl","routesRecognized","navStart","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivateObservables","closestInjector","isCanDeactivate","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","routesWithResolversToRun","routesNeedingDataUpdates","newRoute","routesProcessed","runResolve","resolveNode","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","isRedirectingNavigationCancelingError$1","navCancel","isBrowserTriggeredNavigation","DefaultRouteReuseStrategy","detachedTree","ɵDefaultRouteReuseStrategy_BaseFactory","StateManager","HistoryStateManager","canceledNavigationResolution","urlUpdateStrategy","rawUrlTree","currentPageId","lastSuccessfulId","routerState","stateMemento","createStateMemento","getCurrentUrlTree","getRawUrlTree","browserPageId","ɵrouterPageId","getRouterState","registerNonRouterCurrentEntryChangeListener","handleRouterEvent","setBrowserUrl","restoreHistory","generateNgRouterState","navigation","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","ɵHistoryStateManager_BaseFactory","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","exactMatchOptions","subsetMatchOptions","stateManager","disposed","isNgZoneEnabled","navigationTransitions","componentInputBindingEnabled","eventsSubscription","resetConfig","subscribeToNavigationEvents","mergedTree","scheduleNavigation","isPublicRouterEvent","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","nonRouterCurrentEntryChangeSubscription","stateCopy","parseUrl","serializeUrl","getCurrentNavigation","navigationExtras","relativeToUrlSegmentGroup","removeEmptyProps","navigateByUrl","validateCommands","matchOptions","priorPromise","RouterLink","tabIndexAttribute","onChanges","isAnchorElement","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","sanitizedValue","RouterLinkActive","_isActive","isActiveChange","routerEventsSubscription","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","withViewTransitions","skipInitialTransition","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","provideForRootGuard","useHash","provideInitialNavigation","bindToComponentInputs","enableViewTransitions","ROUTER_INITIALIZER","locationInitialized","FormlyField_ng_template_0_Template","FormlyGroup_formly_field_0_Template","getFieldId","formId","hasKey","getKeyPath","_keyPath","defineHiddenProp","FORMLY_VALIDATORS","assignFieldValue","resetOnHide","assignModelValue","getFieldValue","reverseDeepMerge","srcArg","isBlankString","objAndSameType","_isAMomentObject","propDesc","observeDeep","setFn","_observers","getField","markFieldForCheck","_componentRefs","FORMLY_CONFIG","FormlyConfig","checkExpressionOn","renderFormlyFieldElement","parentForm","presets","extensionsByPriority","addConfig","setType","setValidator","setWrapper","addValidatorMessage","setSortedExtensions","throwIfNotFound","mergeExtendedType","getMergedField","extendDefaults","optionsTypes","resolveFieldTypeRef","_componentRef","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","extensionOptions","extensionOption","prio","extendedType","FormlyFormBuilder","buildForm","core","_setOptions","disableTreeValidityCall","_build","checkExpressions","_detectChanges","onPopulate","postPopulate","_buildForm","findControl","shareFormControl","disabledObserver","updateValidity","clearControl","FormlyTemplate","FormlyFieldTemplates","FormlyField","hostContainerRef","hostObservers","componentRefs","hooksObservers","detectFieldBuild","valueChangesUnsubscribe","containerRef","triggerHook","resetRefs","hostObserver","renderField","wps","attachComponentRef","inlineType","_localFields","subscribes","_expressions","expressionObserver","value$","fieldObserver","parsers","parserFn","templateFieldsSubs","FormlyForm","fieldTemplates","modelChange","_modelChangeValue","immutable","setField","checkExpressionChange","FormlyAttributes","uiAttributesCache","uiEvents","fieldAttrElements","_elementRefs","detachElementRef","attachElementRef","focusObserver","toggleFocus","uiAttributes","isFocused","onHostChange","_formlyControls","FormlyGroup","ɵFormlyGroup_BaseFactory","fieldGroupClassName","i2$1","FormlyValidationMessage","EXPR_VALIDATORS","errorMessage$","fieldForm","errorPath","updateArrayElementKey","ɵFieldArrayType_BaseFactory","_staticContent","fieldComponent","ɵFieldWrapper_BaseFactory","FormlyTemplateType","innerHtml","safeHtml","FieldExpressionExtension","_hiddenFieldsForCheck","hideExpression","parseExpressions","evalExpr","expressionProperties","checkLocked","ignoreCache","fieldChanged","changeHideState","_checkField","parentExpression","rootValue","evalStringExpression","argNames","exprValue","evalExpression","argVal","changeDisabledState","_evalExpressionPath","emitExpressionChanges","arrayPath","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","wrapNgValidatorFn","VALIDATORS","minLengthResult","minLengthKey","Ut","maxLengthResult","maxLengthKey","vi","validatorOption","handleResult","nt","_childrenErrors","childCtrl","_errorPath","it","_toDelete","childErrors","FieldFormExtension","addFormControl","controlOptions","hasValidators","CoreExtension","initRootOptions","initFieldProps","getFieldComponentInstance","initFieldOptions","_markForCheck","resetModel","_initialModel","updateInitialValue","setDefaultValue","componentRefInstance","fieldComponentRef","_proxyInstance","defaultFormlyConfig","configService","configs","race","argsOrArgArray","raceInit","IDB_BROKEN_ERROR","IDBBrokenError","SerializationError","LS_PREFIX","IDB_DB_NAME","IDB_DB_VERSION","IDB_STORE_NAME","IDB_NO_WRAP","ValidationError","IndexedDBDatabase","database","wrapIndex","dbName","storeName","dbVersion","noWrap","backingStore","openKeyCursor","success$","listenError","getKey","indexedDB","createStore","objectStoreNames","createObjectStore","objectStore","listenTransactionEvents","transactionOrRequest","complete$","LocalStorageDatabase","unparsedData","prefixKey","parsedData","serializedData","dataPrototype","getUnprefixedKey","prefixedKey","MemoryDatabase","memoryStorage","JSONValidator","validateString","validateNumber","validateBoolean","validateArray","validateObject","validateConst","validateEnum","exclusiveMaximum","exclusiveMinimum","uniqueItems","validateTuple","requiredProp","LocalDatabase","localDatabaseFactory","StorageMap","jsonValidator","notifiers","catchIDBBroken","backingEngine","fallbackBackingStore","watch","operationCallback","lim","p2b","n2b","b2n","n2p","map$1","E","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb2hsl","hueValue","calln","hsl2rgb","X","U","G","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","RGB_RE","modHSL","ratio","functionParse","rgbParse","hueParse","hwb2rgb","hsv2rgb","Color","hexParse","nameParse","unpack","unpacked","tkeys","nk","transparent","_rgb","_valid","rgbString","hexString","isShort","alpha","hslString","mix","w2","w1","rgb1","rgb2","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","deg","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","loopable","_elementsEqual","datasetIndex","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","_capitalize","defined","setsEqual","TAU","PITAU","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","almostEquals","epsilon","niceNum","roundedRange","niceRange","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","_lookupByKey","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","argsToUse","ticking","_toLeftRightCenter","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","intlCache","getNumberFormat","formatter","formatters","numeric","chart","notation","maxTick","calculateDelta","logDelta","numDecimal","logarithmic","remain","significand","Ticks","descriptors","getScope$1","Defaults","_descriptors","_appliers","devicePixelRatio","getDevicePixelRatio","lineHeight","hoverBorderColor","hoverColor","indexAxis","interaction","includeInvisible","onHover","parsing","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","Ee","appliers","_scriptable","_indexable","_fallback","applyAnimationsDefaults","loop","resize","animations","applyLayoutsDefaults","autoPadding","applyScaleDefaults","clip","grace","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","dash","dashOffset","minRotation","maxRotation","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","jlen","thing","nestedThing","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rad","translate","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","_isPointInArea","clipArea","unclipArea","_steppedLineTo","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","strikethrough","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxDescent","yDecoration","actualBoundingBoxAscent","strokeStyle","fillStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","strokeColor","setRenderOpts","textAlign","textBaseline","backdrop","strokeText","fillText","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","cacheable","createContext","_createResolver","prefixes","rootScopes","getTarget","finalRootScopes","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","_resolveWithPrefixes","readKey","needsSubResolver","createSubResolver","getKeysFromAllScopes","ownKeys","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","_resolveWithContext","isScriptable","_resolveScriptable","_resolveArray","isIndexable","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","capControlPoint","_updateBezierControlPoints","controlPoints","cubicInterpolationMode","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","iPixel","vPixel","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","valueInPixels","getPositionedStyle","useOffsetPos","getRelativePosition","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","offsetX","offsetY","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalizeSegment","_boundSegment","startBound","endBound","getSegment","prevValue","inside","subStart","_boundSegments","readStyle","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","styleChanged","prevStyle","Animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","currentStep","_refresh","_update","running","draw","_total","_getAnims","animator","interpolators","factor","c0","Animation","_fn","_easing","_start","_loop","_prop","_to","_promises","elapsed","Animations","_chart","_properties","configure","animatedProps","_animateOptions","resolveTargetOptions","$shared","$animations","_createAnimations","awaitAll","anim","scaleClip","allowedOverflow","getSortedDatasetIndices","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","getStackKey","indexScale","valueScale","Re","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_type","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","linkScales","_stacked","addElements","isPluginEnabled","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","convertObjectDataToArray","adata","isExtensible","listenArrayEvents","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","createDataContext","dataIndex","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","getAllScaleValues","_cache","$bar","visibleMetas","updateMinAndPrev","getPixelForTick","parseFloatBar","startValue","endValue","barStart","barEnd","_custom","parseArrayOrPrimitive","isFloatBar","setBorderSkipped","borderSkipped","borderProps","horizontal","enableBorderRadius","parseEdge","swap","startEnd","setInflateAmount","inflateAmount","BarController","categoryPercentage","barPercentage","_index_","_value_","iAxisKey","vAxisKey","getBasePixel","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","baseValue","minBarLength","actualBase","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","getLineWidthForValue","computeFlexCategoryTraits","computeFitCategoryTraits","thickness","stackIndex","rects","BubbleController","DoughnutController","animateRotate","animateScale","spacing","aspectRatio","generateLabels","fontColor","legendItem","toggleDataVisibility","innerRadius","outerRadius","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","toPercentage","chartWeight","_getRingWeight","ratioX","ratioY","getRatioAndOffset","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","minX","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","centerX","centerY","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","LineController","_dataset","_datasetIndex","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","angleLines","pointLabels","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","animationOpts","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","controllers","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","getElement","abstract","DateAdapterBase","members","adapters","binarySearch","metaset","lookupMethod","_reversePixels","evaluateInteractionItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","minDistance","evaluationFunc","getCenterPoint","getNearestRadialItems","getProps","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","placed","stackWeight","addBox","_layers","removeBox","minPadding","availableWidth","buildLayoutBoxes","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","handleMaxPadding","updatePos","BasePlatform","acquireContext","releaseContext","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","pointerenter","pointerleave","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","dpr","createResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","DomPlatform","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","$proxies","proxies","bbWidth","bbHeight","maxHeight","containerSize","getContainerSize","containerBorder","containerPadding","final","newTicks","majorStart","majorEnd","offsetFromEdge","getTicksLimit","ticksLength","maxTicksLimit","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","tickOpts","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","_addGrace","minmax","keepZero","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","determinedMaxTicks","determineMaxTicks","_tickSize","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","factors","_factorize","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","_int16Range","getDecimalForPixel","createTickContext","createScaleContext","optionTicks","rot","_computeGridLineItems","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","positionAxisID","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","itemDefaults","defaultRoutes","routeDefaults","propertyParts","sourceScope","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","getPlugin","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","_init","_createDescriptors","invalidate","_oldCache","_notifyStateChanges","allPlugins","localIds","createDescriptors","getOpts","pluginOpts","previousDescriptors","pluginScopeKeys","getIndexAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","retrieveAxisFromDatasets","boundDs","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initData","keyCache","keysCached","cachedKeys","addIfFound","Config","initConfig","_scopeCache","_resolverCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","needContext","hasFunction","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","onProgress","getCanvas","getChart","moveNumericKeys","intKey","getSizeForArea","Chart","invalidatePlugins","initialCanvas","existingChart","_detectPlatform","OffscreenCanvas","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","toRadiusCorners","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","lineCap","lineJoin","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","getLineMethod","stepped","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","_computeSegments","segmentOptions","findStartAndEnd","splitByStyles","doSplitByStyles","baseStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","solidSegments","_interpolate","_getInterpolationMethod","segmentMethod","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","getBarBounds","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","clipArc","angleMargin","BarElement","boundingRects","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","addRectPath","hasRadius","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","containsColorsDefinitions","plugin_colors","forceOverride","_args","containsColorsDefinition","colorizer","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","decimated","getStartAndCountOfVisiblePointsSimplified","lttbDecimation","samples","bucketWidth","sampledIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","xMin","intermediateIndex1","intermediateIndex2","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","_pointsFromSegments","linePoints","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","fillOption","decodeTargetIndex","firstCh","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","simpleArc","_drawfill","getLineByIndex","_buildStackLine","sourcePoints","getLinesBelow","below","computeBoundary","computeCircularBoundary","_getTargetValue","computeLinearBoundary","_getTargetPixel","lineOpts","doFill","clipVertical","clipY","lineLoop","tpoints","targetSegments","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","_itemHeight","heightLimit","currentColWidth","currentColHeight","calculateItemSize","calculateItemWidth","legendItemText","calculateItemHeight","fontLineHeight","calculateLegendItemHeight","adjustHitBoxes","rtlHelper","hitbox","_draw","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","afterEvent","useBorderRadius","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","plugin_subtitle","positioners","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","chartWidth","doesNotFitWithAlign","caretSize","caretPadding","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","_eventPosition","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","createTooltipContext","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","Colors","Decimation","Filler","SubTitle","afterInit","afterDraw","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","findOrAddLabel","addedLabels","addIfString","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","maxTicks","stepSize","computeTickLimit","generateTicks$1","generationOptions","dataRange","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","MIN_SPACING","almostWhole","rounded","decimalPlaces","log10Floor","changeExponent","isMajor","tickVal","rangeExp","rangeStep","getTickBackdropHeight","measureLabelSize","determineLimits","updateLimits","limits","hLimits","vLimits","createPointLabelItem","itemOpts","outerDistance","drawingArea","extra","additionalAngle","pointLabelPosition","getPointPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","INTERVALS","UNITS","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","_tickFormatFunction","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","registerables","LinearScale","LogarithmicScale","_zero","generateTicks","minExp","startExp","lastTick","RadialLinearScale","centerPointLabels","_pointLabels","_pointLabelItems","fitWithPointLabels","valueCount","pointLabelOpts","getPointLabelContext","plFont","setCenterPoint","buildPointLabelItems","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","drawRadiusLine","gridLineOpts","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_assocIndexOf","_ListCache","__WEBPACK_DEFAULT_EXPORT__","_nativeCreate","_Hash","_getMapData","_MapCache","_SetCache","_Stack","_arrayLikeKeys","_baseIsNaN","_arrayIncludes","_arrayIncludesWith","_baseDifference","_baseFor","_baseEach","_isFlattenable","_baseFlatten","_baseGetTag","_arraySome","_equalArrays","_mapToArray","_setToArray","_baseIsEqualDeep","othProps","_baseIsEqual","_isStrictComparable","_matchesStrictComparable","_baseMatches","_baseHasIn","_baseMatchesProperty","lodash_es_property","_baseIteratee","lodash_es_constant","_setToString","_baseRest","lodash_es_memoize","_stringToPath","_castPath","_baseIsNative","_getNative","_getSymbols","_DataView","_Promise","_Set","_WeakMap","_getTag","_copyObject","_baseKeysIn","lodash_es_keysIn","_getPrototype","_getSymbolsIn","_getAllKeysIn","_cloneArrayBuffer","_initCloneByTag","_baseCreate","lodash_es_isMap","lodash_es_isSet","_baseClone","lodash_es_cloneDeep","lodash_es_forEach","_baseHas","lodash_es_has","_baseIsArguments","lodash_es_isArguments","lodash_es_isBuffer","lodash_es_isTypedArray","_nativeKeys","lodash_es_keys","_compareAscending","_baseOrderBy","lodash_es_orderBy","_baseToString","lodash_es_toString","DateTimeFromIsoPipe","DateTimeFromRfc2822Pipe","fromRFC2822","DateTimeToFormatPipe","DateTimeToLocalPipe","DateTimeToRelativePipe","LuxonError","InvalidDateTimeError","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","ianaName","isUniversal","offsetName","formatOffset","otherZone","singleton","SystemZone","parseZoneInfo","dtfCache","typeToPos","era","ianaZoneCache","IANAZone","isValidSpecifier","isValidZone","zoneName","dtf","makeDTF","hour12","adOrBc","formatToParts","partsOffset","formatted","hackyOffset","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","asTS","objToLocalTS","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","weekInfoCache","listStuff","englishFn","intlFn","listingMode","PolyNumberFormatter","intl","forceSimple","padTo","otherOpts","intlOpts","minimumIntegerDigits","inf","getCachedINF","fixed","roundTo","PolyDateFormatter","originalZone","gmtOffset","offsetZ","PolyRelFormatter","isEnglish","hasRelative","rtf","getCachedRTF","cacheKeyOpts","RelativeTimeFormat","formatRelativeTime","narrow","quarters","weeks","lastable","isDay","isInPast","fmtValue","lilUnits","fmtUnit","English","fallbackWeekSettings","firstDay","minimalDays","weekend","Locale","fromOpts","numberingSystem","outputCalendar","weekSettings","defaultToEN","specifiedLocale","defaultLocale","localeR","systemLocale","numberingSystemR","defaultNumberingSystem","outputCalendarR","defaultOutputCalendar","weekSettingsR","validateWeekSettings","defaultWeekSettings","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","parseLocaleString","localeStr","xIndex","uIndex","selectedStr","smaller","calendar","intlConfigString","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","supportsFastNumbers","alts","redefaultToEN","redefaultToSystem","formatStr","mapMonths","ms","weekdays","mapWeekdays","meridiems","eras","matching","dtFormatter","numberFormatter","relFormatter","listFormatter","getCachedLF","ListFormat","getWeekSettings","hasLocaleWeekInfo","getCachedWeekInfo","getWeekInfo","weekInfo","getStartOfWeek","getMinDaysInFirstWeek","getWeekendDays","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","InvalidZone","normalizeZone","lowered","throwOnInvalid","twoDigitCutoffYear","cutoffYear","resetCaches","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","UTC","setUTCFullYear","getUTCFullYear","getUTCDay","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","month0","isoWeekdayToLocal","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekYear","weekNumber","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","usesLocalWeekValues","localWeekday","localWeekNumber","localWeekYear","hasInvalidGregorianData","validYear","validMonth","integerBetween","validDay","daysInMonth","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","bestBy","by","best","padded","parseInteger","parseFloating","parseMillis","towardZero","modMonth","floorMod","firstWeekOffset","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","RangeError","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","stringifyTokens","splits","tokenToString","literal","macroTokenToFormatOpts","Formats","DD","DDD","DDDD","ttt","tttt","TTT","TTTT","fff","ffff","FF","FFF","FFFF","Formatter","parseFormat","currentFull","bracketed","formatOpts","systemLoc","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","formatRange","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","monthForDateTime","weekdayForDateTime","maybeMacro","eraForDateTime","meridiemForDateTime","formatDurationFromString","dur","tokenToField","realTokens","lildur","shiftTo","ianaRegex","combineRegexes","regexes","combineExtractors","extractors","mergedVals","mergedZone","ex","patterns","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","extractISOTime","extractISOOffset","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOYmd","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","conversionAccuracy","matrix","Duration","durationToMillis","vals","normalizeValues","conv","rollUp","accurate","isLuxonDuration","normalizeUnit","fromDurationLike","durationLike","isDuration","parseISODuration","fromISOTime","parseISOTimeOnly","fmtOpts","toHuman","unitDisplay","toISOTime","millis","suppressMilliseconds","suppressSeconds","includePrefix","includeOffset","for","invalidReason","mapUnits","reconfigure","rescale","removeZeroes","newVals","shiftToAll","built","accumulated","lastUnit","own","ak","negated","invalidExplanation","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","startIsValid","endIsValid","isInterval","toDuration","useLocaleWeeks","hasSame","isAfter","isBefore","splitAt","dateTimes","splitBy","divideEqually","numberOfParts","abutsStart","abutsEnd","engulfs","intervals","sofar","currentCount","ends","toISODate","mapEndpoints","mapFn","Info","hasDST","isValidIANAZone","locObj","getMinimumDaysInFirstWeek","getWeekendWeekdays","monthsFormat","weekdaysFormat","relative","localeWeek","dayDiff","earlier","later","utcDayStart","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","deser","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","escapeToken","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","hour24","dummyDateTimeCache","expandMacroTokens","maybeExpandMacroToken","formatOptsToTokens","explainFromTokens","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","disqualifyingUnit","regexString","buildRegex","rawMatches","matchIndex","specificOffset","dateTimeFromMatches","toField","df","getDummyDateTime","resolvedOpts","tokenForPart","isSpace","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","localWeekData","old","fixOffset","localTS","utcGuess","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","longFormat","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","normalizeUnitWithLocalWeeks","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","diffRelative","calendary","differ","lastOpts","argList","ot","isLuxonDateTime","zoneToUse","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","hasInvalidWeekData","validWeek","validWeekday","hasInvalidOrdinalData","validOrdinal","gregorian","tsFinal","offsetFinal","parseISODate","parseRFC2822Date","preprocessRFC2822","fromHTTP","parseHTTPDate","localeToUse","parseFromTokens","fromSQL","parseSQL","isDateTime","parseFormatForOpts","localeOpts","tokenList","expandFormat","isWeekend","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","getPossibleOffsets","minuteMs","oEarlier","oLater","ts1","ts2","isInLeapYear","weeksInLocalWeekYear","resolvedLocaleOptions","keepCalendarTime","newTS","offsetGuess","asObj","setLocale","settingWeekStuff","normalizedUnit","toLocaleParts","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","maybeArray","otherIsLater","diffed","highWater","lowestOrder","highOrderDiffs","differs","remainingMillis","lowerOrderUnits","yi","diffNow","until","inputMs","adjustedToZone","toRelativeCalendar","fromFormatExplain","fromStringExplain","dateTimeish","_defaults","breaks","gfm","pedantic","silent","tokenizer","walkTokens","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","unescapeTest","getRegex","cleanUrl","noopTest","splitCells","tableRow","cells","escaped","rtrim","suffLen","currChar","outputLink","lexer","inLink","inlineTokens","_Tokenizer","rules","codeBlockStyle","fences","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","lang","_escapes","heading","trimmed","blockTokens","bull","isordered","loose","itemRegex","itemContents","endsWithBlankLine","endEarly","nextLine","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","spacers","hasMultipleLineBreaks","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastCharLength","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","listItemStart","_tag","_comment","reflinkSearch","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","lex","lexInline","cutSrc","lastParagraphClipped","extTokenizer","startBlock","tempSrc","tempStart","getStartIndex","keepPrevChar","startInline","_Renderer","infostring","listitem","tablerow","tablecell","cleanHref","_TextRenderer","_Parser","textRenderer","parseInline","renderers","genericToken","headingToken","tableToken","listToken","itemBody","textToken","_Hooks","preprocess","postprocess","markedInstance","Marked","setOptions","#parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","use","childTokens","prevRenderer","extLevel","rendererFunc","tokenizerFunc","prevTokenizer","hooksFunc","prevHook","passThroughHooks","packWalktokens","origOpt","#onError","marked","getDefaults","_getDefaults","ClipboardButtonComponent","_buttonClick$","copied$","copiedText$","onCopyToClipboardClick","CLIPBOARD_OPTIONS","PrismPlugin","CommandLine","LineHighlight","LineNumbers","MARKED_EXTENSIONS","MARKED_OPTIONS","SECURITY_CONTEXT","MarkdownService","DEFAULT_MARKED_OPTIONS","clipboardOptions","securityContext","DEFAULT_KATEX_OPTIONS","delimiters","DEFAULT_MERMAID_OPTIONS","startOnLoad","DEFAULT_CLIPBOARD_OPTIONS","buttonComponent","DEFAULT_PARSE_OPTIONS","decodeHtml","emoji","mermaid","markedOptions","disableSanitizer","DEFAULT_RENDER_OPTIONS","katexOptions","mermaidOptions","_reload$","reload$","parseOptions","extendsRendererForExtensions","extendsRendererForMermaid","trimIndentation","decoded","emojified","parseEmoji","parseMarked","renderClipboard","renderKatex","renderMermaid","getSource","handleExtension","Prism","highlightAllUnder","noLanguageElements","textarea","extendedRenderer","ɵNgxMarkdownRendererExtendedForExtensions","ɵNgxMarkdownRendererExtendedForMermaid","defaultCode","isEscaped","urlProtocolIndex","urlWithoutProtocol","lastSlashIndex","lastUrlSegment","lastDotIndex","joypixels","shortnameToUnicode","renderMathInElement","ClipboardJS","buttonTemplate","preElements","preElement","preWrapperElement","toolbarWrapperElement","embeddedViewRef","clipboardInstance","insertAdjacentElement","onmouseover","onmouseout","mermaidElements","indentStart","lineIdentStart","MarkdownComponent","_disableSanitizer","coerceBooleanProperty","_inline","_clipboard","_emoji","_katex","_mermaid","lineHighlight","_lineHighlight","lineNumbers","_lineNumbers","commandLine","_commandLine","markdownService","ready","destroyed$","loadContent","handleSrc","handleData","handleTransclusion","parsedOptions","renderOptions","clipboardButtonComponent","clipboardButtonTemplate","handlePlugins","setPluginClass","setPluginOptions","dataFilterOutput","filterOutput","dataHost","dataPrompt","dataOutput","dataUser","dataLine","dataLineOffset","lineOffset","dataStart","attributeValue","attributeName","toLispCase","upperChars","provideMarkdown","markdownModuleConfig","markedExtensions","MermaidAPI","SecurityLevel","Strict","Loose","Antiscript","Sandbox","Base","Forest","Dark","Neutral","Warn","FilterMatchMode","FilterOperator","FilterService","removeAccents","notContains","stringValue","notEquals","isNot","dateIs","toDateString","dateIsNot","dateBefore","dateAfter","messageSource","clearSource","messageObserver","clearObserver","addAll","OverlayService","clickSource","clickObservable","PrimeNGConfig","filterMatchModeOptions","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","noFilter","matchAny","addRule","removeRule","accept","choose","fileSizeTypes","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","chooseYear","chooseMonth","chooseDate","prevDecade","nextDecade","prevYear","nextYear","prevMonth","nextMonth","prevHour","nextHour","prevMinute","nextMinute","prevSecond","nextSecond","am","firstDayOfWeek","weekHeader","weak","passwordPrompt","trueLabel","falseLabel","nullLabel","unselectAll","moveTop","moveUp","moveDown","moveBottom","moveToTarget","moveToSource","moveAllToTarget","moveAllToSource","pageLabel","firstPageLabel","lastPageLabel","nextPageLabel","prevPageLabel","rowsPerPageLabel","previousPageLabel","jumpToPageDropdownLabel","jumpToPageInputLabel","selectRow","unselectRow","expandRow","collapseRow","showFilterMenu","hideFilterMenu","filterOperator","filterConstraint","editRow","saveEdit","cancelEdit","listView","gridView","slide","slideNumber","translationSource","setTranslation","AutoFocus","focusableElements","getAttributes","isLabelEmpty","Button_ng_container_2_Template","Button_ng_container_3_ng_container_1_span_1_Template","loadingIcon","Button_ng_container_3_ng_container_1_SpinnerIcon_2_Template","spinnerIconClass","Button_ng_container_3_ng_container_1_Template","Button_ng_container_3_span_2_1_ng_template_0_Template","Button_ng_container_3_span_2_1_Template","Button_ng_container_3_span_2_Template","Button_ng_container_3_Template","Button_ng_container_4_span_1_Template","Button_ng_container_4_span_2_1_ng_template_0_Template","Button_ng_container_4_span_2_1_Template","Button_ng_container_4_span_2_Template","Button_ng_container_4_Template","Button_span_5_Template","Button_span_6_Template","badgeClass","INTERNAL_BUTTON_CLASSES","iconOnly","labelOnly","ButtonDirective","updateLabel","updateIcon","setStyleClass","_icon","_loading","htmlElement","_internalClasses","spinnerIcon","getStyleClass","createIcon","createLabel","labelElement","iconElement","iconPosClass","getIconClass","Button","raised","plain","outlined","buttonClass","CalendarIcon","ɵCalendarIcon_BaseFactory","Calendar_ng_template_2_ng_container_2_TimesIcon_1_Template","Calendar_ng_template_2_ng_container_2_span_2_1_ng_template_0_Template","Calendar_ng_template_2_ng_container_2_span_2_1_Template","Calendar_ng_template_2_ng_container_2_span_2_Template","Calendar_ng_template_2_ng_container_2_Template","Calendar_ng_template_2_button_3_span_1_Template","Calendar_ng_template_2_button_3_ng_container_2_CalendarIcon_1_Template","Calendar_ng_template_2_button_3_ng_container_2_2_ng_template_0_Template","Calendar_ng_template_2_button_3_ng_container_2_2_Template","Calendar_ng_template_2_button_3_ng_container_2_Template","triggerIconTemplate","Calendar_ng_template_2_button_3_Template","onButtonClick","iconButtonAriaLabel","panelId","Calendar_ng_template_2_ng_container_4_CalendarIcon_1_Template","Calendar_ng_template_2_ng_container_4_ng_container_2_Template","clickCallBack","Calendar_ng_template_2_ng_container_4_Template","inputIconTemplate","Calendar_ng_template_2_Template","onUserInput","inputFieldValue","readonlyInput","touchUI","showIcon","iconDisplay","Calendar_div_3_ng_container_3_Template","Calendar_div_3_ng_container_4_div_2_button_2_ChevronLeftIcon_1_Template","Calendar_div_3_ng_container_4_div_2_button_2_span_2_1_ng_template_0_Template","Calendar_div_3_ng_container_4_div_2_button_2_span_2_1_Template","Calendar_div_3_ng_container_4_div_2_button_2_span_2_Template","Calendar_div_3_ng_container_4_div_2_button_2_Template","_r55","onContainerButtonKeydown","onPrevButtonClick","prevIconAriaLabel","Calendar_div_3_ng_container_4_div_2_button_4_Template","_r58","switchToMonthView","month_r41","switchViewButtonDisabled","getMonthName","Calendar_div_3_ng_container_4_div_2_button_5_Template","switchToYearView","Calendar_div_3_ng_container_4_div_2_span_6_ng_container_1_Template","yearPickerValues","Calendar_div_3_ng_container_4_div_2_span_6_ng_container_2_Template","Calendar_div_3_ng_container_4_div_2_span_6_Template","decadeTemplate","Calendar_div_3_ng_container_4_div_2_ChevronRightIcon_8_Template","Calendar_div_3_ng_container_4_div_2_span_9_1_ng_template_0_Template","Calendar_div_3_ng_container_4_div_2_span_9_1_Template","Calendar_div_3_ng_container_4_div_2_span_9_Template","Calendar_div_3_ng_container_4_div_2_div_10_th_4_Template","Calendar_div_3_ng_container_4_div_2_div_10_th_5_Template","weekDay_r72","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_1_Template","j_r76","weekNumbers","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_ng_container_2_Template","date_r81","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_ng_container_3_ng_container_1_Template","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_ng_container_3_Template","ctx_r84","dateTemplate","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_ng_container_4_ng_container_1_Template","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_ng_container_4_Template","disabledDateTemplate","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_div_5_Template","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_ng_container_1_Template","_r95","onDateSelect","i_r42","onDateCellKeydown","selectable","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_td_2_Template","otherMonth","showOtherMonths","Calendar_div_3_ng_container_4_div_2_div_10_tr_7_Template","week_r75","showWeek","Calendar_div_3_ng_container_4_div_2_div_10_Template","weekDays","dates","Calendar_div_3_ng_container_4_div_2_Template","_r102","onNextButtonClick","numberOfMonths","nextIconAriaLabel","Calendar_div_3_ng_container_4_div_3_span_1_div_2_Template","m_r105","Calendar_div_3_ng_container_4_div_3_span_1_Template","_r110","i_r106","ctx_r109","onMonthSelect","onMonthCellKeydown","isMonthSelected","isMonthDisabled","Calendar_div_3_ng_container_4_div_3_Template","monthPickerValues","Calendar_div_3_ng_container_4_div_4_span_1_div_2_Template","y_r113","Calendar_div_3_ng_container_4_div_4_span_1_Template","_r117","onYearSelect","ctx_r118","onYearCellKeydown","ctx_r112","isYearSelected","isYearDisabled","Calendar_div_3_ng_container_4_div_4_Template","Calendar_div_3_ng_container_4_Template","Calendar_div_3_div_5_ChevronUpIcon_3_Template","Calendar_div_3_div_5_4_ng_template_0_Template","Calendar_div_3_div_5_4_Template","Calendar_div_3_div_5_ng_container_6_Template","Calendar_div_3_div_5_ChevronDownIcon_9_Template","Calendar_div_3_div_5_10_ng_template_0_Template","Calendar_div_3_div_5_10_Template","Calendar_div_3_div_5_ChevronUpIcon_16_Template","Calendar_div_3_div_5_17_ng_template_0_Template","Calendar_div_3_div_5_17_Template","Calendar_div_3_div_5_ng_container_19_Template","Calendar_div_3_div_5_ChevronDownIcon_22_Template","Calendar_div_3_div_5_23_ng_template_0_Template","Calendar_div_3_div_5_23_Template","Calendar_div_3_div_5_div_24_Template","ctx_r129","timeSeparator","Calendar_div_3_div_5_div_25_ChevronUpIcon_2_Template","Calendar_div_3_div_5_div_25_3_ng_template_0_Template","Calendar_div_3_div_5_div_25_3_Template","Calendar_div_3_div_5_div_25_ng_container_5_Template","Calendar_div_3_div_5_div_25_ChevronDownIcon_8_Template","Calendar_div_3_div_5_div_25_9_ng_template_0_Template","Calendar_div_3_div_5_div_25_9_Template","Calendar_div_3_div_5_div_25_Template","_r144","ctx_r143","ctx_r145","incrementSecond","ctx_r146","ctx_r147","onTimePickerElementMouseDown","ctx_r148","onTimePickerElementMouseUp","ctx_r149","ctx_r150","ctx_r151","onTimePickerElementMouseLeave","ctx_r152","ctx_r153","decrementSecond","ctx_r154","ctx_r155","ctx_r156","ctx_r157","ctx_r158","ctx_r159","ctx_r130","incrementIconTemplate","currentSecond","decrementIconTemplate","Calendar_div_3_div_5_div_26_ChevronUpIcon_2_Template","Calendar_div_3_div_5_div_26_3_ng_template_0_Template","Calendar_div_3_div_5_div_26_3_Template","Calendar_div_3_div_5_div_26_ChevronDownIcon_7_Template","Calendar_div_3_div_5_div_26_8_ng_template_0_Template","Calendar_div_3_div_5_div_26_8_Template","Calendar_div_3_div_5_div_26_Template","_r167","ctx_r166","ctx_r168","toggleAMPM","ctx_r169","ctx_r170","ctx_r171","ctx_r172","ctx_r131","Calendar_div_3_div_5_Template","_r174","ctx_r173","ctx_r175","incrementHour","ctx_r176","ctx_r177","ctx_r178","ctx_r179","ctx_r180","ctx_r181","ctx_r182","ctx_r183","decrementHour","ctx_r184","ctx_r185","ctx_r186","ctx_r187","ctx_r188","ctx_r189","ctx_r190","ctx_r191","incrementMinute","ctx_r192","ctx_r193","ctx_r194","ctx_r195","ctx_r196","ctx_r197","ctx_r198","ctx_r199","decrementMinute","ctx_r200","ctx_r201","ctx_r202","ctx_r203","ctx_r204","ctx_r205","currentHour","currentMinute","showSeconds","hourFormat","Calendar_div_3_div_6_Template","_r207","ctx_r206","ctx_r208","onTodayButtonClick","ctx_r209","ctx_r210","onClearButtonClick","todayButtonStyleClass","clearButtonStyleClass","Calendar_div_3_ng_container_8_Template","Calendar_div_3_Template","_r212","ctx_r211","ctx_r213","onOverlayAnimationDone","ctx_r214","timeOnly","showButtonBar","CALENDAR_VALUE_ACCESSOR","Calendar","iconAriaLabel","multipleSeparator","rangeSeparator","selectOtherMonths","shortYearCutoff","monthNavigator","yearNavigator","stepHour","stepMinute","stepSecond","showOnFocus","maxDateCount","keepInvalid","hideOnDateTimeSelect","focusTrap","_minDate","currentMonth","currentYear","createMonths","maxDate","_maxDate","disabledDates","_disabledDates","disabledDays","_disabledDays","yearRange","_yearRange","yearStart","yearEnd","populateYearOptions","_showTime","initTime","updateInputfield","_responsiveOptions","destroyResponsiveStyleElement","createResponsiveStyle","_numberOfMonths","_firstDayOfWeek","createWeekDays","newLocale","defaultDate","_defaultDate","onTodayClick","onClearClick","onMonthChange","onYearChange","onClickOutside","contentViewChild","isMonthNavigate","updateFocus","initFocusableCell","responsiveStyleElement","calendarElement","timePickerTimer","ticksTo1970","yearOptions","isKeydown","preventDocumentListener","selectElement","todayElement","navigationState","attributeSelector","preventFocus","dayIndex","getFirstDateOfWeek","dayLabels","DAY_NAMES_MIN","createMonth","getWeekNumber","checkDate","getFirstDayOfMonthIndex","daysLength","getDaysCountInMonth","prevMonthDaysLength","getDaysCountInPrevMonth","dayNo","monthRows","getPreviousMonthAndYear","isToday","isSelectable","remainingDaysLength","getNextMonthAndYear","setCurrentHourPM","decrementYear","decrementDecade","incrementYear","incrementDecade","_yearOptions","setCurrentView","dateMeta","isMultipleSelection","isDateEquals","shouldSelectDate","selectDate","isSingleSelection","hideOverlay","isRangeSelection","getDateFormat","stringArrValue","getSundayIndex","daylightSavingAdjust","isDateBetween","isComparable","validMin","validMax","validDate","isDateDisabled","isDayDisabled","disabledDate","weekdayNumber","showOverlay","inputfield","trapFocus","headerElements","cellContent","cellIndex","nextRow","prevRow","focusCell","prevCell","navigateToMonth","nextCell","selectedCell","todayCell","focusedIndex","spanIndex","onMonthDropdownChange","onYearDropdownChange","convertTo24Hour","validateTime","convertedHour","valueDateString","newHour","newPM","clearTimePickerTimer","updateTime","newMinute","parseValueFromString","isValidSelection","parseDateTime","populateTime","ampm","timeString","parseTime","propValue","destroyMask","hasBlockerMasks","bodyChildren","FIRST_DAY_OF_WEEK","iFormat","lookAhead","formatName","shortNames","longNames","DAY_NAMES_SHORT","DAY_NAMES","MONTH_NAMES_SHORT","MONTH_NAMES","dim","iValue","doy","getNumber","isDoubled","getName","checkLiteral","breakpoint","numMonths","isOutsideClicked","isNavIconClicked","Card_div_1_ng_container_2_Template","Card_div_1_Template","Card_div_3_ng_container_2_Template","Card_div_3_Template","Card_div_4_ng_container_2_Template","Card_div_4_Template","subheader","subtitleTemplate","Card_ng_container_7_Template","Card_div_8_ng_container_2_Template","Card_div_8_Template","Card","Carousel_div_1_ng_container_2_Template","Carousel_div_1_Template","Carousel_button_4_ng_container_1_ChevronLeftIcon_1_Template","Carousel_button_4_ng_container_1_ChevronUpIcon_2_Template","Carousel_button_4_ng_container_1_Template","Carousel_button_4_span_2_1_ng_template_0_Template","Carousel_button_4_span_2_1_Template","Carousel_button_4_span_2_Template","Carousel_button_4_Template","isBackwardNavDisabled","ariaPrevButtonLabel","Carousel_div_8_ng_container_1_Template","Carousel_div_8_Template","item_r18","index_r19","totalShiftedItems","clonedItemsForStarting","ariaSlideNumber","ariaSlideLabel","Carousel_div_9_ng_container_1_Template","Carousel_div_9_Template","item_r21","index_r22","firstIndex","Carousel_div_10_ng_container_1_Template","Carousel_div_10_Template","item_r24","index_r25","numVisible","clonedItemsForFinishing","Carousel_button_11_ng_container_1_ChevronRightIcon_1_Template","Carousel_button_11_ng_container_1_ChevronDownIcon_2_Template","Carousel_button_11_ng_container_1_Template","Carousel_button_11_span_2_1_ng_template_0_Template","Carousel_button_11_span_2_1_Template","Carousel_button_11_span_2_Template","Carousel_button_11_Template","isForwardNavDisabled","ariaNextButtonLabel","Carousel_ul_12_li_2_Template","i_r38","onDotClick","_page","indicatorStyleClass","indicatorStyle","ariaPageLabel","Carousel_ul_12_Template","onIndicatorKeydown","indicatorsContentClass","indicatorsContentStyle","totalDotsArray","Carousel_div_13_ng_container_2_Template","Carousel_div_13_Template","Carousel","isCreated","autoplayInterval","stopAutoplay","totalDots","_numVisible","numScroll","_numScroll","verticalViewPortHeight","contentClass","showIndicators","showNavigators","onPage","itemsContainer","indicatorContent","_oldNumScroll","defaultNumScroll","defaultNumVisible","carouselStyle","isRemainingItemsAdded","animationTimeout","translateTimeout","startPos","allowAutoplay","swipeThreshold","simpleChange","setCloneItems","isCircular","createStyle","calculatePosition","bindDocumentListeners","isAutoplay","startAutoplay","data1","data2","matchedResponsiveData","onRightKey","onLeftKey","indicators","findFocusedIndicatorIndex","changedFocusedIndicator","highlightedIndex","activeIndicator","prevInd","nextInd","changeAllow","isPlaying","onTransitionEnd","onTouchStart","onTouchMove","onTouchEnd","changePageOnTouch","unbindDocumentListeners","UIChart","reinit","onDataSelect","initChart","onCanvasClick","getBase64Image","generateLegend","Checkbox_ng_container_5_ng_container_1_span_1_Template","checkboxIcon","Checkbox_ng_container_5_ng_container_1_CheckIcon_2_Template","Checkbox_ng_container_5_ng_container_1_Template","Checkbox_ng_container_5_span_2_1_ng_template_0_Template","Checkbox_ng_container_5_span_2_1_Template","Checkbox_ng_container_5_span_2_Template","checkboxIconTemplate","Checkbox_ng_container_5_Template","Checkbox_label_6_Template","CHECKBOX_VALUE_ACCESSOR","Checkbox","binary","newModelValue","Chips_li_3_ng_container_2_Template","Chips_li_3_span_3_Template","item_r4","Chips_li_3_ng_container_4_TimesCircleIcon_1_Template","Chips_li_3_ng_container_4_span_2_1_ng_template_0_Template","Chips_li_3_ng_container_4_span_2_1_Template","Chips_li_3_ng_container_4_span_2_Template","Chips_li_3_ng_container_4_Template","Chips_li_3_Template","Chips_li_7_TimesIcon_1_Template","Chips_li_7_span_2_1_ng_template_0_Template","Chips_li_7_span_2_1_Template","Chips_li_7_span_2_Template","Chips_li_7_Template","CHIPS_VALUE_ACCESSOR","Chips","allowDuplicate","addOnTab","addOnBlur","onAdd","onChipClick","isMaxedOut","onWrapperClick","onContainerFocus","onContainerBlur","onContainerKeyDown","onArrowLeftKeyOn","onArrowRightKeyOn","onBackspaceKeyOn","clipboardData","updateMaxedOut","removedItem","Divider","removeMultipleClasses","classNames","Boolean","cNames","indexWithinGroup","calculateMinWidth","getClosestRelativeElement","elementDimensions","getHiddenElementDimensions","targetHeight","targetOffset","windowScrollTop","windowScrollLeft","getViewport","relativeElementOffset","transformOrigin","horizontalOverflow","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","overflowRegex","overflowCheck","styleDeclaration","scrollSelectors","scrollselectors","getHiddenElementOuterHeight","elementHeight","getHiddenElementOuterWidth","elementWidth","dimensions","borderTopValue","borderTop","paddingTopValue","containerRect","getOuterHeight","fadeIn","fadeOut","gap","fading","clientTop","clientLeft","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","marginRight","getHorizontalPadding","getHorizontalMargin","getInnerHeight","getHeight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","win","replaceElementWith","replacementElement","isIE","isIOS","MSStream","isAndroid","maxTouchPoints","removeElement","calculateScrollbarWidth","calculatedScrollbarWidth","scrollDiv","scrollbarWidth","calculateScrollbarHeight","calculatedScrollbarHeight","scrollbarHeight","invokeElementMethod","clearSelection","getClientRects","getBrowser","browser","resolveUserAgent","webkit","isVisible","visibleFocusableElements","generateZIndex","zindex","getTargetElement","calculateBodyScrollbarWidth","DropdownItem_span_1_Template","DropdownItem_ng_container_2_Template","Dropdown_span_2_ng_container_2_Template","Dropdown_span_2_ng_container_3_Template","Dropdown_span_2_ng_template_4_span_0_Template","Dropdown_span_2_ng_template_4_Template","Dropdown_span_2_Template","selectedOption","Dropdown_input_3_Template","onEditableInput","Dropdown_ng_container_4_TimesIcon_1_Template","Dropdown_ng_container_4_span_2_1_ng_template_0_Template","Dropdown_ng_container_4_span_2_1_Template","Dropdown_ng_container_4_span_2_Template","Dropdown_ng_container_4_Template","Dropdown_ng_container_6_span_1_Template","Dropdown_ng_container_6_ChevronDownIcon_2_Template","Dropdown_ng_container_6_Template","Dropdown_span_7_1_ng_template_0_Template","Dropdown_span_7_1_Template","Dropdown_span_7_Template","Dropdown_ng_template_10_ng_container_3_Template","Dropdown_ng_template_10_div_4_ng_container_1_ng_container_1_Template","Dropdown_ng_template_10_div_4_ng_container_1_Template","Dropdown_ng_template_10_div_4_ng_template_2_SearchIcon_3_Template","Dropdown_ng_template_10_div_4_ng_template_2_span_4_1_ng_template_0_Template","Dropdown_ng_template_10_div_4_ng_template_2_span_4_1_Template","Dropdown_ng_template_10_div_4_ng_template_2_span_4_Template","Dropdown_ng_template_10_div_4_ng_template_2_Template","filterPlaceholder","Dropdown_ng_template_10_div_4_Template","Dropdown_ng_template_10_p_scroller_6_ng_template_2_ng_container_0_Template","Dropdown_ng_template_10_p_scroller_6_ng_template_2_Template","items_r62","scrollerOptions_r63","Dropdown_ng_template_10_p_scroller_6_ng_container_3_ng_template_1_ng_container_0_Template","Dropdown_ng_template_10_p_scroller_6_ng_container_3_ng_template_1_Template","scrollerOptions_r66","Dropdown_ng_template_10_p_scroller_6_ng_container_3_Template","Dropdown_ng_template_10_p_scroller_6_Template","_r69","Dropdown_ng_template_10_ng_container_7_ng_container_1_Template","Dropdown_ng_template_10_ng_container_7_Template","Dropdown_ng_template_10_ng_template_8_ng_template_2_ng_container_0_span_2_Template","option_r77","ctx_r81","Dropdown_ng_template_10_ng_template_8_ng_template_2_ng_container_0_ng_container_3_Template","Dropdown_ng_template_10_ng_template_8_ng_template_2_ng_container_0_Template","i_r78","scrollerOptions_r72","Dropdown_ng_template_10_ng_template_8_ng_template_2_ng_container_1_Template","_r88","Dropdown_ng_template_10_ng_template_8_ng_template_2_Template","Dropdown_ng_template_10_ng_template_8_li_3_ng_container_1_Template","Dropdown_ng_template_10_ng_template_8_li_3_ng_container_2_Template","Dropdown_ng_template_10_ng_template_8_li_3_Template","Dropdown_ng_template_10_ng_template_8_li_4_ng_container_1_Template","Dropdown_ng_template_10_ng_template_8_li_4_ng_container_2_Template","Dropdown_ng_template_10_ng_template_8_li_4_Template","Dropdown_ng_template_10_ng_template_8_Template","items_r71","Dropdown_ng_template_10_ng_container_10_Template","Dropdown_ng_template_10_Template","_r103","DROPDOWN_VALUE_ACCESSOR","Dropdown","DropdownItem","autoDisplayFirst","editableInputViewChild","optionsChanged","panel","dimensionsUpdated","selectedOptionUpdated","previousSearchChar","currentSearchChar","labelId","selectedOptionIndex","updateEditableLabel","preventChange","allowModelChange","applyFocus","UploadIcon","ɵUploadIcon_BaseFactory","FileUpload_div_0_span_5_Template","chooseIcon","FileUpload_div_0_ng_container_6_PlusIcon_1_Template","FileUpload_div_0_ng_container_6_span_2_1_ng_template_0_Template","FileUpload_div_0_ng_container_6_span_2_1_Template","FileUpload_div_0_ng_container_6_span_2_Template","chooseIconTemplate","FileUpload_div_0_ng_container_6_Template","FileUpload_div_0_p_button_9_span_1_Template","uploadIcon","FileUpload_div_0_p_button_9_ng_container_2_UploadIcon_1_Template","FileUpload_div_0_p_button_9_ng_container_2_span_2_1_ng_template_0_Template","FileUpload_div_0_p_button_9_ng_container_2_span_2_1_Template","FileUpload_div_0_p_button_9_ng_container_2_span_2_Template","uploadIconTemplate","FileUpload_div_0_p_button_9_ng_container_2_Template","FileUpload_div_0_p_button_9_Template","uploadButtonLabel","isFileLimitExceeded","uploadStyleClass","FileUpload_div_0_p_button_10_span_1_Template","cancelIcon","FileUpload_div_0_p_button_10_ng_container_2_TimesIcon_1_Template","FileUpload_div_0_p_button_10_ng_container_2_span_2_1_ng_template_0_Template","FileUpload_div_0_p_button_10_ng_container_2_span_2_1_Template","FileUpload_div_0_p_button_10_ng_container_2_span_2_Template","FileUpload_div_0_p_button_10_ng_container_2_Template","FileUpload_div_0_p_button_10_Template","cancelButtonLabel","cancelStyleClass","FileUpload_div_0_ng_container_11_Template","FileUpload_div_0_p_progressBar_14_Template","FileUpload_div_0_div_16_div_1_div_1_img_2_Template","file_r35","FileUpload_div_0_div_16_div_1_div_1_TimesIcon_9_Template","FileUpload_div_0_div_16_div_1_div_1_10_ng_template_0_Template","FileUpload_div_0_div_16_div_1_div_1_10_Template","FileUpload_div_0_div_16_div_1_div_1_Template","i_r36","isImage","formatSize","removeStyleClass","FileUpload_div_0_div_16_div_1_Template","FileUpload_div_0_div_16_div_2_ng_template_1_Template","FileUpload_div_0_div_16_div_2_Template","fileTemplate","FileUpload_div_0_div_16_Template","FileUpload_div_0_ng_container_17_Template","FileUpload_div_0_Template","_r48","onFileSelect","onDragEnter","onDragLeave","onDrop","chooseStyleClass","isChooseDisabled","chooseButtonLabel","showUploadButton","showCancelButton","toolbarTemplate","msgs","FileUpload_div_1_ng_container_3_span_1_Template","FileUpload_div_1_ng_container_3_ng_container_2_UploadIcon_1_Template","FileUpload_div_1_ng_container_3_ng_container_2_span_2_1_ng_template_0_Template","FileUpload_div_1_ng_container_3_ng_container_2_span_2_1_Template","FileUpload_div_1_ng_container_3_ng_container_2_span_2_Template","FileUpload_div_1_ng_container_3_ng_container_2_Template","ctx_r62","FileUpload_div_1_ng_container_3_Template","FileUpload_div_1_ng_template_4_span_0_Template","FileUpload_div_1_ng_template_4_ng_container_1_PlusIcon_1_Template","FileUpload_div_1_ng_template_4_ng_container_1_span_2_1_ng_template_0_Template","FileUpload_div_1_ng_template_4_ng_container_1_span_2_1_Template","FileUpload_div_1_ng_template_4_ng_container_1_span_2_Template","FileUpload_div_1_ng_template_4_ng_container_1_Template","FileUpload_div_1_ng_template_4_Template","FileUpload_div_1_span_6_Template","basicButtonLabel","FileUpload_div_1_input_7_Template","_r75","ctx_r77","FileUpload_div_1_Template","onBasicUploaderClick","onBasicKeydown","FileUpload","maxFileSize","invalidFileSizeMessageSummary","invalidFileSizeMessageDetail","invalidFileTypeMessageSummary","invalidFileTypeMessageDetail","invalidFileLimitMessageDetail","invalidFileLimitMessageSummary","chooseLabel","uploadLabel","cancelLabel","customUpload","fileLimit","onBeforeUpload","onSend","onUpload","uploadHandler","advancedFileInput","basicFileInput","_files","dragHighlight","uploadedFileCount","duplicateIEEvent","dragOverListener","onDragOver","isIE11","dataTransfer","isFileSelected","currentFiles","checkFileLimit","clearIEInput","clearInputElement","sFile","MSInputMethodContext","documentMode","isFileTypeValid","acceptableTypes","getTypeClass","getFileExtension","onImageLoad","img","totalFileCount","FILE_SIZE_TYPES","dm","CHOOSE","UPLOAD","CANCEL","ɵAngleDoubleDownIcon_BaseFactory","AngleDoubleLeftIcon","ɵAngleDoubleLeftIcon_BaseFactory","AngleDoubleRightIcon","ɵAngleDoubleRightIcon_BaseFactory","ɵAngleDoubleUpIcon_BaseFactory","ɵAngleDownIcon_BaseFactory","AngleLeftIcon","ɵAngleLeftIcon_BaseFactory","ɵAngleRightIcon_BaseFactory","ɵAngleUpIcon_BaseFactory","ɵArrowDownIcon_BaseFactory","ɵArrowUpIcon_BaseFactory","ɵCheckIcon_BaseFactory","ɵChevronDownIcon_BaseFactory","ɵChevronLeftIcon_BaseFactory","ɵChevronRightIcon_BaseFactory","ɵChevronUpIcon_BaseFactory","ɵExclamationTriangleIcon_BaseFactory","ɵHomeIcon_BaseFactory","ɵInfoCircleIcon_BaseFactory","ɵPlusIcon_BaseFactory","ɵSearchIcon_BaseFactory","ɵSortAltIcon_BaseFactory","ɵSortAmountDownIcon_BaseFactory","ɵSortAmountUpAltIcon_BaseFactory","ɵSpinnerIcon_BaseFactory","ɵTimesIcon_BaseFactory","ɵTimesCircleIcon_BaseFactory","InputNumber_ng_container_3_TimesIcon_1_Template","InputNumber_ng_container_3_span_2_1_ng_template_0_Template","InputNumber_ng_container_3_span_2_1_Template","InputNumber_ng_container_3_span_2_Template","InputNumber_ng_container_3_Template","InputNumber_span_4_span_2_Template","incrementButtonIcon","InputNumber_span_4_ng_container_3_AngleUpIcon_1_Template","InputNumber_span_4_ng_container_3_2_ng_template_0_Template","InputNumber_span_4_ng_container_3_2_Template","InputNumber_span_4_ng_container_3_Template","incrementButtonIconTemplate","InputNumber_span_4_span_5_Template","decrementButtonIcon","InputNumber_span_4_ng_container_6_AngleDownIcon_1_Template","InputNumber_span_4_ng_container_6_2_ng_template_0_Template","InputNumber_span_4_ng_container_6_2_Template","InputNumber_span_4_ng_container_6_Template","decrementButtonIconTemplate","InputNumber_span_4_Template","onUpButtonMouseDown","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyDown","onUpButtonKeyUp","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyDown","onDownButtonKeyUp","incrementButtonClass","decrementButtonClass","decrementbutton","InputNumber_button_5_span_1_Template","InputNumber_button_5_ng_container_2_AngleUpIcon_1_Template","InputNumber_button_5_ng_container_2_2_ng_template_0_Template","InputNumber_button_5_ng_container_2_2_Template","InputNumber_button_5_ng_container_2_Template","InputNumber_button_5_Template","InputNumber_button_6_span_1_Template","InputNumber_button_6_ng_container_2_AngleDownIcon_1_Template","InputNumber_button_6_ng_container_2_2_ng_template_0_Template","InputNumber_button_6_ng_container_2_2_Template","InputNumber_button_6_ng_container_2_Template","InputNumber_button_6_Template","INPUTNUMBER_VALUE_ACCESSOR","InputNumber","showButtons","buttonLayout","allowEmpty","localeMatcher","currencyDisplay","groupChar","prefixChar","suffixChar","isSpecialChar","_numeral","numberFormat","_decimal","_minusSign","_currency","_prefix","_suffix","ngControl","updateConstructParser","constructParser","numerals","getGroupingExpression","getMinusSignExpression","getCurrencyExpression","getDecimalExpression","getSuffixExpression","getPrefixExpression","filteredText","validateValue","updateInput","handleOnInput","onInputKeyDown","newValueStr","isNumeralChar","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","getDecimalCharIndexes","decimalLength","getDecimalLength","insertedText","isDecimalMode","deleteRange","onInputKeyPress","isDecimalSign","isMinusSign","allowMinusSign","getCharIndexes","minusCharIndex","suffixCharIndex","currencyCharIndex","minusCharIndexOnText","charIndex","initCursor","valueLength","resetRegex","valueStr","insertedValueStr","isValueChanged","concatValues","startExpr","sRegex","tExpr","tRegex","nextChar","isGroupChar","valueSplit","isBlurUpdateOnMode","getFormatter","InputNumberModule","InputText","ngModel","InputTextarea","cachedScrollHeight","ngModelSubscription","ngControlSubscription","updateState","overflowY","MenuItemContent_ng_container_1_a_1_ng_container_1_Template","MenuItemContent_ng_container_1_a_1_Template","automationId","MenuItemContent_ng_container_1_a_2_ng_container_1_Template","MenuItemContent_ng_container_1_a_2_Template","MenuItemContent_ng_container_1_Template","MenuItemContent_ng_container_2_1_ng_template_0_Template","MenuItemContent_ng_container_2_1_Template","MenuItemContent_ng_container_2_Template","MenuItemContent_ng_template_3_span_0_Template","MenuItemContent_ng_template_3_span_1_Template","MenuItemContent_ng_template_3_ng_template_2_Template","MenuItemContent_ng_template_3_span_4_Template","MenuItemContent_ng_template_3_Template","Menu_div_0_div_2_ng_container_1_Template","Menu_div_0_div_2_Template","startTemplate","Menu_div_0_5_ng_template_0_li_0_Template","submenu_r9","Menu_div_0_5_ng_template_0_li_1_span_1_Template","Menu_div_0_5_ng_template_0_li_1_ng_template_2_Template","flex","Menu_div_0_5_ng_template_0_li_1_Template","i_r10","menuitemId","Menu_div_0_5_ng_template_0_ng_template_2_li_0_Template","Menu_div_0_5_ng_template_0_ng_template_2_li_1_Template","j_r22","Menu_div_0_5_ng_template_0_ng_template_2_Template","Menu_div_0_5_ng_template_0_Template","Menu_div_0_5_Template","Menu_div_0_6_ng_template_0_li_0_Template","item_r34","Menu_div_0_6_ng_template_0_li_1_Template","i_r35","Menu_div_0_6_ng_template_0_Template","Menu_div_0_6_Template","Menu_div_0_div_7_ng_container_1_Template","Menu_div_0_div_7_Template","endTemplate","Menu_div_0_Template","activedescendant","hasSubMenu","SafeHtmlPipe","MenuItemContent","onMenuItemClick","childIndex","isItemHidden","subitem","Messages_ng_container_1_div_1_span_2_Template","msg_r4","Messages_ng_container_1_div_1_span_3_CheckIcon_2_Template","Messages_ng_container_1_div_1_span_3_InfoCircleIcon_3_Template","Messages_ng_container_1_div_1_span_3_TimesCircleIcon_4_Template","Messages_ng_container_1_div_1_span_3_ExclamationTriangleIcon_5_Template","Messages_ng_container_1_div_1_span_3_Template","Messages_ng_container_1_div_1_ng_container_4_span_1_Template","Messages_ng_container_1_div_1_ng_container_4_span_2_Template","Messages_ng_container_1_div_1_ng_container_4_Template","Messages_ng_container_1_div_1_ng_template_5_span_0_Template","Messages_ng_container_1_div_1_ng_template_5_span_1_Template","Messages_ng_container_1_div_1_ng_template_5_Template","Messages_ng_container_1_div_1_button_7_Template","removeMessage","Messages_ng_container_1_div_1_Template","Messages_ng_container_1_Template","Messages_ng_template_2_ng_container_2_Template","Messages_ng_template_2_Template","Messages","messageService","startMessageLifes","enableService","valueChange","messageSubscription","clearSubscription","timerSubscriptions","filteredMessages","hasMessages","parentEl","life","startMessageLife","timerSubsctiption","msgEl","timerEl","Overlay_div_0_div_2_ng_container_3_Template","Overlay_div_0_div_2_Template","onOverlayContentClick","onOverlayContentAnimationStart","onOverlayContentAnimationDone","overlayResponsiveDirection","overlayMode","a7","a8","a9","a10","a11","a12","a13","a14","Overlay_div_0_Template","OVERLAY_VALUE_ACCESSOR","Overlay","showOverlayContentAnimation","hideOverlayContentAnimation","modalVisible","_mode","_style","overlayResponsiveOptions","_styleClass","_contentStyle","_contentStyleClass","_appendTo","_listener","_responsive","onBeforeShow","onBeforeHide","onAnimationDone","isOverlayClicked","isOverlayContentClicked","documentKeyboardListener","matchMedia","media","overlayEl","targetEl","onVisibleChange","handleEvents","bindListeners","unbindListeners","bindDocumentKeyboardListener","unbindDocumentKeyboardListener","hideOnEscape","Paginator_div_0_div_1_ng_container_1_Template","Paginator_div_0_div_1_Template","templateLeft","paginatorState","Paginator_div_0_span_2_Template","currentPageReport","Paginator_div_0_button_3_AngleDoubleLeftIcon_1_Template","Paginator_div_0_button_3_span_2_1_ng_template_0_Template","Paginator_div_0_button_3_span_2_1_Template","Paginator_div_0_button_3_span_2_Template","firstPageLinkIconTemplate","Paginator_div_0_button_3_Template","changePageToFirst","isFirstPage","getAriaLabel","Paginator_div_0_AngleLeftIcon_5_Template","Paginator_div_0_span_6_1_ng_template_0_Template","Paginator_div_0_span_6_1_Template","Paginator_div_0_span_6_Template","previousPageLinkIconTemplate","Paginator_div_0_span_7_button_1_Template","pageLink_r24","onPageLinkClick","getPage","getLocalization","Paginator_div_0_span_7_Template","pageLinks","Paginator_div_0_p_dropdown_8_ng_template_1_Template","Paginator_div_0_p_dropdown_8_Template","onPageDropdownChange","pageItems","dropdownAppendTo","dropdownScrollHeight","Paginator_div_0_AngleRightIcon_10_Template","Paginator_div_0_span_11_1_ng_template_0_Template","Paginator_div_0_span_11_1_Template","Paginator_div_0_span_11_Template","nextPageLinkIconTemplate","Paginator_div_0_button_12_AngleDoubleRightIcon_1_Template","Paginator_div_0_button_12_span_2_1_ng_template_0_Template","Paginator_div_0_button_12_span_2_1_Template","Paginator_div_0_button_12_span_2_Template","lastPageLinkIconTemplate","Paginator_div_0_button_12_Template","changePageToLast","isLastPage","Paginator_div_0_p_inputNumber_13_Template","changePage","Paginator_div_0_p_dropdown_14_ng_container_1_ng_template_1_ng_container_0_Template","Paginator_div_0_p_dropdown_14_ng_container_1_ng_template_1_Template","item_r42","dropdownItemTemplate","Paginator_div_0_p_dropdown_14_ng_container_1_Template","Paginator_div_0_p_dropdown_14_Template","onRppChange","rowsPerPageItems","Paginator_div_0_div_15_ng_container_1_Template","Paginator_div_0_div_15_Template","templateRight","Paginator_div_0_Template","changePageToPrev","changePageToNext","showCurrentPageReport","showFirstLastIcon","showPageLinks","showJumpToPageDropdown","showJumpToPageInput","rowsPerPageOptions","Paginator","pageLinkSize","alwaysShow","currentPageReportTemplate","totalRecords","_first","onPageChange","updatePaginatorState","labelType","updatePageLinks","updateFirst","updateRowsPerPageOptions","showAll","getPageCount","calculatePageLinkBoundaries","numberOfPages","visiblePages","boundaries","pc","pageCount","PickList_div_1_AngleUpIcon_2_Template","PickList_div_1_3_ng_template_0_Template","PickList_div_1_3_Template","PickList_div_1_AngleDoubleUpIcon_5_Template","PickList_div_1_6_ng_template_0_Template","PickList_div_1_6_Template","PickList_div_1_AngleDownIcon_8_Template","PickList_div_1_9_ng_template_0_Template","PickList_div_1_9_Template","PickList_div_1_AngleDoubleDownIcon_11_Template","PickList_div_1_12_ng_template_0_Template","PickList_div_1_12_Template","PickList_div_1_Template","selectedItemsSource","onSourceReorder","SOURCE_LIST","sourceMoveDisabled","moveUpAriaLabel","moveUpIconTemplate","moveTopAriaLabel","moveTopIconTemplate","moveDownAriaLabel","moveDownIconTemplate","moveBottomAriaLabel","moveBottomIconTemplate","PickList_div_3_div_1_Template","sourceHeader","PickList_div_3_ng_container_2_Template","PickList_div_3_Template","sourceHeaderTemplate","PickList_div_4_ng_container_1_ng_container_1_Template","PickList_div_4_ng_container_1_Template","sourceFilterTemplate","sourceFilterOptions","PickList_div_4_ng_template_2_SearchIcon_3_Template","PickList_div_4_ng_template_2_span_4_1_ng_template_0_Template","PickList_div_4_ng_template_2_span_4_1_Template","PickList_div_4_ng_template_2_span_4_Template","sourceFilterIconTemplate","PickList_div_4_ng_template_2_Template","sourceFilterPlaceholder","ariaSourceFilterLabel","PickList_div_4_Template","PickList_ng_template_7_li_0_ng_container_1_Template","PickList_ng_template_7_li_0_Template","_r57","item_r50","i_r51","onSourceSelect","idSource","onSourceItemDblClick","onItemTouchEnd","itemClass","dragdrop","PickList_ng_template_7_Template","PickList_ng_container_8_li_1_ng_container_1_Template","PickList_ng_container_8_li_1_Template","emptyMessageSourceTemplate","PickList_ng_container_8_li_2_ng_container_1_Template","PickList_ng_container_8_li_2_Template","emptyFilterMessageSourceTemplate","PickList_ng_container_8_Template","filterValueSource","PickList_ng_container_11_AngleRightIcon_1_Template","PickList_ng_container_11_AngleDownIcon_2_Template","PickList_ng_container_11_Template","viewChanged","PickList_12_ng_template_0_Template","PickList_12_Template","PickList_ng_container_14_AngleDoubleRightIcon_1_Template","PickList_ng_container_14_AngleDoubleDownIcon_2_Template","PickList_ng_container_14_Template","PickList_15_ng_template_0_Template","PickList_15_Template","PickList_ng_container_17_AngleLeftIcon_1_Template","PickList_ng_container_17_AngleUpIcon_2_Template","PickList_ng_container_17_Template","PickList_18_ng_template_0_Template","PickList_18_Template","PickList_ng_container_20_AngleDoubleLeftIcon_1_Template","PickList_ng_container_20_AngleDoubleUpIcon_2_Template","PickList_ng_container_20_Template","PickList_21_ng_template_0_Template","PickList_21_Template","PickList_div_23_div_1_Template","targetHeader","PickList_div_23_ng_container_2_Template","PickList_div_23_Template","targetHeaderTemplate","PickList_div_24_ng_container_1_ng_container_1_Template","PickList_div_24_ng_container_1_Template","targetFilterTemplate","targetFilterOptions","PickList_div_24_ng_template_2_SearchIcon_3_Template","PickList_div_24_ng_template_2_span_4_1_ng_template_0_Template","PickList_div_24_ng_template_2_span_4_1_Template","PickList_div_24_ng_template_2_span_4_Template","targetFilterIconTemplate","PickList_div_24_ng_template_2_Template","ctx_r90","TARGET_LIST","targetFilterPlaceholder","ariaTargetFilterLabel","PickList_div_24_Template","_r83","PickList_ng_template_27_li_0_ng_container_1_Template","PickList_ng_template_27_li_0_Template","item_r92","i_r93","selectedItemsTarget","onTargetSelect","idTarget","onTargetItemDblClick","PickList_ng_template_27_Template","PickList_ng_container_28_li_1_ng_container_1_Template","PickList_ng_container_28_li_1_Template","emptyMessageTargetTemplate","PickList_ng_container_28_li_2_ng_container_1_Template","PickList_ng_container_28_li_2_Template","emptyFilterMessageTargetTemplate","PickList_ng_container_28_Template","filterValueTarget","PickList_div_29_AngleUpIcon_2_Template","PickList_div_29_3_ng_template_0_Template","PickList_div_29_3_Template","PickList_div_29_AngleDoubleUpIcon_5_Template","PickList_div_29_6_ng_template_0_Template","PickList_div_29_6_Template","PickList_div_29_AngleDownIcon_8_Template","PickList_div_29_9_ng_template_0_Template","PickList_div_29_9_Template","PickList_div_29_AngleDoubleDownIcon_11_Template","PickList_div_29_12_ng_template_0_Template","PickList_div_29_12_Template","PickList_div_29_Template","_r122","ctx_r121","onTargetReorder","ctx_r123","ctx_r124","targetMoveDisabled","PickList","rightButtonAriaLabel","leftButtonAriaLabel","allRightButtonAriaLabel","allLeftButtonAriaLabel","upButtonAriaLabel","downButtonAriaLabel","topButtonAriaLabel","bottomButtonAriaLabel","trackBy","sourceTrackBy","targetTrackBy","showSourceFilter","showTargetFilter","sourceStyle","targetStyle","showSourceControls","showTargetControls","stripedRows","keepSelection","_breakpoint","destroyMedia","initMedia","onMoveToSource","onMoveAllToSource","onMoveAllToTarget","onMoveToTarget","onSourceFilter","onTargetFilter","listViewSourceChild","listViewTargetChild","sourceFilterViewChild","targetFilterViewChild","moveToTargetAriaLabel","moveAllToTargetAriaLabel","moveToSourceAriaLabel","moveAllToSourceAriaLabel","moveToTargetIconTemplate","moveAllToTargetIconTemplate","moveToSourceIconTemplate","moveAllToSourceIconTemplate","visibleOptionsSource","visibleOptionsTarget","reorderedListElement","movedUp","movedDown","itemTouched","styleElement","fromListType","focusedOption","sourceList","targetList","mediaChangeListener","filterSource","resetSourceFilter","filterTarget","resetTargetFilter","listItems","itemId","findIndexInList","listType","moveRight","moveLeft","isVisibleInList","sortByIndexInList","item1","item2","movedItem","moveAllRight","movedItems","moveAllLeft","isTransfer","dropIndexes","getDropIndexes","getListElement","selectedFirstItem","getListItems","listElemet","getLatestSelectedVisibleOptionIndex","visibleList","latestSelectedItem","getVisibleList","setSelectionList","onItemKeyDown","getFocusedOption","lastSelectedIndex","droppedList","findFilteredCurrentIndex","onItemKeydown","bindMediaChangeListener","unbindMediaChangeListener","moveRightDisabled","moveLeftDisabled","moveAllRightDisabled","moveAllLeftDisabled","destroyStyle","DragConfig","ProgressBar_div_1_div_2_Template","ProgressBar_div_1_ng_container_3_Template","ProgressBar_div_1_Template","showValue","ProgressBar_div_2_Template","ProgressBar","Ripple","animationListener","mouseDownListener","ink","getInk","resetInk","Scroller_ng_container_0_ng_container_3_ng_container_1_Template","Scroller_ng_container_0_ng_container_3_Template","getContentOptions","Scroller_ng_container_0_ng_template_4_ng_container_2_ng_container_1_Template","Scroller_ng_container_0_ng_template_4_ng_container_2_Template","index_r13","Scroller_ng_container_0_ng_template_4_Template","d_loading","_trackBy","Scroller_ng_container_0_div_6_Template","spacerStyle","Scroller_ng_container_0_div_7_ng_container_1_ng_container_1_ng_container_1_Template","numCols","Scroller_ng_container_0_div_7_ng_container_1_ng_container_1_Template","index_r20","getLoaderOptions","both","_numItemsInViewport","Scroller_ng_container_0_div_7_ng_container_1_Template","loaderArr","Scroller_ng_container_0_div_7_ng_template_2_ng_container_0_ng_container_1_Template","Scroller_ng_container_0_div_7_ng_template_2_ng_container_0_Template","loaderIconTemplate","Scroller_ng_container_0_div_7_ng_template_2_ng_template_1_Template","Scroller_ng_container_0_div_7_ng_template_2_Template","Scroller_ng_container_0_div_7_Template","Scroller_ng_container_0_Template","onContainerScroll","_showSpacer","loaderDisabled","_showLoader","Scroller_ng_template_1_ng_container_1_ng_container_1_Template","Scroller_ng_template_1_ng_container_1_Template","loadedColumns","Scroller_ng_template_1_Template","Scroller","_tabindex","_scrollHeight","_scrollWidth","_resizeDelay","_appendOnly","_lazy","_loaderDisabled","_columns","showSpacer","numToleratedItems","_numToleratedItems","autoSize","_autoSize","onScrollIndexChange","elementViewChild","d_numToleratedItems","isRangeChanged","numItemsInViewport","lastScrollPos","lazyLoadState","scrollTimeout","resizeTimeout","windowResizeListener","defaultWidth","defaultHeight","defaultContentWidth","defaultContentHeight","loadedRows","isPageChanged","getPageByFirst","setInitialState","isLoadingChanged","calculateAutoSize","setSize","calculateOptions","setSpacerSize","calculateNumItems","contentPos","getContentPosition","calculateFirst","_numT","calculateCoord","_cpos","newFirst","isToEnd","calculateFirstInViewport","_pos","firstInViewport","lastInViewport","contentHeight","calculateNumItemsInViewport","_contentSize","calculateNumToleratedItems","_numItems","calculateLast","_num","_isCols","getLast","contain","isCols","setProp","_name","setContentPosition","calculateTranslateVal","_y","translateVal","onScrollPositionChange","calculateScrollPos","calculateCurrentIndex","calculateTriggerIndex","_currentIndex","_last","_isScrollDownOrRight","_triggerIndex","newLast","newScrollPos","isScrollDown","isScrollRight","triggerIndex","scrollPos","isScrollDownOrRight","onScrollChange","newState","isDiffWidth","isDiffHeight","renderedIndex","extOptions","ScrollPanel_ng_container_6_Template","ScrollPanel","xBarViewChild","yBarViewChild","scrollXRatio","timeoutFrame","lastPageY","lastPageX","isXBarClicked","isYBarClicked","lastScrollLeft","lastScrollTop","contentScrollListener","mouseEnterListener","xBarMouseDownListener","yBarMouseDownListener","documentMouseMoveListener","documentMouseUpListener","onXBarMouseDown","onYBarMouseDown","onDocumentMouseMove","onDocumentMouseUp","calculateContainerHeight","xBar","containerStyles","xBarStyles","pureContainerHeight","ownWidth","yBar","ownHeight","xBarWidth","cssText","yBarHeight","setTimer","bindDocumentMouseListeners","unbindDocumentMouseListeners","onMouseMoveForXBar","onMouseMoveForYBar","scrollableHeight","SelectButton_div_2_ng_container_1_span_1_Template","option_r2","SelectButton_div_2_ng_container_1_Template","SelectButton_div_2_ng_template_2_ng_container_0_Template","SelectButton_div_2_ng_template_2_Template","i_r3","selectButtonTemplate","SelectButton_div_2_Template","SELECTBUTTON_VALUE_ACCESSOR","SelectButton","unselectable","changeTabIndexes","firstTabableChild","SplitButton_ng_container_2_ng_container_2_Template","SplitButton_ng_container_2_Template","onDefaultButtonClick","buttonProps","SplitButton_ng_template_3_Template","SplitButton_ChevronDownIcon_6_Template","SplitButton_7_ng_template_0_Template","SplitButton_7_Template","SplitButton","menuStyle","menuStyleClass","expandAriaLabel","menuButtonProps","buttonViewChild","ariaId","isExpanded","onDropdownButtonClick","onDropdownButtonKeydown","Steps_li_3_a_2_span_3_Template","item_r2","Steps_li_3_a_2_ng_template_4_Template","Steps_li_3_a_2_Template","getItemTabIndex","Steps_li_3_ng_template_3_span_3_Template","Steps_li_3_ng_template_3_ng_template_4_Template","Steps_li_3_ng_template_3_Template","Steps_li_3_Template","isClickableRouterLink","Steps","navigateToNextItem","navigateToPrevItem","navigateToFirstItem","navigateToLastItem","setFocusToMenuitem","findFirstItem","findLastItem","firstSibling","focusableItem","TriStateCheckbox_ng_container_5_span_1_Template","checkboxTrueIcon","TriStateCheckbox_ng_container_5_ng_container_2_CheckIcon_1_Template","TriStateCheckbox_ng_container_5_ng_container_2_span_2_1_ng_template_0_Template","TriStateCheckbox_ng_container_5_ng_container_2_span_2_1_Template","TriStateCheckbox_ng_container_5_ng_container_2_span_2_Template","TriStateCheckbox_ng_container_5_ng_container_2_Template","TriStateCheckbox_ng_container_5_Template","TriStateCheckbox_ng_container_6_span_1_Template","checkboxFalseIcon","TriStateCheckbox_ng_container_6_ng_container_2_TimesIcon_1_Template","TriStateCheckbox_ng_container_6_ng_container_2_span_2_1_ng_template_0_Template","TriStateCheckbox_ng_container_6_ng_container_2_span_2_1_Template","TriStateCheckbox_ng_container_6_ng_container_2_span_2_Template","uncheckIconTemplate","TriStateCheckbox_ng_container_6_ng_container_2_Template","TriStateCheckbox_ng_container_6_Template","TriStateCheckbox_label_7_Template","TRISTATECHECKBOX_VALUE_ACCESSOR","TriStateCheckbox","TriStateCheckboxModule","FilterIcon","ɵFilterIcon_BaseFactory","FilterSlashIcon","ɵFilterSlashIcon_BaseFactory","Table_div_2_i_1_Template","Table_div_2_ng_container_2_SpinnerIcon_1_Template","Table_div_2_ng_container_2_span_2_1_ng_template_0_Template","Table_div_2_ng_container_2_span_2_1_Template","Table_div_2_ng_container_2_span_2_Template","Table_div_2_ng_container_2_Template","Table_div_2_Template","Table_div_3_ng_container_1_Template","Table_div_3_Template","captionTemplate","Table_p_paginator_4_1_ng_template_0_ng_container_0_Template","Table_p_paginator_4_1_ng_template_0_Template","paginatorFirstPageLinkIconTemplate","Table_p_paginator_4_1_Template","Table_p_paginator_4_2_ng_template_0_ng_container_0_Template","Table_p_paginator_4_2_ng_template_0_Template","paginatorPreviousPageLinkIconTemplate","Table_p_paginator_4_2_Template","Table_p_paginator_4_3_ng_template_0_ng_container_0_Template","Table_p_paginator_4_3_ng_template_0_Template","paginatorLastPageLinkIconTemplate","Table_p_paginator_4_3_Template","Table_p_paginator_4_4_ng_template_0_ng_container_0_Template","Table_p_paginator_4_4_ng_template_0_Template","paginatorNextPageLinkIconTemplate","Table_p_paginator_4_4_Template","Table_p_paginator_4_Template","alwaysShowPaginator","paginatorLeftTemplate","paginatorRightTemplate","paginatorDropdownAppendTo","paginatorDropdownScrollHeight","paginatorDropdownItemTemplate","paginatorStyleClass","paginatorLocale","Table_p_scroller_7_ng_template_2_ng_container_0_Template","Table_p_scroller_7_ng_template_2_Template","items_r37","scrollerOptions_r38","Table_p_scroller_7_Template","onLazyItemLoad","processedData","_virtualRowHeight","virtualScrollDelay","loadingBodyTemplate","Table_ng_container_8_ng_container_1_Template","Table_ng_container_8_Template","Table_ng_template_9_ng_container_2_Template","Table_ng_template_9_ng_container_5_Template","Table_ng_template_9_tbody_6_Template","frozenValue","frozenBodyTemplate","Table_ng_template_9_tbody_8_Template","Table_ng_template_9_tfoot_9_ng_container_2_Template","Table_ng_template_9_tfoot_9_Template","footerGroupedTemplate","Table_ng_template_9_Template","tableStyle","tableStyleClass","resizableColumns","columnResizeMode","colGroupTemplate","headerGroupedTemplate","dataToRender","bodyTemplate","Table_p_paginator_11_1_ng_template_0_ng_container_0_Template","Table_p_paginator_11_1_ng_template_0_Template","Table_p_paginator_11_1_Template","Table_p_paginator_11_2_ng_template_0_ng_container_0_Template","Table_p_paginator_11_2_ng_template_0_Template","Table_p_paginator_11_2_Template","Table_p_paginator_11_3_ng_template_0_ng_container_0_Template","Table_p_paginator_11_3_ng_template_0_Template","Table_p_paginator_11_3_Template","Table_p_paginator_11_4_ng_template_0_ng_container_0_Template","Table_p_paginator_11_4_ng_template_0_Template","Table_p_paginator_11_4_Template","Table_p_paginator_11_Template","_r70","Table_div_12_ng_container_1_Template","Table_div_12_Template","Table_div_13_Template","Table_span_14_ArrowDownIcon_2_Template","Table_span_14_3_ng_template_0_Template","Table_span_14_3_Template","Table_span_14_Template","reorderIndicatorUpIconTemplate","Table_span_15_ArrowUpIcon_2_Template","Table_span_15_3_ng_template_0_Template","Table_span_15_3_Template","Table_span_15_Template","reorderIndicatorDownIconTemplate","TableBody_ng_container_0_ng_template_1_ng_container_0_ng_container_1_Template","rowIndex","editing","frozen","TableBody_ng_container_0_ng_template_1_ng_container_0_Template","rowData_r6","rowIndex_r7","groupHeaderTemplate","getRowIndex","isRowEditing","TableBody_ng_container_0_ng_template_1_ng_container_1_ng_container_1_Template","TableBody_ng_container_0_ng_template_1_ng_container_1_Template","TableBody_ng_container_0_ng_template_1_ng_container_2_ng_container_1_Template","rowgroup","TableBody_ng_container_0_ng_template_1_ng_container_2_Template","shouldRenderRowspan","calculateRowGroupSize","TableBody_ng_container_0_ng_template_1_ng_container_3_ng_container_1_Template","TableBody_ng_container_0_ng_template_1_ng_container_3_Template","groupFooterTemplate","TableBody_ng_container_0_ng_template_1_Template","rowGroupMode","shouldRenderRowGroupHeader","shouldRenderRowGroupFooter","TableBody_ng_container_0_Template","rowTrackBy","TableBody_ng_container_1_ng_template_1_ng_container_0_ng_container_1_Template","TableBody_ng_container_1_ng_template_1_ng_container_0_Template","rowData_r21","rowIndex_r22","isRowExpanded","TableBody_ng_container_1_ng_template_1_ng_container_1_ng_container_1_Template","TableBody_ng_container_1_ng_template_1_ng_container_1_Template","TableBody_ng_container_1_ng_template_1_ng_container_2_ng_container_1_Template","TableBody_ng_container_1_ng_template_1_ng_container_2_ng_container_2_ng_container_1_Template","TableBody_ng_container_1_ng_template_1_ng_container_2_ng_container_2_Template","TableBody_ng_container_1_ng_template_1_ng_container_2_Template","expandedRowTemplate","TableBody_ng_container_1_ng_template_1_Template","TableBody_ng_container_1_Template","TableBody_ng_container_2_ng_template_1_ng_container_0_Template","TableBody_ng_container_2_ng_template_1_ng_container_1_ng_container_1_Template","TableBody_ng_container_2_ng_template_1_ng_container_1_Template","rowData_r36","rowIndex_r37","frozenExpandedRowTemplate","TableBody_ng_container_2_ng_template_1_Template","TableBody_ng_container_2_Template","TableBody_ng_container_3_ng_container_1_Template","_c21","TableBody_ng_container_3_Template","TableBody_ng_container_4_ng_container_1_Template","TableBody_ng_container_4_Template","emptyMessageTemplate","TableService","sortSource","selectionSource","contextMenuSource","valueSource","totalRecordsSource","columnsSource","sortSource$","selectionSource$","contextMenuSource$","valueSource$","totalRecordsSource$","columnsSource$","onSort","sortMeta","onContextMenu","onValueChange","onTotalRecordsChange","onColumnsChange","Table","tableService","frozenColumns","paginator","paginatorPosition","defaultSortOrder","sortMode","resetPageOnSort","selectionPageOnly","contextMenuSelection","contextMenuSelectionChange","contextMenuSelectionMode","rowSelectable","lazyLoadOnInit","compareSelectionBy","csvSeparator","exportFilename","globalFilterFields","filterDelay","expandedRowKeys","editingRowKeys","rowExpandMode","scrollDirection","frozenWidth","contextMenu","reorderableColumns","rowHover","customSort","showInitialSortBadge","autoLayout","exportFunction","exportHeader","stateKey","stateStorage","groupRowsBy","groupRowsByOrder","responsiveLayout","_rows","_totalRecords","_sortField","_sortOrder","multiSortMeta","_multiSortMeta","selectAllChange","selectionChange","onRowSelect","onRowUnselect","onRowExpand","onRowCollapse","onContextMenuSelect","onColResize","onColReorder","onRowReorder","onEditInit","onEditComplete","onEditCancel","onHeaderCheckboxToggle","sortFunction","rowsChange","onStateSave","onStateRestore","resizeHelperViewChild","reorderIndicatorUpViewChild","reorderIndicatorDownViewChild","wrapperViewChild","tableViewChild","tableHeaderViewChild","tableFooterViewChild","virtualRowHeight","filteredValue","frozenHeaderTemplate","frozenFooterTemplate","frozenColGroupTemplate","sortIconTemplate","headerCheckboxIconTemplate","selectionKeys","lastResizerHelperX","reorderIconWidth","reorderIconHeight","draggedColumn","draggedRowIndex","droppedRowIndex","rowDragging","dropPosition","editingCell","editingCellData","editingCellField","editingCellRowIndex","documentEditListener","preventSelectionSetterPropagation","anchorRowIndex","rangeRowIndex","filterTimeout","rowTouched","restoringSort","restoringFilter","stateRestored","columnOrderStateRestored","columnWidthsState","tableWidthState","overlaySubscription","resizeColumnElement","columnResizing","rowGroupHeaderStyleObject","createLazyLoadMetadata","isStateful","restoreColumnWidths","restoreState","sortSingle","sortMultiple","restoreColumnOrder","updateSelectionKeys","saveState","_initialColWidths","resetScrollTop","getSortMeta","getGroupRowsMeta","multisortField","multisortmeta","compareValuesOnSort","isSorted","handleRowClick","targetNode","rowData","isMultipleSelectionMode","clearSelectionRange","selectRange","isRowSelectable","metaSelection","dataKeyValue","isSingleSelectionMode","selectionIndex","findIndexInSelection","handleRowTouchEnd","handleRowRightClick","rangeRowsData","rangeRowData","toggleRowWithRadio","toggleRowWithCheckbox","toggleRowsWithCheckbox","matchMode","isFilterBlank","filterGlobal","globalFilterFieldsArray","localMatch","globalMatch","localFiltered","filterField","filterMeta","executeLocalFilter","OR","dataFieldValue","globalFilter","forceUpdate","clearFilterValues","getExportHeader","exportCSV","csv","selectionOnly","allValues","cellData","scrollToVirtualIndex","updateEditingCell","bindDocumentEditListener","isEditingCellValid","unbindDocumentEditListener","initRowEdit","saveRowEdit","rowElement","cancelRowEdit","toggleRow","onColumnResizeBegin","containerLeft","onColumnResize","onColumnResizeEnd","newColumnWidth","nextColumnWidth","resizeTableCells","_totalTableWidth","setResizeTableWidth","tableHead","onColumnDragStart","columnElement","onColumnDragEnter","dropHeader","containerOffset","dropHeaderOffset","targetLeft","columnCenter","dropEffect","onColumnDragLeave","onColumnDrop","dropColumn","dragIndex","dropIndex","allowDrop","reorderArray","updateStyleElement","colIndex","destroyStyleElement","createStyleElement","colWidth","onRowDragStart","onRowDragOver","rowY","rowMidY","prevRowElement","onRowDragLeave","onRowDragEnd","onRowDrop","getStorage","sessionStorage","saveColumnWidths","saveColumnOrder","clearState","stateString","columnWidths","tableWidth","columnOrder","reorderedColumns","findColumnByKey","destroyResponsiveStyle","TableBody","frozenRows","updateFrozenRowStickyPosition","updateFrozenRowGroupHeaderStickyPosition","currentRowFieldData","prevRowData","nextRowData","nextRowFieldData","groupRowSpan","tableHeaderHeight","getScrollerOption","TieredMenuSub_ng_template_2_li_0_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_span_1_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_span_2_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_ng_template_3_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_span_5_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_AngleRightIcon_1_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_ng_template_0_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_2_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_ng_container_6_Template","tieredMenu","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_1_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_span_1_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_span_2_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_ng_template_3_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_span_5_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_AngleRightIcon_1_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_ng_template_0_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_2_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_ng_container_6_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_a_2_Template","TieredMenuSub_ng_template_2_li_1_ng_container_3_Template","TieredMenuSub_ng_template_2_li_1_ng_container_4_1_ng_template_0_Template","TieredMenuSub_ng_template_2_li_1_ng_container_4_1_Template","hasSubmenu","TieredMenuSub_ng_template_2_li_1_ng_container_4_Template","TieredMenuSub_ng_template_2_li_1_p_tieredMenuSub_5_Template","TieredMenuSub_ng_template_2_li_1_Template","TieredMenuSub_ng_template_2_Template","TieredMenu_div_0_Template","TieredMenuSub","positionSubmenu","sublist","sublistWidth","itemOuterWidth","TieredMenu","rootProcessedItem","Timeline_div_1_ng_container_2_Template","Timeline_div_1_ng_container_4_ng_container_1_Template","Timeline_div_1_ng_container_4_Template","event_r1","markerTemplate","Timeline_div_1_ng_template_5_Template","Timeline_div_1_div_7_Template","Timeline_div_1_ng_container_9_Template","Timeline_div_1_Template","last_r2","oppositeTemplate","Timeline","tooltipEvent","positionStyle","tooltipZIndex","showDelay","hideDelay","positionTop","positionLeft","autoHide","_tooltipOptions","tooltipText","showTimeout","hideTimeout","mouseLeaveListener","containerMouseleaveListener","clickListener","focusListener","blurListener","onMouseLeave","setOption","updateText","isAutoHide","onPressEscape","clearHideTimeout","clearShowTimeout","tooltipArrow","bindContainerMouseleaveListener","unbindContainerMouseleaveListener","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","getHostOffset","preAlign","hostOffset","defaultClassName","targetTop","clearTimeouts","equalsByValue","arrA","arrB","dateA","dateB","regexpA","regexpB","insertIntoOrderedArray","sourceArr","injected","emptyValue1","emptyValue2","nullSortOrder","finalSortOrder","zindexutils","zIndexes","getZIndex","lastZIndex","newZIndex","revertZIndex","getCurrent","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","asyncGeneratorStep","_throw","resume","fulfill","settle","__values","SuppressedError"],"sourceRoot":"webpack:///","sources":["./src/app/api/api-token.lookup.ts","./src/app/api/errors/api.error.ts","./src/app/api/services/base/base-entity.api.service.ts","./src/app/api/services/base/base.api.service.ts","./src/app/api/services/display-components/display-component-definition.api.service.ts","./src/app/api/services/display-components/display-component-instance.api.service.ts","./src/app/api/services/display-components/display-component-type.api.service.ts","./src/app/api/services/entities/entity-definition.api.service.ts","./src/app/api/services/entities/entity-instance-rule-violation-override.api.service.ts","./src/app/api/services/entities/entity-instance-rule-violation.api.service.ts","./src/app/shared/constants/enums/observe-type.enum.ts","./src/app/api/services/entities/entity-instance.api.service.ts","./src/app/api/services/entities/entity-layout-type.api.service.ts","./src/app/api/services/entities/entity-layout.api.service.ts","./src/app/api/services/entities/entity-type.api.service.ts","./src/app/api/services/entities/entity-version.api.service.ts","./src/app/api/services/logs/log.api.service.ts","./src/app/api/services/operations/operation-definition-parameter.api.service.ts","./src/app/api/services/operations/operation-definition.api.service.ts","./src/app/api/services/operations/operation-group-hierarchy.api.service.ts","./src/app/api/services/operations/operation-group.api.service.ts","./src/app/api/services/operations/operation-type-parameter.api.service.ts","./src/app/api/services/operations/operation-type.api.service.ts","./src/app/api/services/rules/rule-definition.api.service.ts","./src/app/api/services/rules/rule-presentation-definition.api.service.ts","./src/app/api/services/rules/rule-presentation-logic-definition.api.service.ts","./src/app/api/services/rules/rule-violation-workflow-action-definition.api.service.ts","./src/app/api/services/security/authenticate.api.service.ts","./src/app/api/services/security/security-group-rule-definition-violation-override.api.service.ts","./src/app/api/services/security/security-group.api.service.ts","./src/app/api/services/security/security-session.api.service.ts","./src/app/api/services/workflow/workflow-action-definitions.api.service.ts","./src/app/app.config.ts","./src/app/bi/components/wizard-steps/clone-power-bi-report/clone-power-bi-report.component.html","./src/app/bi/components/wizard-steps/clone-power-bi-report/clone-power-bi-report.component.ts","./src/app/bi/components/wizard-steps/select-existing-power-bi-report/select-existing-power-bi-report.component.html","./src/app/bi/components/wizard-steps/select-existing-power-bi-report/select-existing-power-bi-report.component.ts","./src/app/bi/directives/power-bi-wizard-step.directive.ts","./src/app/claims/claims.token-lookup.ts","./src/app/claims/components/wizard-steps/claim/add-claim-payment/add-claim-payment.component.html","./src/app/claims/components/wizard-steps/claim/add-claim-payment/add-claim-payment.component.ts","./src/app/claims/components/wizard-steps/claim/add-exposure-claim/add-exposure-claim.component.html","./src/app/claims/components/wizard-steps/claim/add-exposure-claim/add-exposure-claim.component.ts","./src/app/claims/components/wizard-steps/claim/adjust-reserves-claim/adjust-reserves-claim.component.html","./src/app/claims/components/wizard-steps/claim/adjust-reserves-claim/adjust-reserves-claim.component.ts","./src/app/claims/components/wizard-steps/claim/approve-claim-payment/approve-claim-payment-claim.component.html","./src/app/claims/components/wizard-steps/claim/approve-claim-payment/approve-claim-payment-claim.component.ts","./src/app/claims/components/wizard-steps/claim/create-claim/create-claim.component.html","./src/app/claims/components/wizard-steps/claim/create-claim/create-claim.component.ts","./src/app/claims/components/wizard-steps/claim/manage-additional-payees-claim/manage-additional-payees-claim.component.html","./src/app/claims/components/wizard-steps/claim/manage-additional-payees-claim/manage-additional-payees-claim.component.ts","./src/app/claims/components/wizard-steps/claim/manage-claim-owner/manage-claim-owner-claim.component.html","./src/app/claims/components/wizard-steps/claim/manage-claim-owner/manage-claim-owner-claim.component.ts","./src/app/claims/components/wizard-steps/claim/manage-exposure-parties-claim/manage-exposure-parties-claim.component.html","./src/app/claims/components/wizard-steps/claim/manage-exposure-parties-claim/manage-exposure-parties-claim.component.ts","./src/app/claims/components/wizard-steps/claim/manage-parties-confirmation-claim/manage-parties-confirmation-claim.component.html","./src/app/claims/components/wizard-steps/claim/manage-parties-confirmation-claim/manage-parties-confirmation-claim.component.ts","./src/app/claims/components/wizard-steps/claim/reject-claim-payment/reject-claim-payment-claim.component.html","./src/app/claims/components/wizard-steps/claim/reject-claim-payment/reject-claim-payment-claim.component.ts","./src/app/claims/components/wizard-steps/claim/select-claim-type/select-claim-type.component.html","./src/app/claims/components/wizard-steps/claim/select-claim-type/select-claim-type.component.ts","./src/app/claims/components/wizard-steps/claim/update-claim-exposure-status/update-claim-exposure-status-claim.component.html","./src/app/claims/components/wizard-steps/claim/update-claim-exposure-status/update-claim-exposure-status-claim.component.ts","./src/app/claims/components/wizard-steps/claim/update-claim-status/update-claim-status-claim.component.html","./src/app/claims/components/wizard-steps/claim/update-claim-status/update-claim-status-claim.component.ts","./src/app/claims/components/wizard-steps/claim/verify-coverage-claim/verify-coverage-claim.component.html","./src/app/claims/components/wizard-steps/claim/verify-coverage-claim/verify-coverage-claim.component.ts","./src/app/claims/constants/claims-constants.ts","./src/app/claims/dynamic-components/claim-payment-additional-payees/claim-payment-additional-payees.component.html","./src/app/claims/dynamic-components/claim-payment-additional-payees/claim-payment-additional-payees.component.ts","./src/app/claims/dynamic-components/claim-payment-payee/claim-payment-payee.component.html","./src/app/claims/dynamic-components/claim-payment-payee/claim-payment-payee.component.ts","./src/app/claims/dynamic-components/exposure-outstanding-reserves/exposure-outstanding-reserves.component.html","./src/app/claims/dynamic-components/exposure-outstanding-reserves/exposure-outstanding-reserves.component.ts","./src/app/claims/dynamic-components/exposure-payments/exposure-payments.component.html","./src/app/claims/dynamic-components/exposure-payments/exposure-payments.component.ts","./src/app/claims/dynamic-components/exposure-recoveries/exposure-recoveries.component.html","./src/app/claims/dynamic-components/exposure-recoveries/exposure-recoveries.component.ts","./src/app/claims/dynamic-components/policy-details/policy-details.component.html","./src/app/claims/dynamic-components/policy-details/policy-details.component.ts","./src/app/claims/services/claims.service.ts","./src/app/entity/components/entity-instance/entity-instance.component.html","./src/app/entity/components/entity-instance/entity-instance.component.ts","./src/app/entity/components/entity-select/entity-select.component.html","./src/app/entity/components/entity-select/entity-select.component.ts","./src/app/entity/components/wizard-steps/parent-selection/parent-selection.component.html","./src/app/entity/components/wizard-steps/parent-selection/parent-selection.component.ts","./src/app/entity/directives/entity-table.directive.ts","./src/app/entity/services/entity.service.ts","./src/app/insurance/components/make-payment-details/make-payment-details.component.html","./src/app/insurance/components/make-payment-details/make-payment-details.component.ts","./src/app/insurance/components/status-reasons/status-reasons.component.html","./src/app/insurance/components/status-reasons/status-reasons.component.ts","./src/app/insurance/components/wizard-steps/organization/commissions/adjustment-details/adjustment-details.component.html","./src/app/insurance/components/wizard-steps/organization/commissions/adjustment-details/adjustment-details.component.ts","./src/app/insurance/components/wizard-steps/organization/commissions/adjustment-summary/adjustment-summary.component.html","./src/app/insurance/components/wizard-steps/organization/commissions/adjustment-summary/adjustment-summary.component.ts","./src/app/insurance/components/wizard-steps/organization/commissions/select-disbursement-organizations/select-disbursement-organizations.component.html","./src/app/insurance/components/wizard-steps/organization/commissions/select-disbursement-organizations/select-disbursement-organizations.component.ts","./src/app/insurance/components/wizard-steps/policy/adjustment-write-off-amount/adjustment-write-off-amount.component.html","./src/app/insurance/components/wizard-steps/policy/adjustment-write-off-amount/adjustment-write-off-amount.component.ts","./src/app/insurance/components/wizard-steps/policy/adjustment-write-off-comments/adjustment-write-off-comments.component.html","./src/app/insurance/components/wizard-steps/policy/adjustment-write-off-comments/adjustment-write-off-comments.component.ts","./src/app/insurance/components/wizard-steps/policy/bind-transaction/bind-transaction.component.html","./src/app/insurance/components/wizard-steps/policy/bind-transaction/bind-transaction.component.ts","./src/app/insurance/components/wizard-steps/policy/create-transaction/create-transaction.component.html","./src/app/insurance/components/wizard-steps/policy/create-transaction/create-transaction.component.ts","./src/app/insurance/components/wizard-steps/policy/make-payment-receipt/make-payment-receipt.component.html","./src/app/insurance/components/wizard-steps/policy/make-payment-receipt/make-payment-receipt.component.ts","./src/app/insurance/components/wizard-steps/policy/make-payment/make-payment.component.html","./src/app/insurance/components/wizard-steps/policy/make-payment/make-payment.component.ts","./src/app/insurance/components/wizard-steps/policy/non-renew-policy/non-renew-policy.component.html","./src/app/insurance/components/wizard-steps/policy/non-renew-policy/non-renew-policy.component.ts","./src/app/insurance/components/wizard-steps/policy/payment-batch-approve/payment-batch-approve.component.html","./src/app/insurance/components/wizard-steps/policy/payment-batch-approve/payment-batch-approve.component.ts","./src/app/insurance/components/wizard-steps/policy/payment-batch-create/payment-batch-create.component.html","./src/app/insurance/components/wizard-steps/policy/payment-batch-create/payment-batch-create.component.ts","./src/app/insurance/components/wizard-steps/policy/payment-details/payment-details.component.html","./src/app/insurance/components/wizard-steps/policy/payment-details/payment-details.component.ts","./src/app/insurance/components/wizard-steps/policy/rescind-non-renew-policy/rescind-non-renew-policy.component.html","./src/app/insurance/components/wizard-steps/policy/rescind-non-renew-policy/rescind-non-renew-policy.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-effective-date/transaction-cancel-effective-date.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-effective-date/transaction-cancel-effective-date.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-reasons/transaction-cancel-reasons.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-reasons/transaction-cancel-reasons.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-reinstate-comments/transaction-cancel-reinstate-comments.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-cancel-reinstate-comments/transaction-cancel-reinstate-comments.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-decline-reasons/transaction-decline-reasons.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-decline-reasons/transaction-decline-reasons.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-issue-differences/transaction-endorse-issue-differences.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-issue-differences/transaction-endorse-issue-differences.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-issue-summary/transaction-endorse-issue-summary.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-issue-summary/transaction-endorse-issue-summary.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-reasons/transaction-endorse-reasons.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-reasons/transaction-endorse-reasons.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-status-effective-date/transaction-endorse-status-effective-date.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-endorse-status-effective-date/transaction-endorse-status-effective-date.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-rescind-cancel/transaction-rescind-cancel.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-rescind-cancel/transaction-rescind-cancel.component.ts","./src/app/insurance/components/wizard-steps/policy/transaction-rescind-endorse/transaction-rescind-endorse.component.html","./src/app/insurance/components/wizard-steps/policy/transaction-rescind-endorse/transaction-rescind-endorse.component.ts","./src/app/insurance/constants/insurance-constants.ts","./src/app/insurance/directives/associated-transaction.directive.ts","./src/app/insurance/directives/status-reasons.directive.ts","./src/app/insurance/directives/transaction-status-effective-date.directive.ts","./src/app/insurance/dynamic-components/associated-entity-list/associated-entity-list.component.html","./src/app/insurance/dynamic-components/associated-entity-list/associated-entity-list.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/associated-key-contacts/associated-key-contacts.component.html","./src/app/insurance/dynamic-components/associated-entity-list/associated-key-contacts/associated-key-contacts.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/associated-organization/associated-organization.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/associated-organization/associated-organization.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-accounting-details/transaction-accounting-details.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-accounting-details/transaction-accounting-details.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-assets/transaction-assets.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-assets/transaction-assets.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-coverages-deductibles/transaction-coverages-deductibles.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-coverages-deductibles/transaction-coverages-deductibles.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-forms/transaction-forms.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-forms/transaction-forms.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-interests/transaction-interests.component.html","./src/app/insurance/dynamic-components/associated-entity-list/transaction-interests/transaction-interests.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-reasons/transaction-reasons.component.ts","./src/app/insurance/dynamic-components/associated-entity-list/transaction-reasons/transaction-reasons.component.html","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-details.component.html","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-details.component.ts","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-list-expand/commission-disbursement-list-expand.component.html","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-list-expand/commission-disbursement-list-expand.component.ts","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-summary.component.html","./src/app/insurance/dynamic-components/commission-disbursement-list/commission-disbursement-summary.component.ts","./src/app/insurance/dynamic-components/create-quote-or-claim/create-quote-or-claim.component.html","./src/app/insurance/dynamic-components/create-quote-or-claim/create-quote-or-claim.component.ts","./src/app/insurance/dynamic-components/next-payment-installment-details/next-payment-installment-details.component.html","./src/app/insurance/dynamic-components/next-payment-installment-details/next-payment-installment-details.component.ts","./src/app/insurance/dynamic-components/policy-and-claim-quick-search/policy-and-claim-quick-search.component.html","./src/app/insurance/dynamic-components/policy-and-claim-quick-search/policy-and-claim-quick-search.component.ts","./src/app/insurance/helpers/commissions..helper.ts","./src/app/insurance/helpers/insurance.helper.ts","./src/app/insurance/insurance.token-lookup.ts","./src/app/insurance/business-logic-entities/transactions/transaction.ts","./src/app/shared/business-logic-entities/file-entity.ts","./src/app/shared/business-logic-entities/work-item.ts","./src/app/insurance/services/insurance.service.ts","./src/app/operation/components/operation-button-bar/operation-button-bar.component.html","./src/app/operation/components/operation-button-bar/operation-button-bar.component.ts","./src/app/operation/components/operation-button-menu/operation-button-menu.component.html","./src/app/operation/components/operation-button-menu/operation-button-menu.component.ts","./src/app/operation/components/operation-menu/operation-menu-subgroup/operation-menu-subgroup.component.html","./src/app/operation/components/operation-menu/operation-menu-subgroup/operation-menu-subgroup.component.ts","./src/app/operation/components/operation-menu/operation-menu.component.ts","./src/app/operation/components/operation-menu/operation-menu.component.html","./src/app/operation/directives/base-operation-group.directive.ts","./src/app/operation/directives/base-operation-menu-display.directive.ts","./src/app/operation/factories/operation-factory.ts","./src/app/operation/operation-token.lookup.ts","./src/app/operation/services/operation-execution.service.ts","./src/app/operation/services/operation.service.ts","./src/app/operation/shared/operation-button-type.constants.ts","./src/app/shared/app-animations.ts","./src/app/shared/business-logic-entities/business-logic-entity.ts","./src/app/shared/components/access-denied-content/access-denied-content.component.html","./src/app/shared/components/access-denied-content/access-denied-content.component.ts","./src/app/shared/components/color-swatch/color-swatch.component.ts","./src/app/shared/components/color-swatch/color-swatch.component.html","./src/app/shared/components/common-dashboard/common-dashboard.component.html","./src/app/shared/components/common-dashboard/common-dashboard.component.ts","./src/app/shared/components/common-dashboard/dashboard-section/dashboard-section.component.html","./src/app/shared/components/common-dashboard/dashboard-section/dashboard-section.component.ts","./src/app/shared/components/common-icon-tooltip/common-icon-tooltip.component.html","./src/app/shared/components/common-icon-tooltip/common-icon-tooltip.component.ts","./node_modules/jsonpath-plus/dist/index-browser-esm.js","./node_modules/lodash-es/_baseSet.js","./node_modules/lodash-es/set.js","./node_modules/xlsx/xlsx.mjs","./src/app/shared/services/data-export.service.ts","./src/app/shared/components/common-table/common-table.component.html","./src/app/shared/components/common-table/common-table.component.ts","./src/app/shared/components/differences-display/difference-display/difference-display.component.html","./src/app/shared/components/differences-display/difference-display/difference-display.component.ts","./src/app/shared/components/differences-display/differences-display.component.html","./src/app/shared/components/differences-display/differences-display.component.ts","./src/app/shared/components/dynamic-formly/dynamic-formly.component.ts","./src/app/shared/components/dynamic-formly/dynamic-formly.component.html","./src/app/shared/components/dynamic/dynamic.component.html","./src/app/shared/components/dynamic/dynamic.component.ts","./src/app/shared/components/search-filter/search-filter.component.ts","./src/app/shared/components/search-filter/search-filter.component.html","./src/app/shared/components/summary-card/summary-card.component.html","./src/app/shared/components/summary-card/summary-card.component.ts","./src/app/shared/constants/app-event.constants.ts","./src/app/shared/constants/app.constants.ts","./src/app/shared/constants/chart-constants.ts","./src/app/shared/constants/enums/file-state.enum.ts","./src/app/shared/constants/enums/response-type.enum.ts","./src/app/shared/constants/enums/security-right-category.enum.ts","./src/app/shared/constants/enums/security-right-type.enum.ts","./src/app/shared/constants/enums/storage-type.enum.ts","./src/app/shared/constants/formly.constants.ts","./src/app/shared/constants/mouse-event.constants.ts","./src/app/shared/constants/payment-batch-constants.ts","./src/app/shared/constants/permission.constants.ts","./src/app/shared/constants/report.constants.ts","./src/app/shared/constants/shared-type-constants.ts","./src/app/shared/constants/system-service.constants.ts","./src/app/shared/constants/window-event.constants.ts","./src/app/shared/constants/work-item-constants.ts","./src/app/shared/directives/base-page.directive.ts","./src/app/shared/directives/bi-report-setting.directive.ts","./src/app/shared/directives/click-outside.directive.ts","./src/app/shared/directives/common-child-list-directive.ts","./src/app/shared/directives/common-list-directive.ts","./src/app/shared/directives/common-table-page.directive.ts","./src/app/shared/directives/display-component-parameter.directive.ts","./src/app/shared/directives/drawer-list-directive.ts","./src/app/shared/directives/mobile-tooltip.directive.ts","./src/app/shared/directives/product-setting.directive.ts","./src/app/shared/directives/tooltip-display.directive.ts","./src/app/shared/directives/rule-workflow-display.directive.ts","./src/app/shared/dynamic-components/activity-list/activity-list.component.ts","./src/app/shared/dynamic-components/activity-list/activity-list.component.html","./src/app/shared/dynamic-components/address-list/address-list.component.html","./src/app/shared/dynamic-components/address-list/address-list.component.ts","./src/app/shared/dynamic-components/application-search/application-search.component.ts","./src/app/shared/dynamic-components/application-search/application-search.component.html","./src/app/shared/dynamic-components/bi-report-settings/bi-report-settings.component.html","./src/app/shared/dynamic-components/bi-report-settings/bi-report-settings.component.ts","./node_modules/chartjs-adapter-luxon/dist/chartjs-adapter-luxon.esm.js","./src/app/shared/dynamic-components/chart/chart.component.html","./src/app/shared/dynamic-components/chart/chart.component.ts","./src/app/shared/dynamic-components/cloud-chat/cloud-chat.component.html","./src/app/shared/dynamic-components/cloud-chat/cloud-chat.component.ts","./src/app/shared/constants/enums/commission-disbursment-status.enum.ts","./src/app/shared/dynamic-components/commissions/commissions-list/commissions-list.component.html","./src/app/shared/dynamic-components/commissions/commissions-list/commissions-list.component.ts","./src/app/shared/dynamic-components/commissions/commissions-schedule-update/commissions-schedule-update.component.html","./src/app/shared/dynamic-components/commissions/commissions-schedule-update/commissions-schedule-update.component.ts","./src/app/shared/dynamic-components/commissions/commissions.component.html","./src/app/shared/dynamic-components/commissions/commissions.component.ts","./src/app/shared/dynamic-components/common-list/common-list.component.html","./src/app/shared/dynamic-components/common-list/common-list.component.ts","./src/app/shared/dynamic-components/dynamic-common-table/dynamic-common-table.component.ts","./src/app/shared/dynamic-components/dynamic-common-table/dynamic-common-table.component.html","./src/app/shared/dynamic-components/dynamic-component.lookup.ts","./src/app/shared/dynamic-components/dynamic-formly-wrapper/dynamic-formly-wrapper.component.ts","./src/app/shared/dynamic-components/dynamic-formly-wrapper/dynamic-formly-wrapper.component.html","./src/app/shared/components/really-simple-syndication-feed-reader/really-simple-syndication-feed-reader.component.html","./src/app/shared/components/really-simple-syndication-feed-reader/really-simple-syndication-feed-reader.component.ts","./src/app/shared/dynamic-components/dynamic-really-simple-syndication-feed-reader/dynamic-really-simple-syndication-feed-reader.component.ts","./src/app/shared/dynamic-components/dynamic-really-simple-syndication-feed-reader/dynamic-really-simple-syndication-feed-reader.component.html","./src/app/shared/dynamic-components/dynamic-summary-card/dynamic-summary-card.component.ts","./src/app/shared/dynamic-components/dynamic-summary-card/dynamic-summary-card.component.html","./src/app/shared/components/weather-forecast/weather-forecast.component.html","./src/app/shared/components/weather-forecast/weather-forecast.component.ts","./src/app/shared/dynamic-components/dynamic-weather-card/dynamic-weather-card.component.ts","./src/app/shared/dynamic-components/dynamic-weather-card/dynamic-weather-card.component.html","./src/app/shared/dynamic-components/dynamic-wizard/dynamic-wizard.component.html","./src/app/shared/dynamic-components/dynamic-wizard/dynamic-wizard.component.ts","./src/app/shared/dynamic-components/external-report/external-report.component.ts","./src/app/shared/dynamic-components/external-report/external-report.component.html","./src/app/shared/constants/file.constants.ts","./src/app/shared/directives/file.directive.ts","./src/app/shared/dynamic-components/files/file-category/file-category.ts","./src/app/shared/constants/enums/file-progress-type.enum.ts","./src/app/shared/services/files/file-progress-reporter.ts","./src/app/shared/services/files/file.service.ts","./src/app/shared/constants/enums/embedded-file-encoding.enum.ts","./src/app/shared/dynamic-components/files/file-progress/file-progress.component.html","./src/app/shared/dynamic-components/files/file-progress/file-progress.component.ts","./src/app/shared/dynamic-components/files/add-file/add-file.component.html","./src/app/shared/dynamic-components/files/add-file/add-file.component.ts","./src/app/shared/dynamic-components/files/delete-file/delete-file.component.html","./src/app/shared/dynamic-components/files/delete-file/delete-file.component.ts","./src/app/shared/dynamic-components/files/download-file/download-file.component.html","./src/app/shared/dynamic-components/files/download-file/download-file.component.ts","./src/app/shared/dynamic-components/files/edit-file/edit-file.component.html","./src/app/shared/dynamic-components/files/edit-file/edit-file.component.ts","./src/app/shared/dynamic-components/files/file/file.component.html","./src/app/shared/dynamic-components/files/file/file.component.ts","./src/app/shared/dynamic-components/files/file-details/file-details.component.html","./src/app/shared/dynamic-components/files/file-details/file-details.component.ts","./src/app/shared/dynamic-components/files/files.component.html","./src/app/shared/dynamic-components/files/files.component.ts","./src/app/shared/dynamic-components/final-wizard-layout-step/final-wizard-layout-step.component.html","./src/app/shared/dynamic-components/final-wizard-layout-step/final-wizard-layout-step.component.ts","./src/app/shared/dynamic-components/history/history-timeline/history-timeline.component.html","./src/app/shared/dynamic-components/history/history-timeline/history-timeline.component.ts","./src/app/entity/helpers/entity-array-helper.ts","./src/app/shared/dynamic-components/history/history.component.html","./src/app/shared/dynamic-components/history/history.component.ts","./src/app/shared/directives/note.directive.ts","./src/app/shared/dynamic-components/notes/note-list/note-list.component.html","./src/app/shared/dynamic-components/notes/note-list/note-list.component.ts","./src/app/shared/dynamic-components/notes/note/note.component.html","./src/app/shared/dynamic-components/notes/note/note.component.ts","./src/app/shared/dynamic-components/notes/note-view/note-view.component.html","./src/app/shared/dynamic-components/notes/note-view/note-view.component.ts","./src/app/shared/dynamic-components/notes/note-create/note-create.component.html","./src/app/shared/dynamic-components/notes/note-create/note-create.component.ts","./src/app/shared/dynamic-components/notes/note-delete/note-delete.component.html","./src/app/shared/dynamic-components/notes/note-delete/note-delete.component.ts","./src/app/shared/dynamic-components/notes/notes.component.html","./src/app/shared/dynamic-components/notes/notes.component.ts","./src/app/shared/dynamic-components/payment-batch/payment-batch-list/payment-batch-list.component.html","./src/app/shared/dynamic-components/payment-batch/payment-batch-list/payment-batch-list.component.ts","./src/app/shared/dynamic-components/payment-batch/payment-batch.component.html","./src/app/shared/dynamic-components/payment-batch/payment-batch.component.ts","./src/app/shared/dynamic-components/product-settings/product-setting-action/product-setting-action.component.html","./src/app/shared/dynamic-components/product-settings/product-setting-action/product-setting-action.component.ts","./src/app/shared/dynamic-components/product-settings/product-setting-list/product-setting-list.component.html","./src/app/shared/dynamic-components/product-settings/product-setting-list/product-setting-list.component.ts","./src/app/shared/dynamic-components/product-settings/product-settings.component.html","./src/app/shared/dynamic-components/product-settings/product-settings.component.ts","./src/app/shared/implementations/entities/entity-instance-rule-violation.ts","./src/app/shared/dynamic-components/rules/rule-list-item/rule-list-item.component.html","./src/app/shared/dynamic-components/rules/rule-list-item/rule-list-item.component.ts","./src/app/shared/dynamic-components/rules/rule-list/rule-list.component.html","./src/app/shared/dynamic-components/rules/rule-list/rule-list.component.ts","./src/app/shared/dynamic-components/rules/rule-override-list/rule-override-list.component.html","./src/app/shared/dynamic-components/rules/rule-override-list/rule-override-list.component.ts","./src/app/shared/dynamic-components/rules/rule-override/rule-override.component.html","./src/app/shared/dynamic-components/rules/rule-override/rule-override.component.ts","./src/app/shared/dynamic-components/rules/rule-override-details/rule-override-details.component.ts","./src/app/shared/dynamic-components/rules/rule-override-details/rule-override-details.component.html","./src/app/shared/dynamic-components/rules/rules.component.html","./src/app/shared/dynamic-components/rules/rules.component.ts","./src/app/shared/dynamic-components/stonly-help/stonly-help.component.html","./src/app/shared/dynamic-components/stonly-help/stonly-help.component.ts","./src/app/shared/dynamic-components/work-items/work-item-list/work-item-list.component.html","./src/app/shared/dynamic-components/work-items/work-item-list/work-item-list.component.ts","./src/app/shared/directives/drawer-entity-component-directive.ts","./src/app/shared/dynamic-components/drawer-entity-components/entity-create-component/entity-create.component.html","./src/app/shared/dynamic-components/drawer-entity-components/entity-create-component/entity-create.component.ts","./src/app/shared/dynamic-components/drawer-entity-components/entity-update-component/entity-update.component.html","./src/app/shared/dynamic-components/drawer-entity-components/entity-update-component/entity-update.component.ts","./src/app/shared/dynamic-components/drawer-entity-components/entity-view-component/entity-view.component.html","./src/app/shared/dynamic-components/drawer-entity-components/entity-view-component/entity-view.component.ts","./src/app/shared/dynamic-components/work-items/work-items.component.html","./src/app/shared/dynamic-components/work-items/work-items.component.ts","./src/app/shared/factories/display-component-factory.ts","./src/app/shared/factories/options-factory.ts","./src/app/shared/helpers/any.helper.ts","./src/app/shared/helpers/api-filter.helper.ts","./src/app/shared/helpers/api.helper.ts","./src/app/shared/helpers/chart.helper.ts","./src/app/shared/helpers/date.helper.ts","./src/app/shared/helpers/document.helper.ts","./src/app/shared/helpers/error.helper.ts","./src/app/shared/implementations/application-data/client-message-detail.ts","./src/app/shared/implementations/application-data/client-message.ts","./src/app/shared/helpers/event.helper.ts","./src/app/shared/helpers/file.helper.ts","./src/app/shared/helpers/formly.helper.ts","./src/app/shared/constants/form-event.constants.ts","./src/app/shared/helpers/json-schema.helper.ts","./node_modules/lodash-es/differenceBy.js","./src/app/shared/helpers/object-array.helper.ts","./node_modules/JSONCrush/JSONCrush.js","./node_modules/lodash-es/differenceWith.js","./src/app/shared/helpers/object.helper.ts","./src/app/shared/helpers/rule.helper.ts","./src/app/shared/helpers/security.helper.ts","./src/app/shared/constants/enums/country-code-names.enum.ts","./src/app/shared/helpers/interpolation.helper.ts","./node_modules/lodash-es/_hasUnicode.js","./node_modules/lodash-es/_unicodeToArray.js","./node_modules/lodash-es/_stringToArray.js","./node_modules/lodash-es/_asciiToArray.js","./node_modules/lodash-es/upperFirst.js","./node_modules/lodash-es/_createCaseFirst.js","./node_modules/lodash-es/_castSlice.js","./node_modules/lodash-es/_deburrLetter.js","./node_modules/lodash-es/_basePropertyOf.js","./node_modules/lodash-es/deburr.js","./node_modules/lodash-es/_asciiWords.js","./node_modules/lodash-es/_hasUnicodeWord.js","./node_modules/lodash-es/_unicodeWords.js","./node_modules/lodash-es/words.js","./node_modules/lodash-es/_createCompounder.js","./node_modules/lodash-es/camelCase.js","./node_modules/lodash-es/_arrayReduce.js","./node_modules/lodash-es/capitalize.js","./node_modules/ts-md5/dist/esm/md5.js","./src/app/shared/helpers/string.helper.ts","./src/app/shared/implementations/application-data/activity.ts","./src/app/shared/implementations/application-data/json-schema-layout.ts","./src/app/shared/implementations/display-components/display-component-definition.ts","./src/app/shared/implementations/entities/entity-definition.ts","./src/app/shared/implementations/entities/entity-security.ts","./src/app/shared/implementations/entities/entity-layout.ts","./src/app/shared/implementations/entities/entity-type.ts","./src/app/shared/implementations/users/user.ts","./src/app/shared/pipes/date-time-to-true-local.pipe.ts","./src/app/shared/rule-token.lookup.ts","./node_modules/lodash-es/uniqueId.js","./src/app/shared/services/activity.service.ts","./src/app/shared/services/base/base-stored-variable.service.ts","./src/app/shared/services/cache.service.ts","./src/app/shared/implementations/display-components/display-component-instance.ts","./src/app/shared/services/display-component.service.ts","./src/app/shared/services/logger.service.ts","./src/app/shared/services/module.service.ts","./src/app/shared/services/power-bi-api.service.ts","./src/app/shared/services/power-bi.service.ts","./src/app/shared/services/really-simple-syndication-feed-reader.service.ts","./src/app/shared/services/resolver.service.ts","./src/app/shared/services/rule-presentation.service.ts","./src/app/shared/services/rule.service.ts","./src/app/shared/app-timespan.ts","./src/app/shared/services/session.service.ts","./src/app/shared/services/site-layout.service.ts","./src/app/shared/services/stonly.service.ts","./src/app/shared/services/user.service.ts","./src/app/shared/services/weather-forecast.service.ts","./src/app/shared/shared-token.lookup.ts","./src/app/shared/transforms/chart-transform.ts","./src/app/work-items/services/work-item.service.ts","./src/app/work-items/work-item-token.lookup.ts","./src/environments/environment.prod.ts","./src/app/admin/admin.component.ts","./src/app/admin/admin.component.html","./src/app/shared/helpers/table.helper.ts","./src/app/api/services/security/security-access-policy.api.service.ts","./src/app/api/services/security/security-access-policy-definition.api.service.ts","./node_modules/primeng/fesm2022/primeng-icons-caretleft.mjs","./node_modules/primeng/fesm2022/primeng-slidemenu.mjs","./src/app/components/app-context-menu/slide-menu/slide-menu.component.ts","./src/app/components/app-context-menu/slide-menu/slide-menu.component.html","./src/app/components/app-context-menu/app-context-menu.component.html","./src/app/components/app-context-menu/app-context-menu.component.ts","./src/app/shared/components/base-page/base-page.component.html","./src/app/shared/components/base-page/base-page.component.ts","./src/app/admin/components/entity/entity-access-policies/entity-access-policies.component.html","./src/app/admin/components/entity/entity-access-policies/entity-access-policies.component.ts","./src/app/admin/directives/entity-manager.directive.ts","./src/app/entity/shared/entity-event.constants.ts","./src/app/admin/components/entity/entity-access-policy-definition/entity-access-policy-definition.component.html","./src/app/admin/components/entity/entity-access-policy-definition/entity-access-policy-definition.component.ts","./src/app/api/services/workflow/workflow-failure-actions.api.service.ts","./src/app/api/services/workflow/workflow-requisite-types.api.service.ts","./src/app/api/services/workflow/workflow-action-requisites.api.service.ts","./src/app/admin/components/entity/entity-action-definition/entity-action-definition.component.html","./src/app/admin/components/entity/entity-action-definition/entity-action-definition.component.ts","./src/app/admin/components/entity/entity-actions/entity-actions.component.html","./src/app/admin/components/entity/entity-actions/entity-actions.component.ts","./src/app/shared/constants/common-formly-field-constants.ts","./src/app/admin/components/entity/entity-definitions/entity-definitions.component.html","./src/app/admin/components/entity/entity-definitions/entity-definitions.component.ts","./src/app/admin/components/entity/entity-layout-definition/entity-layout-definition.component.html","./src/app/admin/components/entity/entity-layout-definition/entity-layout-definition.component.ts","./src/app/admin/components/entity/entity-layouts/entity-layouts.component.html","./src/app/admin/components/entity/entity-layouts/entity-layouts.component.ts","./src/app/admin/components/entity/entity-overview/entity-overview.component.html","./src/app/admin/components/entity/entity-overview/entity-overview.component.ts","./src/app/api/services/rules/rule-validator-definition.api.service.ts","./src/app/api/services/rules/rule-validation-definition.api.service.ts","./src/app/shared/guards/app-can-deactivate.guard.ts","./src/app/admin/components/entity/entity-rule-definition/entity-rule-definition.component.html","./src/app/admin/components/entity/entity-rule-definition/entity-rule-definition.component.ts","./src/app/admin/components/entity/entity-rule-presentation/entity-rule-presentation.component.html","./src/app/admin/components/entity/entity-rule-presentation/entity-rule-presentation.component.ts","./src/app/admin/components/entity/entity-rule-validations/entity-rule-validations.component.html","./src/app/admin/components/entity/entity-rule-validations/entity-rule-validations.component.ts","./src/app/admin/components/entity/entity-rule-workflow/entity-rule-workflow.component.html","./src/app/admin/components/entity/entity-rule-workflow/entity-rule-workflow.component.ts","./src/app/admin/components/entity/entity-rules/entity-rules.component.html","./src/app/admin/components/entity/entity-rules/entity-rules.component.ts","./src/app/admin/components/entity/entity-search/entity-manager-search.component.html","./src/app/admin/components/entity/entity-search/entity-manager-search.component.ts","./src/app/api/services/security/security-application.api.service.ts","./src/app/admin/components/security/applications/applications.component.html","./src/app/admin/components/security/applications/applications.component.ts","./src/app/shared/directives/page-context.directive.ts","./src/app/admin/components/security/session-events/session-events.component.ts","./src/app/admin/components/security/session-events/session-events.component.html","./src/app/shared/factories/chart-factory.ts","./src/app/admin/components/security/sessions/session-expand/session.component.html","./src/app/admin/components/security/sessions/session-expand/session.component.ts","./src/app/shared/components/information-menu/information-menu.component.html","./src/app/shared/components/information-menu/information-menu.component.ts","./src/app/admin/components/security/sessions/sessions.component.html","./src/app/admin/components/security/sessions/sessions.component.ts","./src/app/admin/components/security/users/manage-user-group-expand/manage-user-group.component.html","./src/app/admin/components/security/users/manage-user-group-expand/manage-user-group.component.ts","./src/app/admin/components/security/users/manage-user-groups/manage-user-groups.component.html","./src/app/admin/components/security/users/manage-user-groups/manage-user-groups.component.ts","./src/app/admin/components/security/users/manage-user-expand/manage-user-expand.component.html","./src/app/admin/components/security/users/manage-user-expand/manage-user-expand.component.ts","./src/app/admin/components/security/users/manage-users/manage-users.component.html","./src/app/admin/components/security/users/manage-users/manage-users.component.ts","./src/app/admin/components/system/logs/log-expand/log.component.html","./src/app/admin/components/system/logs/log-expand/log.component.ts","./src/app/admin/components/system/logs/logs.component.html","./src/app/admin/components/system/logs/logs.component.ts","./src/app/admin/components/system/maintenance/maintenance.component.ts","./src/app/admin/components/system/maintenance/maintenance.component.html","./node_modules/primeng/fesm2022/primeng-icons-minus.mjs","./node_modules/primeng/fesm2022/primeng-panel.mjs","./src/app/admin/components/system/test-builder/test-builder.component.html","./src/app/admin/components/system/test-builder/test-builder.component.ts","./src/app/admin/components/user-interface/defaults/defaults.component.ts","./src/app/admin/components/user-interface/defaults/defaults.component.html","./src/app/admin/components/user-interface/display-components/display-definitions/display-definitions.component.html","./src/app/admin/components/user-interface/display-components/display-definitions/display-definitions.component.ts","./src/app/admin/components/user-interface/display-components/display-management/display-management-expand/display-management-expand.component.html","./src/app/admin/components/user-interface/display-components/display-management/display-management-expand/display-management-expand.component.ts","./src/app/admin/components/user-interface/display-components/display-management/display-management.component.html","./src/app/admin/components/user-interface/display-components/display-management/display-management.component.ts","./src/app/admin/components/user-interface/logos/logos.component.ts","./src/app/admin/components/user-interface/logos/logos.component.html","./src/app/admin/components/user-interface/operations/operation-definitions/operation-expand/operation-definition.component.html","./src/app/admin/components/user-interface/operations/operation-definitions/operation-expand/operation-definition.component.ts","./src/app/admin/components/user-interface/operations/operation-definitions/operation-definitions.component.html","./src/app/admin/components/user-interface/operations/operation-definitions/operation-definitions.component.ts","./src/app/admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group-create/operation-group-create-child.component.html","./src/app/admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group-create/operation-group-create-child.component.ts","./src/app/admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group.component.html","./src/app/admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group.component.ts","./src/app/admin/components/user-interface/operations/operation-groups/operation-groups.component.html","./src/app/admin/components/user-interface/operations/operation-groups/operation-groups.component.ts","./src/app/admin/components/user-interface/styles/styles.component.ts","./src/app/admin/components/user-interface/styles/styles.component.html","./src/app/admin/components/workflow-engine/action-definitions/action-definition-router.component.ts","./src/app/admin/components/workflow-engine/action-definitions/action-definition-router.component.html","./src/app/admin/components/workflow-engine/action-definitions/action-definition/action-definition.component.html","./src/app/admin/components/workflow-engine/action-definitions/action-definition/action-definition.component.ts","./src/app/api/services/workflow/workflow-action-instances.api.service.ts","./src/app/admin/components/workflow-engine/action-definitions/action-definitions/action-definition-expand/action-definition-expand.component.html","./src/app/admin/components/workflow-engine/action-definitions/action-definitions/action-definition-expand/action-definition-expand.component.ts","./src/app/admin/components/workflow-engine/action-definitions/action-definitions/action-definitions.component.html","./src/app/admin/components/workflow-engine/action-definitions/action-definitions/action-definitions.component.ts","./src/app/admin/components/workflow-engine/action-execution-history/action-history-expand/action-history-expand.component.html","./src/app/admin/components/workflow-engine/action-execution-history/action-history-expand/action-history-expand.component.ts","./src/app/admin/components/workflow-engine/action-execution-history/action-execution-history.component.html","./src/app/admin/components/workflow-engine/action-execution-history/action-execution-history.component.ts","./src/app/components/access-denied/access-denied.component.html","./src/app/components/access-denied/access-denied.component.ts","./src/app/shared/components/display-component-parameter/display-component-parameter.component.html","./src/app/shared/components/display-component-parameter/display-component-parameter.component.ts","./src/app/shared/components/display-component-parameter-header/display-component-parameter-header.component.html","./src/app/shared/components/display-component-parameter-header/display-component-parameter-header.component.ts","./src/app/components/generic-base-page/generic-base-page.component.html","./src/app/components/generic-base-page/generic-base-page.component.ts","./node_modules/primeng/fesm2022/primeng-tabmenu.mjs","./node_modules/primeng/fesm2022/primeng-tabview.mjs","./src/app/shared/components/base-page-tab-menu/base-page-tab-menu.component.html","./src/app/shared/components/base-page-tab-menu/base-page-tab-menu.component.ts","./src/app/components/generic-dashboard/generic-dashboard.component.html","./src/app/components/generic-dashboard/generic-dashboard.component.ts","./src/app/entity/components/entity-search/entity-search.component.html","./src/app/entity/components/entity-search/entity-search.component.ts","./src/app/entity/entity.component.ts","./src/app/entity/entity.component.html","./src/app/shared/guards/app-auth.guard.ts","./src/app/shared/guards/module.guard.ts","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./src/app/api/services/security/security-access-policy-mapping.api.service.ts","./src/app/api/api.module.ts","./src/app/components/login/services/login-message.service.ts","./node_modules/lodash-es/_baseUnset.js","./node_modules/lodash-es/_parent.js","./node_modules/primeng/fesm2022/primeng-accordion.mjs","./src/app/entity/components/custom-components/types/fields/custom-section-title/custom-section-title.component.html","./src/app/entity/components/custom-components/types/fields/custom-section-title/custom-section-title.component.ts","./src/app/entity/components/custom-components/field-validation-message/field-validation-message.component.html","./src/app/entity/components/custom-components/field-validation-message/field-validation-message.component.ts","./src/app/entity/components/custom-components/types/arrays/custom-repeater/custom-repeater.component.html","./src/app/entity/components/custom-components/types/arrays/custom-repeater/custom-repeater.component.ts","./node_modules/lodash-es/unset.js","./src/app/entity/directives/extended-custom-control.directive.ts","./src/app/entity/components/custom-components/types/fields/custom-calendar/custom-calendar.component.html","./src/app/entity/components/custom-components/types/fields/custom-calendar/custom-calendar.component.ts","./src/app/entity/components/custom-components/types/fields/custom-checkbox/custom-checkbox.component.ts","./src/app/entity/components/custom-components/types/fields/custom-checkbox/custom-checkbox.component.html","./src/app/entity/components/custom-components/types/fields/custom-dashboard/custom-dashboard.component.html","./src/app/entity/components/custom-components/types/fields/custom-dashboard/custom-dashboard.component.ts","./src/app/entity/directives/custom-action-menu.directive.ts","./src/app/entity/directives/select-custom-control.directive.ts","./node_modules/primeng/fesm2022/primeng-multiselect.mjs","./src/app/entity/components/custom-components/types/fields/custom-multi-select/custom-multi-select.component.html","./src/app/entity/components/custom-components/types/fields/custom-multi-select/custom-multi-select.component.ts","./src/app/entity/components/custom-components/types/fields/custom-select/custom-select.component.html","./src/app/entity/components/custom-components/types/fields/custom-select/custom-select.component.ts","./src/app/entity/components/custom-components/types/fields/custom-data-select/custom-data-select.component.html","./src/app/entity/components/custom-components/types/fields/custom-data-select/custom-data-select.component.ts","./src/app/entity/components/custom-components/types/fields/custom-icon-input/custom-icon-input.component.ts","./src/app/entity/components/custom-components/types/fields/custom-icon-input/custom-icon-input.component.html","./node_modules/primeng/fesm2022/primeng-sidebar.mjs","./src/app/entity/components/custom-components/types/fields/custom-iframe/custom-iframe.component.html","./src/app/entity/components/custom-components/types/fields/custom-iframe/custom-iframe.component.ts","./node_modules/primeng/fesm2022/primeng-icons-eye.mjs","./node_modules/primeng/fesm2022/primeng-icons-refresh.mjs","./node_modules/primeng/fesm2022/primeng-icons-searchminus.mjs","./node_modules/primeng/fesm2022/primeng-icons-searchplus.mjs","./node_modules/primeng/fesm2022/primeng-icons-undo.mjs","./node_modules/primeng/fesm2022/primeng-focustrap.mjs","./node_modules/primeng/fesm2022/primeng-image.mjs","./src/app/entity/components/custom-components/types/fields/custom-image-input/custom-image-input.component.html","./src/app/entity/components/custom-components/types/fields/custom-image-input/custom-image-input.component.ts","./src/app/entity/components/custom-components/types/fields/custom-input-number/custom-input-number.component.html","./src/app/entity/components/custom-components/types/fields/custom-input-number/custom-input-number.component.ts","./node_modules/primeng/fesm2022/primeng-icons-eyeslash.mjs","./node_modules/primeng/fesm2022/primeng-password.mjs","./src/app/entity/components/custom-components/types/fields/custom-input-password/custom-input-password.component.html","./src/app/entity/components/custom-components/types/fields/custom-input-password/custom-input-password.component.ts","./node_modules/primeng/fesm2022/primeng-radiobutton.mjs","./src/app/entity/components/custom-components/types/fields/custom-input-radio-button/custom-input-radio-button.component.html","./src/app/entity/components/custom-components/types/fields/custom-input-radio-button/custom-input-radio-button.component.ts","./src/app/entity/components/custom-components/types/fields/custom-input-search/custom-input-search.component.html","./src/app/entity/components/custom-components/types/fields/custom-input-search/custom-input-search.component.ts","./node_modules/primeng/fesm2022/primeng-inputswitch.mjs","./src/app/entity/components/custom-components/types/fields/custom-input-switch/custom-input-switch.component.html","./src/app/entity/components/custom-components/types/fields/custom-input-switch/custom-input-switch.component.ts","./src/app/entity/components/custom-components/types/fields/custom-input/custom-input.component.html","./src/app/entity/components/custom-components/types/fields/custom-input/custom-input.component.ts","./node_modules/primeng/fesm2022/primeng-inputmask.mjs","./src/app/entity/components/custom-components/types/fields/custom-masked-input/custom-masked-input.component.ts","./src/app/entity/components/custom-components/types/fields/custom-masked-input/custom-masked-input.component.html","./src/app/entity/components/custom-components/types/fields/custom-message/custom-message.component.ts","./src/app/entity/components/custom-components/types/fields/custom-message/custom-message.component.html","./src/app/entity/components/custom-components/types/fields/custom-operation-button/custom-operation-button.component.ts","./src/app/entity/components/custom-components/types/fields/custom-operation-button/custom-operation-button.component.html","./src/app/entity/components/custom-components/types/fields/custom-resource-identifier/custom-resource-identifier.component.ts","./src/app/entity/components/custom-components/types/fields/custom-resource-identifier/custom-resource-identifier.component.html","./src/app/entity/components/custom-components/types/fields/custom-summary-card/custom-summary-card.component.html","./src/app/entity/components/custom-components/types/fields/custom-summary-card/custom-summary-card.component.ts","./src/app/entity/components/custom-components/types/fields/custom-table-display/custom-table-display.component.html","./src/app/entity/components/custom-components/types/fields/custom-table-display/custom-table-display.component.ts","./src/app/entity/components/custom-components/types/fields/custom-text-area/custom-text-area.component.ts","./src/app/entity/components/custom-components/types/fields/custom-text-area/custom-text-area.component.html","./src/app/entity/components/custom-components/types/fields/custom-text-display/custom-text-display.component.html","./src/app/entity/components/custom-components/types/fields/custom-text-display/custom-text-display.component.ts","./src/app/entity/components/custom-components/wrappers/custom-field-wrapper/custom-field-wrapper.component.html","./src/app/entity/components/custom-components/wrappers/custom-field-wrapper/custom-field-wrapper.component.ts","./src/app/entity/components/custom-components/wrappers/custom-empty-wrapper/custom-empty-wrapper.component.ts","./src/app/entity/components/custom-components/wrappers/custom-empty-wrapper/custom-empty-wrapper.component.html","./src/app/entity/components/custom-components/wrappers/custom-tab-content/custom-tab-content.component.ts","./src/app/entity/components/custom-components/wrappers/custom-tab-content/custom-tab-content.component.html","./src/app/entity/entity-formly-definitions.ts","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-form-field.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-input.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-textarea.mjs","./node_modules/@ngx-formly/core/fesm2020/ngx-formly-core-select.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-radio.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-checkbox.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng-select.mjs","./node_modules/@ngx-formly/primeng/fesm2020/ngx-formly-primeng.mjs","./src/app/operation/actions/base/base-operation-action.ts","./src/app/operation/actions/execute-operation-promise-action.ts","./src/app/operation/actions/add-drawer-action.ts","./src/app/operation/actions/add-related-context-menu-action.ts","./src/app/operation/actions/change-layout-color-action.ts","./src/app/operation/actions/change-theme-action.ts","./src/app/operation/actions/context-operation-action.ts","./src/app/operation/actions/delete-entity-action.ts","./src/app/operation/actions/emit-event-action.ts","./src/app/operation/actions/execute-workflow-action.ts","./src/app/operation/actions/generate-document-action.ts","./src/app/operation/actions/generate-files-action.ts","./src/app/operation/actions/logout-action.ts","./src/app/operation/actions/navigation-action.ts","./src/app/operation/actions/save-entity-action.ts","./src/app/operation/actions/print-file-action.ts","./src/app/operation/operation.module.ts","./src/app/shared/angular-cdk.module.ts","./src/app/shared/components/common-dashboard/dashboard-section/dashboard-widget/dashboard-widget.component.html","./src/app/shared/components/common-dashboard/dashboard-section/dashboard-widget/dashboard-widget.component.ts","./node_modules/primeng/fesm2022/primeng-listbox.mjs","./src/app/shared/components/quick-filters/quick-filters.component.ts","./src/app/shared/components/quick-filters/quick-filters.component.html","./node_modules/primeng/fesm2022/primeng-autocomplete.mjs","./node_modules/primeng/fesm2022/primeng-badge.mjs","./node_modules/primeng/fesm2022/primeng-breadcrumb.mjs","./node_modules/primeng/fesm2022/primeng-colorpicker.mjs","./node_modules/primeng/fesm2022/primeng-confirmdialog.mjs","./node_modules/primeng/fesm2022/primeng-contextmenu.mjs","./node_modules/primeng/fesm2022/primeng-icons-thlarge.mjs","./node_modules/primeng/fesm2022/primeng-icons-bars.mjs","./node_modules/primeng/fesm2022/primeng-dataview.mjs","./node_modules/primeng/fesm2022/primeng-icons-windowmaximize.mjs","./node_modules/primeng/fesm2022/primeng-icons-windowminimize.mjs","./node_modules/primeng/fesm2022/primeng-dialog.mjs","./node_modules/primeng/fesm2022/primeng-dragdrop.mjs","./node_modules/primeng/fesm2022/primeng-editor.mjs","./node_modules/primeng/fesm2022/primeng-fieldset.mjs","./node_modules/primeng/fesm2022/primeng-galleria.mjs","./node_modules/primeng/fesm2022/primeng-megamenu.mjs","./node_modules/primeng/fesm2022/primeng-menubar.mjs","./node_modules/primeng/fesm2022/primeng-message.mjs","./node_modules/primeng/fesm2022/primeng-orderlist.mjs","./node_modules/primeng/fesm2022/primeng-organizationchart.mjs","./node_modules/primeng/fesm2022/primeng-overlaypanel.mjs","./node_modules/primeng/fesm2022/primeng-panelmenu.mjs","./node_modules/primeng/fesm2022/primeng-progressspinner.mjs","./node_modules/primeng/fesm2022/primeng-icons-ban.mjs","./node_modules/primeng/fesm2022/primeng-icons-star.mjs","./node_modules/primeng/fesm2022/primeng-icons-starfill.mjs","./node_modules/primeng/fesm2022/primeng-rating.mjs","./node_modules/primeng/fesm2022/primeng-skeleton.mjs","./node_modules/primeng/fesm2022/primeng-slider.mjs","./node_modules/primeng/fesm2022/primeng-spinner.mjs","./node_modules/primeng/fesm2022/primeng-terminal.mjs","./node_modules/primeng/fesm2022/primeng-toast.mjs","./node_modules/primeng/fesm2022/primeng-togglebutton.mjs","./node_modules/primeng/fesm2022/primeng-toolbar.mjs","./node_modules/primeng/fesm2022/primeng-tree.mjs","./node_modules/primeng/fesm2022/primeng-treetable.mjs","./src/app/shared/primeng.module.ts","./src/app/shared/constants/enums/setting-preference-type.enum.ts","./src/app/shared/services/settings.service.ts","./src/app/components/app-drawers/app-drawer/app-drawer.component.html","./src/app/components/app-drawers/app-drawer/app-drawer.component.ts","./src/app/components/app-drawers/app-drawers.component.html","./src/app/components/app-drawers/app-drawers.component.ts","./src/app/components/app-utility-menu/app-utility-menu.component.html","./src/app/components/app-utility-menu/app-utility-menu.component.ts","./src/app/shared/services/genesys-chat.service.ts","./src/app/shared/validators/base-rule-validator.validator.ts","./src/app/shared/validators/email.validator.ts","./src/app/shared/validators/maximum-length.validator.ts","./src/app/shared/validators/maximum-number.validator.ts","./src/app/shared/validators/minimum-length.validator.ts","./src/app/shared/validators/minimum-number.validator.ts","./src/app/shared/validators/password.validator.ts","./src/app/shared/validators/regular-expression.validator.ts","./src/app/shared/validators/required.validator.ts","./node_modules/ngx-highlightjs/fesm2022/ngx-highlightjs.mjs","./src/app/shared/shared.module.ts","./src/app/admin/admin.module.ts","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/operators/connect.js","./node_modules/rxjs/dist/esm/internal/observable/fromSubscribable.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/@angular/service-worker/fesm2022/service-worker.mjs","./node_modules/rxjs/dist/esm/internal/operators/publish.js","./node_modules/rxjs/dist/esm/internal/operators/multicast.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./src/app/shared/services/session-refresh.service.ts","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./src/app/components/login/login.component.html","./src/app/components/login/login.component.ts","./src/app/components/login/login-change-password.component.html","./src/app/components/login/login-change-password.component.ts","./src/app/components/login/login-dialog.component.html","./src/app/components/login/login-dialog.component.ts","./src/app/components/login/login-reset.component.html","./src/app/components/login/login-reset.component.ts","./src/app/components/login/login-verify.component.html","./src/app/components/login/login-verify.component.ts","./src/app/bi/bi.component.ts","./src/app/bi/bi.component.html","./src/app/bi/components/reports/reports.component.html","./src/app/bi/components/reports/reports.component.ts","./src/app/bi/bi.module.ts","./src/app/claims/claims.component.ts","./src/app/claims/claims.component.html","./src/app/insurance/components/insurance-policy-search/insurance-policy-search.component.html","./src/app/insurance/components/insurance-policy-search/insurance-policy-search.component.ts","./src/app/insurance/insurance.component.ts","./src/app/insurance/insurance.component.html","./src/app/insurance/services/service-provider.service.ts","./src/app/insurance/insurance.module.ts","./src/app/claims/claims.module.ts","./src/app/entity/components/entity-form/entity-form.component.html","./src/app/entity/components/entity-form/entity-form.component.ts","./src/app/entity/entity.module.ts","./src/app/shared/app-cache-http.interceptor.ts","./src/app/shared/app-data-transform-http.interceptor.ts","./src/app/shared/app-error-handler.ts","./src/app/shared/app-hammer.config.ts","./src/app/shared/app-security-http.interceptor.ts","./src/app/work-items/components/workbench/work-item-expand/work-item-expand.component.html","./src/app/work-items/components/workbench/work-item-expand/work-item-expand.component.ts","./src/app/work-items/components/workbench/workbench.component.html","./src/app/work-items/components/workbench/workbench.component.ts","./src/app/work-items/work-items.component.ts","./src/app/work-items/work-items.component.html","./src/app/work-items/work-items.module.ts","./src/app/account/account.component.ts","./src/app/account/account.component.html","./src/app/account/directives/account.directive.ts","./src/app/account/components/security/security.component.html","./src/app/account/components/security/security.component.ts","./src/app/account/components/site-settings/site-settings.component.html","./src/app/account/components/site-settings/site-settings.component.ts","./src/app/account/components/user-profile/user-profile.component.html","./src/app/account/components/user-profile/user-profile.component.ts","./src/app/account/account.module.ts","./src/app/shared/services/update.service.ts","./src/app/components/app-banner/app-banner-detail/app-banner-detail.component.html","./src/app/components/app-banner/app-banner-detail/app-banner-detail.component.ts","./src/app/components/app-banner/app-banner/app-banner.component.html","./src/app/components/app-banner/app-banner/app-banner.component.ts","./src/app/components/app-footer/app-footer.component.ts","./src/app/components/app-footer/app-footer.component.html","./src/app/components/app-full-screen-banner/app-full-screen-banner.component.html","./src/app/components/app-full-screen-banner/app-full-screen-banner.component.ts","./src/app/components/app-menu/app-menu.component.ts","./src/app/components/app-menu/app-menu.component.html","./src/app/operation/directives/base-session-user.directive.ts","./src/app/components/app-profile/app-profile.component.html","./src/app/components/app-profile/app-profile.component.ts","./src/app/components/app-topbar/app-topbar.component.ts","./src/app/components/app-topbar/app-topbar.component.html","./src/app/app.component.html","./src/app/app.component.ts","./src/app/app.routes.ts","./src/app/app.route-reuse-strategy.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/fast-xml-parser/src/fxp.js","./node_modules/fast-xml-parser/src/util.js","./node_modules/fast-xml-parser/src/validator.js","./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","./node_modules/fast-xml-parser/src/xmlparser/node2json.js","./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/guid-typescript/dist/guid.js","./node_modules/hammerjs/hammer.js","./node_modules/jref/dist/index.js","./node_modules/jref/dist/src/clone.js","./node_modules/jref/dist/src/dereference.js","./node_modules/jref/dist/src/getProperties.js","./node_modules/jref/dist/src/resolve.js","./node_modules/jref/dist/src/toString.js","./node_modules/jref/dist/src/traverse.js","./node_modules/lodash/lodash.js","./node_modules/lz-string/libs/lz-string.js","./node_modules/object-mapper/index.js","./node_modules/object-mapper/src/object-mapper.js","./node_modules/powerbi-client/dist/powerbi.js","./node_modules/quill/dist/quill.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/lastValueFrom.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/strnum/strnum.js","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/drag-drop.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/@angular/cdk/fesm2022/collections.mjs","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/primitives/signals.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@ngx-formly/core/fesm2020/ngx-formly-core.mjs","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/@ngx-pwa/local-storage/fesm2022/ngx-pwa-local-storage.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@kurkle/color/dist/color.esm.js","./node_modules/chart.js/dist/chunks/helpers.segment.js","./node_modules/chart.js/dist/chart.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/_SetCache.js","./node_modules/lodash-es/_setCacheAdd.js","./node_modules/lodash-es/_setCacheHas.js","./node_modules/lodash-es/_Stack.js","./node_modules/lodash-es/_stackClear.js","./node_modules/lodash-es/_stackDelete.js","./node_modules/lodash-es/_stackGet.js","./node_modules/lodash-es/_stackHas.js","./node_modules/lodash-es/_stackSet.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_Uint8Array.js","./node_modules/lodash-es/_arrayEach.js","./node_modules/lodash-es/_arrayLikeKeys.js","./node_modules/lodash-es/_baseTimes.js","./node_modules/lodash-es/_arrayMap.js","./node_modules/lodash-es/_arrayPush.js","./node_modules/lodash-es/_assignValue.js","./node_modules/lodash-es/_baseAssignValue.js","./node_modules/lodash-es/_baseFindIndex.js","./node_modules/lodash-es/_baseIsNaN.js","./node_modules/lodash-es/_arrayIncludes.js","./node_modules/lodash-es/_baseIndexOf.js","./node_modules/lodash-es/_strictIndexOf.js","./node_modules/lodash-es/_arrayIncludesWith.js","./node_modules/lodash-es/_baseDifference.js","./node_modules/lodash-es/_baseFor.js","./node_modules/lodash-es/_createBaseFor.js","./node_modules/lodash-es/_baseEach.js","./node_modules/lodash-es/_createBaseEach.js","./node_modules/lodash-es/_baseForOwn.js","./node_modules/lodash-es/_isFlattenable.js","./node_modules/lodash-es/_baseFlatten.js","./node_modules/lodash-es/_baseGet.js","./node_modules/lodash-es/_baseGetAllKeys.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/_arraySome.js","./node_modules/lodash-es/_equalArrays.js","./node_modules/lodash-es/_mapToArray.js","./node_modules/lodash-es/_setToArray.js","./node_modules/lodash-es/_equalByTag.js","./node_modules/lodash-es/_equalObjects.js","./node_modules/lodash-es/_baseIsEqualDeep.js","./node_modules/lodash-es/_baseIsEqual.js","./node_modules/lodash-es/_isStrictComparable.js","./node_modules/lodash-es/_getMatchData.js","./node_modules/lodash-es/_matchesStrictComparable.js","./node_modules/lodash-es/_baseMatches.js","./node_modules/lodash-es/_baseIsMatch.js","./node_modules/lodash-es/_baseHasIn.js","./node_modules/lodash-es/_baseMatchesProperty.js","./node_modules/lodash-es/hasIn.js","./node_modules/lodash-es/_basePropertyDeep.js","./node_modules/lodash-es/property.js","./node_modules/lodash-es/_baseProperty.js","./node_modules/lodash-es/_baseIteratee.js","./node_modules/lodash-es/_overRest.js","./node_modules/lodash-es/constant.js","./node_modules/lodash-es/_shortOut.js","./node_modules/lodash-es/_setToString.js","./node_modules/lodash-es/_baseSetToString.js","./node_modules/lodash-es/_baseRest.js","./node_modules/lodash-es/_apply.js","./node_modules/lodash-es/_baseSlice.js","./node_modules/lodash-es/_baseUnary.js","./node_modules/lodash-es/_cacheHas.js","./node_modules/lodash-es/memoize.js","./node_modules/lodash-es/_stringToPath.js","./node_modules/lodash-es/_memoizeCapped.js","./node_modules/lodash-es/_castPath.js","./node_modules/lodash-es/_defineProperty.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_getAllKeys.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_getSymbols.js","./node_modules/lodash-es/_arrayFilter.js","./node_modules/lodash-es/_DataView.js","./node_modules/lodash-es/_Promise.js","./node_modules/lodash-es/_Set.js","./node_modules/lodash-es/_WeakMap.js","./node_modules/lodash-es/_getTag.js","./node_modules/lodash-es/_hasPath.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/_isKey.js","./node_modules/lodash-es/_isPrototype.js","./node_modules/lodash-es/_nodeUtil.js","./node_modules/lodash-es/_overArg.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_toKey.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_copyObject.js","./node_modules/lodash-es/_baseKeysIn.js","./node_modules/lodash-es/_nativeKeysIn.js","./node_modules/lodash-es/keysIn.js","./node_modules/lodash-es/_cloneBuffer.js","./node_modules/lodash-es/_getPrototype.js","./node_modules/lodash-es/_getSymbolsIn.js","./node_modules/lodash-es/_getAllKeysIn.js","./node_modules/lodash-es/_initCloneArray.js","./node_modules/lodash-es/_cloneArrayBuffer.js","./node_modules/lodash-es/_cloneRegExp.js","./node_modules/lodash-es/_cloneSymbol.js","./node_modules/lodash-es/_initCloneByTag.js","./node_modules/lodash-es/_cloneDataView.js","./node_modules/lodash-es/_cloneTypedArray.js","./node_modules/lodash-es/_baseCreate.js","./node_modules/lodash-es/isMap.js","./node_modules/lodash-es/_baseIsMap.js","./node_modules/lodash-es/isSet.js","./node_modules/lodash-es/_baseIsSet.js","./node_modules/lodash-es/_baseClone.js","./node_modules/lodash-es/_copyArray.js","./node_modules/lodash-es/_initCloneObject.js","./node_modules/lodash-es/_copySymbolsIn.js","./node_modules/lodash-es/_baseAssignIn.js","./node_modules/lodash-es/_copySymbols.js","./node_modules/lodash-es/_baseAssign.js","./node_modules/lodash-es/cloneDeep.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/forEach.js","./node_modules/lodash-es/_castFunction.js","./node_modules/lodash-es/get.js","./node_modules/lodash-es/_baseHas.js","./node_modules/lodash-es/has.js","./node_modules/lodash-es/identity.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/isArrayLike.js","./node_modules/lodash-es/isArrayLikeObject.js","./node_modules/lodash-es/isBuffer.js","./node_modules/lodash-es/stubFalse.js","./node_modules/lodash-es/isEqual.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/isSymbol.js","./node_modules/lodash-es/_baseIsTypedArray.js","./node_modules/lodash-es/isTypedArray.js","./node_modules/lodash-es/_nativeKeys.js","./node_modules/lodash-es/_baseKeys.js","./node_modules/lodash-es/keys.js","./node_modules/lodash-es/last.js","./node_modules/lodash-es/_compareAscending.js","./node_modules/lodash-es/_baseOrderBy.js","./node_modules/lodash-es/_baseMap.js","./node_modules/lodash-es/_baseSortBy.js","./node_modules/lodash-es/_compareMultiple.js","./node_modules/lodash-es/orderBy.js","./node_modules/lodash-es/stubArray.js","./node_modules/lodash-es/_baseToString.js","./node_modules/lodash-es/toString.js","./node_modules/luxon-angular/fesm2020/luxon-angular.mjs","./node_modules/luxon/src/errors.js","./node_modules/luxon/src/impl/formats.js","./node_modules/luxon/src/zone.js","./node_modules/luxon/src/zones/systemZone.js","./node_modules/luxon/src/zones/IANAZone.js","./node_modules/luxon/src/impl/locale.js","./node_modules/luxon/src/impl/english.js","./node_modules/luxon/src/zones/fixedOffsetZone.js","./node_modules/luxon/src/zones/invalidZone.js","./node_modules/luxon/src/impl/zoneUtil.js","./node_modules/luxon/src/impl/util.js","./node_modules/luxon/src/settings.js","./node_modules/luxon/src/impl/invalid.js","./node_modules/luxon/src/impl/conversions.js","./node_modules/luxon/src/impl/formatter.js","./node_modules/luxon/src/impl/regexParser.js","./node_modules/luxon/src/duration.js","./node_modules/luxon/src/interval.js","./node_modules/luxon/src/info.js","./node_modules/luxon/src/impl/diff.js","./node_modules/luxon/src/impl/digits.js","./node_modules/luxon/src/impl/tokenParser.js","./node_modules/luxon/src/datetime.js","./node_modules/marked/lib/marked.esm.js","./node_modules/ngx-markdown/fesm2022/ngx-markdown.mjs","./node_modules/primeng/fesm2022/primeng-api.mjs","./node_modules/primeng/fesm2022/primeng-autofocus.mjs","./node_modules/primeng/fesm2022/primeng-baseicon.mjs","./node_modules/primeng/fesm2022/primeng-button.mjs","./node_modules/primeng/fesm2022/primeng-icons-calendar.mjs","./node_modules/primeng/fesm2022/primeng-calendar.mjs","./node_modules/primeng/fesm2022/primeng-card.mjs","./node_modules/primeng/fesm2022/primeng-carousel.mjs","./node_modules/chart.js/auto/auto.js","./node_modules/primeng/fesm2022/primeng-chart.mjs","./node_modules/primeng/fesm2022/primeng-checkbox.mjs","./node_modules/primeng/fesm2022/primeng-chips.mjs","./node_modules/primeng/fesm2022/primeng-divider.mjs","./node_modules/primeng/fesm2022/primeng-dom.mjs","./node_modules/primeng/fesm2022/primeng-dropdown.mjs","./node_modules/primeng/fesm2022/primeng-icons-upload.mjs","./node_modules/primeng/fesm2022/primeng-fileupload.mjs","./node_modules/primeng/fesm2022/primeng-icons-angledoubledown.mjs","./node_modules/primeng/fesm2022/primeng-icons-angledoubleleft.mjs","./node_modules/primeng/fesm2022/primeng-icons-angledoubleright.mjs","./node_modules/primeng/fesm2022/primeng-icons-angledoubleup.mjs","./node_modules/primeng/fesm2022/primeng-icons-angledown.mjs","./node_modules/primeng/fesm2022/primeng-icons-angleleft.mjs","./node_modules/primeng/fesm2022/primeng-icons-angleright.mjs","./node_modules/primeng/fesm2022/primeng-icons-angleup.mjs","./node_modules/primeng/fesm2022/primeng-icons-arrowdown.mjs","./node_modules/primeng/fesm2022/primeng-icons-arrowup.mjs","./node_modules/primeng/fesm2022/primeng-icons-check.mjs","./node_modules/primeng/fesm2022/primeng-icons-chevrondown.mjs","./node_modules/primeng/fesm2022/primeng-icons-chevronleft.mjs","./node_modules/primeng/fesm2022/primeng-icons-chevronright.mjs","./node_modules/primeng/fesm2022/primeng-icons-chevronup.mjs","./node_modules/primeng/fesm2022/primeng-icons-exclamationtriangle.mjs","./node_modules/primeng/fesm2022/primeng-icons-home.mjs","./node_modules/primeng/fesm2022/primeng-icons-infocircle.mjs","./node_modules/primeng/fesm2022/primeng-icons-plus.mjs","./node_modules/primeng/fesm2022/primeng-icons-search.mjs","./node_modules/primeng/fesm2022/primeng-icons-sortalt.mjs","./node_modules/primeng/fesm2022/primeng-icons-sortamountdown.mjs","./node_modules/primeng/fesm2022/primeng-icons-sortamountupalt.mjs","./node_modules/primeng/fesm2022/primeng-icons-spinner.mjs","./node_modules/primeng/fesm2022/primeng-icons-times.mjs","./node_modules/primeng/fesm2022/primeng-icons-timescircle.mjs","./node_modules/primeng/fesm2022/primeng-inputnumber.mjs","./node_modules/primeng/fesm2022/primeng-inputtext.mjs","./node_modules/primeng/fesm2022/primeng-inputtextarea.mjs","./node_modules/primeng/fesm2022/primeng-menu.mjs","./node_modules/primeng/fesm2022/primeng-messages.mjs","./node_modules/primeng/fesm2022/primeng-overlay.mjs","./node_modules/primeng/fesm2022/primeng-paginator.mjs","./node_modules/primeng/fesm2022/primeng-picklist.mjs","./node_modules/primeng/fesm2022/primeng-progressbar.mjs","./node_modules/primeng/fesm2022/primeng-ripple.mjs","./node_modules/primeng/fesm2022/primeng-scroller.mjs","./node_modules/primeng/fesm2022/primeng-scrollpanel.mjs","./node_modules/primeng/fesm2022/primeng-selectbutton.mjs","./node_modules/primeng/fesm2022/primeng-splitbutton.mjs","./node_modules/primeng/fesm2022/primeng-steps.mjs","./node_modules/primeng/fesm2022/primeng-tristatecheckbox.mjs","./node_modules/primeng/fesm2022/primeng-icons-filter.mjs","./node_modules/primeng/fesm2022/primeng-icons-filterslash.mjs","./node_modules/primeng/fesm2022/primeng-table.mjs","./node_modules/primeng/fesm2022/primeng-tieredmenu.mjs","./node_modules/primeng/fesm2022/primeng-timeline.mjs","./node_modules/primeng/fesm2022/primeng-tooltip.mjs","./node_modules/primeng/fesm2022/primeng-utils.mjs","./node_modules/@babel/runtime/helpers/esm/asyncIterator.js","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tEntityInstanceRuleViolationApiService\r\n} from '@api/services/entities/entity-instance-rule-violation.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tLogApiService\r\n} from '@api/services/logs/log.api.service';\r\nimport {\r\n\tOperationDefinitionParameterApiService\r\n} from '@api/services/operations/operation-definition-parameter.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupHierarchyApiService\r\n} from '@api/services/operations/operation-group-hierarchy.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tOperationTypeParameterApiService\r\n} from '@api/services/operations/operation-type-parameter.api.service';\r\nimport {\r\n\tOperationTypeApiService\r\n} from '@api/services/operations/operation-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRulePresentationDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-definition.api.service';\r\nimport {\r\n\tRulePresentationLogicDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-logic-definition.api.service';\r\nimport {\r\n\tRuleValidationDefinitionApiService\r\n} from '@api/services/rules/rule-validation-definition.api.service';\r\nimport {\r\n\tRuleValidatorDefinitionApiService\r\n} from '@api/services/rules/rule-validator-definition.api.service';\r\nimport {\r\n\tRuleViolationWorkflowActionDefinitionApiService\r\n} from '@api/services/rules/rule-violation-workflow-action-definition.api.service';\r\nimport {\r\n\tAuthenticateApiService\r\n} from '@api/services/security/authenticate.api.service';\r\nimport {\r\n\tSecurityAccessPolicyDefinitionApiService\r\n} from '@api/services/security/security-access-policy-definition.api.service';\r\nimport {\r\n\tSecurityAccessPolicyMappingApiService\r\n} from '@api/services/security/security-access-policy-mapping.api.service';\r\nimport {\r\n\tSecurityAccessPolicyApiService\r\n} from '@api/services/security/security-access-policy.api.service';\r\nimport {\r\n\tSecurityApplicationApiService\r\n} from '@api/services/security/security-application.api.service';\r\nimport {\r\n\tSecurityGroupRuleDefinitionViolationOverrideApiService\r\n} from '@api/services/security/security-group-rule-definition-violation-override.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionInstancesApiService\r\n} from '@api/services/workflow/workflow-action-instances.api.service';\r\nimport {\r\n\tWorkflowActionRequisitesApiService\r\n} from '@api/services/workflow/workflow-action-requisites.api.service';\r\nimport {\r\n\tWorkflowFailureActionsApiService\r\n} from '@api/services/workflow/workflow-failure-actions.api.service';\r\nimport {\r\n\tWorkflowRequisiteTypesApiService\r\n} from '@api/services/workflow/workflow-requisite-types.api.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/*\r\n * Export all tokens to be used in dependency injector for\r\n * string based resolution.\r\n*/\r\nexport const AuthenticateApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'AuthenticateApiService');\r\nexport const DisplayComponentDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'DisplayComponentDefinitionApiService');\r\nexport const DisplayComponentInstanceApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'DisplayComponentInstanceApiService');\r\nexport const DisplayComponentTypeApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'DisplayComponentTypeApiService');\r\nexport const EntityDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityDefinitionApiService');\r\nexport const EntityInstanceApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityInstanceApiService');\r\nexport const EntityInstanceRuleViolationApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityInstanceRuleViolationApiService');\r\nexport const EntityInstanceRuleViolationOverrideApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityInstanceRuleViolationOverrideApiService');\r\nexport const EntityLayoutApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityLayoutApiService');\r\nexport const EntityLayoutTypeApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityLayoutTypeApiService');\r\nexport const EntityTypeApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityTypeApiService');\r\nexport const EntityVersionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityVersionApiService');\r\nexport const LogApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'LogApiService');\r\nexport const OperationDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationDefinitionApiService');\r\nexport const OperationDefinitionParameterApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationDefinitionParameterApiService');\r\nexport const OperationGroupApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationGroupApiService');\r\nexport const OperationGroupHierarchyApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationGroupHierarchyApiService');\r\nexport const OperationTypeApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationTypeApiService');\r\nexport const OperationTypeParameterApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'OperationTypeParameterApiService');\r\nexport const RuleDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RuleDefinitionApiService');\r\nexport const RulePresentationDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RulePresentationDefinitionApiService');\r\nexport const RulePresentationLogicDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RulePresentationLogicDefinitionApiService');\r\nexport const RuleValidationDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RuleValidationDefinitionApiService');\r\nexport const RuleValidatorDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RuleValidatorDefinitionApiService');\r\nexport const RuleViolationWorkflowActionDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RuleViolationWorkflowActionDefinitionApiService');\r\nexport const SecurityApplicationApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityApplicationApiService');\r\nexport const SecurityAccessPolicyMappingApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityAccessPolicyMappingApiService');\r\nexport const SecurityAccessPolicyDefinitionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityAccessPolicyDefinitionApiService');\r\nexport const SecurityAccessPolicyApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityAccessPolicyApiService');\r\nexport const SecurityGroupApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityGroupApiService');\r\nexport const SecurityGroupRuleDefinitionViolationOverrideApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecurityGroupRuleDefinitionViolationOverrideApiService');\r\nexport const SecuritySessionApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SecuritySessionApiService');\r\nexport const WorkflowActionDefinitionsApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkflowActionDefinitionsApiService');\r\nexport const WorkflowActionInstancesApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkflowActionInstancesApiService');\r\nexport const WorkflowActionRequisitesApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkflowActionRequisitesApiService');\r\nexport const WorkflowFailureActionsApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkflowFailureActionsApiService');\r\nexport const WorkflowRequisiteTypesApiServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkflowRequisiteTypesApiService');\r\n\r\n/**\r\n * A module used to defined available api methods.\r\n *\r\n * @export\r\n * @class ApiTokenLookup\r\n */\r\nexport class ApiTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based api service resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof ApiTokenLookup\r\n\t */\r\n\tpublic static tokens =\r\n\t\t{\r\n\t\t\t'AuthenticateApiService':\r\n\t\t\t\tAuthenticateApiServiceToken,\r\n\t\t\t'DisplayComponentDefinitionApiService':\r\n\t\t\t\tDisplayComponentDefinitionApiServiceToken,\r\n\t\t\t'DisplayComponentInstanceApiService':\r\n\t\t\t\tDisplayComponentInstanceApiServiceToken,\r\n\t\t\t'DisplayComponentTypeApiService':\r\n\t\t\t\tDisplayComponentTypeApiServiceToken,\r\n\t\t\t'EntityDefinitionApiService':\r\n\t\t\t\tEntityDefinitionApiServiceToken,\r\n\t\t\t'EntityInstanceApiService':\r\n\t\t\t\tEntityInstanceApiServiceToken,\r\n\t\t\t'EntityInstanceRuleViolationOverrideApiService':\r\n\t\t\t\tEntityInstanceRuleViolationOverrideApiServiceToken,\r\n\t\t\t'EntityInstanceRuleViolationApiService':\r\n\t\t\t\tEntityInstanceRuleViolationApiServiceToken,\r\n\t\t\t'EntityLayoutApiService':\r\n\t\t\t\tEntityLayoutApiServiceToken,\r\n\t\t\t'EntityLayoutTypeApiService':\r\n\t\t\t\tEntityLayoutTypeApiServiceToken,\r\n\t\t\t'EntityTypeApiService':\r\n\t\t\t\tEntityTypeApiServiceToken,\r\n\t\t\t'EntityVersionApiService':\r\n\t\t\t\tEntityVersionApiServiceToken,\r\n\t\t\t'LogApiService':\r\n\t\t\t\tLogApiServiceToken,\r\n\t\t\t'OperationDefinitionApiService':\r\n\t\t\t\tOperationDefinitionApiServiceToken,\r\n\t\t\t'OperationDefinitionParameterApiService':\r\n\t\t\t\tOperationDefinitionParameterApiServiceToken,\r\n\t\t\t'OperationGroupApiService':\r\n\t\t\t\tOperationGroupApiServiceToken,\r\n\t\t\t'OperationGroupHierarchyApiService':\r\n\t\t\t\tOperationGroupHierarchyApiServiceToken,\r\n\t\t\t'OperationTypeApiService':\r\n\t\t\t\tOperationTypeApiServiceToken,\r\n\t\t\t'OperationTypeParameterApiService':\r\n\t\t\t\tOperationTypeParameterApiServiceToken,\r\n\t\t\t'RuleDefinitionApiService':\r\n\t\t\t\tRuleDefinitionApiServiceToken,\r\n\t\t\t'RulePresentationDefinitionApiService':\r\n\t\t\t\tRulePresentationDefinitionApiServiceToken,\r\n\t\t\t'RulePresentationLogicDefinitionApiService':\r\n\t\t\t\tRulePresentationLogicDefinitionApiServiceToken,\r\n\t\t\t'RuleValidationDefinitionApiService':\r\n\t\t\t\tRuleValidationDefinitionApiServiceToken,\r\n\t\t\t'RuleValidatorDefinitionApiService':\r\n\t\t\t\tRuleValidatorDefinitionApiServiceToken,\r\n\t\t\t'RuleViolationWorkflowActionDefinitionApiService':\r\n\t\t\t\tRuleViolationWorkflowActionDefinitionApiServiceToken,\r\n\t\t\t'SecurityApplicationApiService':\r\n\t\t\t\tSecurityApplicationApiServiceToken,\r\n\t\t\t'SecurityAccessPolicyMappingApiService':\r\n\t\t\t\tSecurityAccessPolicyMappingApiServiceToken,\r\n\t\t\t'SecurityAccessPolicyDefinitionApiService':\r\n\t\t\t\tSecurityAccessPolicyDefinitionApiServiceToken,\r\n\t\t\t'SecurityAccessPolicyApiService':\r\n\t\t\t\tSecurityAccessPolicyApiServiceToken,\r\n\t\t\t'SecurityGroupApiService':\r\n\t\t\t\tSecurityGroupApiServiceToken,\r\n\t\t\t'SecurityGroupRuleDefinitionViolationOverrideApiService':\r\n\t\t\t\tSecurityGroupRuleDefinitionViolationOverrideApiServiceToken,\r\n\t\t\t'SecuritySessionApiService':\r\n\t\t\t\tSecuritySessionApiServiceToken,\r\n\t\t\t'WorkflowActionDefinitionsApiService':\r\n\t\t\t\tWorkflowActionDefinitionsApiServiceToken,\r\n\t\t\t'WorkflowActionInstancesApiService':\r\n\t\t\t\tWorkflowActionInstancesApiServiceToken,\r\n\t\t\t'WorkflowActionRequisitesApiService':\r\n\t\t\t\tWorkflowActionRequisitesApiServiceToken,\r\n\t\t\t'WorkflowFailureActionsApiService':\r\n\t\t\t\tWorkflowFailureActionsApiServiceToken,\r\n\t\t\t'WorkflowRequisiteTypesApiService':\r\n\t\t\t\tWorkflowRequisiteTypesApiServiceToken\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\n\r\n/**\r\n * A class representing an instance of an api error.\r\n *\r\n * @export\r\n * @class ApiError\r\n * @extends {Error}\r\n */\r\nexport class ApiError\r\n\textends Error\r\n{\r\n\t/**\r\n\t * Creates an instance of an ApiError.\r\n\t *\r\n\t * @param {string} title\r\n\t * The title for this error.\r\n\t * @param {IApplicationMessage[]} messages\r\n\t * The array of application messages returned\r\n\t * for this api error.\r\n\t * @memberof ApiError\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic title: string,\r\n\t\tpublic messages: IApplicationMessage[] = [])\r\n\t{\r\n\t\tsuper(title);\r\n\r\n\t\tthis.messages = messages;\r\n\t\tif (messages.length > 0)\r\n\t\t{\r\n\t\t\tthis.message = this.messages[0].description;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the status code of the api error.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ApiError\r\n\t */\r\n\tpublic status?: number = null;\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpRequest\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIBaseEntity\r\n} from '@api/interfaces/base/base-entity.interface';\r\nimport {\r\n\tIAggregateDto\r\n} from '@api/interfaces/common/aggregatedto.interface';\r\nimport {\r\n\tBaseApiService\r\n} from '@api/services/base/base.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing a common API Service.\r\n * This class implements the standardized\r\n * crud operations for simple controller operations.\r\n *\r\n * @export\r\n * @class BaseEntityApiService\r\n * @extends {BaseApiService}\r\n * @typeparam TEntity The generic type that implements common crud\r\n * operations.\r\n */\r\n@Injectable()\r\nexport abstract class BaseEntityApiService\r\n\textends BaseApiService\r\n{\r\n\t/**\r\n\t * Gets or sets the cache service of the base entity api.\r\n\t *\r\n\t * @type {CacheService}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic cacheService: CacheService;\r\n\r\n\t/**\r\n\t * Gets or sets the display component service of the base entity api.\r\n\t *\r\n\t * @type {displayComponentService}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic displayComponentService: DisplayComponentService;\r\n\r\n\t/**\r\n\t * Gets or sets the operation service of the base entity api.\r\n\t *\r\n\t * @type {OperationService}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic operationService: OperationService;\r\n\r\n\t/**\r\n\t * Gets or sets the entity service of the base entity api.\r\n\t *\r\n\t * @type {EntityService}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic entityService: EntityService;\r\n\r\n\t/**\r\n\t * Gets or sets the rule service of the base entity api.\r\n\t *\r\n\t * @type {RuleService}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic ruleService: RuleService;\r\n\r\n\t/*\r\n\t* Gets or sets the typeGroup parameter of the entity\r\n\t* instance.\r\n\t*/\r\n\tprotected typeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the url endpoint of the base entity.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tprotected endpoint: string;\r\n\r\n\t/**\r\n\t * Gets or sets the http client of the base entity.\r\n\t *\r\n\t * @type {HttpClient}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tprotected httpClient: HttpClient;\r\n\r\n\t/**\r\n\t * Gets or sets the url index for the controller url part.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tprivate readonly controllerUrlIndex: number = 4;\r\n\r\n\t/**\r\n\t * Gets a type TEntity with the specified identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the type T to get.\r\n\t * @returns {Promise}\r\n\t * The item found via this get method.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async get(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.getBaseUrl()\r\n\t\t\t+ `/${id}`;\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type TEntity with the specified filters.\r\n\t *\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {number} [last]\r\n\t * A number representing the last count.\r\n\t * @returns {Promise}\r\n\t * The array of items found via this query method.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async query(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tlast?: number): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl(),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tlast: last\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(\r\n\t\t\turl));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the first returned value returned from a query\r\n\t * response matching the sent parameters.\r\n\t *\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {boolean} [allowNullReturn]\r\n\t * If sent, this will not throw an error if a matching\r\n\t * value is found. Default is false.\r\n\t * @returns {Promise}\r\n\t * The first match of the query sent of type TEntity.\r\n\t * @throws {Error}\r\n\t * If no match was found for the query an error will be thrown describing\r\n\t * the service and query used.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async getSingleQueryResult(\r\n\t\tqueryString: string,\r\n\t\torderBy: string,\r\n\t\tallowNullReturn: boolean = false): Promise\r\n\t{\r\n\t\tconst queryMatches: IBaseEntity[] =\r\n\t\t\tawait this.query(\r\n\t\t\t\tqueryString,\r\n\t\t\t\torderBy,\r\n\t\t\t\t0,\r\n\t\t\t\t1);\r\n\r\n\t\tif (!allowNullReturn\r\n\t\t\t&& (queryMatches == null\r\n\t\t\t\t|| queryMatches.length === 0))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`Unable to find a matching value from the ${typeof this}. `\r\n\t\t\t\t\t+ `Query: '${queryString}' found zero matching values.`);\r\n\t\t}\r\n\r\n\t\treturn queryMatches[0] as TEntity;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an aggregate of TEntity.\r\n\t * Count, sum, average, min, or max.\r\n\t *\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async aggregate(\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl()\r\n\t\t\t\t+ `/${AppConstants.apiMethods.aggregate}`,\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient\r\n\t\t\t.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a type TEntity with the specified information.\r\n\t *\r\n\t * @param {IBaseEntity} entity\r\n\t * The entity of type T to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async create(\r\n\t\tentity: IBaseEntity): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.getBaseUrl();\r\n\t\tawait this.resetAssociatedCache(url);\r\n\r\n\t\tconst response = await lastValueFrom(this.httpClient.post(\r\n\t\t\turl,\r\n\t\t\tentity,\r\n\t\t\t{ observe: 'response' }));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a type TEntity with the specified identifier\r\n\t * and information.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the type T to update.\r\n\t * @param {IBaseEntity} entity\r\n\t * The entity of type T to update.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async update(\r\n\t\tid: number,\r\n\t\tentity: IBaseEntity): Promise\r\n\t{\r\n\t\tconst baseUrl: string =\r\n\t\t\tthis.getBaseUrl();\r\n\t\tconst url =\r\n\t\t\t`${baseUrl}/${id}`;\r\n\t\tawait this.resetAssociatedCache(baseUrl);\r\n\r\n\t\treturn lastValueFrom(this.httpClient.put(\r\n\t\t\turl,\r\n\t\t\tentity));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a type TEntity with the specified identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the type T to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst baseUrl: string =\r\n\t\t\tthis.getBaseUrl();\r\n\t\tconst url =\r\n\t\t\t`${baseUrl}/${id}`;\r\n\t\tawait this.resetAssociatedCache(baseUrl);\r\n\r\n\t\treturn lastValueFrom(this.httpClient.delete(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type TEntity with the specified\r\n\t * values that intersects the named colum value\r\n\t * with the associated item set ids.\r\n\t *\r\n\t * @param {string} columnName foreign key column name.\r\n\t * @param {BaseEntity[]} associatedItems An array representing\r\n\t * the set of id based associated items.\r\n\t * @param {string} orderBy dependency column to order by.\r\n\t * @param {number} offset the number of rows to offset the query.\r\n\t * @param {number} limit the number of rows to limit the query.\r\n\t * @returns {Promise} The array of items found via this\r\n\t * find where colum name value in array of ids method.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async getForeignKeyMatches(\r\n\t\tcolumnName: string,\r\n\t\tassociatedItems: IBaseEntity[],\r\n\t\torderBy: string = null,\r\n\t\toffset: number = null,\r\n\t\tlimit: number = null): Promise\r\n\t{\r\n\t\tconst commaSeparatedIdArray: string =\r\n\t\t\tassociatedItems\r\n\t\t\t\t.map((item: IBaseEntity) => item.id)\r\n\t\t\t\t.join(AppConstants.characters.comma);\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl(),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter:\r\n\t\t\t\t\t\t`(${columnName} IN (${commaSeparatedIdArray}))`,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tlast: null\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the base url for all api calls of this type T.\r\n\t * If typeGroup is set, also appends it to the url.\r\n\t *\r\n\t * @returns {string} concatenated base url\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic getBaseUrl(): string\r\n\t{\r\n\t\tlet baseUrl =\r\n\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t+ this.endpoint;\r\n\r\n\t\tif (this.typeGroup)\r\n\t\t{\r\n\t\t\tbaseUrl += '/' + this.typeGroup;\r\n\t\t}\r\n\r\n\t\treturn baseUrl;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the base url for all nested api calls of this type T.\r\n\t *\r\n\t * @param {number} id The id of the object to sat as nested\r\n\t * route information.\r\n\t * @param {string} routeIdentifier The identifier\r\n\t * representing the nested route.\r\n\t * @returns {string} Concatenated url.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic getNestedUrl(\r\n\t\tid: number,\r\n\t\trouteIdentifier: string): string\r\n\t{\r\n\t\treturn this.getBaseUrl()\r\n\t\t\t+ `/${id}/${routeIdentifier}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the identifier returned from a created at route result\r\n\t * location header.\r\n\t *\r\n\t * @param {string} createdAtRouteLocation\r\n\t * The created at route location result.\r\n\t * @returns {number}\r\n\t * The identifier of the created item.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic getCreatedAtRouteIdentifier(\r\n\t\tcreatedAtRouteLocation: string): number\r\n\t{\r\n\t\treturn parseInt(\r\n\t\t\tcreatedAtRouteLocation.substring(\r\n\t\t\t\tcreatedAtRouteLocation.lastIndexOf('/') + 1),\r\n\t\t\t10);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets associated caches and to the sent url value and resets singleton\r\n\t * storage if implemented for this endpoint. This is used to\r\n\t * remove query and similar result sets prior to a modify to ensure\r\n\t * we force a resync of the cached result sets.\r\n\t *\r\n\t * @async\r\n\t * @param {string} url\r\n\t * The url being used that will require a partial cache clear.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async resetAssociatedCache(\r\n\t\turl: string): Promise\r\n\t{\r\n\t\tthis.resetSingletonStorageVariables(\r\n\t\t\turl.split(AppConstants.characters.forwardSlash)\r\n\t\t\t\t[this.controllerUrlIndex]);\r\n\r\n\t\tif (this.cacheService.cachesAreNullOrInsecure() === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst requestClone: HttpRequest =\r\n\t\t\tnew HttpRequest(\r\n\t\t\t\tAppConstants.httpRequestTypes.get,\r\n\t\t\t\turl);\r\n\r\n\t\tconst matchingPerformanceCacheIdentifier: string =\r\n\t\t\tawait this.cacheService\r\n\t\t\t\t.getRequestConfigurationIdentifier(\r\n\t\t\t\t\trequestClone);\r\n\r\n\t\t// If this is a performance modify this is handled\r\n\t\t// by the http cache interceptor.\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tmatchingPerformanceCacheIdentifier))\r\n\t\t{\r\n\t\t\t// Clear partials matching the sent url.\r\n\t\t\tawait this.cacheService\r\n\t\t\t\t.clearExistingResponse(\r\n\t\t\t\t\trequestClone,\r\n\t\t\t\t\ttrue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resets singleton storage variable based values based on the targetted\r\n\t * controller.\r\n\t *\r\n\t * @param {string} targetController\r\n\t * The controller being called with a modify that will require a\r\n\t * partial singleton storage clear.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic resetSingletonStorageVariables(\r\n\t\ttargetController: string): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.displayComponentService))\r\n\t\t{\r\n\t\t\tswitch (targetController)\r\n\t\t\t{\r\n\t\t\t\tcase AppConstants.apiControllers.displayComponentDefinitions:\r\n\t\t\t\t\tthis.displayComponentService\r\n\t\t\t\t\t\t.displayComponentDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.displayComponentInstances:\r\n\t\t\t\t\tthis.displayComponentService.displayComponentInstances = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.displayComponentTypes:\r\n\t\t\t\t\tthis.displayComponentService.displayComponentTypes = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.operationService))\r\n\t\t{\r\n\t\t\tswitch (targetController)\r\n\t\t\t{\r\n\t\t\t\tcase AppConstants.apiControllers.operationDefinitions:\r\n\t\t\t\t\tthis.operationService.operationDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.operationDefinitionParameters:\r\n\t\t\t\t\tthis.operationService.operationDefinitionParameters = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.operationGroups:\r\n\t\t\t\t\tthis.operationService.operationGroups = [];\r\n\t\t\t\t\tthis.operationService.operationDefinitions = [];\r\n\t\t\t\t\tthis.operationService.operationGroupHierarchies = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.operationTypes:\r\n\t\t\t\t\tthis.operationService.operationTypes = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.operationTypeParameters:\r\n\t\t\t\t\tthis.operationService.operationTypeParameters = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.ruleService))\r\n\t\t{\r\n\t\t\tswitch (targetController)\r\n\t\t\t{\r\n\t\t\t\tcase AppConstants.apiControllers.ruleDefinitions:\r\n\t\t\t\t\tthis.ruleService.ruleDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.rulePresentationDefinitions:\r\n\t\t\t\t\tthis.ruleService.rulePresentationDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers\r\n\t\t\t\t\t.rulePresentationLogicDefinitions:\r\n\t\t\t\t\tthis.ruleService.rulePresentationLogicDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers\r\n\t\t\t\t\t.ruleViolationWorkflowActionDefinitions:\r\n\t\t\t\t\tthis.ruleService\r\n\t\t\t\t\t\t.ruleViolationWorkflowActionDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.workflowActionDefinitions:\r\n\t\t\t\t\tthis.ruleService.workflowActionDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers\r\n\t\t\t\t\t.securityGroupRuleDefinitionViolationOverrides:\r\n\t\t\t\t\tthis.ruleService\r\n\t\t\t\t\t\t.securityGroupRuleDefinitionViolationOverrides = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.entityService))\r\n\t\t{\r\n\t\t\tswitch (targetController)\r\n\t\t\t{\r\n\t\t\t\tcase AppConstants.apiControllers.entityDefinitions:\r\n\t\t\t\t\tthis.entityService.entityDefinitions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.entityLayouts:\r\n\t\t\t\t\tthis.entityService.entityLayouts = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.entityLayoutTypes:\r\n\t\t\t\t\tthis.entityService.entityLayoutTypes = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.entityTypes:\r\n\t\t\t\t\tthis.entityService.entityTypes = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AppConstants.apiControllers.entityVersions:\r\n\t\t\t\t\tthis.entityService.entityVersions = [];\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed for non implemented\r\n\t * interfaces.\r\n\t *\r\n\t * @param {string} methodName\r\n\t * The name of the not supported method.\r\n\t * @param {string[]} supportedMethods\r\n\t * The set of supported methods to be offered as alternatives if applicable.\r\n\t * This value defaults to null.\r\n\t * @returns {string}\r\n\t * The message to be used when displaying a non-implemented\r\n\t * interface.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic getNotImplementedMessage(\r\n\t\tmethodName: string,\r\n\t\tsupportedMethods: string[] = null): string\r\n\t{\r\n\t\tconst standardMessage: string =\r\n\t\t\t`${methodName} is not supported for this api service.`;\r\n\r\n\t\tif (AnyHelper.isNull(supportedMethods)\r\n\t\t\t|| supportedMethods.length === 0)\r\n\t\t{\r\n\t\t\treturn standardMessage;\r\n\t\t}\r\n\r\n\t\treturn standardMessage + ' Please use the supported '\r\n\t\t\t+ (supportedMethods.length > 1\r\n\t\t\t\t? `${supportedMethods.join('/')} interfaces.`\r\n\t\t\t\t: `${supportedMethods[0]} interface.`);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed for interfaces that\r\n\t * are handled by other services.\r\n\t *\r\n\t * @param {string} methodName\r\n\t * The name of the not supported method.\r\n\t * @param {string} otherService\r\n\t * Name or phrase of other service.\r\n\t * @returns {string}\r\n\t * The message displayed.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic getHandledByOthersMessage(\r\n\t\tmethodName: string,\r\n\t\totherService: string): string\r\n\t{\r\n\t\treturn `${methodName} is not supported for this api service. `\r\n\t\t\t+ `These entities are handled by the ${otherService} service.`;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpHeaders\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tisArray\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A class representing an API Service.\r\n *\r\n * @export\r\n * @class BaseApiService\r\n */\r\n@Injectable()\r\nexport abstract class BaseApiService\r\n{\r\n\t/**\r\n\t * Returns an http header set that includes a 'query-only-get' header value\r\n\t * of true. This is used for the cache http interceptor to ensure unique\r\n\t * post/put/patch calls are not added to the background sync task post\r\n\t * update.\r\n\t *\r\n\t * @returns {HttpHeaders}\r\n\t * A headers object available to be added to requests to ensure this does\r\n\t * not call a background sync action on execute.\r\n\t * @memberof BaseApiService\r\n\t */\r\n\tpublic get queryOnlyGetHeaders(): HttpHeaders\r\n\t{\r\n\t\tlet queryOnlyGetHeaders =\r\n\t\t\tnew HttpHeaders();\r\n\t\tqueryOnlyGetHeaders =\r\n\t\t\tqueryOnlyGetHeaders.set(\r\n\t\t\t\tAppConstants.httpHeaders.queryOnlyGet,\r\n\t\t\t\t'true');\r\n\r\n\t\treturn queryOnlyGetHeaders;\r\n\t}\r\n\r\n\t/**\r\n\t * Builds a query string value given a url and an object.\r\n\t *\r\n\t * @param {string} url\r\n\t * A string representing the base URL to prepend to the generated output.\r\n\t * @param {object} data\r\n\t * An {object} representing data to parse into query string parameters.\r\n\t * @returns {string}\r\n\t * A string representing a fully formed URL with parameters correctly\r\n\t * formatted.\r\n\t * @memberof BaseApiService\r\n\t */\r\n\tpublic formUrlParam(\r\n\t\turl: string,\r\n\t\tdata: object): string\r\n\t{\r\n\t\tlet queryString: string = AppConstants.empty;\r\n\r\n\t\tfor (const key in data)\r\n\t\t{\r\n\t\t\tif (data.hasOwnProperty(key)\r\n\t\t\t\t&& data[key] != null)\r\n\t\t\t{\r\n\t\t\t\tconst dataValue: any = data[key];\r\n\t\t\t\tconst dataIsAnArray: boolean = isArray(dataValue);\r\n\r\n\t\t\t\tqueryString +=\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(queryString)\r\n\t\t\t\t\t\t? AppConstants.characters.questionMark\r\n\t\t\t\t\t\t: AppConstants.characters.and;\r\n\r\n\t\t\t\tif (dataIsAnArray === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tqueryString +=\r\n\t\t\t\t\t\t`${key}=${this.encodeParameter(dataValue)}`;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tqueryString +=\r\n\t\t\t\t\t\tthis.formArrayParameter(\r\n\t\t\t\t\t\t\tkey,\r\n\t\t\t\t\t\t\tdataValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn url + queryString;\r\n\t}\r\n\r\n\t/**\r\n\t * Builds a query string value given an array of values as a parameter.\r\n\t *\r\n\t * @param {string} key\r\n\t * A string representing the key value of this array property.\r\n\t * @param {any[]} data\r\n\t * An {object} representing data array to parse into query string\r\n\t * parameters.\r\n\t * @returns {string}\r\n\t * A string representing a fully formed URL with parameters correctly\r\n\t * formatted for this array parameter.\r\n\t * @memberof BaseApiService\r\n\t */\r\n\tprivate formArrayParameter(\r\n\t\tkey: string,\r\n\t\tdata: any[]): string\r\n\t{\r\n\t\tlet queryString: string = AppConstants.empty;\r\n\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < data.length;\r\n\t\t\tindex ++)\r\n\t\t{\r\n\t\t\tif (index !== 0)\r\n\t\t\t{\r\n\t\t\t\tqueryString += AppConstants.characters.and;\r\n\t\t\t}\r\n\r\n\t\t\tqueryString +=\r\n\t\t\t\t`${key}=${this.encodeParameter(data[index])}`;\r\n\t\t}\r\n\r\n\t\treturn queryString;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles encoding that must occur outside of the standard\r\n\t * encodeURIComponent method offered by Angular.\r\n\t *\r\n\t * @param {any} dataValue\r\n\t * An {object} representing data that will become a url parameter.\r\n\t * @returns {any}\r\n\t * A parameter value that is safely encoded for a url request.\r\n\t * @memberof BaseApiService\r\n\t */\r\n\tprivate encodeParameter(\r\n\t\tdataValue: any): any\r\n\t{\r\n\t\tif (typeof(dataValue) !== AppConstants.propertyTypes.string)\r\n\t\t{\r\n\t\t\treturn dataValue;\r\n\t\t}\r\n\r\n\t\treturn dataValue.replace(/\\+/gi, '%2B');\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIDisplayComponentDefinitionDto\r\n} from '@api/interfaces/display-components/display-component-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the display component\r\n * definition controller.\r\n *\r\n * @export\r\n * @class DisplayComponentDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class DisplayComponentDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a DisplayComponentDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof DisplayComponentDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.displayComponentDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIDisplayComponentInstanceDto\r\n} from '@api/interfaces/display-components/display-component-instance.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the display component\r\n * instance controller.\r\n *\r\n * @export\r\n * @class DisplayComponentInstanceApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class DisplayComponentInstanceApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a DisplayComponentInstanceApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof DisplayComponentInstanceApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.displayComponentInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the associated security groups of the display component instance\r\n\t * with the specified identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the display component instance to get the security\r\n\t * groups of.\r\n\t * @returns {Promise}\r\n\t * The security groups found via this get method.\r\n\t * @memberof DisplayComponentInstanceApiService\r\n\t */\r\n\tpublic async getSecurityGroups(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a security group to display component instance association\r\n\t * with the specified information, this allows access to\r\n\t * the display component instance for the specified security group.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the display component instance to set the security\r\n\t * group assocation.\r\n\t * @param {number} securityGroupId\r\n\t * The identifier of the security group to create the display component\r\n\t * instance assocation to.\r\n\t * @returns {Promise}\r\n\t * The display component instance identifier holding the new association.\r\n\t * @memberof DisplayComponentInstanceApiService\r\n\t */\r\n\tpublic async createSecurityGroupMap(\r\n\t\tid: number,\r\n\t\tsecurityGroupId: number): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tnestedUrl,\r\n\t\t\t\t{\r\n\t\t\t\t\tsecurityGroupId: securityGroupId\r\n\t\t\t\t});\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\tconst response =\r\n\t\t\tawait lastValueFrom(this.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * deletes a security group that allows access to the display\r\n\t * component instance.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the display component instance to delete the security\r\n\t * group assocation for.\r\n\t * @param {number} securityGroupId\r\n\t * The identifier of the security group to delete the display component\r\n\t * instance assocation to.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof DisplayComponentInstanceApiService\r\n\t */\r\n\tpublic async deleteSecurityGroupMap(\r\n\t\tid: number,\r\n\t\tsecurityGroupId: number): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\t\tconst url =\r\n\t\t\t`${nestedUrl}/${securityGroupId}`;\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIDisplayComponentTypeDto\r\n} from '@api/interfaces/display-components/display-component-type.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the display component\r\n * type controller.\r\n *\r\n * @export\r\n * @class DisplayComponentTypeApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class DisplayComponentTypeApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a DisplayComponentTypeApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof DisplayComponentTypeApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.displayComponentTypes;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityDefinitionDto\r\n} from '@api/interfaces/entities/entity-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * definitions controller.\r\n *\r\n * @export\r\n * @class EntityDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverrideDto\r\n} from '@api/interfaces/entities/entity-instance-rule-violation-override.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the rule presentation\r\n * definition association controller.\r\n *\r\n * @export\r\n * @class EntityInstanceRuleViolationOverrideApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityInstanceRuleViolationOverrideApiService\r\n\textends BaseEntityApiService<\r\n\t\tIEntityInstanceRuleViolationOverrideDto>\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityInstanceRuleViolationOverrideApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityInstanceRuleViolationOverrideApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers\r\n\t\t\t\t.entityInstanceRuleViolationOverrides;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceRuleViolationDto\r\n} from '@api/interfaces/entities/entity-instance-rule-violation.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule presentation\r\n * definition association controller.\r\n *\r\n * @export\r\n * @class EntityInstanceRuleViolationApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityInstanceRuleViolationApiService\r\n\textends BaseEntityApiService<\r\n\t\tIEntityInstanceRuleViolationDto>\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityInstanceRuleViolationApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityInstanceRuleViolationApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers\r\n\t\t\t\t.entityInstanceRuleViolations;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance rule violation with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {IEntityInstanceRuleViolationDto} _entity\r\n\t * The entity instance rule violation to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof SecuritySessionApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IEntityInstanceRuleViolationDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.create));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an entity instance rule violation with the specified identifier\r\n\t * and information.\r\n\t *\r\n\t * @param {number} _id\r\n\t * The identifier of the entity instance rule violation to update.\r\n\t * @param {IEntityInstanceRuleViolationDto} _entity\r\n\t * The entity instance rule violation to update.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: IEntityInstanceRuleViolationDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.update));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an entity instance rule violation with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance rule violation to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof SecuritySessionApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.delete));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/**\r\n * An enum for designating what an observable should observe in\r\n * an http request.\r\n * @see HttpClient\r\n */\r\nexport enum ObserveType\r\n{\r\n\t/**\r\n\t * Observe the body\r\n\t * @type {string}\r\n\t * @memberof ObserveType\r\n\t */\r\n\tBody = 'body',\r\n\r\n\t/**\r\n\t * Observe events.\r\n\t * @type {string}\r\n\t * @memberof ObserveType\r\n\t */\r\n\tEvents = 'events',\r\n\r\n\t/**\r\n\t * Observe the response.\r\n\t * @type {string}\r\n\t * @memberof ObserveType\r\n\t */\r\n\tResponse = 'response'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpEvent\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIAggregateDto\r\n} from '@api/interfaces/common/aggregatedto.interface';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tISecurityDefinitionDto\r\n} from '@api/interfaces/security/security-definition.dto.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinitionDto\r\n} from '@api/interfaces/security/security-entity-type-definition.dto.interface';\r\nimport {\r\n\tIActionResponseDto\r\n} from '@api/interfaces/workflow/action-response.dto.interface';\r\nimport {\r\n\tIActionDto\r\n} from '@api/interfaces/workflow/action.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObserveType\r\n} from '@shared/constants/enums/observe-type.enum';\r\nimport {\r\n\tResponseType\r\n} from '@shared/constants/enums/response-type.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tObservable,\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * instance controller.\r\n *\r\n * @export\r\n * @class\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityInstanceApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityInstanceApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the type group currently set. This defines\r\n\t * the entity instance type group used for these api services.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic get entityInstanceTypeGroup(): string\r\n\t{\r\n\t\treturn this.typeGroup;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the entity instance type group. This defines\r\n\t * the type of entity instance for these api services.\r\n\t *\r\n\t * @param {string} typeGroup\r\n\t * The entity instance type group for api services.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic set entityInstanceTypeGroup(typeGroup: string)\r\n\t{\r\n\t\tthis.typeGroup = typeGroup;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a new instance of the api service.\r\n\t *\r\n\t * @returns {EntityInstanceApiService}\r\n\t * A new api service instance.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic GetNewService(): EntityInstanceApiService\r\n\t{\r\n\t\treturn new EntityInstanceApiService(\r\n\t\t\tthis.httpClient,\r\n\t\t\tthis.cacheService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a type IEntityInstanceDto with the specified identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get.\r\n\t * @returns {Promise}\r\n\t * The entity instance found via this get method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async get(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.getBaseUrl()\r\n\t\t\t\t+ `/${id}`;\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type IActionDto actions\r\n\t * associated with the sent entity instance identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the actions of.\r\n\t * @returns {Promise}\r\n\t * The array of actions found via this get method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getActions(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions);\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(\r\n\t\t\turl));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the consolidated security definitions (effective permissions)\r\n\t * the current user has on the specified entity\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance on which to get the permissions.\r\n\t * @returns {Promise}\r\n\t * The security definition with the effective permissions\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getPermissions(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.getBaseUrl()\r\n\t\t\t\t+ `/${id}/Permissions`;\r\n\r\n\t\treturn lastValueFrom(this.httpClient\r\n\t\t\t.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the consolidated security definitions (effective permissions)\r\n\t * the current user has on the specified entity and the sent array\r\n\t * of possible hierarchy types.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance on which to get the permissions.\r\n\t * @param {string[]} hierarchyTypeGroups\r\n\t * The set of type groups to gather security definitions for related\r\n\t * to this entity instance.\r\n\t * @returns {Promise}\r\n\t * The security definition with the effective permissions\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getHierarchyPermissions(\r\n\t\tid: number,\r\n\t\thierarchyTypeGroups: string[]):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl()\r\n\t\t\t\t\t+ `/${id}/HierarchyPermissions`,\r\n\t\t\t\t{\r\n\t\t\t\t\thierarchyTypeGroups: hierarchyTypeGroups\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient\r\n\t\t\t\t.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type IEntityInstanceDto history records\r\n\t * associated with the sent entity instance identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the history of.\r\n\t * @param {string} [filter]\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} [orderBy]\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @returns {Promise}\r\n\t * The array of entity instances found via this history\r\n\t * query method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getHistory(\r\n\t\tid: number,\r\n\t\tfilter?: string,\r\n\t\torderBy?: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.history),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type IEntityInstanceDto children\r\n\t * associated with the sent entity instance identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the children of.\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {string} [childTypeGroup]\r\n\t * A string representing a child type group to limit results to.\r\n\t * @returns {Promise}\r\n\t * The array of entity instances found via this children\r\n\t * query method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getChildren(\r\n\t\tid: number,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tchildTypeGroup?: string): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.children),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tchildTypeGroup: childTypeGroup\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an aggregate of the children matching the filter criteria.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the child\r\n\t * aggregates of.\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @param {string} [childTypeGroup]\r\n\t * A string representing a child type group to limit results to.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getChildrenAggregate(\r\n\t\tid: number,\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string,\r\n\t\tchildTypeGroup?: string): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.children\r\n\t\t\t\t\t\t+ `/${AppConstants.apiMethods.aggregate}`),\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy,\r\n\t\t\t\t\tchildTypeGroup: childTypeGroup\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type IEntityInstanceDto parents\r\n\t * associated with the sent entity instance identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the parent of.\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {string} [parentTypeGroup]\r\n\t * A string representing a parent type group to limit results to.\r\n\t * @returns {Promise}\r\n\t * The array of entity instances found via this parents\r\n\t * query method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getParents(\r\n\t\tid: number,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tparentTypeGroup?: string): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.parents),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tparentTypeGroup: parentTypeGroup\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an aggregate of the parents matching the filter criteria.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to get the parent\r\n\t * aggregates of.\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @param {string} [parentTypeGroup]\r\n\t * A string representing a parent type group to limit results to.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async getParentsAggregate(\r\n\t\tid: number,\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string,\r\n\t\tparentTypeGroup?: string): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.parents\r\n\t\t\t\t\t\t+ `/${AppConstants.apiMethods.aggregate}`),\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy,\r\n\t\t\t\t\tparentTypeGroup: parentTypeGroup\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of type IEntityInstanceDto with the specified filters.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {number} [last]\r\n\t * A number representing the last count.\r\n\t * @returns {Promise}\r\n\t * The array of entity instances found via this query method.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async query(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tlast?: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl(),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tlast: last\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an aggregate.\r\n\t *\r\n\t * @async\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async aggregate(\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl()\r\n\t\t\t\t+ `/${AppConstants.apiMethods.aggregate}`,\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the first returned value returned from a query\r\n\t * response matching the sent parameters.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {boolean} [allowNullReturn]\r\n\t * If sent, this will not throw an error if a matching\r\n\t * value is found.\r\n\t * @returns {Promise}\r\n\t * The first match of the query sent of type TEntity.\r\n\t * @throws {Error}\r\n\t * If no match was found for the query an error will be thrown describing\r\n\t * the service and query used.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async getSingleQueryResult(\r\n\t\tqueryString: string,\r\n\t\torderBy: string,\r\n\t\tallowNullReturn: boolean = false): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst queryMatches: IEntityInstanceDto[] =\r\n\t\t\tawait this.query(\r\n\t\t\t\tqueryString,\r\n\t\t\t\torderBy,\r\n\t\t\t\t0,\r\n\t\t\t\t1);\r\n\r\n\t\tif (!allowNullReturn\r\n\t\t\t&& (queryMatches == null\r\n\t\t\t\t|| queryMatches.length === 0))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`Unable to find a matching value from the ${typeof this}. `\r\n\t\t\t\t\t+ `Query: '${queryString}' found zero matching values.`);\r\n\t\t}\r\n\r\n\t\treturn queryMatches[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IEntityInstanceDto with the specified information.\r\n\t * Parent information is defined in the entity and is at times\r\n\t * required.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstanceDto} entity\r\n\t * The entity instance to create.\r\n\t * @param {string} [parentTypeGroup]\r\n\t * The entity instance parent type group to create.\r\n\t * @param {number} [parentId]\r\n\t * The parent id to create this entity instance under.\r\n\t * @param {object} [parameters]\r\n\t * The context parameters needed to create the entity.\r\n\t * @returns {Promise}\r\n\t * The newly created entity instance identifier.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async createEntityInstance(\r\n\t\tentity: IEntityInstanceDto,\r\n\t\tparentTypeGroup?: string,\r\n\t\tparentId?: number,\r\n\t\tparameters?: object): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst hasParentInformation: boolean =\r\n\t\t\t!AnyHelper.isNullOrEmpty(parentTypeGroup)\r\n\t\t\t\t&& !AnyHelper.isNullOrEmpty(parentId);\r\n\r\n\t\tconst data: object =\r\n\t\t\t{\r\n\t\t\t\t...{\r\n\t\t\t\t\tparentTypeGroup: parentTypeGroup,\r\n\t\t\t\t\tparentId: parentId,\r\n\t\t\t\t},\r\n\t\t\t\t...parameters\r\n\t\t\t};\r\n\r\n\t\tconst url =\r\n\t\t\thasParentInformation\r\n\t\t\t\t? this.formUrlParam(\r\n\t\t\t\t\tthis.getBaseUrl(),\r\n\t\t\t\t\tdata)\r\n\t\t\t\t: this.getBaseUrl();\r\n\r\n\t\tawait this.resetAssociatedCache(url);\r\n\r\n\t\tif (hasParentInformation === true)\r\n\t\t{\r\n\t\t\tconst initialTypeGroup: string = this.entityInstanceTypeGroup;\r\n\t\t\tthis.entityInstanceTypeGroup = parentTypeGroup;\r\n\t\t\tawait this.resetAssociatedCache(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.children));\r\n\r\n\t\t\tthis.entityInstanceTypeGroup = initialTypeGroup;\r\n\t\t}\r\n\r\n\t\tconst response = await lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\tentity,\r\n\t\t\t\t{ observe: 'response' }));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IEntityInstanceDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @async\r\n\t * @param {ISecuritySessionDto} _entity\r\n\t * The entity instance to create.\r\n\t * @returns {Promise}\r\n\t * The newly created entity instance identifier.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IEntityInstanceDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.apiMethods.createEntityInstance\r\n\t\t\t\t]));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an IEntityInstanceDto with the specified identifier\r\n\t * and information.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstanceDto} entity\r\n\t * The entity instance to update.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async update(\r\n\t\tid: number,\r\n\t\tentity: IEntityInstanceDto): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst baseUrl: string =\r\n\t\t\tthis.getBaseUrl();\r\n\t\tconst url =\r\n\t\t\t`${baseUrl}/${id}`;\r\n\t\tawait this.resetAssociatedCache(baseUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.patch(\r\n\t\t\t\turl,\r\n\t\t\t\tentity));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an IEntityInstanceDto with the specified identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst baseUrl: string =\r\n\t\t\tthis.getBaseUrl();\r\n\t\tconst url =\r\n\t\t\t`${baseUrl}/${id}`;\r\n\t\tawait this.resetAssociatedCache(baseUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Executes an action of type action name on the entity instance\r\n\t * with the specified identifer.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to perform the action on.\r\n\t * @param {string} actionName\r\n\t * The action to perform on the identifier specified entity instance.\r\n\t * @param {IEntityInstanceDto} [entity]\r\n\t * If supplied this entity will be sent in the body of the request\r\n\t * and used where applicable to the action.\r\n\t * @param {string} query\r\n\t * An optional query string of parameters.\r\n\t * @param {ResponseType} responseType\r\n\t * The type of response expected.\r\n\t * @returns {Promise}\r\n\t * An observable of the execute action response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async executeAction(\r\n\t\tid: number,\r\n\t\tactionName: string,\r\n\t\tentity?: IEntityInstanceDto,\r\n\t\tquery?: string,\r\n\t\tresponseType: ResponseType = ResponseType.Json): Promise\r\n\t{\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.executeActionAsObservable(\r\n\t\t\t\tid,\r\n\t\t\t\tactionName,\r\n\t\t\t\tentity,\r\n\t\t\t\tquery,\r\n\t\t\t\tresponseType));\r\n\t}\r\n\r\n\t/**\r\n\t * Executes an action of type action name on the entity instance\r\n\t * with the specified identifer.\r\n\t* @param {number} id\r\n\t * The identifier of the entity instance to perform the action on.\r\n\t * @param {string} actionName\r\n\t * The action to perform on the identifier specified entity instance.\r\n\t * @param {IEntityInstanceDto} [entity]\r\n\t * If supplied this entity will be sent in the body of the request\r\n\t * and used where applicable to the action.\r\n\t * @param {string} query\r\n\t * An optional query string of parameters.\r\n\t * @param {ResponseType} responseType\r\n\t * The type of response expected.\r\n\t * @param {Observable} observeType\r\n\t * What the observer will observe.\r\n\t * @returns {Observable}\r\n\t * An observable of the execute action response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic executeActionAsObservable(\r\n\t\tid: number,\r\n\t\tactionName: string,\r\n\t\tentity?: IEntityInstanceDto,\r\n\t\tquery?: string,\r\n\t\tresponseType: ResponseType = ResponseType.Blob,\r\n\t\tobserveType: ObserveType = ObserveType.Events): Observable\r\n\t{\r\n\t\tconst anyHttp: any = this.httpClient;\r\n\r\n\t\tthis.validateRequest();\r\n\r\n\t\tlet url: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions)\r\n\t\t\t+ `/${actionName}`;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(query))\r\n\t\t{\r\n\t\t\turl += query.startsWith('?')\r\n\t\t\t\t? query\r\n\t\t\t\t: '?' + query;\r\n\t\t}\r\n\r\n\t\tconst observable: Observable =\r\n\t\t\tanyHttp\r\n\t\t\t\t.post(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treportProgress: true,\r\n\t\t\t\t\t\tobserve: observeType,\r\n\t\t\t\t\t\tresponseType: responseType,\r\n\t\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\t/**\r\n\t * Assigns a child to the hierarchy of the entity instance\r\n\t * with the supplied identifier. This will insert the child\r\n\t * with the supplied child identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to perform the action on.\r\n\t * @param {number} childId\r\n\t * The identifier of the child to assign.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async assignChild(\r\n\t\tid: number,\r\n\t\tchildId: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.children),\r\n\t\t\t\t{\r\n\t\t\t\t\tchildId: childId\r\n\t\t\t\t});\r\n\t\tawait this.resetAssociatedCache(url);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a child from the hierarchy of the entity instance\r\n\t * with the supplied identifier. This will remove the child\r\n\t * with the supplied child identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the entity instance to perform the action on.\r\n\t * @param {number} childId\r\n\t * The identifier of the child to remove.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic async unAssignChild(\r\n\t\tid: number,\r\n\t\tchildId: number): Promise\r\n\t{\r\n\t\tthis.validateRequest();\r\n\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.children);\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tnestedUrl,\r\n\t\t\t\t{\r\n\t\t\t\t\tchildId: childId\r\n\t\t\t\t});\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl));\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a file.\r\n\t *\r\n\t * @param {number} id\r\n\t * The id of the entity instance that represents the file.\r\n\t * @param {FormData} formData\r\n\t * An optional form data that contains the file. Currently only\r\n\t * one file is supported.\r\n\t * @note This is optional because reference storage types cannot\r\n\t * acccept a file as it is referenced.\r\n\t * @param {string} uploadAction\r\n\t * An optionmal workflow upload action to perform if\r\n\t * different from the default.\r\n\t * @returns {Observable>}\r\n\t * An observable of http events that, if successfull, will\r\n\t * complete with a response containing the new file instance.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic uploadFile(\r\n\t\tid: number,\r\n\t\tformData?: FormData,\r\n\t\tuploadAction: string = AppConstants.workflowActions\r\n\t\t\t.fileUpload): Observable>\r\n\t{\r\n\t\tconst url: string = this\r\n\t\t\t.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions)\r\n\t\t\t\t+ `/${uploadAction}`;\r\n\r\n\t\treturn this.httpClient\r\n\t\t\t.post(\r\n\t\t\t\turl,\r\n\t\t\t\tformData,\r\n\t\t\t\t{\r\n\t\t\t\t\treportProgress: true,\r\n\t\t\t\t\tobserve: 'events',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a file.\r\n\t *\r\n\t * @param {number} id\r\n\t * The file id.\r\n\t * @param {string} downloadAction\r\n\t * The download action name if different from default.\r\n\t * @returns {Observable>}\r\n\t * An observable of Http events which, if successful, will\r\n\t * complete with a response event containing a file.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic downloadFile(\r\n\t\tid: number,\r\n\t\tdownloadAction: string = AppConstants\r\n\t\t\t.workflowActions.fileDownload): Observable>\r\n\t{\r\n\t\tconst url: string = this\r\n\t\t\t.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions)\r\n\t\t\t\t+ `/${downloadAction}`;\r\n\r\n\t\treturn this.httpClient\r\n\t\t\t.post(\r\n\t\t\t\turl,\r\n\t\t\t\tnull,\r\n\t\t\t\t{\r\n\t\t\t\t\treportProgress: true,\r\n\t\t\t\t\tobserve: 'events',\r\n\t\t\t\t\tresponseType: 'blob',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the external report workflow action and returns\r\n\t * external report configuration values.\r\n\t *\r\n\t * @param {number} id\r\n\t * The entity instance id to perform this workflow action against.\r\n\t * @param {string} reportType\r\n\t * The report type parameter which will determine the returned\r\n\t * configuration values.\r\n\t * @returns {Promise}\r\n\t * An observable of the execute action response.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tpublic getExternalReportConfiguration(\r\n\t\tid: number,\r\n\t\treportType: string): Promise\r\n\t{\r\n\t\tconst url: string = this\r\n\t\t\t.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions)\r\n\t\t\t\t+ `/${AppConstants\r\n\t\t\t\t\t.workflowActions\r\n\t\t\t\t\t.externalReportConfiguration}`;\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient\r\n\t\t\t\t.post(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theaders: this.queryOnlyGetHeaders,\r\n\t\t\t\t\t\tparams: {\r\n\t\t\t\t\t\t\treportType: reportType\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the really simple syndication feed data.\r\n\t *\r\n\t * @param {number} id\r\n\t * The entity instance id to perform this workflow action against.\r\n\t * @param {string} feedSourceUrl\r\n\t * The feed source url to get the data from.\r\n\t * @returns {Promise}\r\n\t * An observable of the execute action response.\r\n\t * @memberof EntityInstanceApiService\r\n\t*/\r\n\tpublic getReallySimpleSyndicationFeed(\r\n\t\tid: number,\r\n\t\tfeedSourceUrl: string): Promise\r\n\t{\r\n\t\tconst url: string = this\r\n\t\t\t.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.actions)\r\n\t\t\t\t+ `/${AppConstants\r\n\t\t\t\t\t.workflowActions\r\n\t\t\t\t\t.reallySimpleSyndicationFeed}`;\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient\r\n\t\t\t\t.post(\r\n\t\t\t\t\turl,\r\n\t\t\t\t\t{},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theaders: this.queryOnlyGetHeaders,\r\n\t\t\t\t\t\tparams: {\r\n\t\t\t\t\t\t\tfeedSourceUrl: feedSourceUrl\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates that the entity instance required\r\n\t * type group value is set.\r\n\t *\r\n\t * @throws {Error}\r\n\t * Entity instance type group property not set.\r\n\t * @memberof EntityInstanceApiService\r\n\t */\r\n\tprivate validateRequest(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.typeGroup))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\r\n\t\t\t'The BaseEntityApiService typeGroup property must be set to '\r\n\t\t\t\t+ 'consume entity instance services. Please set this value '\r\n\t\t\t\t+ 'via the entityInstanceTypeGroup getter/setter.');\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityLayoutTypeDto\r\n} from '@api/interfaces/entities/entity-layout-type.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * layout types controller.\r\n *\r\n * @export\r\n * @class\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityLayoutTypeApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityLayoutTypeApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityLayoutTypeApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityLayoutTypes;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityLayoutDto\r\n} from '@api/interfaces/entities/entity-layout.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * layouts controller.\r\n *\r\n * @export\r\n * @class\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityLayoutApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityLayoutApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityLayoutApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityLayouts;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * types controller.\r\n *\r\n * @export\r\n * @class\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityTypeApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityTypeApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityTypeApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityTypes;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityVersionDto\r\n} from '@api/interfaces/entities/entity-version.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the entry\r\n * versions controller.\r\n *\r\n * @export\r\n * @class\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class EntityVersionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a EntityVersionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof EntityVersionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.entityVersions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIAggregateDto\r\n} from '@api/interfaces/common/aggregatedto.interface';\r\nimport {\r\n\tILogEntryDto\r\n} from '@api/interfaces/logs/log-entry.dto.interface';\r\nimport {\r\n\tILogMessageDto\r\n} from '@api/interfaces/logs/log-message.dto.interface';\r\nimport {\r\n\tBaseApiService\r\n} from '@api/services/base/base.api.service';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing the logic and services of the log controller.\r\n *\r\n * @export\r\n * @class LogApiService\r\n * @extends {BaseApiService}\r\n */\r\n@Injectable()\r\nexport class LogApiService\r\n\textends BaseApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of LogApiService.\r\n\t *\r\n\t * @param {HttpClient} http\r\n\t * The http client for log service requests.\r\n\t * @memberof LogApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly http: HttpClient)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async log entry request to the API.\r\n\t *\r\n\t * @param {ILogEntryDto} logEntry\r\n\t * @returns {Promise}\r\n\t * @memberof LogApiService\r\n\t */\r\n\tpublic async addLogEntry(\r\n\t\tlogEntry: ILogEntryDto): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tAppConfig.settings.logging.serverLogUrl))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.http.post(\r\n\t\t\t\tAppConfig.settings.logging.serverLogUrl,\r\n\t\t\t\tlogEntry,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of log messages with the specified filters.\r\n\t *\r\n\t * @param {string} filter A string representing the filters for the query.\r\n\t * @param {string} orderBy A string representing the order by for the query.\r\n\t * @param {number} [offset] A number representing the skip offset.\r\n\t * @param {number} [limit] A number representing the top limit count.\r\n\t * @param {number} [last] A number representing the last count.\r\n\t * @returns {Promise}\r\n\t * @memberof LogApiService\r\n\t */\r\n\tpublic async getLogMessages(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tlast?: number): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t+ 'Logs',\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tlast: last\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.http.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of log messages with the specified filters, this is\r\n\t * used to have a common query interface for this non BaseEntity service.\r\n\t *\r\n\t * @param {string} filter A string representing the filters for the query.\r\n\t * @param {string} orderBy A string representing the order by for the query.\r\n\t * @param {number} [offset] A number representing the skip offset.\r\n\t * @param {number} [limit] A number representing the top limit count.\r\n\t * @returns {Promise}\r\n\t * @memberof LogApiService\r\n\t */\r\n\tpublic async query(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number): Promise\r\n\t{\r\n\t\treturn this.getLogMessages(\r\n\t\t\tfilter,\r\n\t\t\torderBy,\r\n\t\t\toffset,\r\n\t\t\tlimit);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a an aggregate of log messages with the specified filters, this is\r\n\t * used to have a common aggregate interface for this non BaseEntity\r\n\t * service.\r\n\t *\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof LogApiService\r\n\t */\r\n\tpublic async aggregate(\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t+ 'Logs/Aggregate',\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(this.http.get(url));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationDefinitionParameterDto\r\n} from '@api/interfaces/operations/operation-definition-parameter.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * definition parameter controller.\r\n *\r\n * @export\r\n * @class OperationDefinitionParameterApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationDefinitionParameterApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationDefinitionParameterApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationDefinitionParameterApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationDefinitionParameters;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationDefinitionDto\r\n} from '@api/interfaces/operations/operation-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * definition controller.\r\n *\r\n * @export\r\n * @class OperationDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationDefinitions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the associated security groups of the operation definition\r\n\t * with the specified identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation definition to get the security\r\n\t * groups of.\r\n\t * @returns {Promise}\r\n\t * The security groups found via this get method.\r\n\t * @memberof OperationDefinitionApiService\r\n\t */\r\n\tpublic async getSecurityGroups(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a security group to operation definition association\r\n\t * with the specified information, this allows access to\r\n\t * the operation definition for the specified security group.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation definition to set the security\r\n\t * group assocation.\r\n\t * @param {number} securityGroupId\r\n\t * The identifier of the security group to create the operation\r\n\t * definition assocation to.\r\n\t * @returns {Promise}\r\n\t * The operation definition identifier holding the new association.\r\n\t * @memberof OperationDefinitionApiService\r\n\t */\r\n\tpublic async createSecurityGroupMap(\r\n\t\tid: number,\r\n\t\tsecurityGroupId: number): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tnestedUrl,\r\n\t\t\t\t{\r\n\t\t\t\t\tsecurityGroupId: securityGroupId\r\n\t\t\t\t});\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\tconst response = await lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * deletes a security group that allows access to the operation\r\n\t * definition.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation definition to delete the security\r\n\t * group assocation for.\r\n\t * @param {number} securityGroupId\r\n\t * The identifier of the security group to delete the operation\r\n\t * definition assocation to.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof OperationDefinitionApiService\r\n\t */\r\n\tpublic async deleteSecurityGroupMap(\r\n\t\tid: number,\r\n\t\tsecurityGroupId: number): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.securityGroups);\r\n\t\tconst url =\r\n\t\t\t`${nestedUrl}/${securityGroupId}`;\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationGroupHierarchyDto\r\n} from '@api/interfaces/operations/operation-group-hierarchy.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * group controller.\r\n *\r\n * @export\r\n * @class OperationGroupHierarchyApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationGroupHierarchyApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationGroupHierarchyApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationGroupHierarchyApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationGroupHierarchies;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a type IOperationGroupHierarchyDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the type operation group hierarchy to get.\r\n\t * @returns {Promise}\r\n\t * The item found via this get method.\r\n\t * @memberof OperationGroupHierarchyApiService\r\n\t */\r\n\tpublic async get(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.get,\r\n\t\t\t\tAppConstants.apiControllers.operationGroups\r\n\t\t\t\t\t+ ` ${AppConstants.apiMethods.getChildren} `\r\n\t\t\t\t\t+ `or ${AppConstants.apiMethods.getParents}`));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IOperationGroupHierarchyDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {IOperationGroupHierarchyDto} _entity\r\n\t * The operation group hierarchy to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof OperationGroupHierarchyApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IOperationGroupHierarchyDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.createChild,\r\n\t\t\t\tAppConstants.apiControllers.operationGroups));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an IOperationGroupHierarchyDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} _id\r\n\t * Id of the operation group hierarchy to update.\r\n\t * @param {IOperationGroupHierarchyDto} _entity\r\n\t * The operation group hierarchy to update.\r\n\t * @returns {Promise}\r\n\t * Updated item identifier\r\n\t * @memberof OperationGroupHierarchyApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: IOperationGroupHierarchyDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.updateChild,\r\n\t\t\t\tAppConstants.apiControllers.operationGroups));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an IOperationGroupHierarchyDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation group hierarchy instance to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof OperationGroupHierarchyApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.deleteChild,\r\n\t\t\t\tAppConstants.apiControllers.operationGroups));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationGroupRelationshipDto\r\n} from '@api/interfaces/operations/operation-group-relationship.dto.interface';\r\nimport {\r\n\tIOperationGroupDto\r\n} from '@api/interfaces/operations/operation-group.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * group controller.\r\n *\r\n * @export\r\n * @class OperationGroupApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationGroupApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationGroupApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the parent groups of the operation group with the specified\r\n\t * identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The identifier of the operation group to get the parents of.\r\n\t * @returns {Promise}\r\n\t * The parents found via this get method.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic async getParents(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.parents\r\n\t\t);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the children of the operation group with the specified\r\n\t * identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation group to get the children of.\r\n\t * @returns {Promise}\r\n\t * The children found via this get method.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic async getChildren(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.children\r\n\t\t);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a child of the operation group with the specified\r\n\t * identifier with the supplied operation group relationship.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation group to create a child of.\r\n\t * @param {IOperationGroupRelationshipDto} operationGroupRelationship\r\n\t * The operation group relationship to create.\r\n\t * @returns {Promise}\r\n\t * The identifier of the operation group this item was added to.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic async createChild(\r\n\t\tid: number,\r\n\t\toperationGroupRelationship:\r\n\t\t\tIOperationGroupRelationshipDto): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.children);\r\n\t\tawait this.resetAssociatedCache(url);\r\n\r\n\t\tconst response = await lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\toperationGroupRelationship,\r\n\t\t\t\t{\r\n\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a child of the operation group with the specified\r\n\t * identifier with the supplied operation group relationship.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation group to update a child of.\r\n\t * @param {IOperationGroupRelationshipDto} operationGroupRelationship\r\n\t * The operation group relationship to update.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic async updateChild(\r\n\t\tid: number,\r\n\t\toperationGroupRelationship:\r\n\t\t\tIOperationGroupRelationshipDto): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.children);\r\n\t\tawait this.resetAssociatedCache(url);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.put(\r\n\t\t\t\turl,\r\n\t\t\t\toperationGroupRelationship,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a child of the operation group with the specified\r\n\t * identifier with the supplied operation group relationship.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the operation group to delete a child of.\r\n\t * @param {IOperationGroupRelationshipDto} operationGroupRelationship\r\n\t * The operation group relationship to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof OperationGroupApiService\r\n\t */\r\n\tpublic async deleteChild(\r\n\t\tid: number,\r\n\t\toperationGroupRelationship:\r\n\t\t\tIOperationGroupRelationshipDto): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.children)\r\n\t\t\t\t+ `/${operationGroupRelationship.type}`;\r\n\t\tconst url =\r\n\t\t\t`${nestedUrl}/${operationGroupRelationship.id}`;\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationTypeParameterDto\r\n} from '@api/interfaces/operations/operation-type-parameter.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * type parameter controller.\r\n *\r\n * @export\r\n * @class OperationTypeParameterApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationTypeParameterApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationTypeParameterApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationTypeParameterApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationTypeParameters;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject, Injectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationTypeDto\r\n} from '@api/interfaces/operations/operation-type.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the operation\r\n * type controller.\r\n *\r\n * @export\r\n * @class OperationTypeApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class OperationTypeApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationTypeApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof OperationTypeApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.operationTypes;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRuleDefinitionDto\r\n} from '@api/interfaces/rules/rule-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule definition\r\n * controller.\r\n *\r\n * @export\r\n * @class RuleDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RuleDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RuleDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RuleDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.ruleDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRulePresentationDefinitionDto\r\n} from '@api/interfaces/rules/rule-presentation-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule presentation\r\n * definition controller.\r\n *\r\n * @export\r\n * @class RulePresentationDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RulePresentationDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RulePresentationDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RulePresentationDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.rulePresentationDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRulePresentationLogicDefinitionDto\r\n} from '@api/interfaces/rules/rule-presentation-logic-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule presentation logic\r\n * definition controller.\r\n *\r\n * @export\r\n * @class RulePresentationLogicDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RulePresentationLogicDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RulePresentationLogicDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RulePresentationLogicDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.rulePresentationLogicDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinitionDto\r\n} from '@api/interfaces/rules/rule-violation-workflow-action-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the rule violation workflow\r\n * action definition controller.\r\n *\r\n * @export\r\n * @class RuleViolationWorkflowActionDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RuleViolationWorkflowActionDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RuleViolationWorkflowActionDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RuleViolationWorkflowActionDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.ruleViolationWorkflowActionDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpHeaders\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIUserDto\r\n} from '@api/interfaces/users/user.dto.interface';\r\nimport {\r\n\tBaseApiService\r\n} from '@api/services/base/base.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tlastValueFrom,\r\n\tmap\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing the logic and services of the authenticate controller.\r\n *\r\n * @export\r\n * @class AuthenticateService\r\n * @extends {BaseApiService}\r\n */\r\n@Injectable()\r\nexport class AuthenticateApiService\r\n\textends BaseApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of AuthenticateService.\r\n\t *\r\n\t * @param {HttpClient} http\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly http: HttpClient)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async login request to the api service implementing\r\n\t * the /Authenticate method.\r\n\t *\r\n\t * @async\r\n\t * @param {string} userName\r\n\t * A string representing the user name to login as.\r\n\t * @param {string} password\r\n\t * A string representing the password for the user name.\r\n\t * @returns {Promise<{headers: HttpHeaders, user: IUser}>}\r\n\t * A value indicating whether the login was successful.\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async login(\r\n\t\tuserName: string,\r\n\t\tpassword: string,\r\n\t\tapplicationToken: string): Promise<{\r\n\t\t\theaders: HttpHeaders;\r\n\t\t\tuser: IUserDto; }>\r\n\t{\r\n\t\tconst encodedUsernamePassword: string\r\n\t\t\t= btoa(userName + ':' + password);\r\n\r\n\t\tconst url: string\r\n\t\t\t= this.formUrlParam(\r\n\t\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t\t+ AppConstants.apiControllers.authenticate,\r\n\t\t\t\t{\r\n\t\t\t\t\t'application': applicationToken\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.http.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: new HttpHeaders({\r\n\t\t\t\t\t\t'authorization': 'basic ' + encodedUsernamePassword\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tobserve: 'response'\r\n\t\t\t\t})\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tmap((response) =>\r\n\t\t\t\t\t\t({\r\n\t\t\t\t\t\t\theaders: response.headers,\r\n\t\t\t\t\t\t\tuser: response.body\r\n\t\t\t\t\t\t}))\r\n\t\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async verification request to the api service implementing\r\n\t * the /Authenticate/Verify method.\r\n\t *\r\n\t * @param {string} token\r\n\t * A string representing the security access token to verify.\r\n\t * @param {string} code\r\n\t * A string representing the verification code.\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async verify(\r\n\t\ttoken: string,\r\n\t\tcode: string): Promise\r\n\t{\r\n\t\tconst url: string\r\n\t\t\t= this.formUrlParam(\r\n\t\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t\t+ AppConstants.apiControllers.authenticate\r\n\t\t\t\t\t+ '/verify',\r\n\t\t\t\t{\r\n\t\t\t\t\tverificationCode: code,\r\n\t\t\t\t\ttoken: encodeURIComponent(token)\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.http.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{}));\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async verification request to the api service implementing\r\n\t * the /Authenticate/Reset method.\r\n\t *\r\n\t * @param {string} userName\r\n\t * A string representing the user name to reset.\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async reset(\r\n\t\tuserName: string): Promise\r\n\t{\r\n\t\tconst url: string\r\n\t\t\t= this.formUrlParam(\r\n\t\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t\t+ AppConstants.apiControllers.authenticate\r\n\t\t\t\t\t+ '/reset',\r\n\t\t\t\t{\r\n\t\t\t\t\tuserName: userName\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.http.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{}));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityGroupRuleDefinitionViolationOverrideDto\r\n} from '@api/interfaces/security/security-group-rule-definition-violation-override.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the rule presentation\r\n * definition association controller.\r\n *\r\n * @export\r\n * @class SecurityGroupRuleDefinitionViolationOverrideApiService\r\n * @extends {BaseEntityApiService<\r\n * ISecurityGroupRuleDefinitionViolationOverrideDto>}\r\n */\r\n@Injectable()\r\nexport class SecurityGroupRuleDefinitionViolationOverrideApiService\r\n\textends BaseEntityApiService<\r\n\t\tISecurityGroupRuleDefinitionViolationOverrideDto>\r\n{\r\n\t/**\r\n\t * Creates an instance of a\r\n\t * SecurityGroupRuleDefinitionViolationOverrideApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityGroupRuleDefinitionViolationOverrideApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers\r\n\t\t\t\t.securityGroupRuleDefinitionViolationOverrides;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityGroupDto\r\n} from '@api/interfaces/security/security-group.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * group controller.\r\n *\r\n * @export\r\n * @class SecurityGroupApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecurityGroupApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecurityGroupApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityGroupApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securityGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the associated user identifiers of the security group\r\n\t * with the specified identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the security group to get the users of.\r\n\t * @returns {Promise}\r\n\t * The user identifiers found via this get method.\r\n\t * @memberof SecurityGroupApiService\r\n\t */\r\n\tpublic async getSecurityGroupUsers(\r\n\t\tid: number): Promise\r\n\t{\r\n\t\tconst url = this.getNestedUrl(\r\n\t\t\tid,\r\n\t\t\tAppConstants.nestedRouteTypes.users);\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a user of the security group with the specified\r\n\t * identifier with the supplied user identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the security group to create a user of.\r\n\t * @param {number} userId\r\n\t * The user identifier to be added to the security group.\r\n\t * @returns {Promise}\r\n\t * The identifier of the security group this user was added to.\r\n\t * @memberof SecurityGroupApiService\r\n\t */\r\n\tpublic async createSecurityGroupUser(\r\n\t\tid: number,\r\n\t\tuserId: number): Promise\r\n\t{\r\n\t\tconst url: string =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.users),\r\n\t\t\t\t{\r\n\t\t\t\t\tuserId: userId\r\n\t\t\t\t});\r\n\r\n\t\tawait this.resetAssociatedCache(url);\r\n\t\tawait this.resetCachedUsersUrl();\r\n\r\n\t\tconst response = await lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\t{},\r\n\t\t\t\t{\r\n\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\theaders: this.queryOnlyGetHeaders\r\n\t\t\t\t}));\r\n\r\n\t\tconst createdItemId: number =\r\n\t\t\tthis.getCreatedAtRouteIdentifier(\r\n\t\t\t\tresponse.headers.get('location'));\r\n\r\n\t\treturn Promise.resolve(createdItemId);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a user of the security group with the specified\r\n\t * identifier with the supplied user identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the security group to delete a user from.\r\n\t * @param {number} userId\r\n\t * The user identifier to delete from the security group.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof SecurityGroupApiService\r\n\t */\r\n\tpublic async deleteSecurityGroupUser(\r\n\t\tid: number,\r\n\t\tuserId: number): Promise\r\n\t{\r\n\t\tconst nestedUrl: string =\r\n\t\t\tthis.getNestedUrl(\r\n\t\t\t\tid,\r\n\t\t\t\tAppConstants.nestedRouteTypes.users);\r\n\t\tconst url =\r\n\t\t\t`${nestedUrl}/${userId}`;\r\n\t\tawait this.resetAssociatedCache(nestedUrl);\r\n\t\tawait this.resetCachedUsersUrl();\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl));\r\n\t}\r\n\r\n\t/**\r\n\t * Resets any associated cached users url.\r\n\t *\r\n\t * @async\r\n\t * @memberof SecurityGroupApiService\r\n\t */\r\n\tprivate async resetCachedUsersUrl(): Promise\r\n\t{\r\n\t\tconst usersUrl: string =\r\n\t\t\tAppConfig.settings.webApi.rootUrl\r\n\t\t\t\t+ AppConfig.settings.webApi.version\r\n\t\t\t\t+ '/' + AppConstants.apiControllers.entityInstances\r\n\t\t\t\t+ '/' + AppConstants.nestedRouteTypes.users;\r\n\r\n\t\tawait this.resetAssociatedCache(usersUrl);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIAggregateDto\r\n} from '@api/interfaces/common/aggregatedto.interface';\r\nimport {\r\n\tISecuritySessionEventDto\r\n} from '@api/interfaces/security/security-session-event.dto.interface';\r\nimport {\r\n\tISecuritySessionDto\r\n} from '@api/interfaces/security/security-session.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * session controller.\r\n *\r\n * @export\r\n * @class SecuritysessionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecuritySessionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecuritySessionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecuritySessionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securitySessions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of security session events with the specified\r\n\t * filters related to the sent security session identifier.\r\n\t *\r\n\t * @param {number} id\r\n\t * A number representing the security session identifier\r\n\t * to find related events for.\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {number} [last]\r\n\t * A number representing the last count.\r\n\t * @returns {Promise}\r\n\t * The array of security session events found via this query method.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async querySessionEvents(\r\n\t\tid: number,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tlast?: number): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getNestedUrl(\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tAppConstants.nestedRouteTypes.events),\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\torderBy: orderBy,\r\n\t\t\t\t\toffset: offset,\r\n\t\t\t\t\tlimit: limit,\r\n\t\t\t\t\tlast: last\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient\r\n\t\t\t\t.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an aggregate of session events.\r\n\t * Count, sum, average, min, or max.\r\n\t *\r\n\t * @param {number} id\r\n\t * A number representing the security session identifier\r\n\t * to find related events for.\r\n\t * @param {string} method\r\n\t * The aggregate method name to use.\r\n\t * @param {string} property\r\n\t * The property to aggregate. Pass null if calling count.\r\n\t * @param {string} filter\r\n\t * The filter or \"where clause.\"\r\n\t * @param {string} groupBy\r\n\t * The properties to group by.\r\n\t * @returns {Promise}\r\n\t * An array of aggregate results.\r\n\t * @memberof BaseEntityApiService\r\n\t */\r\n\tpublic async aggregateSessionEvents(\r\n\t\tid: number,\r\n\t\tmethod: string,\r\n\t\tproperty?: string,\r\n\t\tfilter?: string,\r\n\t\tgroupBy?: string): Promise\r\n\t{\r\n\t\tconst url =\r\n\t\t\tthis.formUrlParam(\r\n\t\t\t\tthis.getBaseUrl() +\r\n\t\t\t\t'/Aggregate' +\r\n\t\t\t\t`/${id}/${AppConstants.nestedRouteTypes.events}`,\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy\r\n\t\t\t\t});\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient\r\n\t\t\t\t.get(url));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an ISecuritySessionDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {ISecuritySessionDto} _entity\r\n\t * The security session to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof SecuritySessionApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: ISecuritySessionDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.apiMethods.update\r\n\t\t\t\t]));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an ISecuritySessionDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the security session to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof SecuritySessionApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.apiMethods.update\r\n\t\t\t\t]));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIWorkflowActionDefinitionsDto\r\n} from '@api/interfaces/workflow/workflow-action-definitions.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the workflow\r\n * action definitions controller.\r\n *\r\n * @export\r\n * @class WorkflowActionDefinitionsApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class WorkflowActionDefinitionsApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkflowActionDefinitionsApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof WorkflowActionDefinitionsApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.workflowActionDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpXhrBackend\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIAppConfig\r\n} from '@shared/interfaces/app-config.interface';\r\nimport {\r\n\tlastValueFrom\r\n} from 'rxjs';\r\nimport {\r\n\tenvironment\r\n} from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class AppConfig\r\n{\r\n\t/**\r\n\t * Gets or sets the application config settings.\r\n\t *\r\n\t * @static\r\n\t * @type {IAppConfig}\r\n\t * @memberof AppConfig\r\n\t */\r\n\tpublic static settings: IAppConfig;\r\n\r\n\t/**\r\n\t * Loads the correct application config.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof AppConfig\r\n\t */\r\n\tpublic static async load(): Promise\r\n\t{\r\n\t\tconst jsonFile\r\n\t\t\t= `assets/config/config.${environment.name}.json`;\r\n\r\n\t\tconst http: HttpClient = new HttpClient(\r\n\t\t\tnew HttpXhrBackend({ build: () => new XMLHttpRequest() }));\r\n\r\n\t\treturn lastValueFrom(http.get(jsonFile));\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tPowerBiWizardStepDirective\r\n} from '@bi/directives/power-bi-wizard-step.directive';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIGroupedDropdownOption\r\n} from '@shared/interfaces/application-objects/grouped-dropdown-option.interface';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIPowerBiDataset\r\n} from '@shared/interfaces/reports/power-bi/power-bi-dataset.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-clone-power-bi-report',\r\n\ttemplateUrl: './clone-power-bi-report.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a clone power bi report step.\r\n *\r\n * @export\r\n * @class ClonePowerBiReportComponent\r\n * @extends {PowerBiWizardStepDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ClonePowerBiReportComponent\r\n\textends PowerBiWizardStepDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the clone power bi report component.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power bi display service used for external power bi reports.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used for external power bi reports.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service used in this component.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The display component definition api service used in this component.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The display component instance api service used in this component.\r\n\t * @param {DisplayComponentTypeApiService}\r\n\t * displayComponentTypeApiService\r\n\t * The display component type api service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The security group api service used in this component.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions.\r\n\t * @param {ActivatedRoute} route\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {Router} router\r\n\t * The router used in this component for site navigation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tpowerBiService,\r\n\t\t\tpowerBiApiService,\r\n\t\t\tdisplayComponentDefinitionApiService,\r\n\t\t\tdisplayComponentTypeApiService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the lookup type used when gathering available values of\r\n\t * the api data type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic lookupType: string = ReportConstants.powerBiObjectTypes.dataset;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy that defines if the initial validation has\r\n\t * completed. This is used to handle async valid returns on form display\r\n\t * which will not fire status changes.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic initialValidationComplete: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the constant value used to set and store a report name in layout\r\n\t * data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tprivate readonly reportNameKey: string =\r\n\t\t'data.reportDefinition.newReportName';\r\n\r\n\t/**\r\n\t * Gets the constant value used to set and store a\r\n\t * BI Utility Menu in layout\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tprivate readonly businessIntelligenceUtilityMenu: string =\r\n\t\t'BiModule.UtilityMenu';\r\n\r\n\t/**\r\n\t * Gets the constant value for the empty report name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tprivate readonly emptyReportTemplateName: string =\r\n\t\t'Blank';\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.context.source\r\n\t\t\t.addToNext(\r\n\t\t\t\tthis.cloneAndNavigate.bind(this));\r\n\r\n\t\tif (this.useExisting === false)\r\n\t\t{\r\n\t\t\tawait this.loadEmptyTemplate();\r\n\t\t}\r\n\r\n\t\tconst cloneSuffix: string = 'Clone';\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst existingReportDefinition: IPowerBiReportDefinition =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.reportDefinition;\r\n\t\tconst reportCloneName: string =\r\n\t\t\tthis.useExisting === true\r\n\t\t\t\t? existingReportDefinition.reportName\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t` ${cloneSuffix}`,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t: 'New Report';\r\n\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tconst existingReportName: string =\r\n\t\t\tthis.useExisting === true\r\n\t\t\t\t? `${reportCloneName} ${cloneSuffix}`\r\n\t\t\t\t: reportCloneName;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\treportDefinition:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...existingReportDefinition,\r\n\t\t\t\t\t\tnewDatasetId:\r\n\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tcurrentData.reportDefinition.newDatasetId)\r\n\t\t\t\t\t\t\t\t? currentData.reportDefinition.newDatasetId\r\n\t\t\t\t\t\t\t\t: existingReportDefinition.datasetId,\r\n\t\t\t\t\t\tnewGroupId: currentData.customGroupId,\r\n\t\t\t\t\t\tnewReportName:\r\n\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tcurrentData.reportDefinition.newReportName)\r\n\t\t\t\t\t\t\t\t? currentData.reportDefinition.newReportName\r\n\t\t\t\t\t\t\t\t: existingReportName\r\n\t\t\t\t\t},\r\n\t\t\t\tselectedSecurityGroups:\r\n\t\t\t\t\t!AnyHelper.isNull(\r\n\t\t\t\t\t\tcurrentData.selectedSecurityGroups)\r\n\t\t\t\t\t\t? currentData.selectedSecurityGroups\r\n\t\t\t\t\t\t: []\r\n\t\t\t});\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: this.reportNameKey,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Report Name',\r\n\t\t\t\t\t\ttooltip: 'The name of the new report.',\r\n\t\t\t\t\t\tmaxLength: 100,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnoUnderscoreStart:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\tthis.validateNoUnderscoreStart.bind(this),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Report names cannot begin with an underscore.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuniqueReportName:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\tthis.validateUniqueReportName.bind(this),\r\n\t\t\t\t\t\t\tmessage: 'Report name already exists.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reportDefinition.newDatasetId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Dataset',\r\n\t\t\t\t\t\ttooltip: 'The dataset of the new report.',\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.groupedSelectionOptions.map(\r\n\t\t\t\t\t\t\t\t(groupedOption: IGroupedDropdownOption) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst groupedIdOptions:\r\n\t\t\t\t\t\t\t\t\t\tIDropdownOption[] = [];\r\n\t\t\t\t\t\t\t\t\tgroupedOption.items.forEach(\r\n\t\t\t\t\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tgroupedIdOptions.push(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: option.label,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: option.value.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tgroupedOption.items = groupedIdOptions;\r\n\r\n\t\t\t\t\t\t\t\t\treturn groupedOption;\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgroup: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tfilter: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.selectedSecurityGroups',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Report Viewer(s)',\r\n\t\t\t\t\t\ttooltip: 'Set the Security Groups that will be'\r\n\t\t\t\t\t\t\t+ ' allowed to view the report.',\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tfilter: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.public',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Publish',\r\n\t\t\t\t\t\ttooltip: 'If Public is enabled, then that means'\r\n\t\t\t\t\t\t\t+ ' the report is published and accessible to'\r\n\t\t\t\t\t\t\t+ ' the specified Report Viewers. If Public is'\r\n\t\t\t\t\t\t\t+ ' disabled, then only the Report Owner\\'s'\r\n\t\t\t\t\t\t\t+ ' will be able to see the new report.',\r\n\t\t\t\t\t\tdefault: true,\r\n\t\t\t\t\t\tchange: (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsetTimeout( () =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.publicRulesValidator(\r\n\t\t\t\t\t\t\t\t\tfield.formControl.value);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.ownershipSecurityGroupId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Report Owner(s)',\r\n\t\t\t\t\t\ttooltip: 'Set Additional Report Owner\\'s'\r\n\t\t\t\t\t\t\t+ ' that will be allowed to edit'\r\n\t\t\t\t\t\t\t+ ' the report.',\r\n\t\t\t\t\t\tplaceholder: 'Select an ownership group',\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tfilter: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates that new report names do not begin with an underscore\r\n\t * which would set them as not searchable due to our underscore\r\n\t * name filters on reports and datasets.\r\n\t *\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The control to be validated.\r\n\t * @returns {boolean}\r\n\t * A value representing that the value of this control starts with\r\n\t * and underscore.\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic validateNoUnderscoreStart(\r\n\t\tcontrol: UntypedFormControl): boolean\r\n\t{\r\n\t\treturn control.value.indexOf(\r\n\t\t\tAppConstants.characters.underscore) !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates business rules for Public\r\n\t * or private reports\r\n\t *\r\n\t * @param {boolean} isPublicEnabled\r\n\t * isPublicEnabled flag.\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic publicRulesValidator(\r\n\t\tisPublicEnabled: boolean): void\r\n\t{\r\n\t\tthis.dynamicFormlyLayout.forEach(\r\n\t\t\t(definition) =>\r\n\t\t\t{\r\n\t\t\t\tlet isDisabled: boolean = false;\r\n\r\n\t\t\t\tif (definition.key === 'data.reportDefinition.newDatasetId'\r\n\t\t\t\t\t|| (isPublicEnabled === false\r\n\t\t\t\t\t\t&& (definition.key === 'data.selectedSecurityGroups'\r\n\t\t\t\t\t\t\t|| definition.key ===\r\n\t\t\t\t\t\t\t\t'data.ownershipSecurityGroupId')))\r\n\t\t\t\t{\r\n\t\t\t\t\tisDisabled = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdefinition.props.disabled =\r\n\t\t\t\t\tisDisabled;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Validates that the report name being selected is unique in power bi\r\n\t * as well as when we create the display component instance.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The control to be validated for a unique name value.\r\n\t * @returns {Promise}\r\n\t * A value representing the is valid value of this control.\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async validateUniqueReportName(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst newReportDisplayComponentName: string =\r\n\t\t\tthis.getReportDisplayComponentName(\r\n\t\t\t\tcontrol.value);\r\n\t\tconst newBasePageDisplayComponentName: string =\r\n\t\t\t`${AppConstants.displayComponentTypes.basePage}.`\r\n\t\t\t\t+ `${newReportDisplayComponentName}`;\r\n\t\tconst selectedGroupId: string =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.customGroupId;\r\n\t\tconst matchingReportNames: IPowerBiReport[] =\r\n\t\t\t(await this.powerBiApiService\r\n\t\t\t\t.groupLevelData(\r\n\t\t\t\t\tselectedGroupId))\r\n\t\t\t\t.filter((report: IPowerBiReport) =>\r\n\t\t\t\t\treport.name ===\r\n\t\t\t\t\t\tStringHelper.trim(control.value));\r\n\t\tconst matchingDisplayNames: IDisplayComponentInstance[] =\r\n\t\t\t\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${newReportDisplayComponentName}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id}`);\r\n\t\tconst matchingBasePageNames: IDisplayComponentInstance[] =\r\n\t\t\t\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${newBasePageDisplayComponentName}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id}`);\r\n\r\n\t\tconst isValid: boolean =\r\n\t\t\t(matchingReportNames.length === 0\r\n\t\t\t\t&& matchingDisplayNames.length === 0\r\n\t\t\t\t&& matchingBasePageNames.length === 0);\r\n\r\n\t\t// Fire a validity check for a starting valid value.\r\n\t\tif (this.initialValidationComplete === false\r\n\t\t\t&& control.valid === false\r\n\t\t\t&& isValid === true)\r\n\t\t{\r\n\t\t\tcontrol.markAsTouched();\r\n\t\t\tcontrol.updateValueAndValidity();\r\n\t\t\tthis.initialValidationComplete = true;\r\n\t\t}\r\n\r\n\t\treturn matchingReportNames.length === 0\r\n\t\t\t&& matchingDisplayNames.length === 0\r\n\t\t\t&& matchingBasePageNames.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the existing empty report template from the selected standard\r\n\t * workspace. This will populate the report definition based on that\r\n\t * matching report.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async loadEmptyTemplate(): Promise\r\n\t{\r\n\t\tconst emptyReportTemplateWorkspace: string =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.standardGroupId;\r\n\t\tconst matchingReports: IPowerBiReport[] =\r\n\t\t\t(await this.powerBiApiService\r\n\t\t\t\t.groupLevelData(\r\n\t\t\t\t\temptyReportTemplateWorkspace))\r\n\t\t\t\t.filter((report: IPowerBiReport) =>\r\n\t\t\t\t\treport.name ===\r\n\t\t\t\t\t\tthis.emptyReportTemplateName);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\treport: matchingReports[0]\r\n\t\t\t});\r\n\r\n\t\tawait this.createReportDefinition(\r\n\t\t\tmatchingReports[0],\r\n\t\t\tfalse,\r\n\t\t\temptyReportTemplateWorkspace);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a power bi report definition, this method will clone that report\r\n\t * and realign the sent report definition to now point to this new cloned\r\n\t * report.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async cloneSelectedReport(): Promise\r\n\t{\r\n\t\tconst reportDefinition: IPowerBiReportDefinition =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.reportDefinition;\r\n\t\tconst clonedReport: IPowerBiReport =\r\n\t\t\tawait this.powerBiApiService\r\n\t\t\t\t.cloneExistingReport(\r\n\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t.currentData.data.report,\r\n\t\t\t\t\treportDefinition.groupId,\r\n\t\t\t\t\treportDefinition.newReportName,\r\n\t\t\t\t\treportDefinition.newDatasetId,\r\n\t\t\t\t\treportDefinition.newGroupId);\r\n\r\n\t\treportDefinition.reportId = clonedReport.id;\r\n\t\treportDefinition.reportName = clonedReport.name;\r\n\t\treportDefinition.datasetId = clonedReport.datasetId;\r\n\t\treportDefinition.datasetGroupId =\r\n\t\t\tthis.getDatasetGroupId(clonedReport.datasetId);\r\n\t\treportDefinition.groupId = reportDefinition.newGroupId;\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addOrUpdateStepData(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\treportDefinition: reportDefinition\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a power bi report definition, this method will translate that\r\n\t * value into a display component instance for both the external report\r\n\t * component and the generic base page component.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async createDisplayComponents(): Promise\r\n\t{\r\n\t\tconst buildReportSecurityGroup: number =\r\n\t\t\t(await this.optionsFactory\r\n\t\t\t\t.getSecurityGroupOptions(\r\n\t\t\t\t\tawait this.insuranceService.getMasterSecurityGroups()))\r\n\t\t\t\t.find((item: IDropdownOption) =>\r\n\t\t\t\t\titem.label === 'Bi_Module_ReportBuilders').value;\r\n\r\n\t\tconst activeMenuItemData: any =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data;\r\n\t\tconst displayComponentDefinition: IDisplayComponentDefinition =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentDefinition(\r\n\t\t\t\t\tAppConstants.displayComponentTypes\r\n\t\t\t\t\t\t.reportPowerBiCustom,\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.externalReportComponent);\r\n\t\tconst basePageDisplayComponentDefinition: IDisplayComponentDefinition =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentDefinition(\r\n\t\t\t\t\tAppConstants.displayComponentTypes\r\n\t\t\t\t\t\t.basePage,\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.genericBasePageComponent);\r\n\r\n\t\tconst reportDefinition: IPowerBiReportDefinition =\r\n\t\t\tactiveMenuItemData.reportDefinition;\r\n\t\tconst reportDisplayComponentName: string =\r\n\t\t\tthis.getReportDisplayComponentName(\r\n\t\t\t\treportDefinition.reportName);\r\n\t\tconst reportDisplayJson: object =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tinterpolationData:\r\n\t\t\t\t{\r\n\t\t\t\t\tdatasetGroupId: reportDefinition.datasetGroupId,\r\n\t\t\t\t\texternalReportType: reportDefinition.externalReportType,\r\n\t\t\t\t\treportName: reportDefinition.reportName,\r\n\t\t\t\t\treportType: reportDefinition.reportType\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\tconst basePageDisplayJson: object =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tinterpolationData:\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponent: reportDisplayComponentName,\r\n\t\t\t\t\tpageButtonBar: AppConstants.empty,\r\n\t\t\t\t\tloadingPageTitle: 'Report',\r\n\t\t\t\t\tpageTitleTemplate: '${data.reportDefinition.reportName}',\r\n\t\t\t\t\tpageContextMenu: AppConstants.empty,\r\n\t\t\t\t\tpageUtilityMenu: this.businessIntelligenceUtilityMenu,\r\n\t\t\t\t\tpageInformationMenu: AppConstants.empty\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tconst reportDisplayComponent: IDisplayComponentInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdefinitionId: displayComponentDefinition.id,\r\n\t\t\t\tdescription: 'Built Report',\r\n\t\t\t\tjsonData: JSON.stringify(reportDisplayJson),\r\n\t\t\t\tname: reportDisplayComponentName,\r\n\t\t\t\ttypeId: displayComponentDefinition.typeId,\r\n\t\t\t\tpublic: activeMenuItemData.public,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tAnyHelper\r\n\t\t\t\t\t\t.isNullOrWhitespace(activeMenuItemData\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupId)\r\n\t\t\t\t\t\t? buildReportSecurityGroup\r\n\t\t\t\t\t\t: activeMenuItemData.ownershipSecurityGroupId\r\n\t\t\t};\r\n\t\tconst basePageDisplayComponent: IDisplayComponentInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdefinitionId: basePageDisplayComponentDefinition.id,\r\n\t\t\t\tdescription: 'Built Base Page',\r\n\t\t\t\tjsonData: JSON.stringify(basePageDisplayJson),\r\n\t\t\t\tname: AppConstants.displayComponentTypes.basePage\r\n\t\t\t\t\t+ `.${reportDisplayComponentName}`,\r\n\t\t\t\ttypeId: basePageDisplayComponentDefinition.typeId,\r\n\t\t\t\tpublic: activeMenuItemData.public,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tAnyHelper\r\n\t\t\t\t\t\t.isNullOrWhitespace(\r\n\t\t\t\t\t\t\tactiveMenuItemData.ownershipSecurityGroupId)\r\n\t\t\t\t\t\t? buildReportSecurityGroup\r\n\t\t\t\t\t\t: activeMenuItemData.ownershipSecurityGroupId\r\n\t\t\t};\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addOrUpdateStepData(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tnewDisplayComponent: reportDisplayComponent,\r\n\t\t\t\t\tnewBasePageDisplayComponent: basePageDisplayComponent\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This method extends the wizard steps existing next action.\r\n\t * This will clone a selected report definition with the selected on screen\r\n\t * values, create both the external and base page display components,\r\n\t * and also add mapped security groups to each role selected in the\r\n\t * permissions dropdown to both display components. Upon completion\r\n\t * this will navigate to the newly created report base page.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic async cloneAndNavigate(): Promise\r\n\t{\r\n\t\tawait this.cloneSelectedReport();\r\n\t\tawait this.createDisplayComponents();\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst buildReportSecurityGroup: number =\r\n\t\t\t(await this.optionsFactory\r\n\t\t\t\t.getSecurityGroupOptions(\r\n\t\t\t\t\tawait this.insuranceService.getMasterSecurityGroups()))\r\n\t\t\t\t.find((item: IDropdownOption) =>\r\n\t\t\t\t\titem.label === 'Bi_Module_ReportBuilders').value;\r\n\r\n\t\t if (currentData.selectedSecurityGroups.length === 0)\r\n\t\t {\r\n\t\t\tcurrentData.selectedSecurityGroups =\r\n\t\t\t\t[\r\n\t\t\t\t\tbuildReportSecurityGroup\r\n\t\t\t\t];\r\n\t\t }\r\n\r\n\t\tconst newReportDisplayComponentId: number =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.create(currentData.newDisplayComponent);\r\n\t\tconst newBasePageDisplayComponentId: number =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.create(currentData.newBasePageDisplayComponent);\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tcurrentData.selectedSecurityGroups.forEach(\r\n\t\t\t(securityGroupId: number) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\tnewReportDisplayComponentId,\r\n\t\t\t\t\t\t\tsecurityGroupId));\r\n\t\t\t});\r\n\t\tcurrentData.selectedSecurityGroups.forEach(\r\n\t\t\t(securityGroupId: number) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\tnewBasePageDisplayComponentId,\r\n\t\t\t\t\t\t\tsecurityGroupId));\r\n\t\t\t});\r\n\r\n\t\tconst newReportName: string =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data\r\n\t\t\t\t.reportDefinition.newReportName;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait Promise.all(\r\n\t\t\t\t\t\t\tinitialPromiseArray);\r\n\r\n\t\t\t\t\t\tthis.context.source.storeData(\r\n\t\t\t\t\t\t\tthis.context.source.activeMenuItem.currentData);\r\n\r\n\t\t\t\t\t\thistory.pushState(\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\tthis.router.url);\r\n\r\n\t\t\t\t\t\tthis.dynamicFormlyLayout = [];\r\n\r\n\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\tAppConstants.moduleNames.bi,\r\n\t\t\t\t\t\t\t\tAppConstants.route.display,\r\n\t\t\t\t\t\t\t\tcurrentData.newBasePageDisplayComponent.name,\r\n\t\t\t\t\t\t\t\tAppConstants.viewTypes.edit\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treplaceUrl: true\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Creating Report',\r\n\t\t\t\t'Created A Report',\r\n\t\t\t\t`${newReportName} was created.`,\r\n\t\t\t\t`${newReportName} was not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Parses the selected dataset and finds the associated group id\r\n\t * for this dataset.\r\n\t *\r\n\t * @param {string} datasetId\r\n\t * The dataset id to find the matching group id for.\r\n\t * @returns {string}\r\n\t * The selected datasets group id.\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tpublic getDatasetGroupId(\r\n\t\tdatasetId: string): string\r\n\t{\r\n\t\tlet groupId: string;\r\n\t\tthis.groupedSelectionOptions.forEach(\r\n\t\t\t(groupedOption: IGroupedDropdownOption) =>\r\n\t\t\t{\r\n\t\t\t\tconst matchingGroupedItems: IDropdownOption[] =\r\n\t\t\t\t\tgroupedOption.items.filter(\r\n\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\toption.value === datasetId);\r\n\r\n\t\t\t\tif (matchingGroupedItems.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tgroupId = groupedOption.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn groupId;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted string name for the display component based on the\r\n\t * alphanumeric report name.\r\n\t *\r\n\t * @param {string} reportName\r\n\t * The dataset id to find the matching group id for.\r\n\t * @returns {string}\r\n\t * The display component name suffix that this will be created under.\r\n\t * @memberof ClonePowerBiReportComponent\r\n\t */\r\n\tprivate getReportDisplayComponentName(\r\n\t\treportName: string): string\r\n\t{\r\n\t\treturn 'Report.PowerBi.'\r\n\t\t\t+ StringHelper.getCleanedValue(\r\n\t\t\t\treportName,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.commonRegex.alphaNumericOnly\r\n\t\t\t\t]);\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tPreview Report\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tPowerBiWizardStepDirective\r\n} from '@bi/directives/power-bi-wizard-step.directive';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-select-existing-power-bi-report',\r\n\ttemplateUrl: './select-existing-power-bi-report.component.html',\r\n\tstyleUrls: [\r\n\t\t'./select-existing-power-bi-report.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a select existing power bi report wizard step.\r\n *\r\n * @export\r\n * @class SelectExistingPowerBiReportComponent\r\n * @extends {PowerBiWizardStepDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class SelectExistingPowerBiReportComponent\r\n\textends PowerBiWizardStepDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of the select existing power bi report component.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power bi display service used for external power bi reports.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used for external power bi reports.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The display component definition api service used in this component.\r\n\t * @param {DisplayComponentTypeApiService}\r\n\t * displayComponentTypeApiService\r\n\t * The display component type api service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector used in this component.\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tpowerBiService,\r\n\t\t\tpowerBiApiService,\r\n\t\t\tdisplayComponentDefinitionApiService,\r\n\t\t\tdisplayComponentTypeApiService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the value of whether or not the currently selected report\r\n\t * should be displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic displayReport: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value of whether or not the preview report button\r\n\t * should be shown.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic displayReportPreview: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the lookup type used when gathering available values of\r\n\t * the api data type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic lookupType: string = ReportConstants.powerBiObjectTypes.report;\r\n\r\n\t/**\r\n\t * Gets the constant value for an existing report lookup.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tprivate readonly existingOption: string = 'Existing';\r\n\r\n\t/**\r\n\t * Gets the constant value for a new report lookup.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tprivate readonly newOption: string = 'New';\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout holding available reports\r\n\t * for selection.\r\n\t *\r\n\t * @async\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reportLocation',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Source',\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: this.newOption,\r\n\t\t\t\t\t\t\t\tvalue: this.newOption\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: this.existingOption,\r\n\t\t\t\t\t\t\t\tvalue: this.existingOption\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\tasync(_field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tawait this.resetReport();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.report',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Existing Report',\r\n\t\t\t\t\t\ttooltip: 'The existing report to clone.',\r\n\t\t\t\t\t\toptions: this.groupedSelectionOptions,\r\n\t\t\t\t\t\tgroup: true,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thidden: true,\r\n\t\t\t\t\t\tfilter: true,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\tasync(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tawait this.handleSelectionChange(field);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'model.data?.reportLocation !== \\'Existing\\''\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the preview report click event.\r\n\t * This will display the external report component with the currently\r\n\t * set report context.\r\n\t *\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tpublic previewReport(): void\r\n\t{\r\n\t\tthis.displayReport = !this.displayReport;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the item selection change event.\r\n\t * This will store verify the selection is accurate and call the\r\n\t * item selected business logic.\r\n\t *\r\n\t * @async\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tprivate async handleSelectionChange(\r\n\t\tfield: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tlet shouldDisplayReportPreview: boolean = false;\r\n\t\tif (!AnyHelper.isNull(field.formControl.value)\r\n\t\t\t&& this.selectedItem !==\r\n\t\t\t\tfield.formControl.value)\r\n\t\t{\r\n\t\t\tthis.selectedItem = field.formControl.value;\r\n\t\t\tshouldDisplayReportPreview = true;\r\n\t\t\tawait this.itemSelected();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tawait this.resetReport();\r\n\t\t}\r\n\r\n\t\tthis.displayReportPreview = shouldDisplayReportPreview;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the previewed report to not be visible.\r\n\t *\r\n\t * @private\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tprivate async resetReport(): Promise\r\n\t{\r\n\t\tthis.selectedItem = null;\r\n\t\tthis.displayReport = false;\r\n\t\tthis.reportContext = null;\r\n\t}\r\n\r\n\t/**\r\n\t * This will store this value in the current step and display the selected\r\n\t * report.\r\n\t *\r\n\t * @async\r\n\t * @memberof SelectExistingPowerBiReportComponent\r\n\t */\r\n\tprivate async itemSelected(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.displayReport = false;\r\n\t\t\t\tthis.reportContext = null;\r\n\t\t\t});\r\n\r\n\t\tconst reportToClone: IPowerBiReport =\r\n\t\t\tthis.selectedItem;\r\n\t\tawait this.createReportDefinition(\r\n\t\t\treportToClone);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tDirective,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tDisplayComponentDefinition\r\n} from '@shared/implementations/display-components/display-component-definition';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIGroupedDropdownOption\r\n} from '@shared/interfaces/application-objects/grouped-dropdown-option.interface';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentType\r\n} from '@shared/interfaces/display-components/display-component-type.interface';\r\nimport {\r\n\tIPowerBiDataset\r\n} from '@shared/interfaces/reports/power-bi/power-bi-dataset.interface';\r\nimport {\r\n\tIPowerBiGroup\r\n} from '@shared/interfaces/reports/power-bi/power-bi-group.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tIEmbedConfiguration\r\n} from 'embed';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[PowerBiWizardStep]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with power bi in a wizard.\r\n *\r\n * @export\r\n * @class PowerBiComponentDirective\r\n * @implements {OnInit}\r\n */\r\nexport class PowerBiWizardStepDirective implements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of the power bi wizard step directive.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power bi display service used for external power bi reports.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used for external power bi reports.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The display component definition api service used in this component.\r\n\t * @param {DisplayComponentTypeApiService}\r\n\t * displayComponentTypeApiService\r\n\t * The display component type api service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the string that signifies the active step holds a report location\r\n\t * selection of existing.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic static readonly existingReportLocation: string = 'Existing';\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\t@Input() public context:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the context of the report that will be set\r\n\t * during initialization.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic reportContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the lookup type used when gathering available values of\r\n\t * the api data type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic lookupType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the available grouped lookups for report or dataset\r\n\t * selection.\r\n\t *\r\n\t * @type {IGroupedDropdownOption[]}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic groupedSelectionOptions: IGroupedDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the selected lookup for report creation or cloning.\r\n\t *\r\n\t * @type {TApiDataType}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic selectedItem: TApiDataType;\r\n\r\n\t/**\r\n\t * Gets the value specifying if we should clone or create a new report.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic get useExisting(): boolean\r\n\t{\r\n\t\treturn this.context.source.activeMenuItem\r\n\t\t\t.currentData.data.reportLocation ===\r\n\t\t\t\tPowerBiWizardStepDirective.existingReportLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load and initialize the lookups available for report creation.\r\n\t *\r\n\t * @async\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupGroupedSelections();\r\n\t\tawait this.performPostInitActions();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action, this can be implemented in\r\n\t * a directive component and it will fire after initialization\r\n\t * is complete.\r\n\t *\r\n\t * @async\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\t// Override in the implementing component.\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and defines the available grouped selection options for the api\r\n\t * data type being requested.\r\n\t *\r\n\t * @async\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic async setupGroupedSelections(): Promise\r\n\t{\r\n\t\tthis.groupedSelectionOptions = [];\r\n\t\tconst definedGroups: IPowerBiGroup[] = [];\r\n\t\tconst groupedOptions: IGroupedDropdownOption[] = [];\r\n\r\n\t\tconst displayTypes: IDisplayComponentType[] =\r\n\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name}.StartsWith(`\r\n\t\t\t\t\t\t+ '\\'Report.PowerBi\\') eq true',\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst typeFilter: string =\r\n\t\t\tApiFilterHelper.getEnumerationFilter(\r\n\t\t\t\tAppConstants.commonProperties.typeId,\r\n\t\t\t\tdisplayTypes.map(\r\n\t\t\t\t\t(displayType: IDisplayComponentType) =>\r\n\t\t\t\t\t\t`${displayType.id}`));\r\n\t\tconst availableReportDefinitions: IDisplayComponentDefinition[] =\r\n\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\ttypeFilter,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst availableGroups: IPowerBiGroup[] =\r\n\t\t\tawait this.powerBiApiService.baseLevelData(\r\n\t\t\t\tReportConstants.powerBiObjectTypes.group);\r\n\r\n\t\tlet standardGroupId: string = AppConstants.empty;\r\n\t\tfor (const definitionInterface of availableReportDefinitions)\r\n\t\t{\r\n\t\t\tconst definition: DisplayComponentDefinition =\r\n\t\t\t\tnew DisplayComponentDefinition(definitionInterface);\r\n\t\t\tconst definitionGroupId = definition.jsonDefinition.groupId;\r\n\r\n\t\t\tif (definitionGroupId.indexOf('${') === -1)\r\n\t\t\t{\r\n\t\t\t\tconst matchingPowerBiGroups: IPowerBiGroup[] =\r\n\t\t\t\t\tavailableGroups.filter(\r\n\t\t\t\t\t\t(group: IPowerBiGroup) =>\r\n\t\t\t\t\t\t\tgroup.id === definitionGroupId);\r\n\t\t\t\tdefinedGroups.push(\r\n\t\t\t\t\tmatchingPowerBiGroups[0]);\r\n\r\n\t\t\t\tswitch (definition.jsonDefinition.workspaceType)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase ReportConstants.powerBiWorkspaceTypes.custom:\r\n\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t.addOrUpdateStepData(\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tcustomGroupId:\r\n\t\t\t\t\t\t\t\t\t\tmatchingPowerBiGroups[0].id\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase ReportConstants.powerBiWorkspaceTypes.standard:\r\n\t\t\t\t\t\tstandardGroupId = matchingPowerBiGroups[0].id;\r\n\t\t\t\t\t\tconst mappedDatasets: string[] =\r\n\t\t\t\t\t\t\tawait this.getAvailableGroupDatasets(\r\n\t\t\t\t\t\t\t\tmatchingPowerBiGroups[0].id);\r\n\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t.addOrUpdateStepData(\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tstandardGroupId:\r\n\t\t\t\t\t\t\t\t\t\tmatchingPowerBiGroups[0].id,\r\n\t\t\t\t\t\t\t\t\tstandardDatasetIds:\r\n\t\t\t\t\t\t\t\t\t\tmappedDatasets\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const powerBiGroup of definedGroups)\r\n\t\t{\r\n\t\t\tconst matchingValues: TApiDataType[] =\r\n\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t.groupLevelData(\r\n\t\t\t\t\t\tpowerBiGroup.id,\r\n\t\t\t\t\t\tthis.lookupType);\r\n\t\t\tconst groupedItems: IDropdownOption[] =\r\n\t\t\t\tmatchingValues\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(item: TApiDataType) =>\r\n\t\t\t\t\t\t\t(item).name.indexOf(\r\n\t\t\t\t\t\t\t\tAppConstants.characters.underscore) !== 0)\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(item: TApiDataType) =>\r\n\t\t\t\t\t\t\tthis.mapOption(\r\n\t\t\t\t\t\t\t\titem));\r\n\r\n\t\t\tif (groupedItems.length > 0)\r\n\t\t\t{\r\n\t\t\t\tgroupedOptions.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\tstandardGroupId === powerBiGroup.id\r\n\t\t\t\t\t\t\t\t? ReportConstants.powerBiWorkspaceTypes.standard\r\n\t\t\t\t\t\t\t\t: ReportConstants.powerBiWorkspaceTypes.custom,\r\n\t\t\t\t\t\tvalue: powerBiGroup.id,\r\n\t\t\t\t\t\titems: groupedItems\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.sortDropdownOptionsByLabel(\r\n\t\t\tgroupedOptions);\r\n\t\tthis.groupedSelectionOptions = groupedOptions;\r\n\r\n\t\tthis.groupedSelectionOptions.forEach(\r\n\t\t\t(groupedDropdownOption: IGroupedDropdownOption) =>\r\n\t\t\t{\r\n\t\t\t\tthis.sortDropdownOptionsByLabel(\r\n\t\t\t\t\tgroupedDropdownOption.items);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an existing power bi report loaded from the power bi api\r\n\t * service if a report context is created and creates a report\r\n\t * definition in step data.\r\n\t *\r\n\t * @param {IPowerBiReport} powerBiReport\r\n\t * The report to clone.\r\n\t * @param {boolean} createReportContext\r\n\t * If true this will create a report context value for an external\r\n\t * report display. This value defaults to true.\r\n\t * @param {string} groupId\r\n\t * If sent, this will use the group id sent directly instead of performing\r\n\t * a lookup on a currently displayed report dropdown.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tpublic async createReportDefinition(\r\n\t\tpowerBiReport: IPowerBiReport,\r\n\t\tcreateReportContext: boolean = true,\r\n\t\tgroupId: string = null): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst reportDefinition: IPowerBiReportDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdatasetId: powerBiReport.datasetId,\r\n\t\t\t\tdatasetGroupId: this.getReportDatasetGroupId(powerBiReport),\r\n\t\t\t\texternalReportType: ReportConstants.externalReportTypes.powerBi,\r\n\t\t\t\tgroupId: (AnyHelper.isNullOrWhitespace(groupId)\r\n\t\t\t\t\t? this.getReportGroupId(powerBiReport.id)\r\n\t\t\t\t\t: groupId),\r\n\t\t\t\tpageName: ReportConstants.powerBiDefaults.pageName,\r\n\t\t\t\treportId: powerBiReport.id,\r\n\t\t\t\treportName: powerBiReport.name,\r\n\t\t\t\treportType: ReportConstants.powerBiObjectTypes.report,\r\n\t\t\t\tviewOnly: true,\r\n\t\t\t\tnewDatasetId: currentData.reportDefinition?.newDatasetId,\r\n\t\t\t\tnewReportName: currentData.reportDefinition?.newReportName,\r\n\t\t\t\tworkspaceType: ReportConstants.powerBiWorkspaceTypes.custom\r\n\t\t\t};\r\n\r\n\t\treportDefinition.embedConfiguration =\r\n\t\t\t\r\n\t\t\tawait this.powerBiApiService\r\n\t\t\t\t.populatePowerBiEmbedConfiguration(\r\n\t\t\t\t\treportDefinition);\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addOrUpdateStepData(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\treportDefinition:\r\n\t\t\t\t\t\treportDefinition\r\n\t\t\t\t});\r\n\r\n\t\tif (createReportContext === true)\r\n\t\t{\r\n\t\t\tthis.reportContext = null;\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.reportContext =\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsource: this.context.source,\r\n\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\tcreateReport: this.useExisting === false,\r\n\t\t\t\t\t\t\t\treportDefinition: reportDefinition\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the group id associated with the sent report id.\r\n\t *\r\n\t * @param {string} reportId\r\n\t * The id of the report to find a group for.\r\n\t * @returns {string}\r\n\t * The group id associated with the sent report id.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tprotected getReportGroupId(\r\n\t\treportId: string): string\r\n\t{\r\n\t\treturn this.groupedSelectionOptions.filter(\r\n\t\t\t(groupedOption: IGroupedDropdownOption) =>\r\n\t\t\t{\r\n\t\t\t\tconst matchingValues: IDropdownOption[] =\r\n\t\t\t\t\tgroupedOption.items.filter(\r\n\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\toption.value.id === reportId);\r\n\r\n\t\t\t\treturn matchingValues.length > 0;\r\n\t\t\t})[0].value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the group id associated with the sent reports dataset id.\r\n\t *\r\n\t * @param {IPowerBiReport} powerBiReport\r\n\t * The report to find a matching dataset group for.\r\n\t * @returns {string}\r\n\t * The matching dataset group for the sent reports dataset.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tprotected getReportDatasetGroupId(\r\n\t\tpowerBiReport: IPowerBiReport): string\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\t\tconst isStandardDataset: boolean =\r\n\t\t\t(currentData.standardDatasetIds)\r\n\t\t\t\t.filter((datasetId: string) =>\r\n\t\t\t\t\tdatasetId === powerBiReport.datasetId).length > 0;\r\n\r\n\t\treturn isStandardDataset\r\n\t\t\t? currentData.standardGroupId\r\n\t\t\t: currentData.customGroupId;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent group id this will gather all of the available datasets for\r\n\t * this group and return this value as a string array of available\r\n\t * dataset ids for this group.\r\n\t *\r\n\t * @async\r\n\t * @param {string} groupId\r\n\t * The group id to find and map available datasets for.\r\n\t * @returns {string}\r\n\t * The set of available dataset ids for the sent group in a string array.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tprotected async getAvailableGroupDatasets(\r\n\t\tgroupId: string): Promise\r\n\t{\r\n\t\tconst availableDatasets: IPowerBiDataset[] =\r\n\t\t\tawait this.powerBiApiService\r\n\t\t\t\t.groupLevelData(\r\n\t\t\t\t\tgroupId,\r\n\t\t\t\t\tReportConstants\r\n\t\t\t\t\t\t.powerBiObjectTypes\r\n\t\t\t\t\t\t.dataset);\r\n\r\n\t\treturn availableDatasets.map(\r\n\t\t\t(item: IPowerBiDataset) =>\r\n\t\t\t\titem.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a dropdown option with the label as the item name and the\r\n\t * value as the item.\r\n\t *\r\n\t * @param {TApiDataType} item\r\n\t * The item to be mapped as an option.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tprivate mapOption(\r\n\t\titem: TApiDataType): IDropdownOption\r\n\t{\r\n\t\tconst label: string =\r\n\t\t\tthis.lookupType === ReportConstants.powerBiObjectTypes.report\r\n\t\t\t\t? (item).name\r\n\t\t\t\t: (item).name;\r\n\r\n\t\treturn {\r\n\t\t\tlabel: label,\r\n\t\t\tvalue: item\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an in-place sort on the sent dropdown option array based\r\n\t * on the label property value.\r\n\t *\r\n\t * @param {IDropdownOption[]} dropdownOptions\r\n\t * The item to be mapped as an option.\r\n\t * @memberof PowerBiWizardStepDirective\r\n\t */\r\n\tprivate sortDropdownOptionsByLabel(\r\n\t\tdropdownOptions: IDropdownOption[])\r\n\t{\r\n\t\tdropdownOptions.sort((\r\n\t\t\tfirstItem: IGroupedDropdownOption,\r\n\t\t\tsecondItem: IGroupedDropdownOption) =>\r\n\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\tfirstItem,\r\n\t\t\t\tsecondItem,\r\n\t\t\t\tAppConstants.commonProperties.label));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const claimsServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'ClaimsService');\r\n\r\n/**\r\n * A lookup to be shared accross the application used\r\n * for classes available in the shared module.\r\n *\r\n * @export\r\n * @class ClaimsTokenLookup\r\n */\r\nexport class ClaimsTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof ClaimsTokenLookup\r\n\t */\r\n\tpublic static tokens =\r\n\t\t{\r\n\t\t\t'ClaimsService':\r\n\t\t\tclaimsServiceToken\r\n\t\t};\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tSharedTypeConstants\r\n} from '@shared/constants/shared-type-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'add-claim-payment',\r\n\ttemplateUrl: './add-claim-payment.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for add claim payment.\r\n *\r\n * @export\r\n * @class AddClaimPaymentComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AddClaimPaymentComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the add claim payment component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service used in this component.\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic claimsService: ClaimsService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic claimPaymentEntityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the list of adjusting companies.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate adjustingCompanies: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of vendor companies.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate vendorCompanies: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Sets the adjuster readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate readonly adjusterType: string = 'Adjuster';\r\n\r\n\t/**\r\n\t * Sets the vendor readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate readonly vendorType: string = 'Vendor';\r\n\r\n\t/**\r\n\t * Sets the claim payment pending status readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate readonly pendingStatus: string = 'Pending';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimId = this.currentData.data.id;\r\n\r\n\t\tthis.claimPaymentEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t'Group eq '\r\n\t\t\t\t\t\t+ `'${ClaimConstants.claimEntityTypeGroups\r\n\t\t\t\t\t\t\t.claimPayments}'`\r\n\t\t\t\t\t\t+ ' AND Name eq '\r\n\t\t\t\t\t\t+ `'${ClaimConstants.claimEntityTypes.claimPayment}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claim =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.serviceProviderEntityTypeGroups.adjustingCompany;\r\n\r\n\t\tthis.adjustingCompanies =\r\n\t\t\tawait this.claimsService.getClaimAdjusterOrganizations(\r\n\t\t\t\tthis.claimId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.serviceProviderEntityTypeGroups.vendorCompany;\r\n\r\n\t\tthis.vendorCompanies =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.context.source.addToNext(this.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim payment create event and\r\n\t * navigate to the new entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tconst claimPaymentData: IEntityInstance =\r\n\t\t\tthis.createClaimPaymentData(this.currentData.data);\r\n\r\n\t\tthis.claimPaymentId =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.createEntity(\r\n\t\t\t\t\t\tthis.claimPaymentEntityType,\r\n\t\t\t\t\t\tclaimPaymentData,\r\n\t\t\t\t\t\tClaimConstants.claimEntityTypeGroups.claims,\r\n\t\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\t\t{}),\r\n\t\t\t\t\t'Creating Claim Payment',\r\n\t\t\t\t\t'Claim Payment Created',\r\n\t\t\t\t\t'Claim Payment has been created.',\r\n\t\t\t\t\t'Claim Payment has not been created.'));\r\n\r\n\t\tawait this.navigateToClaimPayment(\r\n\t\t\tthis.claimPaymentId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the payee type.\r\n\t *\r\n\t * @return {boolean}\r\n\t * The payee type validity\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tpublic async validPayeeType(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tconst payees: any[] =\r\n\t\t\t!AnyHelper.isNullOrEmpty(field.formControl.value)\r\n\t\t\t\t? this.claim.data.involvedParties.find(\r\n\t\t\t\t\t(party: any) =>\r\n\t\t\t\t\t\tparty.type ===\r\n\t\t\t\t\t\t\tfield.formControl.value)\r\n\t\t\t\t: [];\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(payees))\r\n\t\t{\r\n\t\t\tfield.asyncValidators.payeeTypeValidator.message =\r\n\t\t\t\t'No payees exist for this payee type.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(!AnyHelper.isNullOrEmpty(payees));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the claim payment entity intance data based on the collected\r\n\t * data. This data will be saved on the creation process.\r\n\t *\r\n\t * @param {any} currentData\r\n\t * The claim payment wizard data.\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate createClaimPaymentData(\r\n\t\tcurrentData: any): IEntityInstance\r\n\t{\r\n\t\tconst payeeData: any =\r\n\t\t\tthis.claim.data.involvedParties.find(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.resourceIdentifier ===\r\n\t\t\t\t\t\tcurrentData.payee.name);\r\n\r\n\t\tlet payeeName: string;\r\n\r\n\t\tif (payeeData.type === this.vendorType)\r\n\t\t{\r\n\t\t\tconst vendorInformation =\r\n\t\t\t\tthis.vendorCompanies.find(\r\n\t\t\t\t\tvendor =>\r\n\t\t\t\t\t\tvendor.id ===\r\n\t\t\t\t\t\t\t+payeeData.vendorOrganizationId);\r\n\r\n\t\t\tpayeeName = vendorInformation.data?.name?.legalName;\r\n\t\t}\r\n\t\telse if (payeeData.type === this.adjusterType)\r\n\t\t{\r\n\t\t\tconst adjusterInformation =\r\n\t\t\t\tthis.adjustingCompanies.find(\r\n\t\t\t\t\tadjuster =>\r\n\t\t\t\t\t\tadjuster.id ===\r\n\t\t\t\t\t\t\t+payeeData.adjustingOrganizationId);\r\n\r\n\t\t\tpayeeName = adjusterInformation.data?.name?.legalName;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tpayeeName =\r\n\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\tpayeeData?.name?.firstName,\r\n\t\t\t\t\tpayeeData?.name?.lastName);\r\n\t\t}\r\n\r\n\t\tconst claimPaymentData: IEntityInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: ClaimConstants.claimEntityTypes.claimPayment,\r\n\t\t\t\tversionNumber: null,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tstatus: this.pendingStatus,\r\n\t\t\t\t\tclaimNumber: this.claim.data.claimNumber,\r\n\t\t\t\t\tpayee: {\r\n\t\t\t\t\t\tid: payeeData.resourceIdentifier,\r\n\t\t\t\t\t\tname: payeeName,\r\n\t\t\t\t\t\ttype: currentData.payee.type,\r\n\t\t\t\t\t\taddress: {\r\n\t\t\t\t\t\t\ttype: SharedTypeConstants.addressType.mailing,\r\n\t\t\t\t\t\t\tsubType: null,\r\n\t\t\t\t\t\t\taddress: currentData.payee.address.address,\r\n\t\t\t\t\t\t\tcity: currentData.payee.address.city,\r\n\t\t\t\t\t\t\tstate: currentData.payee.address.state,\r\n\t\t\t\t\t\t\tprincipalSubdivision: currentData.payee.address\r\n\t\t\t\t\t\t\t\t.principalSubdivision,\r\n\t\t\t\t\t\t\tpostalCode: currentData.payee.address.postalCode,\r\n\t\t\t\t\t\t\tcounty: null,\r\n\t\t\t\t\t\t\tcountry: currentData.payee.address.country\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn claimPaymentData;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity creation event.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @async\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate async createEntity(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance,\r\n\t\tentityParentTypeGroup: string,\r\n\t\tentityParentId: number,\r\n\t\tparameters: object): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst newEntityId: Promise =\r\n\t\t\tthis.createEntityInstance(\r\n\t\t\t\tentityCreationType,\r\n\t\t\t\tentityInstanceData,\r\n\t\t\t\tentityParentTypeGroup,\r\n\t\t\t\tentityParentId,\r\n\t\t\t\tparameters);\r\n\r\n\t\treturn newEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance and all entity relationships.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate async createEntityInstance(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance,\r\n\t\tentityParentTypeGroup: string,\r\n\t\tentityParentId: number,\r\n\t\tparameters: object): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tentityCreationType.group;\r\n\r\n\t\tconst createdEntityId: number =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\tentityInstanceData,\r\n\t\t\t\t\tentityParentTypeGroup,\r\n\t\t\t\t\tentityParentId,\r\n\t\t\t\t\tparameters);\r\n\r\n\t\treturn createdEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate async navigateToClaimPayment(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof AddClaimPaymentComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst payeePromise: string =\r\n\t\t\t'return async function(field){let options=[];let payeeType=this.source.activeMenuItem.currentData.data.payeeType; '\r\n\t\t\t+ 'if(payeeType!=null){var entityInstanceApiService=this.source.resolver.resolveApiService(\\\"EntityInstanceApiService\\\"); '\r\n\t\t\t+ 'var claimsService=this.source.resolver.resolveClaims(\\\"ClaimsService\\\"); '\r\n\t\t\t+ 'entityInstanceApiService.entityInstanceTypeGroup=\\\"Claims\\\"; '\r\n\t\t\t+ 'let claim=await entityInstanceApiService.get(this.source.activeMenuItem.currentData.data.id); '\r\n\t\t\t+ 'let applicableParties=claim.data.involvedParties.filter(party=>party.type===payeeType); '\r\n\t\t\t+ 'if(payeeType==\\\"Adjuster\\\"){ '\r\n\t\t\t+ 'var adjusters=await claimsService.getClaimAdjusterOrganizations(claim.id); '\r\n\t\t\t+ 'applicableParties.forEach(party=>{const adjusterMatch=adjusters.filter(adjuster=>adjuster.id==party.adjustingOrganizationId); '\r\n\t\t\t+ 'options.push({label:adjusterMatch[0].data?.name?.legalName,value:party?.resourceIdentifier});});} '\r\n\t\t\t+ 'else if(payeeType==\\\"Vendor\\\"){entityInstanceApiService.entityInstanceTypeGroup=\\\"Organization.ClaimsVendors\\\"; '\r\n\t\t\t+ 'var vendors=await this.source.resolver.resolveStatic(\\\"ApiHelper\\\",\\\"getFullDataSet\\\",[entityInstanceApiService,\\\"\\\",\\\"\\\"]); '\r\n\t\t\t+ 'applicableParties.forEach(party=>{const vendorMatch=vendors.filter(vendor=>vendor.id==party.vendorOrganizationId); '\r\n\t\t\t+ 'options.push({label:vendorMatch[0].data?.name?.legalName,value:party?.resourceIdentifier});});} '\r\n\t\t\t+ 'else{applicableParties.forEach(party=>{options.push({label:party?.name?.firstName+\\\" \\\"+party?.name?.lastName,value:party?.resourceIdentifier});});} '\r\n\t\t\t+ 'if(options.length==0){field.props.disabled=true;field.props.placeholder=\\\"No Available Options\\\"; '\r\n\t\t\t+ 'field.formControl.setValue(null);field.formControl.updateValueAndValidity();}else{field.props.disabled=false; '\r\n\t\t\t+ 'field.props.placeholder=\\\"Select An Option\\\";}return options;}else{field.props.disabled=true;field.props.placeholder=\\\"No Available Options\\\"; '\r\n\t\t\t+ 'return options;}}';\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.type',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Payee Type',\r\n\t\t\t\t\t\tdescription: 'The payee type.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'Insured',\r\n\t\t\t\t\t\t\t\tlabel: 'Insured'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'Claimant',\r\n\t\t\t\t\t\t\t\tlabel: 'Claimant'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'Adjuster',\r\n\t\t\t\t\t\t\t\tlabel: 'Adjuster'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'Vendor',\r\n\t\t\t\t\t\t\t\tlabel: 'Vendor'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'PolicyInterest',\r\n\t\t\t\t\t\t\t\tlabel: 'Policy Interest'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\t_event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue('USA');\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.props.change(this.dynamicFormlyLayout[3]);\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tfield.formControl.value))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t\t\t\t\t.currentData.data.payeeType =\r\n\t\t\t\t\t\t\t\t\t\t\tfield.formControl.value;\r\n\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.props.initializeDataOptions();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t\t\t\t\t.currentData.data.payeeType =\r\n\t\t\t\t\t\t\t\t\t\t\tnull;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tpayeeTypeValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validPayeeType(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Payee Name',\r\n\t\t\t\t\t\tdescription: 'The payee name.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tdataPromise: payeePromise,\r\n\t\t\t\t\t\tlabelTemplate: '${item.label}',\r\n\t\t\t\t\t\tvalueTemplate: '${item.value}',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tchange: (field) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif(!AnyHelper.isNullOrEmpty(field.formControl.value))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst payeeInformation =\r\n\t\t\t\t\t\t\t\t\tthis.claim.data.involvedParties.find(\r\n\t\t\t\t\t\t\t\t\t\t(party: any) =>\r\n\t\t\t\t\t\t\t\t\t\t\tparty.resourceIdentifier ===\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.formControl.value);\r\n\r\n\t\t\t\t\t\t\t\tlet address: string;\r\n\t\t\t\t\t\t\t\tlet city: string;\r\n\t\t\t\t\t\t\t\tlet state: string;\r\n\t\t\t\t\t\t\t\tlet principalSubdivision: string;\r\n\t\t\t\t\t\t\t\tlet postalCode: string;\r\n\t\t\t\t\t\t\t\tlet country: string;\r\n\r\n\t\t\t\t\t\t\t\tif (payeeInformation?.type === this.vendorType)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst vendorInformation =\r\n\t\t\t\t\t\t\t\t\t\tthis.vendorCompanies.find(\r\n\t\t\t\t\t\t\t\t\t\t\tvendor =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tvendor.id ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.vendorOrganizationId);\r\n\r\n\t\t\t\t\t\t\t\t\taddress =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.address;\r\n\t\t\t\t\t\t\t\t\tcity =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.city;\r\n\t\t\t\t\t\t\t\t\tstate =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.state;\r\n\t\t\t\t\t\t\t\t\tprincipalSubdivision =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.principalSubdivision;\r\n\t\t\t\t\t\t\t\t\tpostalCode =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.postalCode;\r\n\t\t\t\t\t\t\t\t\tcountry =\r\n\t\t\t\t\t\t\t\t\t\tvendorInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.country;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse if (payeeInformation?.type\r\n\t\t\t\t\t\t\t\t\t=== this.adjusterType)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst adjusterInformation =\r\n\t\t\t\t\t\t\t\t\t\tthis.adjustingCompanies.find(\r\n\t\t\t\t\t\t\t\t\t\t\tadjuster =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tadjuster.id ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.adjustingOrganizationId);\r\n\r\n\t\t\t\t\t\t\t\t\taddress =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.address;\r\n\t\t\t\t\t\t\t\t\tcity =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.city;\r\n\t\t\t\t\t\t\t\t\tstate =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.state;\r\n\t\t\t\t\t\t\t\t\tprincipalSubdivision =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.principalSubdivision;\r\n\t\t\t\t\t\t\t\t\tpostalCode =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.postalCode;\r\n\t\t\t\t\t\t\t\t\tcountry =\r\n\t\t\t\t\t\t\t\t\t\tadjusterInformation.data?.addresses[0]\r\n\t\t\t\t\t\t\t\t\t\t\t?.country;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\taddress = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.address;\r\n\t\t\t\t\t\t\t\t\tcity = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.city;\r\n\t\t\t\t\t\t\t\t\tstate = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.state;\r\n\t\t\t\t\t\t\t\t\tprincipalSubdivision = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.principalSubdivision;\r\n\t\t\t\t\t\t\t\t\tpostalCode = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.postalCode;\r\n\t\t\t\t\t\t\t\t\tcountry = payeeInformation\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.country;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(country);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.props.change(this.dynamicFormlyLayout[3]);\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(address);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(city);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(state);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(principalSubdivision);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(postalCode);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue('USA');\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3]\r\n\t\t\t\t\t\t\t\t\t.props.change(this.dynamicFormlyLayout[3]);\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[5]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[6]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[7]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[8]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[9]\r\n\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\t\"type\": FormlyConstants.customControls.customSectionTitle,\r\n\t\t\t\t\t\"props\": {\r\n\t\t\t\t\t\t\"label\": \"Mailing Address\"\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.country',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Country',\r\n\t\t\t\t\t\tdescription: 'The payee country.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: 'USA',\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ABW\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Aruba\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AFG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Afghanistan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AGO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Angola\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AIA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Anguilla\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ALA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Åland Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ALB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Albania\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AND\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Andorra\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ARE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"United Arab Emirates\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ARG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Argentina\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ARM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Armenia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ASM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"American Samoa\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ATA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Antarctica\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ATF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"French Southern Territories\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ATG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Antigua and Barbuda\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AUS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Australia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AUT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Austria\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"AZE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Azerbaijan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BDI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Burundi\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BEL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Belgium\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BEN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Benin\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BES\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bonaire Sint Eustatius and Saba\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BFA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Burkina Faso\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BGD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bangladesh\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BGR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bulgaria\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BHR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bahrain\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BHS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bahamas\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BIH\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bosnia and Herzegovina\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BLM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Barthélemy\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BLR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Belarus\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BLZ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Belize\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BMU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bermuda\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BOL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bolivia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BRA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Brazil\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BRB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Barbados\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BRN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Brunei Darussalam\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BTN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bhutan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BVT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Bouvet Island\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"BWA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Botswana\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CAF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Central African Republic\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CAN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Canada\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CCK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cocos (Keeling) Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CHE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Switzerland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CHL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Chile\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CHN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"China\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CIV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Côte d'Ivoire\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CMR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cameroon\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"COD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Congo Democratic Republic\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"COG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Congo\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"COK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cook Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"COL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Colombia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"COM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Comoros\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CPV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cabo Verde\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CRI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Costa Rica\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CUB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cuba\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CUW\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Curaçao\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CXR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Christmas Island\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CYM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cayman Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CYP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cyprus\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"CZE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Czechia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DEU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Germany\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DJI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Djibouti\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DMA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Dominica\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DNK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Denmark\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DOM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Dominican Republic\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"DZA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Algeria\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ECU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Ecuador\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"EGY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Egypt\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ERI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Eritrea\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ESH\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Western Sahara\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ESP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Spain\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"EST\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Estonia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ETH\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Ethiopia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FIN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Finland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FJI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Fiji\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FLK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Falkland Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FRA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"France\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FRO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Faroe Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"FSM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Micronesia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GAB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Gabon\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GBR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"United Kingdom\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GEO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Georgia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GGY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guernsey\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GHA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Ghana\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GIB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Gibraltar\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GIN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guinea\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GLP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guadeloupe\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GMB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Gambia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GNB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guinea-Bissau\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GNQ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Equatorial Guinea\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GRC\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Greece\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GRD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Grenada\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GRL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Greenland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GTM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guatemala\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GUF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"French Guiana\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GUM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guam\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"GUY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Guyana\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HKG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Hong Kong\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HMD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Heard Island and McDonald Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HND\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Honduras\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HRV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Croatia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HTI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Haiti\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"HUN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Hungary\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IDN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Indonesia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IMN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Isle of Man\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IND\",\r\n\t\t\t\t\t\t\t\t\"label\": \"India\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IOT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"British Indian Ocean Territory\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IRL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Ireland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IRN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Iran\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"IRQ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Iraq\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ISL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Iceland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ISR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Israel\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ITA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Italy\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"JAM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Jamaica\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"JEY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Jersey\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"JOR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Jordan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"JPN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Japan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KAZ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Kazakhstan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KEN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Kenya\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KGZ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Kyrgyzstan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KHM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Cambodia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KIR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Kiribati\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KNA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Kitts and Nevis\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KOR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Korea Republic of\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"KWT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Kuwait\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LAO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Lao\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LBN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Lebanon\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LBR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Liberia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LBY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Libya\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LCA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Lucia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LIE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Liechtenstein\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LKA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sri Lanka\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LSO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Lesotho\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LTU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Lithuania\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LUX\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Luxembourg\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"LVA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Latvia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MAC\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Macao\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MAF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Martin\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MAR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Morocco\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MCO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Monaco\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MDA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Moldova\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MDG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Madagascar\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MDV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Maldives\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MEX\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mexico\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MHL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Marshall Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MKD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"North Macedonia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MLI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mali\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MLT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Malta\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MMR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Myanmar\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MNE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Montenegro\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MNG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mongolia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MNP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Northern Mariana Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MOZ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mozambique\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MRT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mauritania\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MSR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Montserrat\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MTQ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Martinique\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MUS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mauritius\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MWI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Malawi\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MYS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Malaysia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"MYT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Mayotte\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NAM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Namibia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NCL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"New Caledonia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NER\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Niger\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NFK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Norfolk Island\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NGA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Nigeria\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NIC\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Nicaragua\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NIU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Niue\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NLD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Netherlands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NOR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Norway\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NPL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Nepal\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NRU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Nauru\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"NZL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"New Zealand\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"OMN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Oman\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PAK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Pakistan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PAN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Panama\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PCN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Pitcairn\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PER\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Peru\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PHL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Philippines\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PLW\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Palau\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PNG\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Papua New Guinea\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"POL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Poland\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PRI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Puerto Rico\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PRK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Korea Democratic People's Republic\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PRT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Portugal\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PRY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Paraguay\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PSE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Palestine\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"PYF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"French Polynesia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"QAT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Qatar\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"REU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Réunion\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ROU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Romania\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"RUS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Russian Federation\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"RWA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Rwanda\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SAU\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saudi Arabia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SDN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sudan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SEN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Senegal\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SGP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Singapore\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SGS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"South Georgia and South Sandwich Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SHN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Helena Ascension and Tristan da Cunha\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SJM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Svalbard and Jan Mayen\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SLB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Solomon Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SLE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sierra Leone\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SLV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"El Salvador\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SMR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"San Marino\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SOM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Somalia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SPM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Pierre and Miquelon\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SRB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Serbia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SSD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"South Sudan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"STP\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sao Tome and Principe\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SUR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Suriname\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SVK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Slovakia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SVN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Slovenia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SWE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sweden\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SWZ\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Eswatini\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SXM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Sint Maarten\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SYC\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Seychelles\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"SYR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Syrian Arab Republic\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TCA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Turks and Caicos Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TCD\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Chad\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TGO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Togo\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"THA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Thailand\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TJK\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tajikistan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TKL\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tokelau\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TKM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Turkmenistan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TLS\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Timor-Leste\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TON\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tonga\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TTO\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Trinidad and Tobago\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TUN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tunisia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TUR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Türkiye\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TUV\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tuvalu\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TWN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Taiwan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"TZA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Tanzania\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"UGA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Uganda\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"UKR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Ukraine\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"UMI\",\r\n\t\t\t\t\t\t\t\t\"label\": \"United States Minor Outlying Islands\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"URY\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Uruguay\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"USA\",\r\n\t\t\t\t\t\t\t\t\"label\": \"United States of America\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"UZB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Uzbekistan\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VAT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Holy See\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VCT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Saint Vincent and the Grenadines\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VEN\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Venezuela\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VGB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Virgin Islands British\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VIR\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Virgin Islands U.S.\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VNM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Viet Nam\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"VUT\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Vanuatu\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"WLF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Wallis and Futuna\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"WSM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Samoa\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"YEM\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Yemen\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ZAF\",\r\n\t\t\t\t\t\t\t\t\"label\": \"South Africa\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ZMB\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Zambia\"\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"value\": \"ZWE\",\r\n\t\t\t\t\t\t\t\t\"label\": \"Zimbabwe\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tchange: (field) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst city =\r\n\t\t\t\t\t\t\t\tfield.parent.fieldGroup[6];\r\n\t\t\t\t\t\t\tconst state =\r\n\t\t\t\t\t\t\t\tfield.parent.fieldGroup[7];\r\n\t\t\t\t\t\t\tconst principalSubdivision =\r\n\t\t\t\t\t\t\t\tfield.parent.fieldGroup[8];\r\n\t\t\t\t\t\t\tif (field.formControl.value !== \"USA\")\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstate.props.required = false;\r\n\t\t\t\t\t\t\t\tstate.hide = true;\r\n\t\t\t\t\t\t\t\tstate.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\tstate.formControl\r\n\t\t\t\t\t\t\t\t\t.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.hide = false;\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.props.required = true;\r\n\t\t\t\t\t\t\t\tcity.props.required = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.props.required = false;\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.hide = true;\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.formControl\r\n\t\t\t\t\t\t\t\t\t.setValue(null);\r\n\t\t\t\t\t\t\t\tprincipalSubdivision.formControl\r\n\t\t\t\t\t\t\t\t\t.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tstate.hide = false;\r\n\t\t\t\t\t\t\t\tstate.props.required = true;\r\n\t\t\t\t\t\t\t\tcity.props.required = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\t\"wrappers\": [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customEmptyWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\t\"templateOptions\": {}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.address',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Address',\r\n\t\t\t\t\t\tdescription: 'The payee mailing address.',\r\n\t\t\t\t\t\tplaceholder: '',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.city',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'City',\r\n\t\t\t\t\t\tdescription: 'The payee mailing city.',\r\n\t\t\t\t\t\tplaceholder: '',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.state',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'State',\r\n\t\t\t\t\t\tdescription: 'The payee mailing state.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: null,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'AL',\r\n\t\t\t\t\t\t\t\tlabel: 'AL'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'AK',\r\n\t\t\t\t\t\t\t\tlabel: 'AK'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'AZ',\r\n\t\t\t\t\t\t\t\tlabel: 'AZ'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'AR',\r\n\t\t\t\t\t\t\t\tlabel: 'AR'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'CA',\r\n\t\t\t\t\t\t\t\tlabel: 'CA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'CO',\r\n\t\t\t\t\t\t\t\tlabel: 'CO'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'CT',\r\n\t\t\t\t\t\t\t\tlabel: 'CT'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'DE',\r\n\t\t\t\t\t\t\t\tlabel: 'DE'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'DC',\r\n\t\t\t\t\t\t\t\tlabel: 'DC'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'FL',\r\n\t\t\t\t\t\t\t\tlabel: 'FL'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'GA',\r\n\t\t\t\t\t\t\t\tlabel: 'GA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'HI',\r\n\t\t\t\t\t\t\t\tlabel: 'HI'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'ID',\r\n\t\t\t\t\t\t\t\tlabel: 'ID'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'IL',\r\n\t\t\t\t\t\t\t\tlabel: 'IL'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'IN',\r\n\t\t\t\t\t\t\t\tlabel: 'IN'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'IA',\r\n\t\t\t\t\t\t\t\tlabel: 'IA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'KS',\r\n\t\t\t\t\t\t\t\tlabel: 'KS'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'KY',\r\n\t\t\t\t\t\t\t\tlabel: 'KY'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'LA',\r\n\t\t\t\t\t\t\t\tlabel: 'LA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'ME',\r\n\t\t\t\t\t\t\t\tlabel: 'ME'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MD',\r\n\t\t\t\t\t\t\t\tlabel: 'MD'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MA',\r\n\t\t\t\t\t\t\t\tlabel: 'MA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MI',\r\n\t\t\t\t\t\t\t\tlabel: 'MI'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MN',\r\n\t\t\t\t\t\t\t\tlabel: 'MN'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MS',\r\n\t\t\t\t\t\t\t\tlabel: 'MS'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MO',\r\n\t\t\t\t\t\t\t\tlabel: 'MO'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MT',\r\n\t\t\t\t\t\t\t\tlabel: 'MT'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NE',\r\n\t\t\t\t\t\t\t\tlabel: 'NE'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NV',\r\n\t\t\t\t\t\t\t\tlabel: 'NV'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NH',\r\n\t\t\t\t\t\t\t\tlabel: 'NH'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NJ',\r\n\t\t\t\t\t\t\t\tlabel: 'NJ'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NM',\r\n\t\t\t\t\t\t\t\tlabel: 'NM'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NY',\r\n\t\t\t\t\t\t\t\tlabel: 'NY'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'NC',\r\n\t\t\t\t\t\t\t\tlabel: 'NC'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'ND',\r\n\t\t\t\t\t\t\t\tlabel: 'ND'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'OH',\r\n\t\t\t\t\t\t\t\tlabel: 'OH'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'OK',\r\n\t\t\t\t\t\t\t\tlabel: 'OK'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'OR',\r\n\t\t\t\t\t\t\t\tlabel: 'OR'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'PA',\r\n\t\t\t\t\t\t\t\tlabel: 'PA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'RI',\r\n\t\t\t\t\t\t\t\tlabel: 'RI'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'SC',\r\n\t\t\t\t\t\t\t\tlabel: 'SC'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'SD',\r\n\t\t\t\t\t\t\t\tlabel: 'SD'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'TN',\r\n\t\t\t\t\t\t\t\tlabel: 'TN'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'TX',\r\n\t\t\t\t\t\t\t\tlabel: 'TX'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'UT',\r\n\t\t\t\t\t\t\t\tlabel: 'UT'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'VT',\r\n\t\t\t\t\t\t\t\tlabel: 'VT'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'VA',\r\n\t\t\t\t\t\t\t\tlabel: 'VA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'WA',\r\n\t\t\t\t\t\t\t\tlabel: 'WA'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'WV',\r\n\t\t\t\t\t\t\t\tlabel: 'WV'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'WI',\r\n\t\t\t\t\t\t\t\tlabel: 'WI'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'WY',\r\n\t\t\t\t\t\t\t\tlabel: 'WY'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'AS',\r\n\t\t\t\t\t\t\t\tlabel: 'AS'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'GU',\r\n\t\t\t\t\t\t\t\tlabel: 'GU'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'MP',\r\n\t\t\t\t\t\t\t\tlabel: 'MP'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'PR',\r\n\t\t\t\t\t\t\t\tlabel: 'PR'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'UM',\r\n\t\t\t\t\t\t\t\tlabel: 'UM'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'VI',\r\n\t\t\t\t\t\t\t\tlabel: 'VI'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.principalSubdivision',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Principal Subdivision',\r\n\t\t\t\t\t\tdescription: 'The payee mailing principal subdivision.',\r\n\t\t\t\t\t\tplaceholder: ''\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.payee.address.postalCode',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Zip',\r\n\t\t\t\t\t\tdescription: 'The payee mailing zip.',\r\n\t\t\t\t\t\tplaceholder: '',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'add-exposure-claim',\r\n\ttemplateUrl: './add-exposure-claim.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for add exposure.\r\n *\r\n * @export\r\n * @class AddExposureClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AddExposureClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the add exposure component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation..\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the exposure details markdown.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate exposureDetails: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claim policy instance data.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate claimPolicy: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the adjuster instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate adjuster: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claimant object data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate claimant: any;\r\n\r\n\t/**\r\n\t * Gets or sets the asset object data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate asset: any;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimId = this.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claim =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimId);\r\n\r\n\t\tthis.exposureDetails = this.getExposureDetails();\r\n\r\n\t\tthis.context.source.addToNext(this.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim create event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst parameterString =\r\n\t\t\tthis.getActionParameters(\r\n\t\t\t\tthis.currentData);\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.workflowActions.addExposure,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tparameterString),\r\n\t\t\t\t'Adding Exposure',\r\n\t\t\t\t'Exposure Added',\r\n\t\t\t\t'Exposure information has been added.',\r\n\t\t\t\t'Exposure information has not been added.'));\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst url: string = this.entityInstanceApiService.getBaseUrl()\r\n\t\t\t+ `/${this.claimId}`;\r\n\r\n\t\tawait this.entityInstanceApiService.resetAssociatedCache(url);\r\n\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\t}\r\n\r\n\t/**\r\n\t * This get the exposure summary information to display.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tpublic async getExposureDetails(): Promise\r\n\t{\r\n\t\tlet details: string;\r\n\r\n\t\tawait this.getAdjusterData();\r\n\t\tawait this.getClaimantData();\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.currentData.data.exposure.assetId))\r\n\t\t{\r\n\t\t\tawait this.getAssetData();\r\n\r\n\t\t\tdetails =\r\n\t\t\t\t'Exposure Details
'\r\n\t\t\t\t\t+ `Claimant: ${this.claimant.name.firstName}`\r\n\t\t\t\t\t\t+ ` ${this.claimant.name.lastName}
`\r\n\t\t\t\t\t+ `Adjuster: ${this.adjuster.data.firstName}`\r\n\t\t\t\t\t\t+ ` ${this.adjuster.data.lastName}
`\r\n\t\t\t\t\t+ 'Asset: '\r\n\t\t\t\t\t\t+ `${this.asset.addresses[0].address}`\r\n\t\t\t\t\t\t+ ` ${this.asset.addresses[0].city}`\r\n\t\t\t\t\t\t+ `, ${this.asset.addresses[0].state}`\r\n\t\t\t\t\t\t+ ` ${this.asset.addresses[0].postalCode}
`\r\n\t\t\t\t\t+ 'Coverage: '\r\n\t\t\t\t\t\t+`${this.currentData.data.exposure.coverage.name}`;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdetails =\r\n\t\t\t\t'Exposure Details
'\r\n\t\t\t\t\t+ `Claimant: ${this.claimant.name.firstName}`\r\n\t\t\t\t\t\t+ ` ${this.claimant.name.lastName}
`\r\n\t\t\t\t\t+ `Adjuster: ${this.adjuster.data.firstName}`\r\n\t\t\t\t\t\t+ ` ${this.adjuster.data.lastName}
`\r\n\t\t\t\t\t+ 'Coverage: '\r\n\t\t\t\t\t\t+ `${this.currentData.data.exposure.coverage.name}`;\r\n\t\t}\r\n\r\n\t\treturn details;\r\n\t}\r\n\r\n\t/**\r\n\t * This get the asset data to display in the\r\n\t * exposure summary detail section.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate async getAssetData()\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claimPolicy =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.claimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claimPolicies);\r\n\r\n\t\tthis.asset =\r\n\t\t\tthis.claimPolicy[0].data.assets.find(\r\n\t\t\t\t(asset: any) =>\r\n\t\t\t\t\tasset.resourceIdentifier ===\r\n\t\t\t\t\t\tthis.currentData.data.exposure.assetId);\r\n\t}\r\n\r\n\t/**\r\n\t * This will set the parameters needed for the add exposure\r\n\t * workflow action.\r\n\t *\r\n\t * @param {any} currentData\r\n\t * The current wizard data.\r\n\t * @returns {string}\r\n\t * The request parameters.\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate getActionParameters(\r\n\t\tcurrentData: any): string\r\n\t{\r\n\t\tconst exposure: any = currentData.data.exposure;\r\n\r\n\t\tconst parameterString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tlevel: exposure.level,\r\n\t\t\t\t\tassetId: exposure?.assetId,\r\n\t\t\t\t\tcoverage: exposure.coverage.name,\r\n\t\t\t\t\tdescription: exposure?.description,\r\n\t\t\t\t\tclaimantIdentifier: exposure.claimantIdentifier,\r\n\t\t\t\t\tassignedPartiesIdentifiers: exposure\r\n\t\t\t\t\t\t.assignedParties.toString(),\r\n\t\t\t\t\tadjustingAndOther:\r\n\t\t\t\t\t\tcurrentData.data.adjustingAndOther,\r\n\t\t\t\t\tdefenseAndCostContainment:\r\n\t\t\t\t\t\tcurrentData.data.defenseAndCostContainment,\r\n\t\t\t\t\tloss: currentData.data.loss\r\n\t\t\t\t});\r\n\r\n\t\treturn parameterString;\r\n\t}\r\n\r\n\t/**\r\n\t * This get the adjuster data to display in the\r\n\t * exposure summary detail section.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate async getAdjusterData()\r\n\t{\r\n\t\tconst adjusterData =\r\n\t\t\tthis.claim.data.involvedParties.find(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.resourceIdentifier ===\r\n\t\t\t\t\t\tthis.currentData.data.exposure.assignedParties[0]);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.users;\r\n\r\n\t\tthis.adjuster =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tadjusterData.adjustingOrganizationUserId);\r\n\t}\r\n\r\n\t/**\r\n\t * This get the claimant data to display in the\r\n\t * exposure summary detail section.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate async getClaimantData()\r\n\t{\r\n\t\tthis.claimant =\r\n\t\t\tthis.claim.data.involvedParties.find(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.resourceIdentifier ===\r\n\t\t\t\t\t\tthis.currentData.data.exposure.claimantIdentifier);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof AddExposureClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDashboard,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdashboardDisplayComponentInstanceName:\r\n\t\t\t\t\t\t\t'ClaimAddExposureDashboard'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcenterText: true,\r\n\t\t\t\t\t\tuseMarkDown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcontent: await this.exposureDetails\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'adjust-reserves-claim',\r\n\ttemplateUrl: './adjust-reserves-claim.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for adjusting reserves.\r\n *\r\n * @export\r\n * @class AdjustReservesClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AdjustReservesClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the adjust reserves component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation..\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets the id descending query used for the order by\r\n\t * in common entity queries.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityService\r\n\t */\r\n\tprivate readonly idDescendingQuery: string = 'Id desc';\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger instance data.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate ledger: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the ledger transactions instance data.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate ledgerTransactionClaims: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the adjustment amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate adjustmentAmount: number;\r\n\r\n\t/**\r\n\t * Gets or sets the exposure resource identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate exposureResourceIdentifier: string;\r\n\r\n\t/**\r\n\t * Gets or sets the expense type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate expenseType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets the expense types that are applicable.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate readonly expenseTypes: any =\r\n\t\t{\r\n\t\t\t'AdjustingAndOther': 'AO',\r\n\t\t\t'DefenseAndCostContainment': 'DCC',\r\n\t\t\t'Loss': 'Loss'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimId = this.currentData.data.id;\r\n\r\n\t\tthis.exposureResourceIdentifier =\r\n\t\t\tthis.currentData.data.exposure.identifier;\r\n\r\n\t\tthis.expenseType =\r\n\t\t\tthis.currentData.data.adjustment.expenseType;\r\n\r\n\t\tthis.adjustmentAmount =\r\n\t\t\tthis.currentData.data.adjustment.amount;\r\n\r\n\t\tawait this.setDisplayData();\r\n\r\n\t\tthis.context.source.addToNext(this.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim create event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst parameterString =\r\n\t\t\t\t '&exposureResourceIdentifier='\r\n\t\t\t\t \t+ `${this.exposureResourceIdentifier}`\r\n\t\t\t\t\t+ '&expenseType='\r\n\t\t\t\t\t+ `${this.expenseType}`\r\n\t\t\t\t\t+ '&adjustmentAmount='\r\n\t\t\t\t\t+ `${this.adjustmentAmount}`;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.workflowActions.adjustReserves,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tparameterString),\r\n\t\t\t\t'Adjusting Reserves',\r\n\t\t\t\t'Reserves Adjusted',\r\n\t\t\t\t'Reserves have been adjusted.',\r\n\t\t\t\t'Reserves have not been adjusted.'));\r\n\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\t}\r\n\r\n\t/**\r\n\t * This sets the summary information to display.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tpublic async setDisplayData()\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.ledger =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.claimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgers);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgers;\r\n\r\n\t\tthis.ledgerTransactionClaims =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.ledger[0].id,\r\n\t\t\t\t'metadata.exposureId eq '\r\n\t\t\t\t\t+ `'${this.exposureResourceIdentifier}' `\r\n\t\t\t\t\t+ `AND type eq '${this.expenseType}'`,\r\n\t\t\t\tthis.idDescendingQuery,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tClaimConstants\r\n\t\t\t\t\t.ledgerEntityTypeGroups.ledgerTransactionClaims);\r\n\r\n\t\tthis.currentData.data.priorReserveAmount =\r\n\t\t\tthis.ledgerTransactionClaims\r\n\t\t\t\t.reduce((sum, item) => sum + item.data.amount, 0);\r\n\r\n\t\tthis.currentData.data.newReserveAmount =\r\n\t\t\tthis.currentData.data.priorReserveAmount + this.adjustmentAmount;\r\n\r\n\t\tthis.currentData.data.titleLabel =\r\n\t\t\t\tthis.expenseTypes[this.expenseType];\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustReservesClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDashboard,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdashboardDisplayComponentInstanceName:\r\n\t\t\t\t\t\t\t'ClaimAdjustReservesDashboard'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'approve-claim-payment-claim',\r\n\ttemplateUrl: './approve-claim-payment-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for approving\r\n * a claim payment.\r\n *\r\n * @export\r\n * @class ApproveClaimPaymentClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ApproveClaimPaymentClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the approve claim payment claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service used in this component.\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic claimsService: ClaimsService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the list of exposures that are displayed.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic exposures: object[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic claimPayment: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tprivate claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimPaymentId =\r\n\t\t\tthis.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tthis.claimPayment =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimPaymentId);\r\n\r\n\t\tawait this.setDisplayData();\r\n\r\n\t\tthis.context.source.addToNext(this.confirmApproval.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the approve claim payment event and navigate to\r\n\t * the claim payment.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async confirmApproval(): Promise\r\n\t{\r\n\t\tawait this.approveClaimPayment();\r\n\t\tawait this.navigateToClaimPayment(\r\n\t\t\tthis.claimPaymentId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the approve claim payment process by executing the\r\n\t * ApproveClaimPayment workflow action to update the claim payment status.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async approveClaimPayment(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimPaymentId,\r\n\t\t\t\t\tClaimConstants.workflowActions.approveClaimPayment,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull),\r\n\t\t\t\t'Approving Claim Payment',\r\n\t\t\t\t'Claim Payment Approved',\r\n\t\t\t\t'Claim Payment has been approved.',\r\n\t\t\t\t'Claim Payment has not been approved.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the list of exposures that will be displayed.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A Promise to handle the completion of\r\n\t * the asynchronous call.\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async loadExposures(): Promise\r\n\t{\r\n\t\tif (this.exposures != null)\r\n\t\t{\r\n\t\t\treturn this.exposures;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.claimPayment.data?.paymentItems))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tconst claim: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.claimPaymentId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\r\n\t\tconst ledger: IEntityInstance =\r\n\t\t\tawait this.claimsService.getLedger(claim[0].id);\r\n\r\n\t\tconst ledgerTransactionClaims: IEntityInstance[] =\r\n\t\t\tawait this.claimsService.getLedgerTransactions(\r\n\t\t\t\tledger.id);\r\n\r\n\t\tconst paymentItems: any = this.claimPayment.data.paymentItems;\r\n\r\n\t\tthis.exposures = [];\r\n\r\n\t\tfor await (const item of paymentItems)\r\n\t\t{\r\n\t\t\tconst paymentItemType: string = item.type;\r\n\r\n\t\t\tconst exposureData: any =\r\n\t\t\t\tawait claim[0].data.exposures.find(\r\n\t\t\t\t\t(exposure: any) =>\r\n\t\t\t\t\t\texposure.resourceIdentifier === item.exposureId);\r\n\r\n\t\t\tconst exposureIndex: number =\r\n\t\t\t\t\tawait claim[0].data.exposures.findIndex(\r\n\t\t\t\t\t\t(exposure: any) =>\r\n\t\t\t\t\t\t\texposure.resourceIdentifier === item.exposureId);\r\n\r\n\t\t\tconst outstandingReserves: number =\r\n\t\t\t\tledgerTransactionClaims.filter(\r\n\t\t\t\t\ttransaction =>\r\n\t\t\t\t\t\ttransaction.data.metadata.exposureId === item.exposureId\r\n\t\t\t\t\t\t\t&& transaction.data.type === paymentItemType)\r\n\t\t\t\t\t.reduce((sum: any, transaction: any) =>\r\n\t\t\t\t\t\t sum + transaction.data.amount, 0);\r\n\r\n\t\t\tthis.exposures.push(\r\n\t\t\t\t{\r\n\t\t\t\t\texposureIndex: exposureIndex,\r\n\t\t\t\t\texposure: exposureData.coverage,\r\n\t\t\t\t\ttype: this.claimsService.getFriendlyTransactionTypeName(\r\n\t\t\t\t\t\tpaymentItemType),\r\n\t\t\t\t\tapprovedAmount: item.amount,\r\n\t\t\t\t\tremainingReserves:\r\n\t\t\t\t\t\toutstandingReserves - item.amount\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this.exposures;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will set necessary display data.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tprivate async setDisplayData(): Promise\r\n\t{\r\n\t\tthis.currentData.data.payee =\r\n\t\t\tthis.claimPayment.data.payee;\r\n\r\n\t\tthis.currentData.data.additionalPayees =\r\n\t\t\tthis.claimPayment.data?.additionalPayees;\r\n\r\n\t\tthis.currentData.data.totalPayment =\r\n\t\t\tthis.claimPayment.data.paymentItems\r\n\t\t\t\t.reduce((sum: any, item: any) => sum + item.amount, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim payment layout using the\r\n\t * claim payment id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim payment entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimPayment(\r\n\t\tentityId: number,\r\n\t\tgroup: string): Promise\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApproveClaimPaymentClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTableDisplay,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tloadingTableDefinitions: false,\r\n\t\t\t\t\t\ttableDefinitions: {\r\n\t\t\t\t\t\t\ttableTitle: 'Exposures',\r\n\t\t\t\t\t\t\thideSettings: true,\r\n\t\t\t\t\t\t\tobjectSearch: {\r\n\t\t\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\t\t\torderBy: 'exposureIndex desc',\r\n\t\t\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\t\t\tlimit: 100,\r\n\t\t\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tavailableColumns: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataKey: 'exposure',\r\n\t\t\t\t\t\t\t\t\tcolumnHeader: 'Exposure',\r\n\t\t\t\t\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataKey: 'type',\r\n\t\t\t\t\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataKey: 'approvedAmount',\r\n\t\t\t\t\t\t\t\t\tcolumnHeader: 'Approved Amount',\r\n\t\t\t\t\t\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t\t\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataKey: 'remainingReserves',\r\n\t\t\t\t\t\t\t\t\tcolumnHeader: 'Remaining Reserves',\r\n\t\t\t\t\t\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t\t\t\t\t\t\tdisplayOrder: 4\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tapiPromise: this.loadExposures.bind(this)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDashboard,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdashboardDisplayComponentInstanceName:\r\n\t\t\t\t\t\t\t'ClaimApproveClaimPaymentDashboard'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'create-claim',\r\n\ttemplateUrl: './create-claim.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for creating a claim.\r\n *\r\n * @export\r\n * @class CreateClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CreateClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the create claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim entity type to be created.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic claimEntityCreationType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the note claim entity type to be created.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic noteClaimEntityCreationType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets the unassigned string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate readonly unassigned: string = 'Unassigned';\r\n\r\n\t/**\r\n\t * Gets or sets parameters for api request.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate parameters: object =\r\n\t\t{\r\n\t\t\tclaimOwnerId: this.unassigned\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimEntityCreationType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Group eq '${ClaimConstants.claimEntityTypeGroups.claims}'`\r\n\t\t\t\t\t\t+ ' AND Name eq '\r\n\t\t\t\t\t\t+ `'${ClaimConstants.claimEntityTypes.claim}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.noteClaimEntityCreationType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t'Group eq '\r\n\t\t\t\t\t\t+ `'${ClaimConstants.claimEntityTypeGroups.noteClaims}'`\r\n\t\t\t\t\t\t+ ' AND Name eq '\r\n\t\t\t\t\t\t+ `'${ClaimConstants.claimEntityTypes.noteClaim}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.context.source.addToNext(this.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim create event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tconst insuranceCompanyId = this.currentData.data.insuranceCompanyId;\r\n\r\n\t\tconst claimData: IEntityInstance =\r\n\t\t\tthis.createClaimData(this.currentData.data);\r\n\r\n\t\tconst noteClaimData: IEntityInstance =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.currentData.data.note?.content)\r\n\t\t\t\t? null\r\n\t\t\t\t: this.createNoteClaimData(this.currentData.data);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.currentData\r\n\t\t\t.data?.policy?.system)\r\n\t\t\t\t&& !AnyHelper.isNullOrEmpty(this.currentData\r\n\t\t\t\t\t.data?.policy?.identifier))\r\n\t\t{\r\n\t\t\tthis.parameters =\r\n\t\t\t\t{\r\n\t\t\t\t\tsystem: this.currentData.data.policy.system,\r\n\t\t\t\t\tidentifier: this.currentData.data.policy.identifier,\r\n\t\t\t\t\tdate: this.currentData.data.claim.keyDates.lossDate,\r\n\t\t\t\t\tclaimOwnerId: this.unassigned\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.claimId =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.createEntity(\r\n\t\t\t\t\t\tthis.claimEntityCreationType,\r\n\t\t\t\t\t\tclaimData,\r\n\t\t\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t\t\t.insuranceCompany,\r\n\t\t\t\t\t\tinsuranceCompanyId,\r\n\t\t\t\t\t\tthis.parameters),\r\n\t\t\t\t\t'Creating Claim',\r\n\t\t\t\t\t'Claim Created',\r\n\t\t\t\t\t'Claim has been created.',\r\n\t\t\t\t\t'Claim has not been created.'));\r\n\r\n\t\tif (!AnyHelper.isNull(noteClaimData)\r\n\t\t\t&& this.claimId)\r\n\t\t{\r\n\t\t\tawait this.createEntity(\r\n\t\t\t\tthis.noteClaimEntityCreationType,\r\n\t\t\t\tnoteClaimData,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claims,\r\n\t\t\t\tthis.claimId,\r\n\t\t\t\t{});\r\n\t\t}\r\n\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the claim entity intance data based on the collected\r\n\t * data. This data will be saved on the creation process.\r\n\t *\r\n\t * @param {any} currentData\r\n\t * The claim wizard data.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate createClaimData(\r\n\t\tcurrentData: any): IEntityInstance\r\n\t{\r\n\t\tconst claimData: IEntityInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: ClaimConstants.claimEntityTypes.claim,\r\n\t\t\t\tversionNumber: null,\r\n\t\t\t\tdata: currentData.claim\r\n\t\t\t};\r\n\r\n\t\treturn claimData;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the note.claim entity intance data based on the collected\r\n\t * data. This data will be saved on the creation process.\r\n\t *\r\n\t * @param {any} currentData\r\n\t * The claim wizard data.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate createNoteClaimData(\r\n\t\tcurrentData: any): IEntityInstance\r\n\t{\r\n\t\tconst noteClaimData: IEntityInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: ClaimConstants.claimEntityTypes.noteClaim,\r\n\t\t\t\tversionNumber: null,\r\n\t\t\t\tdata: currentData.note\r\n\t\t\t};\r\n\r\n\t\treturn noteClaimData;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity creation event.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @async\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate async createEntity(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance,\r\n\t\tentityParentTypeGroup: string,\r\n\t\tentityParentId: number,\r\n\t\tparameters: object): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst newEntityId: Promise =\r\n\t\t\tthis.createEntityInstance(\r\n\t\t\t\tentityCreationType,\r\n\t\t\t\tentityInstanceData,\r\n\t\t\t\tentityParentTypeGroup,\r\n\t\t\t\tentityParentId,\r\n\t\t\t\tparameters);\r\n\r\n\t\treturn newEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance and all entity relationships.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate async createEntityInstance(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance,\r\n\t\tentityParentTypeGroup: string,\r\n\t\tentityParentId: number,\r\n\t\tparameters: object): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tentityCreationType.group;\r\n\r\n\t\tconst createdEntityId: number =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\tentityInstanceData,\r\n\t\t\t\t\tentityParentTypeGroup,\r\n\t\t\t\t\tentityParentId,\r\n\t\t\t\t\tparameters);\r\n\r\n\t\treturn createdEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof CreateClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note.content',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdescription: 'Intake notes on claim.',\r\n\t\t\t\t\t\tplaceholder: 'Intake Notes',\r\n\t\t\t\t\t\trows: 15,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'manage-additional-payees-claim',\r\n\ttemplateUrl: './manage-additional-payees-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for managing additional\r\n * payees on a claim payment.\r\n *\r\n * @export\r\n * @class ManageAdditionalPayeesClaimComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class ManageAdditionalPayeesClaimComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an manage additional payees\r\n\t * claim component.\r\n\t *\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService\r\n\t)\r\n\t{\r\n\t\tsuper(\r\n\t\t\trouter,\r\n\t\t\tactivityService,\r\n\t\t\tmoduleService,\r\n\t\t\tentityService,\r\n\t\t\tinsuranceService,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tsessionService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate claimPayment: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claims.\r\n\t *\r\n\t * @type {IEntityInstanceDto[]}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate claims: IEntityInstanceDto[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the available payees.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate availablePayees: any[];\r\n\r\n\t/**\r\n\t * Gets or sets the selected payees.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate selectedPayees: any[];\r\n\r\n\t/**\r\n\t * Gets or sets the selected payees resource identifiers.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate selectedPayeesResourceIdentifiers: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the list of adjusting companies.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate adjustingCompanies: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Sets the adjuster readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate readonly adjusterType: string = 'Adjuster';\r\n\r\n\t/**\r\n\t * Sets the vendor readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate readonly vendorType: string = 'Vendor';\r\n\r\n\t/**\r\n\t * Sets the reporter readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate readonly reporterType: string = 'Reporter';\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tthis.claimPaymentId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.claimPayment =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimPaymentId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tthis.claims =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.claimPaymentId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\r\n\t\tthis.claim = this.claims[0];\r\n\r\n\t\tthis.adjustingCompanies =\r\n\t\t\tawait this.claimsService.getClaimAdjusterOrganizations(\r\n\t\t\t\tthis.claim.id);\r\n\r\n\t\tthis.selectedPayees =\r\n\t\t\tawait this.getSelectedPayees(\r\n\t\t\t\tthis.claimPayment,\r\n\t\t\t\tthis.claim);\r\n\r\n\t\tthis.availablePayees =\r\n\t\t\tawait this.getAvailablePayees(\r\n\t\t\t\tthis.claim,\r\n\t\t\t\tthis.claimPayment);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons: this.availablePayees,\r\n\t\t\t\tselectedReasons: this.selectedPayees,\r\n\t\t\t\tcomments: AppConstants.empty,\r\n\t\t\t\tdisplayCommentBox: false\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.confirmPayees.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the confirm payees event and navigate to\r\n\t * the claim payment.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tpublic async confirmPayees(): Promise\r\n\t{\r\n\t\tawait this.saveAdditionalPayees();\r\n\t\tawait this.navigateToClaimPayment(\r\n\t\t\tthis.claimPaymentId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the manage additional payees process by executing the\r\n\t * ManageAdditionalPayees workflow action to update the claim payment\r\n\t * with the collected data from the Manage Additional Payees Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tpublic async saveAdditionalPayees(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tadditionalPayeesStringObject:\r\n\t\t\t\t\t\tJSON.stringify(currentData.selectedReasons)\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimPaymentId,\r\n\t\t\t\t\tClaimConstants.workflowActions.manageAdditionalPayees,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Modifying Additional Payees',\r\n\t\t\t\t'Additional Payees Modified',\r\n\t\t\t\t'Additional payee changes have been saved.',\r\n\t\t\t\t'Additional payee changes have not been saved.'));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim payment layout using the\r\n\t * claim payment id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim payment entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimPayment(\r\n\t\tentityId: number,\r\n\t\tgroup: string): Promise\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the available additional payees.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} claim\r\n\t * The claim instance.\r\n\t * @param {IEntityInstance} claimPayment\r\n\t * The claim payment instance.\r\n\t * @returns {Promise}\r\n\t * The list of available payees for a claim.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async getAvailablePayees(\r\n\t\tclaim: IEntityInstance,\r\n\t\tclaimPayment: IEntityInstance): Promise\r\n\t{\r\n\t\tlet availablePayees: any = claim.data.involvedParties\r\n\t\t\t.filter(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.type !== this.reporterType\r\n\t\t\t\t\t\t&& !this.selectedPayeesResourceIdentifiers.includes(\r\n\t\t\t\t\t\t\tparty.resourceIdentifier)\r\n\t\t\t\t\t\t&& party.resourceIdentifier !==\r\n\t\t\t\t\t\t\tclaimPayment.data.payee.id);\r\n\r\n\t\tavailablePayees =\r\n\t\t\tawait this.formatPayees(availablePayees);\r\n\r\n\t\treturn availablePayees;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the selected additional payees.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} claimPayment\r\n\t * The claim payment instance.\r\n\t * @param {IEntityInstance} claim\r\n\t * The claim instance.\r\n\t * @returns {Promise}\r\n\t * The list of all selected additional payees for a claim payment.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async getSelectedPayees(\r\n\t\tclaimPayment: IEntityInstance,\r\n\t\tclaim: IEntityInstance): Promise\r\n\t{\r\n\t\tlet selectedPayees: any[] = [];\r\n\t\tconst selectedPayeesResourceIdentifiers: any[] = [];\r\n\r\n\t\tconst additionalPayees =\r\n\t\t\tclaimPayment.data.additionalPayees;\r\n\r\n\t\tfor await (const payee of additionalPayees)\r\n\t\t{\r\n\t\t\tconst payeeData = claim.data.involvedParties.find(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.resourceIdentifier === payee.id);\r\n\r\n\t\t\tselectedPayees.push(payeeData);\r\n\t\t\tselectedPayeesResourceIdentifiers.push(payee.id);\r\n\t\t}\r\n\r\n\t\tthis.selectedPayeesResourceIdentifiers =\r\n\t\t\tselectedPayeesResourceIdentifiers;\r\n\r\n\t\tselectedPayees =\r\n\t\t\tawait this.formatPayees(selectedPayees);\r\n\r\n\t\treturn selectedPayees;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats payees data.\r\n\t *\r\n\t * @async\r\n\t * @param {any[]} payees\r\n\t * The array of payees.\r\n\t * @returns {Promise}\r\n\t * The list of formatted payees.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async formatPayees(\r\n\t\tpayees: any[]): Promise\r\n\t{\r\n\t\tconst formattedPayees: any[] = [];\r\n\r\n\t\tfor await (const payee of payees)\r\n\t\t{\r\n\t\t\tswitch (payee.type)\r\n\t\t\t{\r\n\t\t\t\tcase this.vendorType:\r\n\t\t\t\t{\r\n\t\t\t\t\tformattedPayees.push(\r\n\t\t\t\t\t\tawait this.formatVendor(payee));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase this.adjusterType:\r\n\t\t\t\t{\r\n\t\t\t\t\tformattedPayees.push(\r\n\t\t\t\t\t\tawait this.formatAdjuster(payee));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tformattedPayees.push(\r\n\t\t\t\t\t\tawait this.formatPayee(payee));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn formattedPayees;\r\n\t}\r\n\t/**\r\n\t * Formats payee data.\r\n\t *\r\n\t * @async\r\n\t * @param {any} payee\r\n\t * The payee data.\r\n\t * @returns {Promise}\r\n\t * The formatted payee data.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async formatPayee(\r\n\t\tpayee: any): Promise\r\n\t{\r\n\t\tconst formattedName: string =\r\n\t\t\tStringHelper.toNameString(\r\n\t\t\t\tpayee?.name?.firstName,\r\n\t\t\t\tpayee?.name?.lastName);\r\n\r\n\t\tconst payeeAddress: any =\r\n\t\t\tpayee?.addresses[0];\r\n\r\n\t\treturn {\r\n\t\t\tname: StringHelper.beforeCapitalSpaces(payee.type),\r\n\t\t\tdescription: formattedName,\r\n\t\t\tresourceIdentifier: payee.resourceIdentifier,\r\n\t\t\tpayeeData: {\r\n\t\t\t\tid: payee.resourceIdentifier,\r\n\t\t\t\tname: formattedName,\r\n\t\t\t\ttype: payee.type,\r\n\t\t\t\taddress: {\r\n\t\t\t\t\ttype: payeeAddress?.type,\r\n\t\t\t\t\taddress: payeeAddress?.address,\r\n\t\t\t\t\tcity: payeeAddress?.city,\r\n\t\t\t\t\tstate: payeeAddress?.state,\r\n\t\t\t\t\tprincipalSubdivision: payeeAddress?.principalSubdivision,\r\n\t\t\t\t\tpostalCode: payeeAddress?.postalCode,\r\n\t\t\t\t\tcountry: payeeAddress?.country\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Formats vendor data.\r\n\t *\r\n\t * @async\r\n\t * @param {any} vendor\r\n\t * The vendor data.\r\n\t * @returns {Promise}\r\n\t * The formatted vendor data.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async formatVendor(\r\n\t\tvendor: any): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.serviceProviderEntityTypeGroups.vendorCompany;\r\n\r\n\t\tconst vendorInstance: IEntityInstanceDto =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t+vendor.vendorOrganizationId);\r\n\r\n\t\tconst formattedDescription: string =\r\n\t\t\tthis.claimsService.formatClaimOrganizationData(\r\n\t\t\t\tvendorInstance.data?.vendorType,\r\n\t\t\t\tvendorInstance.data?.name?.legalName,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst vendorAddress: any =\r\n\t\t\tvendorInstance.data?.addresses[0];\r\n\r\n\t\treturn {\r\n\t\t\tname: this.vendorType,\r\n\t\t\tdescription: formattedDescription,\r\n\t\t\tresourceIdentifier: vendor.resourceIdentifier,\r\n\t\t\tpayeeData: {\r\n\t\t\t\tid: vendor.resourceIdentifier,\r\n\t\t\t\tname: vendorInstance.data?.name?.legalName,\r\n\t\t\t\ttype: this.vendorType,\r\n\t\t\t\taddress: {\r\n\t\t\t\t\ttype: vendorAddress?.type,\r\n\t\t\t\t\taddress: vendorAddress?.address,\r\n\t\t\t\t\tcity: vendorAddress?.city,\r\n\t\t\t\t\tstate: vendorAddress?.state,\r\n\t\t\t\t\tprincipalSubdivision: vendorAddress?.principalSubdivision,\r\n\t\t\t\t\tpostalCode: vendorAddress?.postalCode,\r\n\t\t\t\t\tcountry: vendorAddress?.country\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Formats adjuster data.\r\n\t *\r\n\t * @async\r\n\t * @param {any} adjuster\r\n\t * The adjuster data.\r\n\t * @returns {Promise}\r\n\t * The formatted adjuster data.\r\n\t * @memberof ManageAdditionalPayeesClaimComponent\r\n\t */\r\n\tprivate async formatAdjuster(\r\n\t\tadjuster: any): Promise\r\n\t{\r\n\t\tconst adjusterInstance: IEntityInstanceDto =\r\n\t\t\tthis.adjustingCompanies.find(\r\n\t\t\t\t(organization: any) =>\r\n\t\t\t\t\torganization.id === +adjuster.adjustingOrganizationId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.users;\r\n\r\n\t\tconst userInstance: IEntityInstanceDto =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t+adjuster.adjustingOrganizationUserId);\r\n\r\n\t\tconst formattedDescription: string =\r\n\t\t\tthis.claimsService.formatClaimOrganizationData(\r\n\t\t\t\tadjusterInstance.data?.adjustingType\r\n\t\t\t\t\t?? adjusterInstance.data?.tpaType,\r\n\t\t\t\tadjusterInstance.data?.name?.legalName,\r\n\t\t\t\tuserInstance.data?.firstName,\r\n\t\t\t\tuserInstance.data?.lastName);\r\n\r\n\t\tconst adjusterAddress: any =\r\n\t\t\tadjusterInstance.data?.addresses[0];\r\n\r\n\t\treturn {\r\n\t\t\tname: this.adjusterType,\r\n\t\t\tdescription: formattedDescription,\r\n\t\t\tresourceIdentifier: adjuster.resourceIdentifier,\r\n\t\t\tpayeeData: {\r\n\t\t\t\tid: adjuster.resourceIdentifier,\r\n\t\t\t\tname: adjusterInstance.data?.name?.legalName,\r\n\t\t\t\ttype: this.adjusterType,\r\n\t\t\t\taddress: {\r\n\t\t\t\t\ttype: adjusterAddress?.type,\r\n\t\t\t\t\taddress: adjusterAddress?.address,\r\n\t\t\t\t\tcity: adjusterAddress?.city,\r\n\t\t\t\t\tstate: adjusterAddress?.state,\r\n\t\t\t\t\tprincipalSubdivision: adjusterAddress?.principalSubdivision,\r\n\t\t\t\t\tpostalCode: adjusterAddress?.postalCode,\r\n\t\t\t\t\tcountry: adjusterAddress?.country\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'manage-claim-owner-claim',\r\n\ttemplateUrl: './manage-claim-owner-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for managing\r\n * a claim owner.\r\n *\r\n * @export\r\n * @class ManageClaimOwnerClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ManageClaimOwnerClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the manage claim owner\r\n\t * claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service used in this component.\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic claimsService: ClaimsService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate readonly invalidWizardStepMessage: string =\r\n\t\t'The claim owner is not allowed to be updated.';\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Sets the closed status string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate readonly closedStatus: string = 'Closed';\r\n\r\n\t/**\r\n\t * Sets the select an option string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate readonly selectAnOption: string = 'Select an Option';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claim =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimId);\r\n\r\n\t\tthis.context.source.addToNext(this.confirmClaimOwner.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.isWizardStepValidForDisplay(\r\n\t\t\tthis.claim);\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the assign claim owner event and navigate to\r\n\t * the claim.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic async confirmClaimOwner(): Promise\r\n\t{\r\n\t\tawait this.assignClaimOwner();\r\n\t\tawait this.navigateToClaim(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the assign claim owner process by executing the\r\n\t * workflow action to assign the claim owner.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic async assignClaimOwner(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tclaimOwnerId: currentData.claimOwnerId\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.workflowActions.assignClaimOwner,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Assigning Claim Owner',\r\n\t\t\t\t'Claim Owner Assigned',\r\n\t\t\t\t'Claim owner has been assigned.',\r\n\t\t\t\t'Claim owner has not been assigned.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the organization.\r\n\t *\r\n\t * @return {boolean}\r\n\t * The organization validity\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tpublic async validOrganization(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tlet users: any[] = [];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(field.formControl.value))\r\n\t\t{\r\n\t\t\tconst organization: any = field.formControl.value;\r\n\r\n\t\t\tconst organizationTypeGroup =\r\n\t\t\t\torganization.entityType === ClaimConstants\r\n\t\t\t\t\t.serviceProviderEntityTypes.insuranceCompany\r\n\t\t\t\t\t? ClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t\t.insuranceCompany\r\n\t\t\t\t\t: ClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t\t.thirdPartyAdministrator;\r\n\r\n\t\t\tusers = await this.claimsService.getClaimOwnerUsers(\r\n\t\t\t\torganization.id,\r\n\t\t\t\torganizationTypeGroup);\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(users))\r\n\t\t{\r\n\t\t\tfield.asyncValidators.organizationValidator.message =\r\n\t\t\t\t'No Claim Owner users exist for this organization.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(!AnyHelper.isNullOrEmptyArray(users));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim layout using the\r\n\t * claim id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate async navigateToClaim(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst organizationPromise: string =\r\n\t\t\t'return async function(field) {let options = []; '\r\n\t\t\t\t+ 'const claimsService = '\r\n\t\t\t\t+ 'this.source.resolver.resolveClaims(\\\"ClaimsService\\\"); '\r\n\t\t\t\t+ 'options = await claimsService.getClaimOwnerOrganizations('\r\n\t\t\t\t+ 'this.source.activeMenuItem.currentData.data.id);'\r\n\t\t\t\t+ 'return options;}';\r\n\r\n\t\tconst userPromise: string =\r\n\t\t\t'return async function(field) {let options = []; '\r\n\t\t\t\t+ 'let organization = this.source.activeMenuItem.currentData'\r\n\t\t\t\t+ '.data.organization;'\r\n\t\t\t\t+ 'if(organization!=null){'\r\n\t\t\t\t+ 'const organizationTypeGroup = organization.entityType === '\r\n\t\t\t\t+ '\\\"Organization.InsuranceCompany\\\" ? '\r\n\t\t\t\t+ '\\\"Organization.InsuranceCompanies\\\" '\r\n\t\t\t\t+ ': \\\"Organization.ThirdPartyAdministrators\\\";'\r\n\t\t\t\t+ 'const claimsService = '\r\n\t\t\t\t+ 'this.source.resolver.resolveClaims(\\\"ClaimsService\\\"); '\r\n\t\t\t\t+ 'options = await claimsService.getClaimOwnerUsers('\r\n\t\t\t\t+ 'organization.id,'\r\n\t\t\t\t+ 'organizationTypeGroup);'\r\n\t\t\t\t+ 'if (options.length == 0) {field.props.disabled = true; '\r\n\t\t\t\t+ 'field.props.placeholder = \\\"No Available Options\\\"; '\r\n\t\t\t\t+ 'field.formControl.setValue(null); '\r\n\t\t\t\t+ 'field.formControl.updateValueAndValidity();}'\r\n\t\t\t\t+ 'else {field.props.disabled = false; '\r\n\t\t\t\t+ 'field.props.placeholder = \\\"Select An Option\\\";}'\r\n\t\t\t\t+ 'return options;}'\r\n\t\t\t\t+ 'field.props.disabled = true; field.props.placeholder = '\r\n\t\t\t\t+ '\\\"No Available Options\\\";'\r\n\t\t\t\t+ 'return options;}';\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.organization',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Organization',\r\n\t\t\t\t\t\tdescription: 'Claim organization.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tdataPromise: organizationPromise,\r\n\t\t\t\t\t\tlabelTemplate: '${item.data.name.legalName}',\r\n\t\t\t\t\t\tvalueTemplate: '#{item}',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdisableAutoSetValue: true,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\t_event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tfield.formControl.value))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.setValue(null);\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t\t\t\t\t.currentData.data.organization =\r\n\t\t\t\t\t\t\t\t\t\t\tfield.formControl.value;\r\n\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.props.initializeDataOptions();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\torganizationValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validOrganization(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.claimOwnerId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Claim Owner',\r\n\t\t\t\t\t\tdescription: 'Claim owner.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tdataPromise: userPromise,\r\n\t\t\t\t\t\tlabelTemplate: '${item.data.firstName} '\r\n\t\t\t\t\t\t\t+ '${item.data.lastName}',\r\n\t\t\t\t\t\tvalueTemplate: '${item.id}',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @param {number} claim\r\n\t * The claim to validate.\r\n\t * @memberof ManageClaimOwnerClaimComponent\r\n\t */\r\n\tprivate isWizardStepValidForDisplay(\r\n\t\tclaim: IEntityInstance): void\r\n\t{\r\n\t\tconst claimStatus: string =\r\n\t\t\tclaim.data.status;\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\tclaimStatus !== this.closedStatus\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.invalidWizardStepMessage;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'manage-exposure-parties-claim',\r\n\ttemplateUrl: './manage-exposure-parties-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for managing parties on an exposure.\r\n *\r\n * @export\r\n * @class ManageExposurePartiesClaimComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class ManageExposurePartiesClaimComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an manage exposures parties\r\n\t * claim component.\r\n\t *\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService\r\n\t)\r\n\t{\r\n\t\tsuper(\r\n\t\t\trouter,\r\n\t\t\tactivityService,\r\n\t\t\tmoduleService,\r\n\t\t\tentityService,\r\n\t\t\tinsuranceService,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tsessionService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the exposure index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate exposureIndex: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the available parties.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate availableParties: any[];\r\n\r\n\t/**\r\n\t * Gets or sets the selected parties.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate selectedParties: any[];\r\n\r\n\t/**\r\n\t * Gets or sets the selected parties resource identifiers.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate selectedPartiesResourceIdentifiers: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the list of adjusting companies.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate adjustingCompanies: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Sets the adjuster readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate readonly adjusterType: string = 'Adjuster';\r\n\r\n\t/**\r\n\t * Sets the vendor readonly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate readonly vendorType: string = 'Vendor';\r\n\r\n\t/**\r\n\t * Sets the profile tab layout index readonly number.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate readonly profileTabIndex: number = 1;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.exposureIndex =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.exposureIndex;\r\n\r\n\t\tthis.claimId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.claim =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimId);\r\n\r\n\t\tthis.adjustingCompanies =\r\n\t\t\tawait this.claimsService.getClaimAdjusterOrganizations(\r\n\t\t\t\tthis.claimId);\r\n\r\n\t\tthis.selectedParties =\r\n\t\t\tawait this.getSelectedParties(\r\n\t\t\t\tthis.exposureIndex,\r\n\t\t\t\tthis.claim);\r\n\r\n\t\tthis.availableParties =\r\n\t\t\tawait this.getAvailableParties(this.claim);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons: this.availableParties,\r\n\t\t\t\tselectedReasons: this.selectedParties,\r\n\t\t\t\tcomments: AppConstants.empty,\r\n\t\t\t\tdisplayCommentBox: false\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.confirmParty.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the confirm party event and navigate to\r\n\t * the claim.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tpublic async confirmParty(): Promise\r\n\t{\r\n\t\tawait this.saveExposureParties();\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the manage parties process by executing the\r\n\t * ManageExposureParties workflow action to update the claim exposure\r\n\t * with the collected data from the Manage Exposure Parties Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tpublic async saveExposureParties(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\texposureIndex: this.exposureIndex,\r\n\t\t\t\t\tassignedPartiesResourceIdentifiers:\r\n\t\t\t\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\t\t\t\tcurrentData.selectedReasons,\r\n\t\t\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier)\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.workflowActions.manageExposureParties,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Modifying Exposure Parties',\r\n\t\t\t\t'Exposure Parties Modified',\r\n\t\t\t\t'Exposure party changes have been saved.',\r\n\t\t\t\t'Exposure party changes have not been saved.'));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full,\r\n\t\t\t\t\t\t\t\tactiveTabIndex: this.profileTabIndex\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the available involved parties.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} claim\r\n\t * The claim instance.\r\n\t * @returns {Promise}\r\n\t * The list of available involved parties for a claim.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async getAvailableParties(\r\n\t\tclaim: IEntityInstance): Promise\r\n\t{\r\n\t\tlet availableParties = claim.data.involvedParties\r\n\t\t\t.filter(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\t(party.type === this.vendorType\r\n\t\t\t\t\t\t|| party.type === this.adjusterType)\r\n\t\t\t\t\t\t&& !this.selectedPartiesResourceIdentifiers.includes(\r\n\t\t\t\t\t\t\tparty.resourceIdentifier));\r\n\r\n\t\tavailableParties =\r\n\t\t\tawait this.formatParties(availableParties);\r\n\r\n\t\treturn availableParties;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the selected assigned parties.\r\n\t *\r\n\t * @async\r\n\t * @param {number} exposureIndex\r\n\t * The claim exposure index.\r\n\t * @param {IEntityInstance} claim\r\n\t * The claim instance.\r\n\t * @returns {Promise}\r\n\t * The list of all selected assigned parties for an exposure.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async getSelectedParties(\r\n\t\texposureIndex: number,\r\n\t\tclaim: IEntityInstance): Promise\r\n\t{\r\n\t\tlet selectedParties: any[] = [];\r\n\t\tconst selectedPartiesResourceIdentifiers: any[] = [];\r\n\r\n\t\tconst exposureParties =\r\n\t\t\tclaim.data.exposures[exposureIndex].assignedParties;\r\n\r\n\t\tfor await (const partyIdentifier of exposureParties)\r\n\t\t{\r\n\t\t\tconst partyData = claim.data.involvedParties.find(\r\n\t\t\t\t(party: any) =>\r\n\t\t\t\t\tparty.resourceIdentifier === partyIdentifier);\r\n\r\n\t\t\tselectedParties.push(partyData);\r\n\t\t\tselectedPartiesResourceIdentifiers.push(partyIdentifier);\r\n\t\t}\r\n\r\n\t\tthis.selectedPartiesResourceIdentifiers =\r\n\t\t\tselectedPartiesResourceIdentifiers;\r\n\r\n\t\tselectedParties =\r\n\t\t\tawait this.formatParties(selectedParties);\r\n\r\n\t\treturn selectedParties;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats parties data.\r\n\t *\r\n\t * @async\r\n\t * @param {any[]} parties\r\n\t * The array of parties.\r\n\t * @returns {Promise}\r\n\t * The list of formatted parties.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async formatParties(\r\n\t\tparties: any[]): Promise\r\n\t{\r\n\t\tconst formattedParties: any[] = [];\r\n\r\n\t\tfor await (const party of parties)\r\n\t\t{\r\n\t\t\tswitch (party.type)\r\n\t\t\t{\r\n\t\t\t\tcase this.vendorType:\r\n\t\t\t\t{\r\n\t\t\t\t\tformattedParties.push(\r\n\t\t\t\t\t\tawait this.formatVendor(party));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase this.adjusterType:\r\n\t\t\t\t{\r\n\t\t\t\t\tformattedParties.push(\r\n\t\t\t\t\t\tawait this.formatAdjuster(party));\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn formattedParties;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats vendor data.\r\n\t *\r\n\t * @async\r\n\t * @param {any} vendor\r\n\t * The vendor data.\r\n\t * @returns {Promise}\r\n\t * The formatted vendor data.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async formatVendor(\r\n\t\tvendor: any): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.serviceProviderEntityTypeGroups.vendorCompany;\r\n\r\n\t\tconst vendorInstance: IEntityInstanceDto =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t+vendor.vendorOrganizationId);\r\n\r\n\t\tconst formattedDescription: string =\r\n\t\t\tthis.claimsService.formatClaimOrganizationData(\r\n\t\t\t\tvendorInstance.data?.vendorType,\r\n\t\t\t\tvendorInstance.data?.name?.legalName,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn {\r\n\t\t\tname: this.vendorType,\r\n\t\t\tdescription: formattedDescription,\r\n\t\t\tresourceIdentifier: vendor.resourceIdentifier\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Formats adjuster data.\r\n\t *\r\n\t * @async\r\n\t * @param {any} adjuster\r\n\t * The adjuster data.\r\n\t * @returns {Promise}\r\n\t * The formatted adjuster data.\r\n\t * @memberof ManageExposurePartiesClaimComponent\r\n\t */\r\n\tprivate async formatAdjuster(\r\n\t\tadjuster: any): Promise\r\n\t{\r\n\t\tconst adjusterInstance: IEntityInstanceDto =\r\n\t\t\tthis.adjustingCompanies.find(\r\n\t\t\t\t(organization: any) =>\r\n\t\t\t\t\torganization.id === +adjuster.adjustingOrganizationId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.users;\r\n\r\n\t\tconst userInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t+adjuster.adjustingOrganizationUserId);\r\n\r\n\t\tconst formattedDescription =\r\n\t\t\tthis.claimsService.formatClaimOrganizationData(\r\n\t\t\t\tadjusterInstance.data?.adjustingType\r\n\t\t\t\t\t?? adjusterInstance.data?.tpaType,\r\n\t\t\t\tadjusterInstance.data?.name?.legalName,\r\n\t\t\t\tuserInstance.data?.firstName,\r\n\t\t\t\tuserInstance.data?.lastName\r\n\t\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tname: this.adjusterType,\r\n\t\t\tdescription: formattedDescription,\r\n\t\t\tresourceIdentifier: adjuster.resourceIdentifier\r\n\t\t};\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'manage-parties-confirmation-claim',\r\n\ttemplateUrl: './manage-parties-confirmation-claim.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for confirming claim party changes.\r\n *\r\n * @export\r\n * @class ManagePartiesConfirmationClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ManagePartiesConfirmationClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the manage parties component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation..\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the party details markdown.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate partyDetails: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the party type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate partyType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the party action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate partyAction: string;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action name to be executed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate workflowActionName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the parameter string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate parameterString: string;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimId =\r\n\t\t\tthis.currentData.data.id;\r\n\r\n\t\tthis.partyType =\r\n\t\t\tthis.currentData.data.partyType;\r\n\r\n\t\tthis.partyAction =\r\n\t\t\tthis.currentData.data.partyAction;\r\n\r\n\t\tthis.partyDetails = this.getPartyDetails();\r\n\r\n\t\tthis.context.source.addToNext(this.confirmParty.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim manage parties event and navigate to the claim\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic async confirmParty(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.parameterString),\r\n\t\t\t\t`Updating ${this.partyType}`,\r\n\t\t\t\t`${this.partyType} Updated`,\r\n\t\t\t\t`${this.partyType} has been updated.`,\r\n\t\t\t\t`${this.partyType} has not been updated.`));\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst url: string = this.entityInstanceApiService.getBaseUrl()\r\n\t\t\t+ `/${this.claimId}`;\r\n\r\n\t\tawait this.entityInstanceApiService.resetAssociatedCache(url);\r\n\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\t}\r\n\r\n\t/**\r\n\t * This gets the party summary information to display.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tpublic async getPartyDetails(): Promise\r\n\t{\r\n\t\tlet details: string;\r\n\r\n\t\tswitch(this.partyType){\r\n\t\t\tcase 'Claimant':\r\n\t\t\t\tconst claimant: any = this.currentData.data.claimant;\r\n\r\n\t\t\t\tconst claimantName: string =\r\n\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\tclaimant.name.firstName,\r\n\t\t\t\t\t\tclaimant.name.lastName);\r\n\r\n\t\t\t\tconst claimantAddress: string =\r\n\t\t\t\t\tStringHelper.toAddressString(\r\n\t\t\t\t\t\tclaimant.address.address,\r\n\t\t\t\t\t\tclaimant.address.city,\r\n\t\t\t\t\t\tclaimant.address.state,\r\n\t\t\t\t\t\tclaimant.address.postalCode,\r\n\t\t\t\t\t\tclaimant.address.principalSubdivision,\r\n\t\t\t\t\t\tclaimant.address.country);\r\n\r\n\t\t\t\tconst claimantPhone: string =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(claimant?.phone?.number)\r\n\t\t\t\t\t\t? claimant.phone.number\r\n\t\t\t\t\t\t: 'Not Provided';\r\n\r\n\t\t\t\tconst claimantEmail: string =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(claimant?.email?.address)\r\n\t\t\t\t\t\t? claimant.email.address\r\n\t\t\t\t\t\t: 'Not Provided';\r\n\t\t\t\tdetails =\r\n\t\t\t\t\t'Third Party Claimant Details
'\r\n\t\t\t\t\t\t+ `Claimant: ${claimantName}
`\r\n\t\t\t\t\t\t+ `Mailing Address: ${claimantAddress}
`\r\n\t\t\t\t\t\t+ `Phone: ${claimantPhone}
`\r\n\t\t\t\t\t\t+ `E-mail: ${claimantEmail}
`;\r\n\r\n\t\t\t\tthis.setClaimantActionParameters(claimant);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Adjuster':\r\n\t\t\t\tconst adjuster: any = this.currentData.data.adjuster;\r\n\r\n\t\t\t\tconst adjusterName: string =\r\n\t\t\t\t\tadjuster.instance.data.name.legalName;\r\n\r\n\t\t\t\tconst adjusterAddress: any =\r\n\t\t\t\t\tadjuster.instance.data?.addresses?.find(\r\n\t\t\t\t\t\t(address: any) =>\r\n\t\t\t\t\t\t\taddress.type === 'Mailing');\r\n\r\n\t\t\t\tconst formattedAdjusterAddress: string =\r\n\t\t\t\t\tadjusterAddress\r\n\t\t\t\t\t\t? StringHelper.toAddressString(\r\n\t\t\t\t\t\t\tadjusterAddress.address,\r\n\t\t\t\t\t\t\tadjusterAddress.city,\r\n\t\t\t\t\t\t\tadjusterAddress.state,\r\n\t\t\t\t\t\t\tadjusterAddress.postalCode,\r\n\t\t\t\t\t\t\tadjusterAddress.principalSubdivision,\r\n\t\t\t\t\t\t\tadjusterAddress.country)\r\n\t\t\t\t\t\t: 'No address on file';\r\n\r\n\t\t\t\tconst userName: string =\r\n\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\tadjuster.userInstance.data.firstName,\r\n\t\t\t\t\t\tadjuster.userInstance.data.lastName);\r\n\r\n\t\t\t\tdetails =\r\n\t\t\t\t\t'Adjuster Details
'\r\n\t\t\t\t\t\t+ `Company: ${adjusterName}
`\r\n\t\t\t\t\t\t+ `Mailing Address: ${formattedAdjusterAddress}
`\r\n\t\t\t\t\t\t+ `User: ${userName}
`;\r\n\r\n\t\t\t\tthis.setAdjusterActionParameters(\r\n\t\t\t\t\tadjuster.instance.id,\r\n\t\t\t\t\tadjuster.userInstance.id);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Vendor':\r\n\t\t\t\tconst vendor: any = this.currentData.data.vendor;\r\n\t\t\t\tconst vendorName: string = vendor.instance.data.name.legalName;\r\n\t\t\t\tconst vendorType: string =\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(vendor.type);\r\n\r\n\t\t\t\tconst vendorAddress: any =\r\n\t\t\t\t\tvendor.instance.data?.addresses?.find(\r\n\t\t\t\t\t\t(address: any) =>\r\n\t\t\t\t\t\t\taddress.type === 'Mailing');\r\n\r\n\t\t\t\tconst formattedVendorAddress: string =\r\n\t\t\t\t\tvendorAddress\r\n\t\t\t\t\t\t? StringHelper.toAddressString(\r\n\t\t\t\t\t\t\tvendorAddress.address,\r\n\t\t\t\t\t\t\tvendorAddress.city,\r\n\t\t\t\t\t\t\tvendorAddress.state,\r\n\t\t\t\t\t\t\tvendorAddress.postalCode,\r\n\t\t\t\t\t\t\tvendorAddress.principalSubdivision,\r\n\t\t\t\t\t\t\tvendorAddress.country)\r\n\t\t\t\t\t\t: 'No address on file';\r\n\r\n\t\t\t\tdetails =\r\n\t\t\t\t\t'Vendor Details
'\r\n\t\t\t\t\t\t+ `Company: ${vendorName}
`\r\n\t\t\t\t\t\t+ `Type: ${vendorType}
`\r\n\t\t\t\t\t\t+ `Mailing Address: ${formattedVendorAddress}
`;\r\n\r\n\t\t\t\tthis.setVendorActionParameters(\r\n\t\t\t\t\tvendor.instance.id,\r\n\t\t\t\t\tvendor.type);\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn details;\r\n\t}\r\n\r\n\t/**\r\n\t * This will set the parameters needed for the manage claimant\r\n\t * workflow action.\r\n\t *\r\n\t * @param {any} claimant\r\n\t * The claimant object.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate setClaimantActionParameters(\r\n\t\tclaimant: any): void\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tClaimConstants.workflowActions.manageClaimant;\r\n\r\n\t\tthis.parameterString =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tpartyAction: this.partyAction,\r\n\t\t\t\t\tresourceIdentifier: claimant?.instance?.resourceIdentifier,\r\n\t\t\t\t\tfirstName: claimant.name.firstName,\r\n\t\t\t\t\tlastName: claimant.name.lastName,\r\n\t\t\t\t\taddress: claimant.address.address,\r\n\t\t\t\t\tcity: claimant.address.city,\r\n\t\t\t\t\tstate: claimant.address.state,\r\n\t\t\t\t\tprincipalSubdivision: claimant.address.principalSubdivision,\r\n\t\t\t\t\tpostalCode: claimant.address.postalCode,\r\n\t\t\t\t\tcountry: claimant.address.country,\r\n\t\t\t\t\temail: claimant?.email?.address,\r\n\t\t\t\t\tphone: claimant?.phone?.number\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will set the parameters needed for the manage adjuster\r\n\t * workflow action.\r\n\t *\r\n\t * @param {number} adjustingCompanyId\r\n\t * The adjusting company id.\r\n\t * @param {number} adjustingCompanyUserId\r\n\t * The adjusting company user id.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate setAdjusterActionParameters(\r\n\t\tadjustingCompanyId: number,\r\n\t\tadjustingCompanyUserId: number): void\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tClaimConstants.workflowActions.manageAdjuster;\r\n\r\n\t\tthis.parameterString =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tpartyAction: this.partyAction,\r\n\t\t\t\t\tadjustingCompanyId: adjustingCompanyId,\r\n\t\t\t\t\tadjustingCompanyUserId: adjustingCompanyUserId\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will set the parameters needed for the manage vendor\r\n\t * workflow action.\r\n\t *\r\n\t * @param {number} vendorCompanyId\r\n\t * The vendor company id.\r\n\t * @param {string} vendorType\r\n\t * The vendor type.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate setVendorActionParameters(\r\n\t\tvendorCompanyId: number,\r\n\t\tvendorType: string): void\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tClaimConstants.workflowActions.manageVendor;\r\n\r\n\t\tthis.parameterString =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tpartyAction: this.partyAction,\r\n\t\t\t\t\tvendorCompanyId: vendorCompanyId,\r\n\t\t\t\t\tvendorType: vendorType\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof ManagePartiesConfirmationClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcenterText: true,\r\n\t\t\t\t\t\tuseMarkDown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcontent: await this.partyDetails\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'reject-claim-payment-claim',\r\n\ttemplateUrl: './reject-claim-payment-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for rejecting\r\n * a claim payment.\r\n *\r\n * @export\r\n * @class RejectClaimPaymentClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RejectClaimPaymentClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the reject claim payment claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tprivate claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Sets the note string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tprivate note: string;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimPaymentId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.context.source.addToNext(this.confirmRejection.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the reject claim payment event and navigate to\r\n\t * the claim payment.\r\n\t *\r\n\t * @async\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async confirmRejection(): Promise\r\n\t{\r\n\t\tawait this.rejectClaimPayment();\r\n\t\tawait this.navigateToClaimPayment(\r\n\t\t\tthis.claimPaymentId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the reject claim payment process by executing the\r\n\t * RejectClaimPayment workflow action to update the claim payment status.\r\n\t *\r\n\t * @async\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async rejectClaimPayment(): Promise\r\n\t{\r\n\t\tthis.note =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.note.content;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tnote: this.note\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimPaymentId,\r\n\t\t\t\t\tClaimConstants.workflowActions.rejectClaimPayment,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Rejecting Claim Payment',\r\n\t\t\t\t'Claim Payment Rejected',\r\n\t\t\t\t'Claim Payment has been rejected.',\r\n\t\t\t\t'Claim Payment has not been rejected.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim payment layout using the\r\n\t * claim payment id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim payment entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimPayment(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof RejectClaimPaymentClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note.content',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Reason for Rejection',\r\n\t\t\t\t\t\tdescription: 'Rejection reason.',\r\n\t\t\t\t\t\tplaceholder: 'Found to be a fraudulent claim.',\r\n\t\t\t\t\t\trows: 1,\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\tNo results found.\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'select-claim-type',\r\n\ttemplateUrl: './select-claim-type.component.html',\r\n\tstyleUrls: ['./select-claim-type.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for selecting claim type.\r\n *\r\n * @export\r\n * @class SelectClaimTypeComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class SelectClaimTypeComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the select claim type component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the summary card items.\r\n * This property dynamically updates to include all claim products defined.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tpublic summaryCardItems: any[];\r\n\r\n\t/**\r\n\t * A mapping of claim product types to their\r\n\t * corresponding Font Awesome icon classes.\r\n\t *\r\n\t * @type {{[key: string]: string}}\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tprivate readonly productIconMap: {[key: string]: string} =\r\n\t\t{\r\n\t\t\t'auto':\r\n\t\t\t\t`${AppConstants.cssClasses.fontAwesomeCar}`,\r\n\t\t\t'dwelling':\r\n\t\t\t\t`${AppConstants.cssClasses.fontAwesomeHouse}`\r\n\t\t\t\t\t+ ` ${AppConstants.cssClasses.largeFont}`,\r\n\t\t\t'renters':\r\n\t\t\t\t`${AppConstants.cssClasses.fontAwesomeHouse}`\r\n\t\t\t\t\t+ ` ${AppConstants.cssClasses.largeFont}`,\r\n\t\t\t'homeowners':\r\n\t\t\t\t`${AppConstants.cssClasses.fontAwesomeHouse}`\r\n\t\t\t\t\t+ ` ${AppConstants.cssClasses.largeFont}`,\r\n\t\t};\r\n\r\n\t/**\r\n\t * Handles the summary card data on initialization.\r\n\t * This will setup the required variables\r\n\t * for the select claim type component.\r\n\t *\r\n\t * @async\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupSummaryCardItems();\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source\r\n\t\t\t.changeDetectorReference\r\n\t\t\t.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Configures the summary card items for this component.\r\n\t * Retrieves claim products and sets up summary card data for each product.\r\n\t *\r\n\t * @async\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tpublic async setupSummaryCardItems(): Promise\r\n\t{\r\n\t\tconst claimProducts: IEntityInstance[] =\r\n\t\t\tawait this.getClaimProducts();\r\n\t\tthis.summaryCardItems =\r\n\t\t\tclaimProducts.map(\r\n\t\t\t\t(product: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst productName: string =\r\n\t\t\t\t\t\tproduct.data.name;\r\n\t\t\t\t\tconst iconClass: string =\r\n\t\t\t\t\t\tthis.productIconMap[productName.toLowerCase()]\r\n\t\t\t\t\t\t\t|| 'fa-question';\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdataPromise:\r\n\t\t\t\t\t\t\tPromise.resolve(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tname: productName\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tsummaryTemplate:\r\n\t\t\t\t\t\t\t``,\r\n\t\t\t\t\t\ttitleTemplate: '${data.name}',\r\n\t\t\t\t\t\tsummaryCardDisplay: true\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and retrieves a list of claim products.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of claim products.\r\n\t * @memberof SelectClaimTypeComponent\r\n\t */\r\n\tpublic async getClaimProducts(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimProducts;\r\n\r\n\t\treturn this.entityInstanceApiService.query(\r\n\t\t\tAppConstants.empty,\r\n\t\t\tAppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t* Handles the click event for a claim product summary card.\r\n\t*\r\n\t* @remarks\r\n\t* This method extracts the product name from\r\n\t* the clicked summary card element,\r\n\t* updates the step data with this product name,\r\n\t* and then navigates to the \"Find Policy\" step.\r\n\t*\r\n\t* @param {Object} data\r\n\t* The data associated with the clicked summary card.\r\n\t* @memberof SelectClaimTypeComponent\r\n\t*/\r\n\tpublic summaryCardClicked(\r\n\t\tdata: {\r\n\t\t\tdynamicComponent: string;\r\n\t\t\tsummaryCardElement: HTMLDivElement;\r\n\t\t\tdynamicComponentContext: any;\r\n\t\t})\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tclaim:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tproductName: data.summaryCardElement.innerText\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\t\tthis.context.source.stepTo('Find Policy');\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'update-claim-exposure-status-claim',\r\n\ttemplateUrl: './update-claim-exposure-status-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for updating\r\n * a claim exposure status.\r\n *\r\n * @export\r\n * @class UpdateClaimExposureStatusClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class UpdateClaimExposureStatusClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the update claim exposure status\r\n\t * claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service used in this component.\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic claimsService: ClaimsService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the open exposure layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic openExposureLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the close exposure layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic closeExposureLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate readonly invalidWizardStepMessage: string =\r\n\t\t'The exposure status is not allowed to be updated.';\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim instance\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate claim: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the update exposure status to string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate updateStatusTo: string;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate workflowActionName: string;\r\n\r\n\t/**\r\n\t * Sets the open status string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate readonly openStatus: string = 'Open';\r\n\r\n\t/**\r\n\t * Sets the closed status string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate readonly closedStatus: string = 'Closed';\r\n\r\n\t/**\r\n\t * Sets the select an option string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate readonly selectAnOption: string = 'Select an Option';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.updateStatusTo =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.updateStatusTo;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claim = await this.entityInstanceApiService.get(this.claimId);\r\n\r\n\t\tthis.context.source.addToNext(\r\n\t\t\tthis.confirmExposureStatusUpdate.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.isWizardStepValidForDisplay(\r\n\t\t\tthis.claim,\r\n\t\t\tthis.updateStatusTo);\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the update claim exposure status event and navigate to\r\n\t * the claim.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async confirmExposureStatusUpdate(): Promise\r\n\t{\r\n\t\tawait this.updateExposureStatus();\r\n\r\n\t\tconst url: string =\r\n\t\t\tthis.entityInstanceApiService.getBaseUrl()\r\n\t\t\t\t+ `/${this.claimId}`;\r\n\r\n\t\tawait this.entityInstanceApiService.resetAssociatedCache(url);\r\n\r\n\t\tawait this.navigateToClaim(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the update claim exposure status process by executing the\r\n\t * workflow action to update the claim exposure status.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async updateExposureStatus(): Promise\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? ClaimConstants.workflowActions.reopenClaimExposure\r\n\t\t\t\t: ClaimConstants.workflowActions.closeClaimExposure;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\texposureId:currentData.exposureId,\r\n\t\t\t\t\treason: currentData.reason,\r\n\t\t\t\t\tnote: await this.formatNote(\r\n\t\t\t\t\t\tcurrentData?.note,\r\n\t\t\t\t\t\tcurrentData.reason,\r\n\t\t\t\t\t\tcurrentData.exposureId)\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Updating Claim Exposure Status',\r\n\t\t\t\t'Claim Exposure Status Updated',\r\n\t\t\t\t'Claim Exposure status has been updated.',\r\n\t\t\t\t'Claim Exposure status has not been updated.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the user provided data into a note.\r\n\t *\r\n\t * @async\r\n\t * @param {string} note\r\n\t * The user provided note.\r\n\t * @param {string} reason\r\n\t * The user selected reasons.\r\n\t * @param {string} exposureId\r\n\t * The user selected exposure id.\r\n\t * @returns {string}\r\n\t * The formatted note data.\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async formatNote(\r\n\t\tnote: string,\r\n\t\treason: string,\r\n\t\texposureId: string): Promise\r\n\t{\r\n\t\tconst reasons: any[] =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? await this.claimsService.getExposureReasons(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.reasonType.open)\r\n\t\t\t\t: await this.claimsService.getExposureReasons(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.reasonType.close);\r\n\r\n\t\tconst reasonData: any =\r\n\t\t\treasons.find((item: any) => item.id === reason);\r\n\r\n\t\tconst exposureData: any =\r\n\t\t\tthis.claim.data.exposures.find(\r\n\t\t\t\t(exposure: any) => exposure.resourceIdentifier === exposureId);\r\n\r\n\t\tconst formattedNote: string =\r\n\t\t\tnote\r\n\t\t\t\t? `${exposureData.coverage}`\r\n\t\t\t\t\t+ ` - ${reasonData.description} - ${note}`\r\n\t\t\t\t: `${exposureData.coverage}`\r\n\t\t\t\t\t+ ` - ${reasonData.description}`;\r\n\r\n\t\treturn formattedNote;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the exposure.\r\n\t *\r\n\t * @async\r\n\t * @return {boolean}\r\n\t * The exposure validity\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tpublic async validExposure(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tconst ledger: IEntityInstance =\r\n\t\t\tawait this.claimsService.getLedger(this.claimId);\r\n\r\n\t\tconst ledgerTransactions: IEntityInstance[] =\r\n\t\t\tawait this.claimsService.getLedgerTransactions(\r\n\t\t\t\tledger.id,\r\n\t\t\t\t`metadata.exposureId eq \\\"${field.formControl.value}\\\"`);\r\n\r\n\t\tconst sum: number =\r\n\t\t\tthis.claimsService.sumLedgerTransactions(ledgerTransactions);\r\n\r\n\t\tif (sum !== 0)\r\n\t\t{\r\n\t\t\tfield.asyncValidators.outstandingReservesValidator.message =\r\n\t\t\t\t'Oustanding reserves must be zero to close exposure.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(sum === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim layout using the\r\n\t * claim id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate async navigateToClaim(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst openExposurePromise: string =\r\n\t\t\t'return async function(){let options=[]; '\r\n\t\t\t\t+ 'var entityInstanceApiService='\r\n\t\t\t\t+ 'this.source.resolver.resolveApiService'\r\n\t\t\t\t+ '(\\\"EntityInstanceApiService\\\");entityInstanceApiService'\r\n\t\t\t\t+ '.entityInstanceTypeGroup=\\\"Claims\\\";let claim=await '\r\n\t\t\t\t+ 'entityInstanceApiService.get(this.source.activeMenuItem'\r\n\t\t\t\t+ '.currentData.data.id);const exposures=claim.data.exposures;'\r\n\t\t\t\t+ 'const closedExposures=exposures.filter(exposure=>exposure'\r\n\t\t\t\t+ '.status===\\\"Closed\\\");closedExposures.forEach(exposure=>'\r\n\t\t\t\t+ '{options.push({label:exposure.coverage,value:exposure'\r\n\t\t\t\t+ '.resourceIdentifier});});return options;}';\r\n\r\n\t\tconst closeExposurePromise: string =\r\n\t\t\t'return async function(){let options=[]; '\r\n\t\t\t\t+ 'var entityInstanceApiService='\r\n\t\t\t\t+ 'this.source.resolver.resolveApiService'\r\n\t\t\t\t+ '(\\\"EntityInstanceApiService\\\");entityInstanceApiService'\r\n\t\t\t\t+ '.entityInstanceTypeGroup=\\\"Claims\\\";let claim=await '\r\n\t\t\t\t+ 'entityInstanceApiService.get(this.source.activeMenuItem'\r\n\t\t\t\t+ '.currentData.data.id);const exposures=claim.data.exposures;'\r\n\t\t\t\t+ 'const openExposures=exposures.filter(exposure=>exposure'\r\n\t\t\t\t+ '.status===\\\"Open\\\");openExposures.forEach(exposure=>'\r\n\t\t\t\t+ '{options.push({label:exposure.coverage,value:exposure'\r\n\t\t\t\t+ '.resourceIdentifier});});return options;}';\r\n\r\n\t\tthis.openExposureLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.exposureId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Claim Exposure',\r\n\t\t\t\t\t\tdescription: 'Claim exposure to open.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdataPromise: openExposurePromise,\r\n\t\t\t\t\t\tlabelTemplate: '${item.label}',\r\n\t\t\t\t\t\tvalueTemplate: '${item.value}',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdisableAutoSetValue: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Reason for Reopen',\r\n\t\t\t\t\t\tdescription: 'Claim exposure reopen reason.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tlabelTemplate: '${item.description}',\r\n\t\t\t\t\t\tvalueTemplate: '${item.id}',\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t(await this.claimsService\r\n\t\t\t\t\t\t\t\t.getExposureReasons(\r\n\t\t\t\t\t\t\t\t\tNumber(this.claimId),\r\n\t\t\t\t\t\t\t\t\tClaimConstants.reasonType.open))\r\n\t\t\t\t\t\t\t\t?.map((item: any) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: item.description,\r\n\t\t\t\t\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\tdescription: 'Reopen exposure description.',\r\n\t\t\t\t\t\tplaceholder: 'Reopen notes',\r\n\t\t\t\t\t\trows: 1,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.closeExposureLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.exposureId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Claim Exposure',\r\n\t\t\t\t\t\tdescription: 'Claim exposure to close.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdataPromise: closeExposurePromise,\r\n\t\t\t\t\t\tlabelTemplate: '${item.label}',\r\n\t\t\t\t\t\tvalueTemplate: '${item.value}',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdisableAutoSetValue: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\toutstandingReservesValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validExposure(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Close Reason',\r\n\t\t\t\t\t\tdescription: 'Claim exposure close reason.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t(await this.claimsService\r\n\t\t\t\t\t\t\t\t.getExposureReasons(\r\n\t\t\t\t\t\t\t\t\tNumber(this.claimId),\r\n\t\t\t\t\t\t\t\t\tClaimConstants.reasonType.close))\r\n\t\t\t\t\t\t\t\t?.map((item: any) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: item.description,\r\n\t\t\t\t\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\tdescription: 'Close exposure description.',\r\n\t\t\t\t\t\tplaceholder: 'Closing notes',\r\n\t\t\t\t\t\trows: 1,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? this.openExposureLayout\r\n\t\t\t\t: this.closeExposureLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @param {IEntityInstance} claim\r\n\t * The claim to validate.\r\n\t * @param {IEntityInstance} updateStatusTo\r\n\t * The status the exposure is updated to.\r\n\t * @memberof UpdateClaimExposureStatusClaimComponent\r\n\t */\r\n\tprivate isWizardStepValidForDisplay(\r\n\t\tclaim: IEntityInstance,\r\n\t\tupdateStatusTo: string): void\r\n\t{\r\n\t\tconst claimStatus: string =\r\n\t\t\tclaim.data.status;\r\n\r\n\t\tconst closedExposures: any[] =\r\n\t\t\tclaim.data?.exposures?.filter(\r\n\t\t\t\t(exposure: any) =>\r\n\t\t\t\t\texposure.status === this.closedStatus);\r\n\r\n\t\tconst openExposures: any[] =\r\n\t\t\tclaim.data?.exposures?.filter(\r\n\t\t\t\t(exposure: any) =>\r\n\t\t\t\t\texposure.status === this.openStatus);\r\n\r\n\t\tif (updateStatusTo === this.openStatus)\r\n\t\t{\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\tclaimStatus === this.openStatus && closedExposures?.length > 0\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: this.invalidWizardStepMessage;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\tclaimStatus === this.openStatus && openExposures?.length > 0\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.invalidWizardStepMessage;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'update-claim-status-claim',\r\n\ttemplateUrl: './update-claim-status-claim.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for updating\r\n * a claim status.\r\n *\r\n * @export\r\n * @class UpdateClaimStatusClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class UpdateClaimStatusClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the update claim status\r\n\t * claim component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service used in this component.\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic claimsService: ClaimsService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the open claim layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic openClaimLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the close claim layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic closeClaimLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate readonly invalidWizardStepMessage: string =\r\n\t\t'The claim status is not allowed to be updated.';\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the update status to string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate updateStatusTo: string;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate workflowActionName: string;\r\n\r\n\t/**\r\n\t * Sets the open status string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate readonly openStatus: string = 'Open';\r\n\r\n\t/**\r\n\t * Sets the closed status string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate readonly closedStatus: string = 'Closed';\r\n\r\n\t/**\r\n\t * Sets the select an option string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate readonly selectAnOption: string = 'Select an Option';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimId =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.updateStatusTo =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.updateStatusTo;\r\n\r\n\t\tthis.context.source.addToNext(this.confirmClaimStatusUpdate.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tawait this.isWizardStepValidForDisplay(\r\n\t\t\tthis.claimId,\r\n\t\t\tthis.updateStatusTo);\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the update claim status event and navigate to\r\n\t * the claim.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic async confirmClaimStatusUpdate(): Promise\r\n\t{\r\n\t\tawait this.updateClaimStatus();\r\n\t\tawait this.navigateToClaim(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the update claim status process by executing the\r\n\t * workflow action to update the claim status.\r\n\t *\r\n\t * @async\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic async updateClaimStatus(): Promise\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? ClaimConstants.workflowActions.reopenClaim\r\n\t\t\t\t: ClaimConstants.workflowActions.closeClaim;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\treason: currentData.reason,\r\n\t\t\t\t\tnote: await this.formatNote(\r\n\t\t\t\t\t\tcurrentData?.note,\r\n\t\t\t\t\t\tcurrentData.reason)\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString),\r\n\t\t\t\t'Updating Claim Status',\r\n\t\t\t\t'Claim Status Updated',\r\n\t\t\t\t'Claim status has been updated.',\r\n\t\t\t\t'Claim status has not been updated.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the user provided data into a note.\r\n\t *\r\n\t * @async\r\n\t * @param {string} note\r\n\t * The user provided note.\r\n\t * @param {string} reason\r\n\t * The user selected reasons.\r\n\t * @returns {string}\r\n\t * The formatted note data.\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tpublic async formatNote(\r\n\t\tnote: string,\r\n\t\treason: string): Promise\r\n\t{\r\n\t\tconst reasons: any[] =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? await this.claimsService\r\n\t\t\t\t\t.getClaimReasons(\r\n\t\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\t\tClaimConstants.reasonType.open)\r\n\t\t\t\t: await this.claimsService\r\n\t\t\t\t\t.getClaimReasons(\r\n\t\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\t\tClaimConstants.reasonType.close);\r\n\r\n\t\tconst reasonData: any =\r\n\t\t\treasons.find((item: any) => item.id === reason);\r\n\r\n\t\tconst formattedNote: string =\r\n\t\t\tnote\r\n\t\t\t\t? `${reasonData.description} - ${note}`\r\n\t\t\t\t: `${reasonData.description}`;\r\n\r\n\t\treturn formattedNote;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim layout using the\r\n\t * claim id provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate async navigateToClaim(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.openClaimLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Open Reason',\r\n\t\t\t\t\t\tdescription: 'Claim reopen reason.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t(await this.claimsService\r\n\t\t\t\t\t\t\t\t.getClaimReasons(\r\n\t\t\t\t\t\t\t\t\tNumber(this.claimId),\r\n\t\t\t\t\t\t\t\t\tClaimConstants.reasonType.open))\r\n\t\t\t\t\t\t\t\t?.map((item: any) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: item.description,\r\n\t\t\t\t\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\tdescription: 'Reopen claim description.',\r\n\t\t\t\t\t\tplaceholder: 'Reopen notes',\r\n\t\t\t\t\t\trows: 1,\r\n\t\t\t\t\t\tgridColumns: 6\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.closeClaimLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Close Reason',\r\n\t\t\t\t\t\tdescription: 'Claim close reason.',\r\n\t\t\t\t\t\tplaceholder: this.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t(await this.claimsService\r\n\t\t\t\t\t\t\t\t.getClaimReasons(\r\n\t\t\t\t\t\t\t\t\tNumber(this.claimId),\r\n\t\t\t\t\t\t\t\t\tClaimConstants.reasonType.close))\r\n\t\t\t\t\t\t\t\t?.map((item: any) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: item.description,\r\n\t\t\t\t\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.note',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\tdescription: 'Close claim description.',\r\n\t\t\t\t\t\tplaceholder: 'Closing notes',\r\n\t\t\t\t\t\trows: 1,\r\n\t\t\t\t\t\tgridColumns: 6\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\tthis.updateStatusTo === this.openStatus\r\n\t\t\t\t? this.openClaimLayout\r\n\t\t\t\t: this.closeClaimLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim id to validate.\r\n\t * @param {IEntityInstance} updateStatusTo\r\n\t * The status the exposure is updated to.\r\n\t * @memberof UpdateClaimStatusClaimComponent\r\n\t */\r\n\tprivate async isWizardStepValidForDisplay(\r\n\t\tclaimId: number,\r\n\t\tupdateStatusTo: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst claim: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(claimId);\r\n\r\n\t\tconst claimStatus: string =\r\n\t\t\tclaim.data.status;\r\n\r\n\t\tif (updateStatusTo === this.openStatus)\r\n\t\t{\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\tclaimStatus === this.closedStatus\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: this.invalidWizardStepMessage;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\tclaimStatus !== this.closedStatus\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.invalidWizardStepMessage;\r\n\t}\r\n}","
\r\n\t
\r\n\t\tVerify Claims Insurance Company\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'verify-coverage-claim',\r\n\ttemplateUrl: './verify-coverage-claim.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for verifying coverage.\r\n *\r\n * @export\r\n * @class VerifyCoverageClaimComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class VerifyCoverageClaimComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the verify coverage component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation..\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate claimId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim parent id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate claimParentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the claim parent name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate claimParentName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the transaction id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate transactionId: string;\r\n\r\n\t/**\r\n\t * Gets or sets the transaction system.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate transactionSystem: string;\r\n\r\n\t/**\r\n\t * Gets or sets the insurance company instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate transactionInsuranceCompany: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets date of loss of the claim.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate lossDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the insurance company data.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate insuranceCompanyData: object;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.claimId = this.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst claimParent: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.claimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompany);\r\n\r\n\t\tthis.claimParentId = claimParent[0].id;\r\n\r\n\t\tthis.claimParentName = claimParent[0].data.name.legalName;\r\n\r\n\t\tthis.lossDate = this.currentData.data.claim.keyDates.lossDate;\r\n\r\n\t\tthis.transactionId = this.currentData.data.policy.identifier;\r\n\r\n\t\tthis.transactionSystem = this.currentData.data.policy.system;\r\n\r\n\t\tthis.insuranceCompanyData =\r\n\t\t\tawait this.validateInsuranceCompany(\r\n\t\t\t\tthis.claimParentId,\r\n\t\t\t\tthis.claimParentName,\r\n\t\t\t\tthis.transactionId,\r\n\t\t\t\tthis.transactionSystem,\r\n\t\t\t\tthis.lossDate\r\n\t\t\t);\r\n\r\n\t\tthis.context.source.addToNext(this.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the claim create event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tthis.claimId,\r\n\t\t\t\t\tClaimConstants.workflowActions.verifyCoverage,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t`parentId=${this.claimId}`\r\n\t\t\t\t\t\t+ `&identifier=${this.transactionId}`\r\n\t\t\t\t\t\t+ `&system=${this.transactionSystem}`\r\n\t\t\t\t\t\t+ `&date=${this.lossDate}`),\r\n\t\t\t\t'Importing Policy',\r\n\t\t\t\t'Policy Imported',\r\n\t\t\t\t'Policy information has been imported.',\r\n\t\t\t\t'Policy information has not been imported.'));\r\n\r\n\t\tawait this.navigateToClaimSummary(\r\n\t\t\tthis.claimId,\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\t}\r\n\r\n\t/**\r\n\t * This will validate and return the correct insurance company\r\n\t * for the claim.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimParentId\r\n\t * The claim parent entity id.\r\n\t * @param {string} claimParentName\r\n\t * The claim parent entity legal name.\r\n\t * @param {string} transactionId\r\n\t * The transaction entity id.\r\n\t * @param {string} transactionSystem\r\n\t * The transaction entity system name.\r\n\t * @param {string} lossDate\r\n\t * The date of loss of the claim.\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate async validateInsuranceCompany(\r\n\t\tclaimParentId: number,\r\n\t\tclaimParentName: string,\r\n\t\ttransactionId: string,\r\n\t\ttransactionSystem: string,\r\n\t\tlossDate: string): Promise\r\n\t{\r\n\t\tthis.insuranceCompanyData =\r\n\t\t\t{\r\n\t\t\t\tlabel: claimParentName,\r\n\t\t\t\tvalue: claimParentId\r\n\t\t\t};\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany;\r\n\r\n\t\tconst insuranceCompanies: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t'name');\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\tconst actionResponse: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService.executeAction(\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t'PolicyLocator',\r\n\t\t\t\tnull,\r\n\t\t\t\t`identifier=${transactionId}`\r\n\t\t\t\t\t+ `&system=${transactionSystem}`\r\n\t\t\t\t\t\t+ `&action=Get&date=${lossDate}`\r\n\t\t\t);\r\n\r\n\t\tconst transactionInsuranceCompanyId: number =\r\n\t\t\tparseInt(\r\n\t\t\t\t(actionResponse).body.value.insuranceCompany.identifier,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\tconst transactionInsuranceCompanyName: string =\r\n\t\t\t(actionResponse).body.value.insuranceCompany.name;\r\n\r\n\t\tthis.transactionInsuranceCompany =\r\n\t\t\tinsuranceCompanies.find(\r\n\t\t\t\tcompany =>\r\n\t\t\t\t\tcompany.id === transactionInsuranceCompanyId\r\n\t\t\t\t\t\t|| company.data?.name?.legalName ===\r\n\t\t\t\t\t\t\ttransactionInsuranceCompanyName);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.transactionInsuranceCompany)\r\n\t\t\t\t&& claimParentId !== this.transactionInsuranceCompany.id)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany;\r\n\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.assignChild(\r\n\t\t\t\t\tthis.transactionInsuranceCompany.id,\r\n\t\t\t\t\tthis.claimId);\r\n\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.unAssignChild(\r\n\t\t\t\t\tthis.claimParentId,\r\n\t\t\t\t\tthis.claimId);\r\n\r\n\t\t\tthis.insuranceCompanyData =\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: this.transactionInsuranceCompany.data.name.legalName,\r\n\t\t\t\t\tvalue: this.transactionInsuranceCompany.id\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.insuranceCompanyData;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the claim summary dashboard the claim id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The claim entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate async navigateToClaimSummary(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof VerifyCoverageClaimComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.insuranceCompanyId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tplaceholder: 'Select an Option',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\tthis.insuranceCompanyData\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * for claim based business logic.\r\n *\r\n * @export\r\n * @class ClaimConstants\r\n */\r\nexport class ClaimConstants\r\n{\r\n\t/**\r\n\t * Gets or sets the set of claims\r\n\t * entity types available in this module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly claimEntityTypes:\r\n\t{\r\n\t\tclaim: string;\r\n\t\tnoteClaim: string;\r\n\t\tclaimPolicy: string;\r\n\t\tclaimPayment: string;\r\n\t\tclaimProduct: string;\r\n\t} = {\r\n\t\t\tclaim: 'Claim',\r\n\t\t\tnoteClaim: 'Note.Claim',\r\n\t\t\tclaimPolicy: 'ClaimPolicy',\r\n\t\t\tclaimPayment: 'ClaimPayment',\r\n\t\t\tclaimProduct: 'ClaimProduct'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of claims\r\n\t * entity type groups available in this module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly claimEntityTypeGroups:\r\n\t{\r\n\t\tclaims: string;\r\n\t\tnoteClaims: string;\r\n\t\tclaimPolicies: string;\r\n\t\tclaimPayments: string;\r\n\t\tclaimProducts: string;\r\n\t} = {\r\n\t\t\tclaims: 'Claims',\r\n\t\t\tnoteClaims: 'Note.Claims',\r\n\t\t\tclaimPolicies: 'ClaimPolicies',\r\n\t\t\tclaimPayments: 'ClaimPayments',\r\n\t\t\tclaimProducts: 'ClaimProducts'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of common properties found in the claim module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly commonProperties:\r\n\t{\r\n\t\tclaimNumber: string;\r\n\t} = {\r\n\t\t\tclaimNumber: 'claimNumber'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of claims service provider entity types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly serviceProviderEntityTypes:\r\n\t{\r\n\t\tinsuranceCompany: string;\r\n\t\tadjustingCompany: string;\r\n\t\tvendorCompany: string;\r\n\t\tthirdPartyAdministrator: string;\r\n\t} = {\r\n\t\t\tinsuranceCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes\r\n\t\t\t\t\t.insuranceCompany,\r\n\t\t\tadjustingCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes\r\n\t\t\t\t\t.independentAdjustingCompany,\r\n\t\t\tvendorCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes\r\n\t\t\t\t\t.claimsVendor,\r\n\t\t\tthirdPartyAdministrator:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes\r\n\t\t\t\t\t.thirdPartyAdministrator,\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of claims service provider entity type groups.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly serviceProviderEntityTypeGroups:\r\n\t{\r\n\t\tinsuranceCompany: string;\r\n\t\tadjustingCompany: string;\r\n\t\tvendorCompany: string;\r\n\t\tthirdPartyAdministrator: string;\r\n\t} = {\r\n\t\t\tinsuranceCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompanies,\r\n\t\t\tadjustingCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t.independentAdjustingCompanies,\r\n\t\t\tvendorCompany:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t.claimsVendors,\r\n\t\t\tthirdPartyAdministrator:\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t.thirdPartyAdministrators,\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of key activities.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly keyActivities:\r\n\t{\r\n\t\tclaimOwnerAssigned: string;\r\n\t\texposureAdded: string;\r\n\t\texposureClosed: string;\r\n\t\texposureReopened: string;\r\n\t\tpayment: string;\r\n\t} = {\r\n\t\t\tclaimOwnerAssigned: 'Claim Owner Assigned',\r\n\t\t\texposureAdded: 'Exposure Added',\r\n\t\t\texposureClosed: 'Exposure Closed',\r\n\t\t\texposureReopened: 'Exposure Reopened',\r\n\t\t\tpayment: 'Payment'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of claims ledger entity types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly ledgerEntityTypes:\r\n\t{\r\n\t\tledger: string;\r\n\t\tledgerTransactionClaim: string;\r\n\t} = {\r\n\t\t\tledger: 'Ledger',\r\n\t\t\tledgerTransactionClaim: 'LedgerTransaction.Claim'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of claims ledger entity type groups.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly ledgerEntityTypeGroups:\r\n\t{\r\n\t\tledgers: string;\r\n\t\tledgerTransactionClaims: string;\r\n\t} = {\r\n\t\t\tledgers: 'Ledgers',\r\n\t\t\tledgerTransactionClaims: 'LedgerTransaction.Claims'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the ledger transction claim types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly ledgerTransactionClaimTypes:\r\n\t{\r\n\t\tloss: string;\r\n\t\tadjustingAndOther: string;\r\n\t\tdefenseAndCostContainment: string;\r\n\t} = {\r\n\t\t\tloss: 'Loss',\r\n\t\t\tadjustingAndOther: 'AdjustingAndOther',\r\n\t\t\tdefenseAndCostContainment: 'DefenseAndCostContainment'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available claims specific workflow actions.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly workflowActions:\r\n\t{\r\n\t\taddExposure: string;\r\n\t\tadjustReserves: string;\r\n\t\tcreateClaim: string;\r\n\t\tverifyCoverage: string;\r\n\t\tmanageExposureParties: string;\r\n\t\tmanageAdditionalPayees: string;\r\n\t\trejectClaimPayment: string;\r\n\t\tapproveClaimPayment: string;\r\n\t\tcloseClaimExposure: string;\r\n\t\treopenClaimExposure: string;\r\n\t\tcloseClaim: string;\r\n\t\treopenClaim: string;\r\n\t\tassignClaimOwner: string;\r\n\t\tmanageClaimant: string;\r\n\t\tmanageAdjuster: string;\r\n\t\tmanageVendor: string;\r\n\t} = {\r\n\t\t\taddExposure: 'AddExposure',\r\n\t\t\tadjustReserves: 'AdjustReserves',\r\n\t\t\tcreateClaim: 'CreateClaim',\r\n\t\t\tverifyCoverage: 'VerifyCoverage',\r\n\t\t\tmanageExposureParties: 'ManageExposureParties',\r\n\t\t\tmanageAdditionalPayees: 'ManageAdditionalPayees',\r\n\t\t\trejectClaimPayment:'RejectClaimPayment',\r\n\t\t\tapproveClaimPayment: 'ApproveClaimPayment',\r\n\t\t\tcloseClaimExposure: 'CloseClaimExposure',\r\n\t\t\treopenClaimExposure: 'ReopenClaimExposure',\r\n\t\t\tcloseClaim: 'CloseClaim',\r\n\t\t\treopenClaim: 'ReopenClaim',\r\n\t\t\tassignClaimOwner: 'AssignClaimOwner',\r\n\t\t\tmanageClaimant: 'ManageClaimant',\r\n\t\t\tmanageAdjuster: 'ManageAdjuster',\r\n\t\t\tmanageVendor: 'ManageVendor'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the entity type groups used in the claims module.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly claimsModuleEntityTypeGroups: string[] =\r\n\t\t[\r\n\t\t\tthis.claimEntityTypeGroups.claims,\r\n\t\t\tthis.claimEntityTypeGroups.claimPolicies,\r\n\t\t\tthis.claimEntityTypeGroups.claimPayments,\r\n\t\t\tthis.claimEntityTypeGroups.noteClaims\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the reason types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClaimConstants\r\n\t */\r\n\tpublic static readonly reasonType:\r\n\t{\r\n\t\topen: string;\r\n\t\tclose: string;\r\n\t} = {\r\n\t\t\topen: 'Open',\r\n\t\t\tclose: 'Close'\r\n\t\t};\r\n}","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\tNo Data\r\n\t\t
\r\n\t
\r\n\t
0\">\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tAdditional Payees\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{payeeIndex + 1}}. {{payeeName}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'claim-payment-additional-payees',\r\n\ttemplateUrl: './claim-payment-additional-payees.component.html',\r\n\tstyleUrls: [\r\n\t\t'./claim-payment-additional-payees.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a claim payment additional payees.\r\n *\r\n * @export\r\n * @class ClaimPaymentAdditionalPayeesComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class ClaimPaymentAdditionalPayeesComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an claim payment additional payees\r\n\t * component.\r\n\t *\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic claimPaymentInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the additional payee names.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic additionalPayeeNames: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClaimPaymentAdditionalPayeesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimPaymentId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tthis.claimPaymentInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimPaymentId);\r\n\r\n\t\tconst additionalPayees: any =\r\n\t\t\tthis.claimPaymentInstance.data?.additionalPayees;\r\n\r\n\t\tfor (const payee of additionalPayees)\r\n\t\t{\r\n\t\t\tthis.additionalPayeeNames.push(payee?.name);\r\n\t\t}\r\n\r\n\t\tthis.loading = false;\r\n\t\t(this.context.source).finishedLoading?.emit();\r\n\t}\r\n}","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tNo Data\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tPayee Information\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tName: {{payeeName}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tMailing Address: {{payeeAddress}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'claim-payment-payee',\r\n\ttemplateUrl: './claim-payment-payee.component.html',\r\n\tstyleUrls: [\r\n\t\t'./claim-payment-payee.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a claim payment payee.\r\n *\r\n * @export\r\n * @class ClaimPaymentPayeeComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class ClaimPaymentPayeeComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an claim payment payee\r\n\t * component.\r\n\t *\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic claimPaymentInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the claim payment id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic claimPaymentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the payee name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic payeeName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the payee address.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic payeeAddress: string;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClaimPaymentPayeeComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.claimPaymentId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.activeMenuItem\r\n\t\t\t\t.currentData.data.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tthis.claimPaymentInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(this.claimPaymentId);\r\n\r\n\t\tthis.payeeName =\r\n\t\t\tthis.claimPaymentInstance.data?.payee?.name;\r\n\r\n\t\tthis.payeeAddress =\r\n\t\t\tStringHelper.toAddressString(\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address?.address,\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address?.city,\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address?.state,\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address?.postalCode,\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address\r\n\t\t\t\t\t?.principalSubdivision,\r\n\t\t\t\tthis.claimPaymentInstance.data?.payee?.address?.country);\r\n\r\n\t\tthis.loading = false;\r\n\t\t(this.context.source).finishedLoading?.emit();\r\n\t}\r\n}","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tNo Data\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tOutstanding Reserves\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tLoss:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{loss | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tAO:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{adjustingAndOther | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tDCC:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{defenseAndCostContainment | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent, Input, OnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'exposure-outstanding-reserves',\r\n\ttemplateUrl: './exposure-outstanding-reserves.component.html',\r\n\tstyleUrls: [\r\n\t\t'./exposure-outstanding-reserves.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an exposure oustanding\r\n * reserves component.\r\n *\r\n * @export\r\n * @class ExposureOutstandingReservesComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class ExposureOutstandingReservesComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an exposure oustanding reserves\r\n\t * component.\r\n\t *\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic entityInstanceData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic entityInstanceId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic ledger: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic ledgerTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic lossTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the ao transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic aoTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the dcc transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic dccTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic loss: number;\r\n\r\n\t/**\r\n\t * Gets or sets the adjusting and other amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic adjustingAndOther: number;\r\n\r\n\t/**\r\n\t * Gets or sets the defense and cost containment amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic defenseAndCostContainment: number;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the ledger transaction category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tprivate readonly ledgerTransactionCategory: string = 'Expense';\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityInstanceId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.id;\r\n\t\tthis.entityInstanceData =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.data;\r\n\r\n\t\tconst exposureIndex: number =\r\n\t\t\t(this.context.source).\r\n\t\t\t\tfield.parent.index;\r\n\r\n\t\tconst exposureResourceIdentifier: string =\r\n\t\t\tthis.entityInstanceData.exposures[exposureIndex]\r\n\t\t\t\t.resourceIdentifier;\r\n\r\n\t\tawait this.getLedgerData(exposureResourceIdentifier);\r\n\t\tawait this.setDisplayData();\r\n\r\n\t\tthis.loading = false;\r\n\t\t(this.context.source).finishedLoading?.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * This gets the necessary ledger data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} exposureResourceIdentifier\r\n\t * The claim exposure resource identifier.\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic async getLedgerData(\r\n\t\texposureResourceIdentifier: string)\r\n\t{\r\n\t\tthis.ledger =\r\n\t\t\tawait this.claimsService.getLedger(\r\n\t\t\t\tthis.entityInstanceId);\r\n\r\n\t\tthis.ledgerTransactions =\r\n\t\t\tawait this.claimsService.getLedgerTransactions(\r\n\t\t\t\tthis.ledger.id,\r\n\t\t\t\t'metadata.exposureId eq \"'\r\n\t\t\t\t\t\t+ exposureResourceIdentifier + '\"');\r\n\t}\r\n\r\n\t/**\r\n\t * This sets the data to be displayed.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposureOutstandingReservesComponent\r\n\t */\r\n\tpublic async setDisplayData()\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(this.ledgerTransactions))\r\n\t\t{\r\n\t\t\tthis.lossTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes.loss\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\r\n\t\t\tthis.aoTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.adjustingAndOther\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\r\n\t\t\tthis.dccTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.defenseAndCostContainment\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\t\t}\r\n\r\n\t\tthis.loss =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.lossTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.lossTransactions)\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.adjustingAndOther =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.aoTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.aoTransactions)\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.defenseAndCostContainment =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.dccTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.dccTransactions)\r\n\t\t\t\t: 0;\r\n\t}\r\n}","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tNo Data\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tPayments\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tLoss:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{loss | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tAO:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{adjustingAndOther | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tDCC:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{defenseAndCostContainment | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'exposure-payments',\r\n\ttemplateUrl: './exposure-payments.component.html',\r\n\tstyleUrls: [\r\n\t\t'./exposure-payments.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an exposure payments component.\r\n *\r\n * @export\r\n * @class ExposurePaymentsComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class ExposurePaymentsComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an exposure payments\r\n\t * component.\r\n\t *\r\n\t * @param {ClaisService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic entityInstanceData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic entityInstanceId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic ledger: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic ledgerTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic lossTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the ao transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic aoTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the dcc transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic dccTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic loss: number;\r\n\r\n\t/**\r\n\t * Gets or sets the adjusting and other amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic adjustingAndOther: number;\r\n\r\n\t/**\r\n\t * Gets or sets the defense and cost containment amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic defenseAndCostContainment: number;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityInstanceId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.id;\r\n\t\tthis.entityInstanceData =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.data;\r\n\r\n\t\tconst exposureIndex: number =\r\n\t\t\t(this.context.source).\r\n\t\t\t\tfield.parent.index;\r\n\r\n\t\tconst exposureResourceIdentifier: string =\r\n\t\t\tthis.entityInstanceData.exposures[exposureIndex]\r\n\t\t\t\t.resourceIdentifier;\r\n\r\n\t\tawait this.getLedgerData(exposureResourceIdentifier);\r\n\t\tawait this.setDisplayData();\r\n\r\n\t\tthis.loading = false;\r\n\t\t(this.context.source).finishedLoading?.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * This gets the necessary ledger data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} exposureResourceIdentifier\r\n\t * The claim exposure resource identifier.\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic async getLedgerData(\r\n\t\texposureResourceIdentifier: string)\r\n\t{\r\n\t\tthis.ledger =\r\n\t\t\tawait this.claimsService.getLedger(\r\n\t\t\t\tthis.entityInstanceId);\r\n\r\n\t\tthis.ledgerTransactions =\r\n\t\t\tawait this.claimsService.getLedgerTransactions(\r\n\t\t\t\tthis.ledger.id,\r\n\t\t\t\t'metadata.exposureId eq \"'\r\n\t\t\t\t\t\t+ exposureResourceIdentifier + '\"');\r\n\t}\r\n\r\n\t/**\r\n\t * This sets the data to be displayed.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposurePaymentsComponent\r\n\t */\r\n\tpublic async setDisplayData()\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(this.ledgerTransactions))\r\n\t\t{\r\n\t\t\tthis.lossTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes.loss\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.metadata?.claimPaymentId !=\r\n\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\tthis.aoTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.adjustingAndOther\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.metadata?.claimPaymentId !=\r\n\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\tthis.dccTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.defenseAndCostContainment\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.metadata?.claimPaymentId !=\r\n\t\t\t\t\t\t\tnull);\r\n\t\t}\r\n\r\n\t\tthis.loss =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.lossTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.lossTransactions) * -1\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.adjustingAndOther =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.aoTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.aoTransactions) * -1\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.defenseAndCostContainment =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.dccTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.dccTransactions) * -1\r\n\t\t\t\t: 0;\r\n\t}\r\n}","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tNo Data\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tRecoveries\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tLoss:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{loss | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tAO:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{adjustingAndOther | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tDCC:\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{defenseAndCostContainment | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'exposure-recoveries',\r\n\ttemplateUrl: './exposure-recoveries.component.html',\r\n\tstyleUrls: [\r\n\t\t'./exposure-recoveries.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an exposure recoveries component.\r\n *\r\n * @export\r\n * @class ExposureRecoveriesComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class ExposureRecoveriesComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an exposure recoveries\r\n\t * component.\r\n\t *\r\n\t * @param {ClaisService} claimsService\r\n\t * The claims service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic entityInstanceData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic entityInstanceId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic ledger: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic ledgerTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic lossTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the ao transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic aoTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the dcc transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic dccTransactions: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets or sets the loss amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic loss: number;\r\n\r\n\t/**\r\n\t * Gets or sets the adjusting and Other amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic adjustingAndOther: number;\r\n\r\n\t/**\r\n\t * Gets or sets the defense and cost containment amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic defenseAndCostContainment: number;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the ledger transaction category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tprivate readonly ledgerTransactionCategory: string = 'Recovery';\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityInstanceId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.id;\r\n\t\tthis.entityInstanceData =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.data;\r\n\r\n\t\tconst exposureIndex: number =\r\n\t\t\t(this.context.source).\r\n\t\t\t\tfield.parent.index;\r\n\r\n\t\tconst exposureResourceIdentifier: string =\r\n\t\t\tthis.entityInstanceData.exposures[exposureIndex]\r\n\t\t\t\t.resourceIdentifier;\r\n\r\n\t\tawait this.getLedgerData(exposureResourceIdentifier);\r\n\t\tawait this.setDisplayData();\r\n\r\n\t\tthis.loading = false;\r\n\t\t(this.context.source).finishedLoading?.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * This gets the necessary ledger data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} exposureResourceIdentifier\r\n\t * The claim exposure resource identifier.\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic async getLedgerData(\r\n\t\texposureResourceIdentifier: string)\r\n\t{\r\n\t\tthis.ledger =\r\n\t\t\tawait this.claimsService.getLedger(\r\n\t\t\t\tthis.entityInstanceId);\r\n\r\n\t\tthis.ledgerTransactions =\r\n\t\t\tawait this.claimsService.getLedgerTransactions(\r\n\t\t\t\tthis.ledger.id,\r\n\t\t\t\t'metadata.exposureId eq \"'\r\n\t\t\t\t\t\t+ exposureResourceIdentifier + '\"');\r\n\t}\r\n\r\n\t/**\r\n\t * This sets the data to be displayed.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExposureRecoveriesComponent\r\n\t */\r\n\tpublic async setDisplayData()\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(this.ledgerTransactions))\r\n\t\t{\r\n\t\t\tthis.lossTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes.loss\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\r\n\t\t\tthis.aoTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.adjustingAndOther\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\r\n\t\t\tthis.dccTransactions = this.ledgerTransactions.filter(\r\n\t\t\t\t(ledgerTransaction) =>\r\n\t\t\t\t\tledgerTransaction.data?.type ===\r\n\t\t\t\t\t\tClaimConstants.ledgerTransactionClaimTypes\r\n\t\t\t\t\t\t\t.defenseAndCostContainment\r\n\t\t\t\t\t\t&& ledgerTransaction.data?.category ===\r\n\t\t\t\t\t\t\tthis.ledgerTransactionCategory);\r\n\t\t}\r\n\r\n\t\tthis.loss =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.lossTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.lossTransactions)\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.adjustingAndOther =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.aoTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.aoTransactions)\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.defenseAndCostContainment =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(this.dccTransactions)\r\n\t\t\t\t? this.claimsService.sumLedgerTransactions(\r\n\t\t\t\t\tthis.dccTransactions)\r\n\t\t\t\t: 0;\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tThis view is not currently available.\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\tNo results found.\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n@Component({\r\n\tselector: 'app-policy-details',\r\n\ttemplateUrl: './policy-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./policy-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level policy details handling.\r\n *\r\n * @export\r\n * @class PolicyDetailsComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class PolicyDetailsComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the policy details component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @param {Location} resolver\r\n\t * The resolver object.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic isOwnershipAllowed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the access denied url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic resources: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the client message if insufficient resources exist.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the menu items.\r\n\t *\r\n\t * @type {ISecureMenuItem[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic tabItems: ISecureMenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the child entity type filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic wildcardChildFilter: string\r\n\t\t= ClaimConstants.claimEntityTypes.claimPolicy;\r\n\r\n\t/**\r\n\t * Sets the summary tab string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic readonly summaryTab: string = 'summary';\r\n\r\n\t/**\r\n\t * Sets the coverages tab string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic readonly coveragesTab: string = 'coverages';\r\n\r\n\t/**\r\n\t * Sets the interests tab string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic readonly interestsTab: string = 'interests';\r\n\r\n\t/**\r\n\t * Sets the incidents tab string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic readonly incidentsTab: string = 'incidents';\r\n\r\n\t/**\r\n\t * Sets the tab to display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic tab: string = this.summaryTab;\r\n\r\n\t/**\r\n\t * Sets the loading boolean.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the summary layout used in implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayoutSummary: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the coverages layout used in implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayoutCoverages: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the interests layout used in implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayoutInterests: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the incidents layout used in implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayoutIncidents: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the claim policy instance data.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate claimPolicy: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the parent policy instance data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate parentPolicy: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ui-g-12 div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly uig12ClassDiv: string = '
';\r\n\r\n\t/**\r\n\t * Gets or sets the summary data labels div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly dataLabelsSummaryClassDiv: string =\r\n\t\t'
';\r\n\r\n\t/**\r\n\t * Gets or sets the summary data set div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly dataSetSummaryClassDiv: string =\r\n\t\t'
';\r\n\r\n\t/**\r\n\t * Gets or sets the coverages data labels div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly dataLabelsCoveragesClassDiv: string =\r\n\t\t'
';\r\n\r\n\t/**\r\n\t * Gets or sets the coverages data set div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly dataSetCoveragesClassDiv: string =\r\n\t\t'
';\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis text div and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly ellipsisClassDiv: string =\r\n\t\t'
';\r\n\r\n\t/**\r\n\t * Gets or sets the classes for the clickable policy number link.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly clickablePolicyNumberClass: string =\r\n\t\t'banner-text-link text-link';\r\n\r\n\t/**\r\n\t * Gets or sets empty span tag.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly emptyClassSpan: string =\r\n\t\t'';\r\n\r\n\t/**\r\n\t * Gets or sets the html div closing.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly divEnd: string = '
';\r\n\r\n\t/**\r\n\t * Gets or sets the html span closing.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly spanEnd: string = '';\r\n\r\n\t/**\r\n\t * Gets or sets the markdown table separator.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly tableSeparator: string = '|-------|-------|\\n';\r\n\r\n\t/**\r\n\t * Gets or sets the markdown asset table separator.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate readonly assetTableSeparator: string = '|------|------|\\n';\r\n\r\n\t/**\r\n\t * Gets or sets the clickable-policy-number span and class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate get clickableLinkClassSpan(): string {\r\n\t\treturn ``;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\tClaimConstants.claimEntityTypes.claim\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to at least one claim '\r\n\t\t\t\t\t+ 'entity type and version.';\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tthis.setTabItems();\r\n\r\n\t\tawait this.setClaimPolicyData();\r\n\r\n\t\tawait this.setParentPolicy();\r\n\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(this.claimPolicy[0]))\r\n\t\t{\r\n\t\t\tawait this.performPostInitActions();\r\n\t\t}\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the view is valid.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean value representing if the view is valid.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic isValid(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNull(this.context?.source)\r\n\t\t\t&& (this.context.source instanceof EntityInstanceComponent);\r\n\t}\r\n\r\n\t/**\r\n\t* Implements the ownership guard interface.\r\n\t* This will calculate drawer ownership permissions.\r\n\t*\r\n\t* @async\r\n\t* @returns {Promise}\r\n\t* A value signifying whether or not access is allowed to this drawer.\r\n\t* @memberof PolicyDetailsComponent\r\n\t*/\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst claimEntityTypes: IEntityType[] =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.group.indexOf(\r\n\t\t\t\t\t\t\tClaimConstants.claimEntityTypes\r\n\t\t\t\t\t\t\t\t.claim) !== -1);\r\n\r\n\t\tif (claimEntityTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tclaimEntityTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles click event and calls the navigate to policy if\r\n\t * the correct link is clicked.\r\n\t *\r\n\t * @async\r\n\t * @param {MouseEvent} event\r\n\t * The mouse event used to capture click information.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tpublic async handleClick(\r\n\t\tevent: MouseEvent): Promise\r\n\t{\r\n\t\tconst target = event.target as HTMLElement;\r\n\t\tif (target.classList.contains('banner-text-link'))\r\n\t\t{\r\n\t\t\tawait this.navigateToPolicy(\r\n\t\t\t\tthis.parentPolicy.id,\r\n\t\t\t\tthis.parentPolicy.entityType);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle navigating to the parent policy.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The policy entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async navigateToPolicy(\r\n\t\tentityId: number,\r\n\t\tgroup: string): Promise\r\n\t{\r\n\t\tif(!AnyHelper.isNull(this.parentPolicy))\r\n\t\t{\r\n\t\t\tthis.router.navigate(\r\n\t\t\t\t[\r\n\t\t\t\t\t`${group}/entities`,\r\n\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t.policies,\r\n\t\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\t\tentityId\r\n\t\t\t\t],\r\n\t\t\t\t{\r\n\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles setting the claims parent policy data for navigation.\r\n\t *\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setParentPolicy(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst claimId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityInstance.id;\r\n\r\n\t\tconst policy =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t.policies);\r\n\r\n\t\tthis.parentPolicy = policy[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Checks user permissions and handles enabling/disabling\r\n\t * clickable policy number\r\n\t *\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate hasPermission(): boolean\r\n\t{\r\n\t\tconst currentUser: IUser =\r\n\t\t\tthis.resolver.resolveCurrentUser();\r\n\r\n\t\tconst allowedGroups =\r\n\t\t\t[\r\n\t\t\t\tInsuranceConstants.securityGroups.underwriterManager,\r\n\t\t\t\tInsuranceConstants.securityGroups.underwriter,\r\n\t\t\t\tInsuranceConstants.securityGroups.companyCSR\r\n\t\t\t];\r\n\r\n\t\treturn SecurityHelper\r\n\t\t\t.membershipExists(\r\n\t\t\t\tallowedGroups,\r\n\t\t\t\tcurrentUser);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles setting the tabItems with their corresponding\r\n\t * icons and commands.\r\n\t *\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate setTabItems(): void\r\n\t{\r\n\t\tthis.tabItems = SecurityHelper.scrubMenuItems(\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-file-text',\r\n\t\t\t\t\tid: this.summaryTab,\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read,\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.tab = this.summaryTab;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-umbrella',\r\n\t\t\t\t\tid: this.coveragesTab,\r\n\t\t\t\t\tsecurityRightPath: '$.data.coverages',\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Data,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read,\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.tab = this.coveragesTab;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-user',\r\n\t\t\t\t\tid: this.interestsTab,\r\n\t\t\t\t\tsecurityRightPath: '$.data.interests',\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Data,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read,\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.tab = this.interestsTab;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-fire',\r\n\t\t\t\t\tid: this.incidentsTab,\r\n\t\t\t\t\tsecurityRightPath: '$.data.incidents',\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Data,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read,\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.tab = this.incidentsTab;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tthis.wildcardChildFilter,\r\n\t\t\tthis.securityDefinitions);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles setting the claimPolicy data to be displayed\r\n\t * in the drawer.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setClaimPolicyData(): Promise\r\n\t{\r\n\t\tconst claimId =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityInstance.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tthis.claimPolicy =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claimPolicies);\r\n\r\n\t\tthis.context.data.claimPolicy = this.claimPolicy[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.setSummaryLayout();\r\n\t\tthis.setCoveragesLayout();\r\n\t\tthis.setInterestsLayout();\r\n\t\tthis.setIncidentsLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Summary layout.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setSummaryLayout(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayoutSummary =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Summary'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst effectiveDate: string =\r\n\t\t\t\t\t\t\t\tDateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.data?.term?.effectiveDate\r\n\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty),\r\n\t\t\t\t\t\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\r\n\t\t\t\t\t\t\tconst expirationDate: string =\r\n\t\t\t\t\t\t\t\tDateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.data?.term?.expirationDate\r\n\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty),\r\n\t\t\t\t\t\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\r\n\t\t\t\t\t\t\tconst policyNumberClassSpan =\r\n\t\t\t\t\t\t\t\tthis.hasPermission()\r\n\t\t\t\t\t\t\t\t\t&& !AnyHelper.isNull(this.parentPolicy)\r\n\t\t\t\t\t\t\t\t\t\t&& field.model.data?.system ===\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.systems.nautix\r\n\t\t\t\t\t\t\t\t\t? this.clickableLinkClassSpan\r\n\t\t\t\t\t\t\t\t\t: this.emptyClassSpan;\r\n\r\n\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t+ this.dataLabelsSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Source'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Policy #'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Transaction #'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Term'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Effective Date'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Expiration Date'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.dataSetSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.system\r\n\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ policyNumberClassSpan\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.policyNumber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t\t+ this.spanEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.transactionNumber\r\n\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.term?.number ?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ effectiveDate\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ expirationDate\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Insurance Company'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst insuranceCompanyAddress: string =\r\n\t\t\t\t\t\t\t\tStringHelper.toAddressString(\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.address,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.city,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.state,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.postalCode);\r\n\r\n\t\t\t\t\t\t\tconst insuranceCompanyPhone: string =\r\n\t\t\t\t\t\t\t\tfield.model.data?.insuranceCompany?.phones\r\n\t\t\t\t\t\t\t\t\t?.length > 0\r\n\t\t\t\t\t\t\t\t\t? field.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t?.phones[0]?.number\r\n\t\t\t\t\t\t\t\t\t\t|| AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t+ this.dataLabelsSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Name'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Address'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Phone'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.dataSetSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.insuranceCompany\r\n\t\t\t\t\t\t\t\t\t\t\t\t?.name?.legalName ?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ insuranceCompanyAddress\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ insuranceCompanyPhone\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Agency'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst agencyAddress: string =\r\n\t\t\t\t\t\t\t\tStringHelper.toAddressString(\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.agency\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.address,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.agency\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.city,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.agency\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.state,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.agency\r\n\t\t\t\t\t\t\t\t\t\t?.addresses[0]?.postalCode);\r\n\r\n\t\t\t\t\t\t\tconst agencyPhone: string =\r\n\t\t\t\t\t\t\t\tfield.model.data?.agency?.phones?.length > 0\r\n\t\t\t\t\t\t\t\t\t? field.model.data?.agency?.phones[0]\r\n\t\t\t\t\t\t\t\t\t\t?.number || AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t+ this.dataLabelsSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Name'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Address'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Phone'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.dataSetSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ (field.model.data?.agency\r\n\t\t\t\t\t\t\t\t\t\t\t\t?.name?.legalName ?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ agencyAddress\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ agencyPhone\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Producer'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst producerName: string =\r\n\t\t\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.producer\r\n\t\t\t\t\t\t\t\t\t\t?.name?.firstName,\r\n\t\t\t\t\t\t\t\t\tfield.model.data?.producer\r\n\t\t\t\t\t\t\t\t\t\t?.name?.lastName);\r\n\r\n\t\t\t\t\t\t\tconst producerPhone: string =\r\n\t\t\t\t\t\t\t\tfield.model.data?.producer?.phones?.length > 0\r\n\t\t\t\t\t\t\t\t\t? field.model.data?.producer?.phones[0]\r\n\t\t\t\t\t\t\t\t\t\t?.number || AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t+ this.dataLabelsSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Name'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ 'Phone'\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.dataSetSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ producerName\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t+ producerPhone\r\n\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Coverages layout.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setCoveragesLayout(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayoutCoverages =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Policy'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.claimPolicy[0].data.coverages))\r\n\t\t{\r\n\t\t\tthis.dynamicFormlyLayoutCoverages.push(\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'coverages',\r\n\t\t\t\t\t'|Coverages||\\n'));\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.claimPolicy[0].data.deductibles))\r\n\t\t{\r\n\t\t\tthis.dynamicFormlyLayoutCoverages.push(\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'deductibles',\r\n\t\t\t\t\t'|Deductibles||\\n'));\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.claimPolicy[0].data.modifiers))\r\n\t\t{\r\n\t\t\tthis.dynamicFormlyLayoutCoverages.push(\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'modifiers',\r\n\t\t\t\t\t'|Modifiers||\\n'));\r\n\t\t}\r\n\r\n\t\tif (this.dynamicFormlyLayoutCoverages.length === 1)\r\n\t\t{\r\n\t\t\tthis.dynamicFormlyLayoutCoverages.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: 'No results found.',\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: true\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tawait this.setAssetsLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the layout for asset-related fields in the Coverages section.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setAssetsLayout(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayoutCoverages.push(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.assets',\r\n\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t.customControls.customRepeater,\r\n\t\t\t\tdefaultValue: [],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Assets',\r\n\t\t\t\t\tsingular: 'Asset',\r\n\t\t\t\t\ttitleFormat: '{type}',\r\n\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t},\r\n\t\t\t\tfieldArray: {\r\n\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'type',\r\n\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Type'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tconst assetFieldConfig =\r\n\t\t\tthis.dynamicFormlyLayoutCoverages.find(\r\n\t\t\t\t(fieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t\tfieldConfig.key === 'data.assets');\r\n\r\n\t\tconst assets =\r\n\t\t\tthis.claimPolicy[0].data.assets;\r\n\t\tassets.forEach(\r\n\t\t\tasync (asset: any) =>\r\n\t\t\t{\r\n\t\t\t\tawait this.addAssetCoverages(\r\n\t\t\t\t\tasset,\r\n\t\t\t\t\tassetFieldConfig);\r\n\t\t\t\tawait this.addAssetDeductibles(\r\n\t\t\t\t\tasset,\r\n\t\t\t\t\tassetFieldConfig);\r\n\t\t\t\tawait this.addAssetModifiers(\r\n\t\t\t\t\tasset,\r\n\t\t\t\t\tassetFieldConfig);\r\n\r\n\t\t\t\tif ((assetFieldConfig.fieldArray).fieldGroup.length === 1)\r\n\t\t\t\t{\r\n\t\t\t\t\t(assetFieldConfig.fieldArray).fieldGroup.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tcontent: 'No results found.',\r\n\t\t\t\t\t\t\t\tuseMarkdown: false,\r\n\t\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\t\tcenterText: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the coverages to the asset section for the dynamic Formly layout.\r\n\t *\r\n\t * @async\r\n\t * @param {any} asset\r\n\t * The asset object containing coverage information.\r\n\t * @param {FormlyFieldConfig} assetFieldConfig\r\n\t * The Formly field configuration for assets.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async addAssetCoverages(\r\n\t\tasset: any,\r\n\t\tassetFieldConfig: FormlyFieldConfig)\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(asset.coverages))\r\n\t\t{\r\n\t\t\t(assetFieldConfig.fieldArray).fieldGroup.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'coverages',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Asset Coverages',\r\n\t\t\t\t\t\tsingular: 'Coverage',\r\n\t\t\t\t\t\ttitleFormat: '{name}',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Coverage'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'amount',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Amount'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'coverages',\r\n\t\t\t\t\t'|Coverages||\\n',\r\n\t\t\t\t\ttrue));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the deductibles to the asset section for the dynamic Formly layout.\r\n\t *\r\n\t * @async\r\n\t * @param {any} asset\r\n\t * The asset object containing coverage information.\r\n\t * @param {FormlyFieldConfig} assetFieldConfig\r\n\t * The Formly field configuration for assets.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async addAssetDeductibles(\r\n\t\tasset: any,\r\n\t\tassetFieldConfig: FormlyFieldConfig)\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(asset.deductibles))\r\n\t\t{\r\n\t\t\t(assetFieldConfig.fieldArray).fieldGroup.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'deductibles',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Asset Deductibles',\r\n\t\t\t\t\t\tsingular: 'Deductible',\r\n\t\t\t\t\t\ttitleFormat: '{name}',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Deductible'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'amount',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Amount'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'deductibles',\r\n\t\t\t\t\t'|Deductibles||\\n',\r\n\t\t\t\t\ttrue));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the modifiers to the asset section for the dynamic Formly layout.\r\n\t *\r\n\t * @async\r\n\t * @param {any} asset\r\n\t * The asset object containing coverage information.\r\n\t * @param {FormlyFieldConfig} assetFieldConfig\r\n\t * The Formly field configuration for assets.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async addAssetModifiers(\r\n\t\tasset: any,\r\n\t\tassetFieldConfig: FormlyFieldConfig)\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmptyArray(asset.modifiers))\r\n\t\t{\r\n\t\t\t(assetFieldConfig.fieldArray).fieldGroup.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'modifiers',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Asset Modifiers',\r\n\t\t\t\t\t\tsingular: 'Modifier',\r\n\t\t\t\t\t\ttitleFormat: '{name}',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Modifier'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'selection',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Selection'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tawait this.createMarkdownField(\r\n\t\t\t\t\t'modifiers',\r\n\t\t\t\t\t'|Modifiers||\\n',\r\n\t\t\t\t\ttrue));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a markdown field configuration for displaying a list of\r\n\t * coverages, deductibles, or modifiers in the Formly layout.\r\n\t *\r\n\t * @async\r\n\t * @param {string} key\r\n\t * The key representing the type of items.\r\n\t * @param {string} header\r\n\t * The markdown header to use for the field content.\r\n\t * @param {boolean} assetPath\r\n\t * Optional boolean to identify if this is asset related data (defaulted to false - policy level).\r\n\t * @returns {Promise}\r\n\t * The Formly field configuration for the markdown display.\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async createMarkdownField(\r\n\t\tkey: string,\r\n\t\theader: string,\r\n\t\tassetPath: boolean = false): Promise\r\n\t{\r\n\t\treturn \r\n\t\t{\r\n\t\t\ttype: FormlyConstants\r\n\t\t\t\t.customControls\r\n\t\t\t\t.customTextDisplay,\r\n\t\t\tprops: {\r\n\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\tuseMarkdown: true,\r\n\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\tcenterText: false\r\n\t\t\t},\r\n\t\t\texpressions: {\r\n\t\t\t\t'props.content':\r\n\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet markdown =\r\n\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t+ '\\r\\r'\r\n\t\t\t\t\t\t\t+ header\r\n\t\t\t\t\t\t\t+ (assetPath\r\n\t\t\t\t\t\t\t\t? this.assetTableSeparator\r\n\t\t\t\t\t\t\t\t: this.tableSeparator);\r\n\r\n\t\t\t\t\t\tconst items = assetPath\r\n\t\t\t\t\t\t\t? field.model[key]\r\n\t\t\t\t\t\t\t: field.model.data[key];\r\n\r\n\t\t\t\t\t\titems.forEach(\r\n\t\t\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst itemName =\r\n\t\t\t\t\t\t\t\t\titem.name;\r\n\t\t\t\t\t\t\t\tconst itemValue =\r\n\t\t\t\t\t\t\t\t\tkey === 'modifiers'\r\n\t\t\t\t\t\t\t\t\t\t? StringHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.formatBooleanValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\titem.selection,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t\t\t\t\t\t: StringHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.numberToCurrency(\r\n\t\t\t\t\t\t\t\t\t\t\t\titem.amount ?? 0);\r\n\r\n\t\t\t\t\t\t\t\tmarkdown += `|${itemName}|${itemValue}|\\n`;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tmarkdown += '\\r\\r
';\r\n\r\n\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Interests layout.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setInterestsLayout(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayoutInterests =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.interests',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Interests',\r\n\t\t\t\t\t\tsingular: 'Interest',\r\n\t\t\t\t\t\ttitleFormat: '{type} - {name.firstName}'\r\n\t\t\t\t\t\t\t+ ' {name.lastName}',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'type',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Additional Insured',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'AdditionalInsured'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Additional Interest',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'AdditionalInterest'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Caregiver',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Caregiver'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Co-lessee',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'CoLessee'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Co-owner',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'CoOwner'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Co-signer',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'CoSigner'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Condo Association',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'CondoAssociation'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Estate',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Estate'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Executor',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Executor'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Friend',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Friend'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Irrevocable Trust',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'IrrevocableTrust'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Landlord',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Landlord'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'LLC',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'LLC'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Management Company',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'ManagementCompany'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Mortgagee',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Mortgagee'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Named Insured',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'NamedInsured'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Other Resident '\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'Of Household',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'OtherResidentOfHousehold'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Power Of Attorney',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'PowerOfAttorney'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Property Manager',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'PropertyManager'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Relative',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Relative'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Revocable Trust',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'RevocableTrust'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Roommate',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Roommate'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Signor',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Signor'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Third Party Designee',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'ThirdPartyDesignee'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Trustee',\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'Trustee'\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name.firstName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'First Name'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name.lastName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Last Name'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'phones[0].number',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Phone'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tconst interestName: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.name?.firstName,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.name?.lastName);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst interestPhone: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.phones)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.phones[0]?.number)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? field.model?.phones[0]?.number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.dataLabelsSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Name'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Phone'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.dataSetSummaryClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ interestName\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ interestPhone\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Incidents layout.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyDetailsComponent\r\n\t */\r\n\tprivate async setIncidentsLayout(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayoutIncidents =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.incidents',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Incidents',\r\n\t\t\t\t\t\tsingular: 'Incident',\r\n\t\t\t\t\t\ttitleFormat: '{description}',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Description'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'appliedTo',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customRepeater,\r\n\t\t\t\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Applied To',\r\n\t\t\t\t\t\t\t\t\tsingular: 'Applied',\r\n\t\t\t\t\t\t\t\t\ttitleFormat: '{scope}',\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tkey: 'scope',\r\n\t\t\t\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.customControls.input,\r\n\t\t\t\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: 'Description'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tconst occurrenceDate: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.occurrenceDate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? DateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model.occurrenceDate),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDateHelper.presetFormats\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.longDateFormat)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst reportedDate: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model?.reportedDate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? DateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model.reportedDate),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDateHelper.presetFormats\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.longDateFormat)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst lossAmount: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.lossAmount\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? StringHelper.numberToCurrency(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model.lossAmount)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst paidAmount: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.paidAmount\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? StringHelper.numberToCurrency(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.model.paidAmount)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst markdown: string =\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.dataLabelsCoveragesClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Type'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Source'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Status'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Occurrence Date'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Reported Date'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Loss Amount'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Paid Amount'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'Description'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.dataSetCoveragesClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ (field.model.type\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ (field.model.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ (field.model.status\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ occurrenceDate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ reportedDate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ lossAmount\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ paidAmount\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.ellipsisClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ (field.model.description\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ this.divEnd;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customTextDisplay,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlet markdown =\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uig12ClassDiv\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ '\\r\\r'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ '|Applied To|\\n'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ '|------|\\n';\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.appliedTo))\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.appliedTo.forEach(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(applied: any) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmarkdown +=\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'|'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ applied.scope\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '|\\n';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tmarkdown += '\\r\\r
';\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn markdown;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tUserService\r\n} from '@shared/services/user.service';\r\nimport {\r\n\tisArray\r\n} from 'lodash';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing a common interface to gather fully populated\r\n * claims information.\r\n *\r\n * @export\r\n * @class ClaimsService\r\n */\r\n@Injectable()\r\nexport class ClaimsService\r\n{\r\n\t/**\r\n\t * Creates an instance of an ClaimsService.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service for this component.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service for this component.\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The security group api service for this component.\r\n\t * @param {UserService} userService\r\n\t * The user service for this component.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic readonly entityService: EntityService,\r\n\t\tpublic readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic readonly insuranceService: InsuranceService,\r\n\t\tpublic readonly resolverService: ResolverService,\r\n\t\tpublic readonly securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic readonly userService: UserService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the id descending query used for the order by\r\n\t * in common entity queries.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tprivate readonly idDescendingQuery: string = 'Id desc';\r\n\r\n\t/**\r\n\t * Gets the Ledger instance data associated to the current claim\r\n\t * instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The Claim entity instance id.\r\n\t * @return {Promise}\r\n\t * The Ledger instance.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getLedger(\r\n\t\tclaimId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst ledgerInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tclaimId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tClaimConstants.ledgerEntityTypeGroups\r\n\t\t\t\t\t\t.ledgers);\r\n\r\n\t\treturn ledgerInstances[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the LedgerTransacion.Claim entity instances associated to\r\n\t * the current Ledger instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} ledgerId\r\n\t * The Ledger entity instance id.\r\n\t * @return {Promise}\r\n\t * The LedgerTransaction instances array.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getLedgerTransactions(\r\n\t\tledgerId: number,\r\n\t\tfilter: string = null): Promise\r\n\t{\r\n\t\tconst ledgerTransactionInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityService\r\n\t\t\t\t.getFullHierarchyDataSet(\r\n\t\t\t\t\tledgerId,\r\n\t\t\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgers,\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tClaimConstants.ledgerEntityTypeGroups\r\n\t\t\t\t\t\t.ledgerTransactionClaims);\r\n\r\n\t\treturn ledgerTransactionInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of ledger transactions, this will sum the amounts\r\n\t * and return the full calculated amount of the sent data set.\r\n\t *\r\n\t * @param {any[]} ledgerTransactions\r\n\t * The ledger transactions.\r\n\t * @returns {number}\r\n\t * The summed amounts of all of the transactions sent.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic sumLedgerTransactions(\r\n\t\tledgerTransactions: any[]): number\r\n\t{\r\n\t\treturn ledgerTransactions\r\n\t\t\t.reduce(\r\n\t\t\t\t(sum: number,\r\n\t\t\t\t\titem: any) =>\r\n\t\t\t\t\tsum\r\n\t\t\t\t\t\t+ item.data.amount,\r\n\t\t\t\t0);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a claims organization type, legal name, and a user's\r\n\t * first and last name, the data will be formatted for summary\r\n\t * display of data. Output is\r\n\t * \"type: legalName, userFirstName userLastName\"\r\n\t *\r\n\t * @param {string | []} organizationType\r\n\t * The organization type.\r\n\t * @param {string} organizationLegalName\r\n\t * The organization legal name.\r\n\t * @param {string} userFirstName\r\n\t * The user first name.\r\n\t * @param {string} userLastName\r\n\t * The user last name.\r\n\t * @returns {string}\r\n\t * The formatted summary data of the organization.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic formatClaimOrganizationData(\r\n\t\torganizationType: string | string[],\r\n\t\torganizationLegalName: string,\r\n\t\tuserFirstName: string,\r\n\t\tuserLastName: string): string\r\n\t{\r\n\t\tconst organizationTypeExists: boolean =\r\n\t\t\tisArray(organizationType)\r\n\t\t\t\t? !AnyHelper.isNullOrEmptyArray(organizationType)\r\n\t\t\t\t: !AnyHelper.isNullOrWhitespace(organizationType);\r\n\r\n\t\tconst formattedName =\r\n\t\t\tStringHelper.toNameString(\r\n\t\t\t\tuserFirstName,\r\n\t\t\t\tuserLastName,\r\n\t\t\t\torganizationLegalName);\r\n\r\n\t\tconst formattedOrganizationType: string | string[] =\r\n\t\t\t\torganizationTypeExists\r\n\t\t\t\t\t? this.formatOrganizationType(organizationType)\r\n\t\t\t\t\t: null;\r\n\r\n\t\treturn organizationTypeExists\r\n\t\t\t? `${formattedOrganizationType}: ${formattedName}`\r\n\t\t\t: formattedName;\r\n\t}\r\n\r\n\t/**\r\n\t * Given an organization type, the data will be formatted\r\n\t * for summary display with correct character casing.\r\n\t *\r\n\t * @param {string | []} organizationType\r\n\t * The organization type.\r\n\t * @returns {string | []}\r\n\t * The formatted organization type.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic formatOrganizationType(\r\n\t\torganizationType: string | string[]): string | string[]\r\n\t{\r\n\t\tconst multipleTypes: boolean =\r\n\t\t\tisArray(organizationType)\r\n\t\t\t\t? true\r\n\t\t\t\t: false;\r\n\r\n\t\tif (multipleTypes)\r\n\t\t{\r\n\t\t\tconst formattedTypes: string[] = [];\r\n\t\t\tfor (const type of organizationType)\r\n\t\t\t{\r\n\t\t\t\tformattedTypes.push(\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(type));\r\n\t\t\t}\r\n\r\n\t\t\treturn formattedTypes;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.beforeCapitalSpaces(organizationType as string);\r\n\t}\r\n\r\n\t/**\r\n\t * Given an ledger transaction type this method will return the friendly\r\n\t * name to be displayed.\r\n\t *\r\n\t * @param {string} transactionType\r\n\t * The ledger transaction type.\r\n\t * @returns {string}\r\n\t * The friendly name for the ledger transaction type.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic getFriendlyTransactionTypeName(\r\n\t\ttransactionType: string): string\r\n\t{\r\n\t\tconst transactionTypes: {[key: string]: string} =\r\n\t\t\t{\r\n\t\t\t\tAdjustingAndOther: 'AO',\r\n\t\t\t\tDefenseAndCostContainment: 'DCC',\r\n\t\t\t\tLoss: 'Loss'\r\n\t\t\t};\r\n\r\n\t\treturn transactionTypes[transactionType];\r\n\t}\r\n\r\n\t/**\r\n\t * Given an exposure id and transaction type this method will\r\n\t * return all of the applicable ledger transactions.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimPaymentId\r\n\t * The claim payment id.\r\n\t * @param {string} exposureId\r\n\t * The exposure id.\r\n\t * @param {string} transactionType\r\n\t * The ledger transaction claim type.\r\n\t * @returns {any[]}\r\n\t * The applicable ledger transactions.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimPaymentExposureLedgerTransactions(\r\n\t\tclaimPaymentId: number,\r\n\t\texposureId: string,\r\n\t\ttransactionType: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments;\r\n\r\n\t\tconst claims: IEntityInstanceDto[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimPaymentId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tthis.idDescendingQuery,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claims);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst ledgers: IEntityInstanceDto[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tclaims[0].id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tthis.idDescendingQuery,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgers);\r\n\r\n\t\tconst ledgerTransactions: IEntityInstanceDto[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tledgers[0].id,\r\n\t\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgers,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tthis.idDescendingQuery,\r\n\t\t\t\ttrue,\r\n\t\t\t\tClaimConstants.ledgerEntityTypeGroups.ledgerTransactionClaims);\r\n\r\n\t\tconst filteredTransactions: any[] =\r\n\t\t\t\tledgerTransactions.filter(\r\n\t\t\t\t\t(transaction: any) =>\r\n\t\t\t\t\t\ttransaction.data?.metadata?.exposureId === exposureId\r\n\t\t\t\t\t\t\t&& transaction.data?.type === transactionType);\r\n\r\n\t\treturn filteredTransactions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the claim product instance by name.\r\n\t *\r\n\t * @async\r\n\t * @param {string} claimProductName\r\n\t * The name of the claim product to get.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to the\r\n\t * claim product instance matching the specified name.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimProductByName(\r\n\t\tclaimProductName: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claimProducts;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t+ `eq '${claimProductName}'`,\r\n\t\t\t\tAppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all active reasons for the given claim.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The ID of the claim to get reasons for.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of claim reasons.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getReasons(\r\n\t\tclaimId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst claim: IEntityInstanceDto =\r\n\t\t\tawait this.entityInstanceApiService.get(claimId);\r\n\r\n\t\tconst claimProduct: IEntityInstanceDto =\r\n\t\t\tawait this.getClaimProductByName(\r\n\t\t\t\tclaim.data.productName);\r\n\r\n\t\treturn claimProduct.data.reasons.filter(\r\n\t\t\t(reason: any) =>\r\n\t\t\t\treason.active === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets claim reasons for the given claim.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The ID of the claim to get reasons for.\r\n\t * @param {string} type\r\n\t * the type (open or closed) of the reason to get.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of claim reasons.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimReasons(\r\n\t\tclaimId: number,\r\n\t\ttype: string): Promise\r\n\t{\r\n\t\tconst reasons: any[] =\r\n\t\t\tawait this.getReasons(claimId);\r\n\r\n\t\treturn reasons.filter(\r\n\t\t\t(reason: any) =>\r\n\t\t\t\treason.isClaimReason\r\n\t\t\t\t\t&& ((type === ClaimConstants.reasonType.open\r\n\t\t\t\t\t\t&& reason.isOpenReason)\r\n\t\t\t\t\t\t\t|| (type === ClaimConstants.reasonType.close\r\n\t\t\t\t\t\t\t\t&& reason.isCloseReason)));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets exposure reasons for the given claim.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The ID of the claim to get reasons for.\r\n\t * @param {string} type\r\n\t * the type (open or closed) of the reason to get.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of expsosure reasons.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getExposureReasons(\r\n\t\tclaimId: number,\r\n\t\ttype: string): Promise\r\n\t{\r\n\t\tconst reasons: any[] =\r\n\t\t\tawait this.getReasons(claimId);\r\n\r\n\t\treturn reasons.filter(\r\n\t\t\t(reason: any) =>\r\n\t\t\t\treason.isExposureReason\r\n\t\t\t\t\t&& ((type === ClaimConstants.reasonType.open\r\n\t\t\t\t\t\t&& reason.isOpenReason)\r\n\t\t\t\t\t\t\t|| (type === ClaimConstants.reasonType.close\r\n\t\t\t\t\t\t\t\t&& reason.isCloseReason)));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the exposure adustment amount.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim id.\r\n\t * @param {string} exposureId\r\n\t * The exposure id.\r\n\t * @param {string} expenseType\r\n\t * The expense type.\r\n\t * @param {number} adjustmentAmount\r\n\t * The exposure adjustment amount.\r\n\t * @returns {boolean}\r\n\t * True if amount is valid otherewise false.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async validExposureAdjustmentAmount(\r\n\t\tclaimId: number,\r\n\t\texposureId: string,\r\n\t\texpenseType: string,\r\n\t\tadjustmentAmount: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst claim: IEntityInstanceDto =\r\n\t\t\tawait this.entityInstanceApiService.get(claimId);\r\n\r\n\t\tconst ledger: IEntityInstance =\r\n\t\t\tawait this.getLedger(claim.id);\r\n\r\n\t\tconst ledgerTransactions: IEntityInstanceDto[] =\r\n\t\t\tawait this.getLedgerTransactions(\r\n\t\t\t\tledger.id,\r\n\t\t\t\t`metadata.exposureId eq \\\"${exposureId}\\\" `\r\n\t\t\t\t\t+ `and type eq \\\"${expenseType}\\\"`);\r\n\r\n\t\tconst sum: number =\r\n\t\t\tparseFloat(\r\n\t\t\t\tthis.sumLedgerTransactions(\r\n\t\t\t\t\tledgerTransactions)\r\n\t\t\t\t\t.toFixed(2));\r\n\r\n\t\treturn sum + adjustmentAmount >= 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the applicable organizations for claim owners.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim id.\r\n\t * @returns {Promise}\r\n\t * The applicable organizations for claim owners.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimOwnerOrganizations(\r\n\t\tclaimId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst insuranceCompanies: IEntityInstanceDto[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompany);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst thirdPartyAdministrators: IEntityInstanceDto[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.thirdPartyAdministrator);\r\n\r\n\t\treturn insuranceCompanies.concat(thirdPartyAdministrators);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the valid named events for a specified claim product,\r\n\t * based on the provided loss and reported dates.\r\n\t *\r\n\t * @async\r\n\t * @param {string} claimProductName\r\n\t * The name of the claim product for which to get named events.\r\n\t * @param {string} lossDate\r\n\t * The date of loss to check against named events (expected ISO).\r\n\t * @param {string} reportedDate\r\n\t * The reported date to check against closure dates (expected ISO).\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of valid named events.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getValidNamedEvents(\r\n\t\tclaimProductName: string,\r\n\t\tlossDate: string,\r\n\t\treportedDate: string): Promise\r\n\t{\r\n\t\tconst validEvents: any[] = [];\r\n\t\tconst dateTimeLossDate: DateTime =\r\n\t\t\tDateTime.fromISO(lossDate);\r\n\t\tconst dateTimeReportedDate: DateTime =\r\n\t\t\tDateTime.fromISO(reportedDate);\r\n\r\n\t\tconst claimProduct: IEntityInstanceDto =\r\n\t\t\tawait this.getClaimProductByName(claimProductName);\r\n\r\n\t\tconst namedEvents: any[] =\r\n\t\t\tclaimProduct.data.namedEvents;\r\n\r\n\t\tnamedEvents.forEach(\r\n\t\t\t(namedEvent: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst startDate: DateTime =\r\n\t\t\t\t\tDateTime.fromISO(namedEvent.startDate);\r\n\t\t\t\tconst endDate: DateTime =\r\n\t\t\t\t\tDateTime.fromISO(namedEvent.endDate);\r\n\t\t\t\tconst closureDate: DateTime | null =\r\n\t\t\t\t\tnamedEvent.closureDate\r\n\t\t\t\t\t\t? DateTime.fromISO(namedEvent.closureDate)\r\n\t\t\t\t\t\t: null;\r\n\r\n\t\t\t\tconst isLossWithinEvent: boolean =\r\n\t\t\t\t\t(dateTimeLossDate >= startDate)\r\n\t\t\t\t\t\t&& (dateTimeLossDate <= endDate);\r\n\r\n\t\t\t\tconst isReportedBeforeClosure: boolean =\r\n\t\t\t\t\tclosureDate === null ||\r\n\t\t\t\t\t\t(dateTimeReportedDate < closureDate);\r\n\r\n\t\t\t\tif (isLossWithinEvent && isReportedBeforeClosure)\r\n\t\t\t\t{\r\n\t\t\t\t\tvalidEvents.push(namedEvent);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn validEvents;\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the name of a named event for\r\n\t * a given claim product and named event Id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} namedEventId\r\n\t * The Id of the named event to find.\r\n\t * @param {string} claimProductName\r\n\t * The name of the claim product for which to retrieve loss causes.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to the name of the matching named event,\r\n\t * or `undefined` if no match is found.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getNamedEventName(\r\n\t\tnamedEventId: number,\r\n\t\tclaimProductName: string): Promise\r\n\t{\r\n\t\tconst claimProduct: IEntityInstanceDto =\r\n\t\t\tawait this.getClaimProductByName(claimProductName);\r\n\r\n\t\tconst namedEvents: any[] =\r\n\t\t\tclaimProduct.data.namedEvents;\r\n\r\n\t\treturn namedEvents.find(\r\n\t\t\t(namedEvent: any) =>\r\n\t\t\t\tnamedEvent.id === namedEventId.toString())?.name;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all enabled loss causes for a given claim product.\r\n\t *\r\n\t * @async\r\n\t * @param {string} claimProductName\r\n\t * The name of the claim product for which to get loss causes.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to an array of loss causes.\r\n\t * Each item in the array represents a named event associated\r\n\t * with the specified claim product.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getLossCauses(\r\n\t\tclaimProductName: string): Promise\r\n\t{\r\n\t\tconst claimProduct: IEntityInstanceDto =\r\n\t\t\tawait this.getClaimProductByName(claimProductName);\r\n\r\n\t\tconst lossCauses: any[] =\r\n\t\t\tclaimProduct.data.lossCauses;\r\n\r\n\t\treturn lossCauses.filter(\r\n\t\t\t(cause: any) =>\r\n\t\t\t\tcause.enabled === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the name of a loss cause for\r\n\t * a given claim product and loss cause Id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} lossCauseId\r\n\t * The Id of the loss cause to find.\r\n\t * @param {string} claimProductName\r\n\t * The name of the claim product for which to retrieve loss causes.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves to the name of the matching loss cause,\r\n\t * or `undefined` if no match is found.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getLossCauseName(\r\n\t\tlossCauseId: number,\r\n\t\tclaimProductName: string): Promise\r\n\t{\r\n\t\tconst lossCauses: any[] =\r\n\t\t\tawait this.getLossCauses(claimProductName);\r\n\r\n\t\treturn lossCauses.find(\r\n\t\t\t(lossCause: any) =>\r\n\t\t\t\tlossCause.id === lossCauseId.toString())?.name;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the claim owner users.\r\n\t *\r\n\t * @async\r\n\t * @param {number} organizationId\r\n\t * The organization id.\r\n\t * @param {string} organizationTypeGroup\r\n\t * The organization id.\r\n\t * @returns {any[]}\r\n\t * The claim owner users under an organization.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimOwnerUsers(\r\n\t\torganizationId: number,\r\n\t\torganizationTypeGroup: string): Promise\r\n\t{\r\n\t\tconst claimOwnerUsers: any[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\torganizationId,\r\n\t\t\t\torganizationTypeGroup,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue,\r\n\t\t\t\t'Users');\r\n\r\n\t\tfor await (const user of claimOwnerUsers)\r\n\t\t{\r\n\t\t\tawait this.userService.setUserSecurityGroups(user);\r\n\t\t}\r\n\r\n\t\treturn claimOwnerUsers.filter(\r\n\t\t\t(user: any) =>\r\n\t\t\t\tuser.membershipSecurityGroups.filter(\r\n\t\t\t\t\t(group: any) =>\r\n\t\t\t\t\t\tgroup.name.endsWith('_ClaimsManager'))\r\n\t\t\t\t\t.length > 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets Claims Vendor organizations.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim instance id.\r\n\t * @param {string} vendorType\r\n\t * The vendor type.\r\n\t * @returns {IEntityInstance[]}\r\n\t * The applicable claims vendor organizations.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimVendorOrganizations(\r\n\t\tclaimId: number,\r\n\t\tvendorType: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst insuranceCompany: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompany);\r\n\r\n\t\tconst vendorCompanies: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tinsuranceCompany[0].id,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany,\r\n\t\t\t\t`vendorType eq \\\"${vendorType}\\\"`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.vendorCompany);\r\n\r\n\t\t return vendorCompanies;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets Claims Adjuster organizations.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim instance id.\r\n\t * The vendor type.\r\n\t * @returns {IEntityInstance[]}\r\n\t * The applicable claims adjuster organizations.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getClaimAdjusterOrganizations(\r\n\t\tclaimId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\r\n\t\tconst insuranceCompany: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tclaimId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompany);\r\n\r\n\t\tconst adjustingCompanies: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tinsuranceCompany[0].id,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.adjustingCompany);\r\n\r\n\t\tconst insuranceCompanies: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tinsuranceCompany[0].id,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.insuranceCompany);\r\n\r\n\t\tconst thirdPartyAdministratorCompanies: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tinsuranceCompany[0].id,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups.insuranceCompany,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue,\r\n\t\t\t\tClaimConstants.serviceProviderEntityTypeGroups\r\n\t\t\t\t\t.thirdPartyAdministrator);\r\n\r\n\t\t return [...adjustingCompanies,\r\n\t\t\t...insuranceCompanies,\r\n\t\t\t...thirdPartyAdministratorCompanies];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key activity reference based on the activity name.\r\n\t *\r\n\t * @async\r\n\t * @param {string} activityName\r\n\t * The key activity name.\r\n\t * @param {string} metadataIdentifier\r\n\t * The metadata identifier associated to this key activity type.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The primary page component context holding a claim instance.\r\n\t * @param {boolean} includeActivityName\r\n\t * If true, this will include the activity name for the reference\r\n\t * returned.\r\n\t * @param {boolean} detailedDescription\r\n\t * If true, this will output a detailed description.\r\n\t * @returns {Promise}\r\n\t * An awaitable key activity reference ready for display.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getKeyActivityReference(\r\n\t\tactivityName: string,\r\n\t\tmetadataIdentifier: string,\r\n\t\tcontext: IDynamicComponentContext,\r\n\t\tincludeActivityName: boolean,\r\n\t\tdetailedDescription: boolean): Promise\r\n\t{\r\n\t\tconst activityDescription: string =\r\n\t\t\tincludeActivityName === true\r\n\t\t\t\t? activityName\r\n\t\t\t\t\t+ AppConstants.characters.colon\r\n\t\t\t\t\t+ AppConstants.characters.space\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tif (activityName !== ClaimConstants.keyActivities.payment\r\n\t\t\t&& !StringHelper.isGuid(metadataIdentifier)\r\n\t\t\t&& isNaN(parseInt(\r\n\t\t\t\tmetadataIdentifier,\r\n\t\t\t\tAppConstants.parseRadix)))\r\n\t\t{\r\n\t\t\treturn activityDescription\r\n\t\t\t\t+ metadataIdentifier;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tcontext.source;\r\n\r\n\t\tswitch (activityName)\r\n\t\t{\r\n\t\t\tcase ClaimConstants.keyActivities.claimOwnerAssigned:\r\n\t\t\t{\r\n\t\t\t\treturn this.getClaimOwnerKeyActivityDescription(\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tmetadataIdentifier,\r\n\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\tactivityDescription,\r\n\t\t\t\t\tdetailedDescription);\r\n\t\t\t}\r\n\t\t\tcase ClaimConstants.keyActivities.exposureAdded:\r\n\t\t\tcase ClaimConstants.keyActivities.exposureClosed:\r\n\t\t\tcase ClaimConstants.keyActivities.exposureReopened:\r\n\t\t\t{\r\n\t\t\t\treturn this.getExposureKeyActivityDescription(\r\n\t\t\t\t\tactivityName,\r\n\t\t\t\t\tmetadataIdentifier,\r\n\t\t\t\t\tentityInstanceComponent.entityInstance.data.exposures,\r\n\t\t\t\t\tactivityDescription,\r\n\t\t\t\t\tdetailedDescription);\r\n\t\t\t}\r\n\t\t\tcase ClaimConstants.keyActivities.payment:\r\n\t\t\t{\r\n\t\t\t\treturn this.getPaymentKeyActivityDescription(\r\n\t\t\t\t\tentityInstanceComponent.entityInstance.id,\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tmetadataIdentifier,\r\n\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\tactivityDescription,\r\n\t\t\t\t\tdetailedDescription);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn activityDescription\r\n\t\t\t+ metadataIdentifier;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the claim reason description based on the reason id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} reasonId\r\n\t * The reason id.\r\n\t * @param {number} claimId\r\n\t * The claim id.\r\n\t * @returns {string}\r\n\t * A claim reason description based on the sent reason id.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getReasonDescription(\r\n\t\treasonId: number,\r\n\t\tclaimId: number): Promise\r\n\t{\r\n\t\tconst reasons: any[] =\r\n\t\t\tawait this.getReasons(claimId);\r\n\r\n\t\tconst matchedReason: any =\r\n\t\t\treasons.find(\r\n\t\t\t\t(reason: any) =>\r\n\t\t\t\t\treason.id === reasonId.toString());\r\n\r\n\t\tif (AnyHelper.isNull(matchedReason))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst reasonType: string =\r\n\t\t\tmatchedReason.isOpenReason\r\n\t\t\t\t? ClaimConstants.reasonType.open\r\n\t\t\t\t: ClaimConstants.reasonType.close;\r\n\r\n\t\treturn `${reasonType} Reason: ${matchedReason.description}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the adjuster organization name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimId\r\n\t * The claim id to get the organization name for.\r\n\t * @param {number} adjusterOrganizationId\r\n\t * The adjuster organization id.\r\n\t * @returns {Promise}\r\n\t * An awaitable adjuster organization name matching the sent id.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getAdjusterOrganizationName(\r\n\t\tclaimId: number,\r\n\t\tadjusterOrganizationId: string): Promise\r\n\t{\r\n\t\tconst adjusterOrganizations: IEntityInstance[] =\r\n\t\t\tawait this.getClaimAdjusterOrganizations(\r\n\t\t\t\tclaimId);\r\n\r\n\t\tconst organizationId: number =\r\n\t\t\tparseInt(\r\n\t\t\t\tadjusterOrganizationId,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\t\tconst matchingAdjusterOrganization: IEntityInstance =\r\n\t\t\tadjusterOrganizations.find(\r\n\t\t\t\t(organization: IEntityInstance) =>\r\n\t\t\t\t\torganization.id === organizationId);\r\n\r\n\t\tif (AnyHelper.isNull(matchingAdjusterOrganization))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.toNameString(\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tmatchingAdjusterOrganization.data.name.legalName);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the vendor organization name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} vendorOrganizationId\r\n\t * The vendor organization id.\r\n\t * @returns {Promise}\r\n\t * An awaitable vendor organization name matching the sent id.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tpublic async getVendorOrganizationName(\r\n\t\tvendorOrganizationId: number): Promise\r\n\t{\r\n\t\tconst organizationName: string =\r\n\t\t\tawait this.insuranceService.getOrganizationName(\r\n\t\t\t\tvendorOrganizationId,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t.claimsVendors);\r\n\r\n\t\treturn organizationName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the claim owner key activity description.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimOwnerId\r\n\t * The claim owner id.\r\n\t * @param {string} activityDescription\r\n\t * The activity description.\r\n\t * @param {boolean} detailedDescription\r\n\t * If true, this will output a detailed description.\r\n\t * @returns {Promise}\r\n\t * An awaitable key activity description ready for display.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tprivate async getClaimOwnerKeyActivityDescription(\r\n\t\tclaimOwnerId: number,\r\n\t\tactivityDescription: string,\r\n\t\tdetailedDescription: boolean): Promise\r\n\t{\r\n\t\tconst userName: string =\r\n\t\t\tawait this.entityService.getUserDisplayName(\r\n\t\t\t\tclaimOwnerId);\r\n\r\n\t\tif (AnyHelper.isNull(userName))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst descriptionDetail: string =\r\n\t\t\tdetailedDescription === true\r\n\t\t\t\t&& userName !== AppConstants.empty\r\n\t\t\t\t&& userName !== 'Unassigned'\r\n\t\t\t\t? ' was set as the claim owner.'\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\treturn activityDescription\r\n\t\t\t+ userName\r\n\t\t\t+ descriptionDetail;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the exposure key activity description.\r\n\t *\r\n\t * @async\r\n\t * @param {string} activityName\r\n\t * The key activity name.\r\n\t * @param {string} exposureResourceIdentifier\r\n\t * The exposure resource identifier.\r\n\t * @param {any[]} exposures\r\n\t * The claim exposures.\r\n\t * @param {string} activityDescription\r\n\t * The activity description.\r\n\t * @param {boolean} detailedDescription\r\n\t * If true, this will output a detailed description.\r\n\t * @returns {Promise}\r\n\t * An awaitable key activity description ready for display.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tprivate async getExposureKeyActivityDescription(\r\n\t\tactivityName: string,\r\n\t\texposureResourceIdentifier: string,\r\n\t\texposures: any[],\r\n\t\tactivityDescription: string,\r\n\t\tdetailedDescription: boolean): Promise\r\n\t{\r\n\t\tconst matchingExposure: any =\r\n\t\t\texposures\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(exposure: any) =>\r\n\t\t\t\t\t\texposure.resourceIdentifier ===\r\n\t\t\t\t\t\t\texposureResourceIdentifier);\r\n\r\n\t\tif (AnyHelper.isNull(matchingExposure))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst activityDescriptions: any =\r\n\t\t\t{\r\n\t\t\t\t[ClaimConstants.keyActivities.exposureAdded]:\r\n\t\t\t\t\t'Added ',\r\n\t\t\t\t[ClaimConstants.keyActivities.exposureClosed]:\r\n\t\t\t\t\t'Closed ',\r\n\t\t\t\t[ClaimConstants.keyActivities.exposureReopened]:\r\n\t\t\t\t\t'Reopened '\r\n\t\t\t};\r\n\r\n\t\tconst descriptionDetail: string =\r\n\t\t\tactivityDescriptions[activityName] ?? AppConstants.empty;\r\n\r\n\t\treturn activityDescription\r\n\t\t\t+ (detailedDescription === true\r\n\t\t\t\t? descriptionDetail\r\n\t\t\t\t\t+ `${matchingExposure.coverage} `\r\n\t\t\t\t\t\t+ `${matchingExposure.level} level exposure.`\r\n\t\t\t\t: `${matchingExposure.level} - `\r\n\t\t\t\t\t+ `${matchingExposure.coverage}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the payment key activity description.\r\n\t *\r\n\t * @async\r\n\t * @param {number} claimInstanceId\r\n\t * The claim instance id.\r\n\t * @param {number} claimReasonId\r\n\t * The claim reason id.\r\n\t * @param {string} activityDescription\r\n\t * The activity description.\r\n\t * @param {boolean} detailedDescription\r\n\t * If true, this will output a detailed description.\r\n\t * @returns {Promise}\r\n\t * An awaitable key activity description ready for display.\r\n\t * @memberof ClaimsService\r\n\t */\r\n\tprivate async getPaymentKeyActivityDescription(\r\n\t\tclaimInstanceId: number,\r\n\t\tclaimReasonId: number,\r\n\t\tactivityDescription: string,\r\n\t\tdetailedDescription: boolean): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tClaimConstants.claimEntityTypeGroups.claims;\r\n\t\tconst claimPayments: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tclaimInstanceId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tClaimConstants.claimEntityTypeGroups.claimPayments)\r\n\t\t\t\t?? [];\r\n\r\n\t\tconst matchingPayment: IEntityInstance =\r\n\t\t\tclaimPayments\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(claimPayment: IEntityInstance) =>\r\n\t\t\t\t\t\tclaimPayment.id === claimReasonId);\r\n\r\n\t\tif (AnyHelper.isNull(matchingPayment))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn activityDescription\r\n\t\t\t+ (detailedDescription === true\r\n\t\t\t\t? `A ${matchingPayment.data.type} payment was `\r\n\t\t\t\t\t+ 'added to this claim with a status of '\r\n\t\t\t\t\t+ `${matchingPayment.data.status}.`\r\n\t\t\t\t: `${matchingPayment.data.status} `\r\n\t\t\t\t\t+ `${matchingPayment.data.type}`);\r\n\t}\r\n}\r\n","
\r\n
\r\n\r\n\r\n\r\n\t
0\">\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
1),\r\n\t\t\t'navigation-entity-header':\r\n\t\t\t\t(displayNavigationDropdown === true)\r\n\t\t}\"\r\n\t\t#HeaderContextContent\r\n\t\theader-context-content\r\n\t\t*ngIf=\"!loading\r\n\t\t\t&& (tabItems != null && tabItems.length > 1\r\n\t\t\t\t|| sectionItems != null && sectionItems.length > 1)\">\r\n\t\t
1 && displayNavigationDropdown === false\"\r\n\t\t\t[ngClass]=\"{\r\n\t\t\t\t'information-menu-offset' : (informationMenuItems?.length > 0)\r\n\t\t\t}\">\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
1)\r\n\t\t\t\t\t}\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n
\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityFormComponent\r\n} from '@entity/components/entity-form/entity-form.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig,\r\n\tFormlyFormOptions\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tOperationEventParameterConstants\r\n} from '@operation/shared/operation-event-parameter.constants';\r\nimport {\r\n\tOperationEventConstants\r\n} from '@operation/shared/operation-event.constants';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tBasePageDirective\r\n} from '@shared/directives/base-page.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tJsonSchemaLayout\r\n} from '@shared/implementations/application-data/json-schema-layout';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityLayout\r\n} from '@shared/implementations/entities/entity-layout';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntity\r\n} from '@shared/interfaces/entities/entity';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRulePresentationService\r\n} from '@shared/services/rule-presentation.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\ttemplateUrl: './entity-instance.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-instance.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a single entity\r\n * component.\r\n *\r\n * @export\r\n * @class EntityInstanceComponent\r\n * @extends {BasePageDirective}\r\n * @implements {OnInit}\r\n * @implements {AfterViewChecked}\r\n * @implements {OnDestroy}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class EntityInstanceComponent\r\n\textends BasePageDirective\r\n\timplements OnInit, IOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityInstanceComponent.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router used in this component.\r\n\t * @param {Location} location\r\n\t * The location service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to populate the full entity\r\n\t * association set.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to work with entity instances.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use for loading operation groups and\r\n\t * definitions.\r\n\t * @param {entityLayoutApiService} entityLayoutApiService\r\n\t * The operation execution service to use for executing operation\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used to gather violations and overrides.\r\n\t * @param {RulePresentationService} rulePresentationService\r\n\t * The rule presentation service used to decorate entity instance based\r\n\t * rules.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic rulePresentationService: RulePresentationService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type group for display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityTypeGroupDisplay: string;\r\n\r\n\t/**\r\n\t * Gets or sets the layout type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic layoutType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the page level operation group name to\r\n\t * display in the context menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic pageContextOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the page level operation group name to\r\n\t * display in the context menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic utilityMenuOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the identifier for the top\r\n\t * of the entity page. This is used for scrolling\r\n\t * capabilities.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityTopElementIdentifier: string;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout.\r\n\t *\r\n\t * @type {EntityLayout}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityLayout: EntityLayout;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {EntityType}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityType: EntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the formly form options.\r\n\t *\r\n\t * @type {FormlyFormOptions}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic formlyOptions: FormlyFormOptions = {};\r\n\r\n\t/**\r\n\t * Gets or sets the list of information menu items\r\n\t * to display in this component.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic informationMenuItems: IInformationMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display value for a completed data load for\r\n\t * an async populated information menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic informationMenuItemsLoaded: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the view only for a Layout JSON Schema,\r\n\t * making an entity display not editable if false and\r\n\t * editable if true.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic isViewOnly: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the entity form component instance currently displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {EntityFormComponent}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityFormComponent: EntityFormComponent;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance rule violations.\r\n\t *\r\n\t * @type {IEntityInstanceRuleViolation[]}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityInstanceRuleViolations: IEntityInstanceRuleViolation[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the formly entity layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic formlyEntityLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity identifier.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entityIdentifier: string;\r\n\r\n\t/**\r\n\t * Gets or sets the active drawer component.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic activeDrawerComponent: string;\r\n\r\n\t/**\r\n\t * Gets or sets the active drawer item unique text found in the description.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic activeDrawerItemDescription: any;\r\n\r\n\t/**\r\n\t * Gets or sets the operation group redraw.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic operationGroupRedraw: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data for the entity as it exists\r\n\t * in the database.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic databaseEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic formlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the redraw formly entity layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic redrawFormlyEntityLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity security\r\n\t * access policy.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic entitySecurityAccessPolicy: any;\r\n\r\n\t/**\r\n\t * Gets or sets the redrawing state.\r\n\t * Defaults false.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic redrawing: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the show content animation.\r\n\t * Defaults true.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic showContentAnimation: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the display count used in Formly which is based upon\r\n\t * the width of the page.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic get columnDisplayCount(): number\r\n\t{\r\n\t\treturn this.siteLayoutService.windowWidth\r\n\t\t\t<= this.singleColumnDisplayWidth\r\n\t\t\t? 1\r\n\t\t\t: 2;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the standard access message beginning for ownership or entity\r\n\t * instance permission requirements.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic get standardAccessMessage(): string\r\n\t{\r\n\t\treturn 'Access is required to this entity type '\r\n\t\t\t+ `and version of '${this.entityTypeGroup}'. `;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tsource: this,\r\n\t\t\tdata: {\r\n\t\t\t\tentityInstance: this.entityInstance\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets active tab item index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate activeTabItemIndex: number = 0;\r\n\r\n\t/**\r\n\t * Gets the name of the layout type query\r\n\t * parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly entityTypeRouteParameter: string = 'entityType';\r\n\r\n\t/**\r\n\t * Gets the name of the id route parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly idRouteParameter: string = 'id';\r\n\r\n\t/**\r\n\t * Gets the name of the active drawer component route parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly activeDrawerComponentIdentifier: string =\r\n\t\t'activeDrawerComponent';\r\n\r\n\t/**\r\n\t * Gets the name of the active drawer item route parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly activeDrawerItemDescriptionIdentifier: string =\r\n\t\t'activeDrawerItemDescription';\r\n\r\n\t/**\r\n\t * Gets the name of the layout type query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly layoutTypeQueryParameter: string = 'layoutType';\r\n\r\n\t/**\r\n\t * Gets or sets the width defined that will switch the form display\r\n\t * into a single column layout.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly singleColumnDisplayWidth: number = 640;\r\n\r\n\t/**\r\n\t * Gets or sets the delay for an initial setup call.\r\n\t * This will allow the UI time to be drawn prior to\r\n\t * udpating scroll commands with accurate page heights.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly initialSetupDelay: number = 250;\r\n\r\n\t/**\r\n\t * Gets the name of the active tab index parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly activeTabIndexIdentifier: string = 'activeTabIndex';\r\n\r\n\t/**\r\n\t * Gets the identifier for this component. This is used as a\r\n\t * target component to handle page refresh actions\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly entityInstanceComponentName: string =\r\n\t\t'EntityInstanceComponent';\r\n\r\n\t/**\r\n\t * Gets the identifier for the operation button bar component name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate readonly operationButtonBarComponentName: string =\r\n\t\t'OperationMenuButtonBar';\r\n\r\n\t/**\r\n\t * Handles the reload entity data event sent from\r\n\t * the event emiter post operation action from the server.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\t@HostListener(\r\n\t \tOperationEventConstants.reloadEntityEvent,\r\n\t \t[OperationEventParameterConstants.event])\r\n\tpublic async reloadEntity(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.entityLayout))\r\n\t\t{\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\t\t\tfalse);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\ttrue);\r\n\r\n\t\tawait this.entityInstanceSaved();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the refresh component event.\r\n\t * This will refresh the drawer matching the content component if this\r\n\t * utility menu is the target component.\r\n\t *\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to be targetted for a view refresh.\r\n\t * @param {string} targetComponent\r\n\t * The identifier for the content component container.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.refreshComponentEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent,\r\n\t\t\tAppEventParameterConstants.targetComponent\r\n\t\t])\r\n\tpublic refreshOperationButtonBar(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string): void\r\n\t{\r\n\t\tif (contentComponent === this.entityInstanceComponentName\r\n\t\t\t&& targetComponent === this.operationButtonBarComponentName)\r\n\t\t{\r\n\t\t\tthis.resetOperationButtonBar();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Gathers required data from the url and for the entity instance\r\n\t * in this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.initializePage(\r\n\t\t\tthis.route.snapshot.paramMap.get(\r\n\t\t\t\tthis.idRouteParameter) as unknown as number,\r\n\t\t\tStringHelper.toProperCase(\r\n\t\t\t\tthis.route.snapshot.paramMap.get(\r\n\t\t\t\t\tthis.entityTypeRouteParameter)));\r\n\t}\r\n\r\n\t/**\r\n\t * Shared method for handling the on initialization or route parameter\r\n\t * change event.\r\n\t * Gathers required data from the url and for the entity instance\r\n\t * in this component.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The entity instance id to load.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group to load from from.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async initializePage(\r\n\t\tid: number,\r\n\t\tentityTypeGroup: string): Promise\r\n\t{\r\n\t\tthis.id = id;\r\n\t\tthis.entityTypeGroup = entityTypeGroup;\r\n\t\tthis.entityTypeGroupDisplay =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\t\tAppConstants.characters.period));\r\n\t\tthis.isViewOnly =\r\n\t\t\tthis.route.snapshot.url[1]?.path !==\r\n\t\t\t\tAppConstants.viewTypes.edit;\r\n\r\n\t\tthis.route.queryParams.subscribe(\r\n\t\t\t(parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.layoutType =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.layoutTypeQueryParameter])\r\n\t\t\t\t\t\t? AppConstants.layoutTypes.generated\r\n\t\t\t\t\t\t: mappedRouteData[this.layoutTypeQueryParameter];\r\n\t\t\t\tthis.activeDrawerComponent =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.activeDrawerComponentIdentifier])\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: mappedRouteData[this.activeDrawerComponentIdentifier];\r\n\t\t\t\tthis.activeDrawerItemDescription =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.activeDrawerItemDescriptionIdentifier])\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: mappedRouteData[\r\n\t\t\t\t\t\t\tthis.activeDrawerItemDescriptionIdentifier];\r\n\t\t\t\tthis.activeTabItemIndex =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.activeTabIndexIdentifier])\r\n\t\t\t\t\t\t? 0\r\n\t\t\t\t\t\t: mappedRouteData[this.activeTabIndexIdentifier];\r\n\t\t\t});\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.entityTypeGroup;\r\n\t\t\tawait this.entityInstanceApiService.get(this.id);\r\n\t\t}\r\n\t\tcatch (exception: any)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\t'Entity.Type',\r\n\t\t\t\t\t'Entity.Version',\r\n\t\t\t\t\t'Entity.Instance'\r\n\t\t\t\t],\r\n\t\t\t\tthis.standardAccessMessage\r\n\t\t\t\t\t+ `The entity instance with an id of ${this.id} was `\r\n\t\t\t\t\t+ 'not available.');\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\t'Entity.Type',\r\n\t\t\t\t\t'Entity.Version',\r\n\t\t\t\t\t'Entity.Layout'\r\n\t\t\t\t],\r\n\t\t\t\tthis.standardAccessMessage\r\n\t\t\t\t\t+ `The associated layout type of '${this.layoutType}' is `\r\n\t\t\t\t\t+ 'also required.');\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.setSchema();\r\n\t\tthis.setupInformationMenuItems(this.pageContext);\r\n\t\tawait this.setEntityInstanceViolations();\r\n\t\tthis.loading = false;\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.scrollHeightChangedSubject.pipe(\r\n\t\t\t\tdebounceTime(this.tabCalculationDebounceDelay),\r\n\t\t\t\tdistinctUntilChanged())\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t(scrollHeight: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.setTabHeights(scrollHeight);\r\n\t\t\t\t\t}));\r\n\r\n\t\tthis.loading = false;\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.initialSetupInProgress = true;\r\n\t\t\t},\r\n\t\t\tthis.initialSetupDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate page ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this page.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityType: IEntityType) =>\r\n\t\t\t\t\t\tnestedEntityType.group === this.entityTypeGroup);\r\n\r\n\t\tif (AnyHelper.isNull(entityType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst entityLayoutType: IEntityLayoutType =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityLayoutTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityLayoutType: IEntityLayoutType) =>\r\n\t\t\t\t\t\tnestedEntityLayoutType.name === this.layoutType);\r\n\r\n\t\tif (AnyHelper.isNull(entityLayoutType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.verifyEntityTypeAccess(\r\n\t\t\tentityType,\r\n\t\t\tentityLayoutType);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the displayed identifier for this entity. This will also update\r\n\t * the entity display name if new values have been entered.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async getEntityIdentifier(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.entityDefinition?.titleFunction))\r\n\t\t{\r\n\t\t\treturn\tStringHelper.transformToFunction(\r\n\t\t\t\tthis.entityDefinition.titleFunction,\r\n\t\t\t\tthis.pageContext)();\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.entityDefinition?.titlePromise))\r\n\t\t{\r\n\t\t\treturn\tStringHelper.transformToDataPromise(\r\n\t\t\t\tthis.entityDefinition.titlePromise,\r\n\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\r\n\t\tif (this.entityDefinition?.summaryDataPaths?.length > 0)\r\n\t\t{\r\n\t\t\tconst summaryTitle =\r\n\t\t\t\tthis.entityDefinition?.getSummaryDataValue(\r\n\t\t\t\t\tthis.entityInstance,\r\n\t\t\t\t\t0);\r\n\r\n\t\t\treturn !AnyHelper.isNullOrEmpty(summaryTitle)\r\n\t\t\t\t? summaryTitle\r\n\t\t\t\t: this.entityType.displayName;\r\n\t\t}\r\n\r\n\t\treturn this.entityType?.displayName;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles required business rules for diplay following an entity save.\r\n\t * This will update the information menu items and rule violations.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async entityInstanceSaved(): Promise\r\n\t{\r\n\t\tthis.showContentAnimation = false;\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.entityTypeGroup;\r\n\t\tthis.entityInstance = await this.entityInstanceApiService.get(this.id);\r\n\t\tthis.updateLastSavedData();\r\n\t\tthis.entityIdentifier = await this.getEntityIdentifier();\r\n\t\tthis.redrawFormlyEntityLayout = this.formlyEntityLayout;\r\n\t\tthis.redrawing = true;\r\n\t\tconst formlyLayout: FormlyFieldConfig[] =\r\n\t\t\tawait this.entityLayout?.getFormlyEntityLayout(\r\n\t\t\t\tthis.pageContext,\r\n\t\t\t\tthis.entitySecurityAccessPolicy?.data);\r\n\t\tthis.formlyEntityLayout =\r\n\t\t\tawait this.rulePresentationService.applyEntityInstanceRules(\r\n\t\t\t\tthis.entityType?.id,\r\n\t\t\t\tthis.entityVersion?.id,\r\n\t\t\t\tformlyLayout,\r\n\t\t\t\tthis.pageContext);\r\n\t\tthis.setActiveTab();\r\n\t\tthis.setupInformationMenuItems(this.pageContext);\r\n\t\tEventHelper.dispatchRedrawDashboardEvent();\r\n\t\tawait this.setEntityInstanceViolations();\r\n\t\tthis.resetOperationButtonBar();\r\n\t\tFormlyHelper.fireViewCheck(\r\n\t\t\tthis.formlyEntityLayout,\r\n\t\t\ttrue);\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\tAppConstants.cssClasses.entityLayoutMask);\r\n\t\tEventHelper.dispatchReloadProductSettingsEvent();\r\n\t\tEventHelper.dispatchRefreshComponentEvent(\r\n\t\t\tDynamicComponentLookup.supportedTypes.workItemsComponent,\r\n\t\t\tDynamicComponentLookup.targetComponents.utilityMenuComponent);\r\n\t\tthis.layoutReloaded = true;\r\n\r\n\t\tthis.redrawing = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to save the data in the last database loaded\r\n\t * or saved entity instance. This data is then used for comparisons\r\n\t * to the current entity form to validate if page changes are allowed\r\n\t * or similar business rules.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic updateLastSavedData(): void\r\n\t{\r\n\t\tthis.databaseEntityInstance =\r\n\t\t\tcloneDeep(this.entityInstance);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the rules, work items, and operations button bar.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async RefreshBusinessRules(): Promise\r\n\t{\r\n\t\tawait this.setEntityInstanceViolations();\r\n\t\tFormlyHelper.fireViewCheck(\r\n\t\t\tthis.formlyEntityLayout);\r\n\r\n\t\tthis.resetOperationButtonBar();\r\n\r\n\t\tEventHelper.dispatchRefreshComponentEvent(\r\n\t\t\tDynamicComponentLookup\r\n\t\t\t\t.supportedTypes\r\n\t\t\t\t.workItemsComponent,\r\n\t\t\tDynamicComponentLookup\r\n\t\t\t\t.targetComponents\r\n\t\t\t\t.utilityMenuComponent);\r\n\t}\r\n\r\n\t/**\r\n\t * Forces the operation button bar to reload and handle business logic\r\n\t * such as enabled or disabled.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic resetOperationButtonBar(): void\r\n\t{\r\n\t\tconst existingOperationGroupName: string = this.operationGroupName;\r\n\t\tthis.operationGroupName = null;\r\n\t\tthis.operationGroupRedraw = true;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.operationGroupName = existingOperationGroupName;\r\n\t\t\t\tthis.operationGroupRedraw = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the layout active tab.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic setActiveTab(): void\r\n\t{\r\n\t\tthis.tabItems =\r\n\t\t\tthis.entityLayout.getDataTabs(this.formlyEntityLayout);\r\n\r\n\t\tif (this.tabItems.length === 0)\r\n\t\t{\r\n\t\t\tthis.sectionItems =\r\n\t\t\t\t\tthis.entityLayout.getDataSections(this.formlyEntityLayout);\r\n\t\t}\r\n\r\n\t\tif (this.sectionItems.length > 0)\r\n\t\t{\r\n\t\t\tthis.activeSectionItem = this.sectionItems[0];\r\n\t\t}\r\n\t\telse if (this.tabItems.length > 0)\r\n\t\t{\r\n\t\t\tlet tabCount: number = 0;\r\n\t\t\tthis.activeTabItem = this.tabItems[this.activeTabItemIndex];\r\n\r\n\t\t\tthis.formlyEntityLayout\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(fieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (FormlyHelper.isTabWrapper(fieldConfig))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfieldConfig.props.visible =\r\n\t\t\t\t\t\t\t\ttabCount === this.activeTabItemIndex;\r\n\t\t\t\t\t\t\ttabCount++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\tif (!AnyHelper.isNull(this.activeTabItem?.items)\r\n\t\t\t\t&& this.activeTabItem?.items?.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.activeSectionItem = this.activeTabItem.items[0];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the tab selected event.\r\n\t * This methed is used to set the tab selected as displayed and set the\r\n\t * other tabs as visually hidden.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event sent from the observed selected tab event.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic tabSelected(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tlet tabCount: number = 0;\r\n\t\tthis.formlyEntityLayout\r\n\t\t\t.forEach(\r\n\t\t\t\t(fieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (FormlyHelper.isTabWrapper(fieldConfig))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfieldConfig.props.visible =\r\n\t\t\t\t\t\t\ttabCount === event.index;\r\n\t\t\t\t\t\ttabCount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tthis.activeTabItem = this.tabItems[event.index];\r\n\r\n\t\tthis.activeTabItemIndex = event.index;\r\n\t\tthis.updateUrlQuery();\r\n\r\n\t\tif (this.activeTabItem.items?.length > 0)\r\n\t\t{\r\n\t\t\tthis.activeSectionItem = this.activeTabItem.items[0];\r\n\t\t}\r\n\r\n\t\tthis.redrawFormlyEntityLayout = this.formlyEntityLayout;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the url query string upon entity type group\r\n\t * and the defined query parameters previously loaded\r\n\t * if existing.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic updateUrlQuery(): void\r\n\t{\r\n\t\tconst queryParameters =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tlayoutType: this.layoutType,\r\n\t\t\t\tactiveTabIndex: this.activeTabItemIndex,\r\n\t\t\t\tactiveDrawerComponent: this.activeDrawerComponent,\r\n\t\t\t\tactiveDrawerItemDescription: this.activeDrawerItemDescription,\r\n\t\t\t};\r\n\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(queryParameters)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the entity form component property to the sent instance.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic updateFormInstance(\r\n\t\tentityFormComponent: EntityFormComponent): void\r\n\t{\r\n\t\tthis.entityFormComponent = entityFormComponent;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and sets the local entity instance rule violations property.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic async setEntityInstanceViolations(): Promise\r\n\t{\r\n\t\tthis.entityInstanceRuleViolations =\r\n\t\t\tawait this.ruleService.getPopulatedRuleViolations(\r\n\t\t\t\t`InstanceId eq ${this.id}`,\r\n\t\t\t\t`RuleDefinition.Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\r\n\t\tEventHelper.dispatchRefreshBadgePromiseEvent(\r\n\t\t\tDynamicComponentLookup.supportedTypes.rulesComponent,\r\n\t\t\tDynamicComponentLookup.targetComponents.utilityMenuComponent);\r\n\t\tEventHelper.dispatchRefreshComponentEvent(\r\n\t\t\tDynamicComponentLookup.supportedTypes.rulesComponent,\r\n\t\t\tDynamicComponentLookup.targetComponents.utilityMenuComponent);\r\n\t}\r\n\r\n\t/**\r\n\t * This will find and set the provided value to the formly field config with\r\n\t * a key matching the sent fieldKey into the formly layout.\r\n\t *\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @param {any} fieldValue\r\n\t * The value of the field to set.\r\n\t * @param {boolean} fireValidityChange\r\n\t * Executes the validity of the form if true, otherwise the\r\n\t * validity is skipped.\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic setFieldValue(\r\n\t\tfieldKey: string,\r\n\t\tfieldValue: any = AppConstants.empty,\r\n\t\tfireValidityChange: boolean = false): void\r\n\t{\r\n\t\tFormlyHelper.setFieldValue(\r\n\t\t\tthis.formlyEntityLayout,\r\n\t\t\tfieldKey,\r\n\t\t\tfieldValue,\r\n\t\t\tfireValidityChange);\r\n\t}\r\n\r\n\t/**\r\n\t * This will find the existing formly field config with a key\r\n\t * matching the sent fieldKey.\r\n\t *\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @memberof EntityInstanceComponent\r\n\t * @returns {FormlyFieldConfig}\r\n\t * If found, this will return the field config with the matching key.\r\n\t */\r\n\tpublic getFieldConfig(\r\n\t\tfieldKey: string): FormlyFieldConfig\r\n\t{\r\n\t\tconst fields: FormlyFieldConfig[] =\r\n\t\t\tFormlyHelper.getMatchingFieldConfigurations(\r\n\t\t\t\tthis.formlyEntityLayout,\r\n\t\t\t\tfieldKey);\r\n\r\n\t\treturn fields.length > 0\r\n\t\t\t? fields[0]\r\n\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t * This will find the existing formly field config with a key\r\n\t * matching the sent fieldKey.\r\n\t *\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @memberof EntityInstanceComponent\r\n\t * @returns {FormlyFieldConfig}\r\n\t * If found, this will return the field config with the matching key.\r\n\t */\r\n\t public getMatchingFieldConfigurations(\r\n\t\tfieldKey: string): FormlyFieldConfig[]\r\n\t{\r\n\t\treturn FormlyHelper.getMatchingFieldConfigurations(\r\n\t\t\tthis.formlyEntityLayout,\r\n\t\t\tfieldKey);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actions that prepare this entity instance\r\n\t * for display based on a loaded schema and layout.\r\n\t *\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tprivate async setSchema(): Promise\r\n\t{\r\n\t\tconst entity: IEntity =\r\n\t\t\tawait this.entityService\r\n\t\t\t\t.populateEntity(\r\n\t\t\t\t\tthis.id,\r\n\t\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\t\tthis.layoutType);\r\n\r\n\t\tthis.entityInstance = entity.entityInstance;\r\n\t\tthis.updateLastSavedData();\r\n\t\tthis.entityDefinition = new EntityDefinition(entity.entityDefinition);\r\n\r\n\t\tif (this.layoutType === AppConstants.layoutTypes.generated\r\n\t\t\t&& AnyHelper.isNullOrWhitespace(entity.entityLayout))\r\n\t\t{\r\n\t\t\tentity.entityLayout =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tjsonData: new JsonSchemaLayout()\r\n\t\t\t\t\t\t.generateDefaultLayout(\r\n\t\t\t\t\t\t\tthis.entityDefinition.jsonEntityDefinition,\r\n\t\t\t\t\t\t\tthis.isViewOnly)\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.entityType = new EntityType(entity.entityType);\r\n\t\tthis.entityVersion = entity.entityVersion;\r\n\t\tthis.entityIdentifier = await this.getEntityIdentifier();\r\n\t\tthis.operationGroupName = (this.isViewOnly)\r\n\t\t\t? null\r\n\t\t\t: this.entityDefinition.operationGroupName;\r\n\t\tthis.pageContextOperationGroupName =\r\n\t\t\tthis.entityDefinition.pageContextOperationGroupName;\r\n\t\tthis.utilityMenuOperationGroupName =\r\n\t\t\tthis.entityDefinition.utilityMenuOperationGroupName;\r\n\t\tthis.informationMenuDisplayComponentInstanceName =\r\n\t\t\tthis.entityDefinition.informationMenuDisplayComponentInstanceName;\r\n\t\tthis.entityTopElementIdentifier =\r\n\t\t\tAppConstants.basePageSections.topIdentifier\r\n\t\t\t\t+ this.sectionIdentifier;\r\n\r\n\t\tthis.entitySecurityAccessPolicy =\r\n\t\t\tawait this.entityService\r\n\t\t\t\t.getEntityAccessPolicies(\r\n\t\t\t\t\tentity.entityType.group,\r\n\t\t\t\t\tentity.entityInstance.id);\r\n\r\n\t\tthis.entityLayout =\r\n\t\t\tnew EntityLayout(entity.entityLayout);\r\n\r\n\t\tconst formlyLayout: FormlyFieldConfig[] =\r\n\t\t\tawait this.entityLayout.getFormlyEntityLayout(\r\n\t\t\t\tthis.pageContext,\r\n\t\t\t\tthis.entitySecurityAccessPolicy?.data);\r\n\r\n\t\tthis.formlyEntityLayout =\r\n\t\t\tawait this.rulePresentationService.applyEntityInstanceRules(\r\n\t\t\t\tthis.entityType.id,\r\n\t\t\t\tthis.entityVersion.id,\r\n\t\t\t\tformlyLayout,\r\n\t\t\t\tthis.pageContext);\r\n\r\n\t\tif (this.isViewOnly === true)\r\n\t\t{\r\n\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\tthis.formlyEntityLayout);\r\n\t\t}\r\n\r\n\t\tthis.setActiveTab();\r\n\r\n\t\tthis.redrawFormlyEntityLayout = this.formlyEntityLayout;\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n}","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityTableDirective\r\n} from '@entity/directives/entity-table.directive';\r\nimport {\r\n\tIEntitySearch\r\n} from '@entity/interfaces/entity-search.interface';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISelectable\r\n} from '@shared/interfaces/application-objects/selectable.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'entity-select',\r\n\ttemplateUrl: './entity-select.component.html',\r\n\tstyleUrls: ['./entity-select.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing an instance of an entity search component.\r\n *\r\n * @export\r\n * @class EntitySelectComponent\r\n * @implements {OnInit}\r\n */\r\nexport class EntitySelectComponent\r\n\textends EntityTableDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntitySelectComponent. This component\r\n\t * will display a filtered list of entities for navigation.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to populate get the type name.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service used to populate the entity type filter.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance service used to populate the entity list data.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector ref used to update ui changes.\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the simple display mode. This simple display\r\n\t * mode does not offer many features of a full search list.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Input() public useSimpleDisplayMode: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the selected entities that are stored in the\r\n\t * component using this select. Selected entities are set with an\r\n\t * id of zero when loaded in the list allowing for selected\r\n\t * business rules.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Input() public selectedEntities: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the search criteria of the entity\r\n\t * list.\r\n\t *\r\n\t * @type {IEntitySearch}\r\n\t * @memberof EntitySearchDirective\r\n\t */\r\n\t@Input() public searchCriteria: IEntitySearch;\r\n\r\n\t/**\r\n\t * Sets the event emitter action to communicate to\r\n\t * implementing components that a row was selected.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Output() public itemSelected: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Sets the event emitter action to communicate to\r\n\t * implementing components that a category was selected.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Output() public categorySelected: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the entity search table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic entitySelectTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the category options.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic categoryOptions: object[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loaded entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic entityTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the category label.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic selectedCategory: string;\r\n\r\n\t/**\r\n\t * Gets or sets the loading entity type flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic loadingEntityType: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the string array categories.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic categories: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the summary data path available columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic summaryDataPathColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loaded entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Configures this components display based on the sent route\r\n\t * information.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.setFilterKeywordString(this.searchCriteria.filter);\r\n\t\tawait this.setCategories();\r\n\t\tthis.setCategoryLabel(this.entityTypeGroup);\r\n\t\tthis.summaryDataPathColumns =\r\n\t\t\tawait this.entityService.getDynamicSummaryColumns(\r\n\t\t\t\tthis.entityTypeGroup);\r\n\t\tthis.selectedColumns = this.summaryDataPathColumns;\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the categories properties wich defines\r\n\t * the category label and options to be displayed in\r\n\t * the search filter component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic async setCategories(): Promise\r\n\t{\r\n\t\tthis.categories =\r\n\t\t\tthis.searchCriteria.category\r\n\t\t\t\t.split(\r\n\t\t\t\t\tAppConstants.characters.comma);\r\n\r\n\t\tfor (const category of this.categories)\r\n\t\t{\r\n\t\t\tconst entityType: IEntityType =\r\n\t\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t`Group eq '${category}'`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tthis.categoryOptions.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: category,\r\n\t\t\t\t\tlabel:\r\n\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\tentityType.name,\r\n\t\t\t\t\t\t\t\tAppConstants.characters.period))\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.entityTypeGroup = AppConstants.empty;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the definitions for the entity search common table\r\n\t *\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.entitySelectTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(this.entityTypeGroup)\r\n\t\t\t\t\t\t? 'Entities'\r\n\t\t\t\t\t\t: StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\t\t\t\t\tAppConstants.characters.period)),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.searchCriteria.filter,\r\n\t\t\t\t\torderBy: this.searchCriteria.orderBy,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: this.searchCriteria.limit,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.searchCriteria.virtualPageSize\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\t(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\tthis.entityTypeGroup;\r\n\r\n\t\t\t\t\t\treturn this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.summaryDataPathColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\titemSelection: {\r\n\t\t\t\t\tselectionMode: AppConstants.itemSelectionMode.multiple,\r\n\t\t\t\t\tselectedItemEvent: (\r\n\t\t\t\t\t\titem: any,\r\n\t\t\t\t\t\tselected: boolean) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem.selected = selected;\r\n\t\t\t\t\t\tthis.itemSelected.emit(\r\n\t\t\t\t\t\t\titem);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tconsiderFilteringResults: () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdocument.getElementById(\r\n\t\t\t\t\t\t\t\tAppConstants.commonTableActions.filterInput)\r\n\t\t\t\t\t\t\t\t.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter criteria changed event sent from the filter controls.\r\n\t *\r\n\t * @param {string} filterCriteria\r\n\t * The filter criteria sent from the search filter.\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic filterCriteriaChanged(\r\n\t\tfilterCriteria: string): void\r\n\t{\r\n\t\t// Get the query string filter\r\n\t\tthis.searchCriteria.filter =\r\n\t\t\t(!AnyHelper.isNullOrEmpty(filterCriteria))\r\n\t\t\t\t? this.getQueryStringContainsFilter(filterCriteria)\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t// Reload the table definitions and query string\r\n\t\tif (AnyHelper.isNullOrEmpty(this.selectedCategory)\r\n\t\t\t|| this.selectedCategory === AppConstants.undefined)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tthis.searchCriteria.filter);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the category selection change. This will\r\n\t * update the view based on the selected type group.\r\n\t *\r\n\t * @param {string} selectedCategory\r\n\t * The selected category string.\r\n\t * @async\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\tpublic async selectedCategoryChanged(\r\n\t\tselectedCategory: string): Promise\r\n\t{\r\n\t\tthis.selectedCategory = selectedCategory;\r\n\t\t// Restore the table definition loading state\r\n\t\tthis.loadingTableDefinitions = true;\r\n\r\n\t\t// Set the Entity Group and Name based on the selected category\r\n\t\tthis.entityTypeGroup = selectedCategory;\r\n\r\n\t\tthis.setCategoryLabel(this.entityTypeGroup);\r\n\r\n\t\t// Reload the table definitions and query string\r\n\t\tif (AnyHelper.isNullOrEmpty(selectedCategory))\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.filterValue = AppConstants.empty;\r\n\t\t\t\t\tthis.searchCriteria.filter = AppConstants.empty;\r\n\t\t\t\t\tthis.entitySelectTableDefinitions.objectSearch.filter =\r\n\t\t\t\t\t\tthis.searchCriteria.filter;\r\n\t\t\t\t\tthis.loadingTableDefinitions = false;\r\n\t\t\t\t\tthis.loadingEntityType = true;\r\n\t\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.categorySelected.emit(selectedCategory);\r\n\t\t\tsetTimeout(\r\n\t\t\t\tasync() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.summaryDataPathColumns =\r\n\t\t\t\t\t\tawait this.entityService.getDynamicSummaryColumns(\r\n\t\t\t\t\t\t\tthis.entityTypeGroup);\r\n\t\t\t\t\tthis.displayKeywordMessage =\r\n\t\t\t\t\t\tthis.summaryDataPathColumns.length === 0;\r\n\t\t\t\t\tthis.selectedColumns = this.summaryDataPathColumns;\r\n\t\t\t\t\tthis.setupTableDefinitions();\r\n\t\t\t\t\tthis.entitySelectTableDefinitions.objectSearch.filter =\r\n\t\t\t\t\t\tthis.searchCriteria.filter;\r\n\t\t\t\t\tthis.loadingEntityType = false;\r\n\t\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}","
\r\n\t 0\">\r\n\t\t
\r\n\t\t\tParent Associations\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
0\"\r\n\t\t\t\tclass=\"search-list-content\"\r\n\t\t\t\t[@contentAnimation]=\"state\">\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tA parent is required to create this entity. Please select a minimum of one parent association from the list below.\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tParents\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
  • 0\"\r\n\t\t\t\t\t\t\tclass=\"parent-entity-list\"\r\n\t\t\t\t\t\t\t[@contentAnimation]=\"state\">\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{{parentGroup.entityDefinition.displayTitle}} ({{parentGroup.relatedEntities.length}})\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{parentGroup.entityDefinition.getItemTitle(item)}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit,\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tIEntityRelationshipGroup\r\n} from '@entity/interfaces/entity-relationship-group.interface';\r\nimport {\r\n\tIEntitySearch\r\n} from '@entity/interfaces/entity-search.interface';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tISelectable\r\n} from '@shared/interfaces/application-objects/selectable.interface';\r\nimport {\r\n\tIWizardStepMenuItem\r\n} from '@shared/interfaces/application-objects/wizard-step-menu-item.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-parent-selection',\r\n\ttemplateUrl: './parent-selection.component.html',\r\n\tstyleUrls: [\r\n\t\t'./parent-selection.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an entity parent selection wizard step.\r\n *\r\n * @export\r\n * @class ParentSelectionComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ParentSelectionComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the parent selection component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition api service used in this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this table display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the selected entity type for creation.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic entityCreationType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition of the selected entity type.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic entityCreationDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity search related with this wizard\r\n\t * step if applicable.\r\n\t *\r\n\t * @type {IEntitySearch}\r\n\t * @memberof BaseEntityCreationStep\r\n\t */\r\n\tpublic entitySearch: IEntitySearch;\r\n\r\n\t/**\r\n\t * Gets or sets the parent required value of this\r\n\t * wizard step.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic parentRequired: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the list of parent entity definitions that\r\n\t * can be set for the entity creation type.\r\n\t *\r\n\t * @type {EntityDefinition[]}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic allowedParents: EntityDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of parent entity type associations that\r\n\t * can or have been set via this wizard step.\r\n\t *\r\n\t * @type {IEntityRelationshipGroup[]}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic parentGroups: IEntityRelationshipGroup[] = [];\r\n\r\n\t/**\r\n\t * Gets the current parent group displayed in this wizard\r\n\t * step. This can be altered via changing the parent entity\r\n\t * type.\r\n\t *\r\n\t * @type {IEntityRelationshipGroup}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic get currentParentGroup(): IEntityRelationshipGroup\r\n\t{\r\n\t\treturn this.parentGroups.filter(\r\n\t\t\t(entityParentGroup: IEntityRelationshipGroup) =>\r\n\t\t\t\tentityParentGroup.typeGroup === this.entitySearch.group)[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a truthy that identifies if a parent selection has been made.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic get parentSelectionExists(): boolean\r\n\t{\r\n\t\treturn this.parentGroups.filter(\r\n\t\t\t(parentGroup: IEntityRelationshipGroup) =>\r\n\t\t\t\tparentGroup.relatedEntities.length > 0).length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the number of parent items to display in the list.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate readonly listSize: number = 5;\r\n\r\n\t/**\r\n\t * Gets the number of parent items to load per api call.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate readonly limit: number = 15;\r\n\r\n\t/**\r\n\t * Gets the identifier of the entity type for creation sent to this step.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate readonly entityCreationTypeIdentifier: string =\r\n\t\t'entityCreationType';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method is used to calculate and handle available parent selections\r\n\t * for an entity with a selected entity type id.\r\n\t *\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.entityCreationType =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data[this.entityCreationTypeIdentifier];\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addToValidator(\r\n\t\t\t\tthis.validateStep.bind(this));\r\n\t\tthis.context.source\r\n\t\t\t.addToNext(\r\n\t\t\t\tthis.createEntity.bind(this));\r\n\r\n\t\tthis.parentGroups =\r\n\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t.currentData.data.parentSelections)\r\n\t\t\t\t\t? []\r\n\t\t\t\t\t: this.mapParentGroupsFromUrlStorage(\r\n\t\t\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t\t\t.currentData.data.parentSelections);\r\n\r\n\t\tthis.loadStepData();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the selected category changed event sent from the entity-select.\r\n\t *\r\n\t * @param {string} selectedCategory\r\n\t * The selected category of the entity-select.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic categorySelected(\r\n\t\tselectedCategory: string): void\r\n\t{\r\n\t\tthis.entitySearch.group = selectedCategory;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the parent selection sent from the parent association\r\n\t * list.\r\n\t *\r\n\t * @param {ISelectable} parentSelection\r\n\t * The most up to date search criteria as defined by the UI.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tpublic parentSelected(\r\n\t\tparentSelection: ISelectable): void\r\n\t{\r\n\t\tconst existingIndex: number =\r\n\t\t\tthis.currentParentGroup.relatedEntities\r\n\t\t\t\t.findIndex(\r\n\t\t\t\t\t(relatedEntity: any) =>\r\n\t\t\t\t\t\trelatedEntity.id === parentSelection.id);\r\n\r\n\t\tif (parentSelection.selected === true\r\n\t\t\t&& existingIndex === AppConstants.negativeIndex)\r\n\t\t{\r\n\t\t\tthis.currentParentGroup.relatedEntities =\r\n\t\t\t\t\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.currentParentGroup.relatedEntities,\r\n\t\t\t\t\tparentSelection\r\n\t\t\t\t];\r\n\t\t}\r\n\t\telse if (existingIndex !== AppConstants.negativeIndex)\r\n\t\t{\r\n\t\t\tthis.currentParentGroup\r\n\t\t\t\t.relatedEntities.splice(\r\n\t\t\t\t\texistingIndex,\r\n\t\t\t\t\t1);\r\n\t\t}\r\n\r\n\t\tthis.currentParentGroup.relatedEntities =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t...this.currentParentGroup.relatedEntities\r\n\t\t\t];\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\t...this.context.source.activeMenuItem.currentData.data,\r\n\t\t\t\tparentSelections: this.getParentGroupsForUrlStorage()\r\n\t\t\t});\r\n\t\tthis.context.source.storeData(\r\n\t\t\tthis.context.source.activeMenuItem.currentData);\r\n\r\n\t\tthis.context.source.isValid =\r\n\t\t\tthis.context.source.activeWizardStep.validator();\r\n\t}\r\n\r\n\t/**\r\n\t * Loads step specific data.\r\n\t *\r\n\t * @async\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate async loadStepData(): Promise\r\n\t{\r\n\t\tconst creationEntityDefinitionData: IEntityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.typeId} eq `\r\n\t\t\t\t\t+ `${this.entityCreationType.id}`,\r\n\t\t\t\t`${AppConstants.commonProperties.versionId} desc`);\r\n\t\tthis.entityCreationDefinition =\r\n\t\t\tnew EntityDefinition(creationEntityDefinitionData);\r\n\r\n\t\tthis.parentRequired =\r\n\t\t\tthis.entityCreationDefinition.requiresParent;\r\n\t\tthis.context.data.label =\r\n\t\t\t`Create ${this.entityCreationDefinition.displayTitle}`;\r\n\t\tthis.context.source.activeMenuItem.label =\r\n\t\t\t`${this.entityCreationDefinition.displayTitle} Settings`;\r\n\t\tthis.context.data.displayedWizardMenuItems =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t...this.context.data.displayedWizardMenuItems\r\n\t\t\t];\r\n\r\n\t\tthis.allowedParents =\r\n\t\t\tawait this.getAllowedParentDefinitions();\r\n\r\n\t\tif (this.allowedParents.length === 0)\r\n\t\t{\r\n\t\t\tthis.parentGroups = [];\r\n\t\t\tthis.context.source.validStepChanged(\r\n\t\t\t\tthis.context.source.activeWizardStep.validator());\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait this.getAllowedParentEntityTypes();\r\n\t\tthis.mapParentGroups(entityTypes);\r\n\r\n\t\tconst entityTypeCategories: string =\r\n\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\tentityTypes,\r\n\t\t\t\tAppConstants.commonProperties.group);\r\n\t\tthis.entitySearch =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tcategory: entityTypeCategories,\r\n\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\tgroup: AppConstants.empty,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tlimit: this.limit,\r\n\t\t\t\tname: AppConstants.empty,\r\n\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\ttypeId: 0,\r\n\t\t\t\tvirtualPageSize: this.listSize\r\n\t\t\t};\r\n\r\n\t\tthis.context.source.validStepChanged(\r\n\t\t\tthis.context.source.activeWizardStep.validator());\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates step specific variables.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A truthy representing the validity of this step.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate validateStep(): boolean\r\n\t{\r\n\t\treturn this.parentRequired === false\r\n\t\t\t|| (this.parentRequired === true\r\n\t\t\t\t&& this.parentSelectionExists === true);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity creation event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate async createEntity(): Promise\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t});\r\n\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.entityCreationType)\r\n\t\t\t\t.displayName;\r\n\t\tconst newEntityId: number =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.createEntityInstance(),\r\n\t\t\t\t\t`Creating ${displayName}`,\r\n\t\t\t\t\t`Created ${displayName}`,\r\n\t\t\t\t\t`${displayName} was created.`,\r\n\t\t\t\t\t`${displayName} was not created.`));\r\n\r\n\t\tthis.moduleService.name =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tthis.entityCreationType.name);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\t\tthis.context.source.storeData(\r\n\t\t\tthis.context.source.activeMenuItem.currentData);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityCreationType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tnewEntityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers parent selection information for the entity creation\r\n\t * based on the available url parameters. This will parse the URL stored\r\n\t * object and create or load existing groups depending on business rules.\r\n\t *\r\n\t * @param {{typeGroup: string,parentIds: number[]}[]} parentSelections\r\n\t * The object holding data for current entity creation type parent\r\n\t * selections.\r\n\t * @returns {IEntityRelationshipGroup[]}\r\n\t * The relationship groups associated and set from the url parameter to this\r\n\t * entity type creation.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate mapParentGroupsFromUrlStorage(\r\n\t\tparentSelections:\r\n\t\t\t{\r\n\t\t\t\ttypeGroup: string;\r\n\t\t\t\tparentIds: number[];\r\n\t\t\t}[]): IEntityRelationshipGroup[]\r\n\t{\r\n\t\tconst parentGroups =\r\n\t\t\tthis.parentGroups || [];\r\n\r\n\t\tparentSelections.forEach(\r\n\t\t\t(parentSelection:\r\n\t\t\t\t{\r\n\t\t\t\t\ttypeGroup: string;\r\n\t\t\t\t\tparentIds: number[];\r\n\t\t\t\t}) =>\r\n\t\t\t{\r\n\t\t\t\tconst existingParentGroups =\r\n\t\t\t\t\tparentGroups.filter(\r\n\t\t\t\t\t\t(relationshipGroup: IEntityRelationshipGroup) =>\r\n\t\t\t\t\t\t\trelationshipGroup.typeGroup\r\n\t\t\t\t\t\t\t\t.indexOf(parentSelection.typeGroup) !== -1);\r\n\t\t\t\tconst existingParentGroup: IEntityRelationshipGroup =\r\n\t\t\t\t\texistingParentGroups.length === 0\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: existingParentGroups[0];\r\n\r\n\t\t\t\tif (existingParentGroup == null)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst parentEntities: IEntityInstance[] = [];\r\n\t\t\t\t\tparentSelection.parentIds.forEach((id: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tparentEntities.push(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: id\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tparentGroups.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttypeGroup: parentSelection.typeGroup,\r\n\t\t\t\t\t\t\trelatedEntities: parentEntities\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn parentGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses the existing parent type selections and stores this data in a\r\n\t * compressed data format allowing for smaller url storage.\r\n\t *\r\n\t * @returns {{typeGroup: string,parentIds: number[]}[]}\r\n\t * The object data required to store and load existing parent selections via\r\n\t * the url.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate getParentGroupsForUrlStorage(): {\r\n\t\t\ttypeGroup: string;\r\n\t\t\tparentIds: number[];\r\n\t\t}[]\r\n\t{\r\n\t\tlet parentTypeArray: number[] = [];\r\n\t\tconst parentArray: {\r\n\t\t\t\ttypeGroup: string;\r\n\t\t\t\tparentIds: number[];\r\n\t\t\t}[] = [];\r\n\r\n\t\tthis.parentGroups.forEach(\r\n\t\t\t(relationshipGroup: IEntityRelationshipGroup) =>\r\n\t\t\t{\r\n\t\t\t\tparentTypeArray = [];\r\n\r\n\t\t\t\trelationshipGroup.relatedEntities.forEach(\r\n\t\t\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tparentTypeArray.push(entityInstance.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tparentArray.push(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttypeGroup: relationshipGroup.typeGroup,\r\n\t\t\t\t\t\tparentIds: parentTypeArray\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn parentArray;\r\n\t}\r\n\r\n\t/**\r\n\t * Uses a wildcard match for all allowed parents to load the allowed\r\n\t * parent definitions.\r\n\t *\r\n\t * @async\r\n\t * @returns {EntityDefinition[]}\r\n\t * The set of allowed parent definitions for the selected entity creation\r\n\t * type.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate async getAllowedParentDefinitions(): Promise\r\n\t{\r\n\t\tconst wildcardFilter: string =\r\n\t\t\tthis.createAllowedParentsWildcardFilter();\r\n\t\tconst allowedParentData: IEntityDefinition[] =\r\n\t\t\tawait this.entityDefinitionApiService.query(\r\n\t\t\t\twildcardFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn allowedParentData\r\n\t\t\t.map((data: IEntityDefinition) =>\r\n\t\t\t\tnew EntityDefinition(data));\r\n\t}\r\n\r\n\t/**\r\n\t * Uses a set of matching allowed parent type ids to find the set of\r\n\t * allowed parent entity types for entity creation.\r\n\t *\r\n\t * @async\r\n\t * @returns {IEntityType[]}\r\n\t * The set of allowed parent types for the selected entity creation\r\n\t * type.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate async getAllowedParentEntityTypes(): Promise\r\n\t{\r\n\t\tconst commaSeparatedTypeIdArray: string =\r\n\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\tthis.allowedParents,\r\n\t\t\t\tAppConstants.commonProperties.typeId);\r\n\r\n\t\treturn this.entityTypeApiService\r\n\t\t\t.query(\r\n\t\t\t\t`(${AppConstants.commonProperties.id} IN `\r\n\t\t\t\t\t+ `(${commaSeparatedTypeIdArray}))`,\r\n\t\t\t\t`${AppConstants.commonProperties.name} desc`);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps the available selected parent groups from existing or new\r\n\t * selections.\r\n\t *\r\n\t * @param {IEntityType[]} entityTypes\r\n\t * The set allowed parent types and child selections to map into the\r\n\t * parent groups value.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate mapParentGroups(\r\n\t\tentityTypes: IEntityType[]): void\r\n\t{\r\n\t\tentityTypes.forEach(\r\n\t\t\tasync(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tlet existingEntities: IEntityInstance[] = [];\r\n\t\t\t\tconst entityTypeParentGroup: IEntityRelationshipGroup[] =\r\n\t\t\t\t\tthis.parentGroups.filter(\r\n\t\t\t\t\t\t(parentGroup: IEntityRelationshipGroup) =>\r\n\t\t\t\t\t\t\tparentGroup.typeGroup === entityType.group);\r\n\r\n\t\t\t\tif (entityTypeParentGroup.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\texistingEntities =\r\n\t\t\t\t\t\tentityTypeParentGroup[0].relatedEntities.filter(\r\n\t\t\t\t\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tentityInstance?.data));\r\n\t\t\t\t\tconst requiredEntityInstanceData: IEntityInstance[] =\r\n\t\t\t\t\t\tentityTypeParentGroup[0].relatedEntities.filter(\r\n\t\t\t\t\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tentityInstance?.data));\r\n\r\n\t\t\t\t\tif (requiredEntityInstanceData.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst commaSeparatedInstanceIds: string =\r\n\t\t\t\t\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\t\t\t\t\trequiredEntityInstanceData,\r\n\t\t\t\t\t\t\t\tAppConstants.commonProperties.id);\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tentityType.group;\r\n\t\t\t\t\t\tconst requiredLoadEntities: IEntityInstance[] =\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService.query(\r\n\t\t\t\t\t\t\t\t`(${AppConstants.commonProperties.id} IN `\r\n\t\t\t\t\t\t\t\t\t+ `(${commaSeparatedInstanceIds}))`,\r\n\t\t\t\t\t\t\t\t`${AppConstants.commonProperties.id} desc`);\r\n\r\n\t\t\t\t\t\texistingEntities =\r\n\t\t\t\t\t\t\texistingEntities\r\n\t\t\t\t\t\t\t\t.concat(requiredLoadEntities);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst existingIndex =\r\n\t\t\t\t\tthis.parentGroups.indexOf(entityTypeParentGroup[0]);\r\n\t\t\t\tif (existingIndex > AppConstants.negativeIndex)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.parentGroups\r\n\t\t\t\t\t\t.splice(\r\n\t\t\t\t\t\t\texistingIndex,\r\n\t\t\t\t\t\t\t1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.parentGroups.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trelatedEntities: existingEntities,\r\n\t\t\t\t\t\ttypeGroup: entityType.group,\r\n\t\t\t\t\t\tentityDefinition:\r\n\t\t\t\t\t\t\tthis.allowedParents.filter(\r\n\t\t\t\t\t\t\t\t(entityDefinition: EntityDefinition) =>\r\n\t\t\t\t\t\t\t\t\tentityDefinition.typeId ===\r\n\t\t\t\t\t\t\t\t\t\tentityType.id)[0]\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a wildcard filter specifically built to find allowed parents\r\n\t * for the existing entity creation type.\r\n\t *\r\n\t * @returns {string}\r\n\t * A filter available that will perform a reverse lookup on entity\r\n\t * definitions that allow this entity creation type as a child.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate createAllowedParentsWildcardFilter(): string\r\n\t{\r\n\t\tlet wildcardFilter: string = AppConstants.empty;\r\n\t\tconst wildcardSplit: string[] =\r\n\t\t\tthis.getAllowedParentWildcards();\r\n\r\n\t\tfor (let index: number = 0; index < wildcardSplit.length; index ++)\r\n\t\t{\r\n\t\t\tconst newFilter: string =\r\n\t\t\t\t'DbFunctions.JsonQuery(JsonData, \\'$.supportedChildTypes\\')'\r\n\t\t\t\t\t+ `.Contains(\"${wildcardSplit[index]}\") eq true`;\r\n\r\n\t\t\twildcardFilter +=\r\n\t\t\t\tindex === 0\r\n\t\t\t\t\t? newFilter\r\n\t\t\t\t\t: ` OR ${newFilter}`;\r\n\t\t}\r\n\r\n\t\treturn wildcardFilter;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a wildcard array for all possible parent selections\r\n\t * for the existing entity creation type.\r\n\t *\r\n\t * @returns {string}\r\n\t * An array available for definitions that allow this entity creation\r\n\t * type as a child.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate getAllowedParentWildcards(): string[]\r\n\t{\r\n\t\tlet locationFilter: string = AppConstants.empty;\r\n\t\tconst wildcards: string[] = [];\r\n\t\tconst wildcardSplit: string[] =\r\n\t\t\tthis.entityCreationType.name.split(\r\n\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\tfor (let index: number = 0; index < wildcardSplit.length; index ++)\r\n\t\t{\r\n\t\t\tconst typeSection: string = wildcardSplit[index];\r\n\t\t\tconst currentLocationFilter: string =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tlocationFilter)\r\n\t\t\t\t\t? typeSection\r\n\t\t\t\t\t: `${locationFilter}.${typeSection}`;\r\n\t\t\tconst currentWildcardFilter: string =\r\n\t\t\t\twildcardSplit.length > index + 1\r\n\t\t\t\t\t? `${currentLocationFilter}.*`\r\n\t\t\t\t\t: currentLocationFilter;\r\n\r\n\t\t\twildcards.push(currentWildcardFilter);\r\n\t\t\tlocationFilter = currentLocationFilter;\r\n\t\t}\r\n\r\n\t\treturn wildcards;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance and all entity relationships.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate async createEntityInstance(): Promise\r\n\t{\r\n\t\tlet parentAssociationGroups: IEntityRelationshipGroup[] = [];\r\n\t\tif (this.parentSelectionExists)\r\n\t\t{\r\n\t\t\tparentAssociationGroups =\r\n\t\t\t\tthis.parentGroups.filter(\r\n\t\t\t\t\t(parentGroup: IEntityRelationshipGroup) =>\r\n\t\t\t\t\t\tparentGroup.relatedEntities.length > 0);\r\n\t\t}\r\n\r\n\t\tconst parameterObject: any =\r\n\t\t\tthis.getCreateParameters();\r\n\r\n\t\tlet createdEntityId: number;\r\n\t\tlet initialEntityCreated = false;\r\n\t\tif (parentAssociationGroups.length > 0)\r\n\t\t{\r\n\t\t\tfor (const entityParentRelationship\r\n\t\t\t\tof parentAssociationGroups)\r\n\t\t\t{\r\n\t\t\t\tfor (const entityParent\r\n\t\t\t\t\tof entityParentRelationship.relatedEntities)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (initialEntityCreated === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\tthis.entityCreationType.group;\r\n\t\t\t\t\t\tcreatedEntityId =\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\tentityParentRelationship.typeGroup,\r\n\t\t\t\t\t\t\t\t\tentityParent.id,\r\n\t\t\t\t\t\t\t\t\tparameterObject);\r\n\t\t\t\t\t\tinitialEntityCreated = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\tentityParentRelationship.typeGroup;\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.assignChild(\r\n\t\t\t\t\t\t\t\tentityParent.id,\r\n\t\t\t\t\t\t\t\tcreatedEntityId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (this.parentRequired === true)\r\n\t\t\t{\r\n\t\t\t\tthrow new Error('A parent association must exist to create '\r\n\t\t\t\t\t+ 'this item. Please select one from the available parent '\r\n\t\t\t\t\t+ 'associations list.');\r\n\t\t\t}\r\n\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\t\tthis.entityCreationType.group;\r\n\t\t\tcreatedEntityId =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\t\tnull);\r\n\t\t}\r\n\r\n\t\treturn createdEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the create parameters for the entity instance.\r\n\t *\r\n\t * @returns {object}\r\n\t * The create parameters for the entity instance.\r\n\t * @memberof ParentSelectionComponent\r\n\t */\r\n\tprivate getCreateParameters(): object\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\t\tconst createParameters: any[] =\r\n\t\t\tcurrentData?.data?.createParameters ?? [];\r\n\r\n\t\tconst parameterObject: any = {};\r\n\t\tfor (const createParameter of createParameters)\r\n\t\t{\r\n\t\t\tconst value: any =\r\n\t\t\t\tget(currentData,\r\n\t\t\t\t\tcreateParameter.parameterValue);\r\n\r\n\t\t\tparameterObject[createParameter.parameterName] =\r\n\t\t\t\ttypeof value === AppConstants.propertyTypes.string\r\n\t\t\t\t\t? `${value}`\r\n\t\t\t\t\t: value;\r\n\t\t}\r\n\r\n\t\treturn parameterObject;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tDirective\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\n\r\n@Directive({\r\n\tselector: '[EntityTable]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for displaying a\r\n * component with the entity table.\r\n *\r\n * @export\r\n * @class EntityTableDirective\r\n */\r\nexport class EntityTableDirective\r\n{\r\n\t/**\r\n\t * Gets or sets the filter value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic filterValue: string;\r\n\r\n\t/**\r\n\t * Gets or sets the category label.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic categoryLabel: string;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic selectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a value signifying whether or not the keyword based messsage\r\n\t * should be displayed if zero keywords are found.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic displayKeywordMessage: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic loadingTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the table redraw debounce delay.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tprivate readonly tableRedrawDebonceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Sets string representing the filter value to be used to find matching\r\n\t * entity types based on the filter.\r\n\t *\r\n\t * @param {string} filterQuery\r\n\t * The most up to date search criteria filter query.\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic setFilterKeywordString(filterQuery: string): void\r\n\t{\r\n\t\tthis.filterValue = (AnyHelper.isNullOrEmpty(filterQuery))\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: filterQuery.split('\\'')[1];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string representing the query to be used to find matching\r\n\t * entity types based on the filter.\r\n\t *\r\n\t * @param {string} filter\r\n\t * The most up to date search criteria as defined by the UI.\r\n\t * @memberof EntityTableDirective\r\n\t * @returns {string}\r\n\t * The filter to be used when calling to the entity instance query api\r\n\t * interface.\r\n\t */\r\n\tpublic getQueryStringContainsFilter(filter: string): string\r\n\t{\r\n\t\tlet query: string;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(filter))\r\n\t\t{\r\n\t\t\tquery = AppConstants.empty;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet searchArray: string[] = filter.split(' ');\r\n\t\t\tsearchArray = searchArray.map(\r\n\t\t\t\t(word: string) =>\r\n\t\t\t\t\t`keywords.Contains('${word}') eq true`);\r\n\r\n\t\t\tquery = searchArray.join(' and ');\r\n\t\t}\r\n\r\n\t\treturn query;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the category label from the loaded entity type group\r\n\t *\r\n\t * @param {string} categoryGroup\r\n\t * The category group to be formatted as a category label.\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic setCategoryLabel(categoryGroup: string): void\r\n\t{\r\n\t\tthis.categoryLabel =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\tcategoryGroup,\r\n\t\t\t\t\tAppConstants.characters.period));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for the current entity page.\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Restores table definitions on demand.\r\n\t * This is used to update the table and load it with changed\r\n\t * definitions in the ui.\r\n\t *\r\n\t * @memberof EntityTableDirective\r\n\t */\r\n\tpublic restoreTableDefinition(): void\r\n\t{\r\n\t\tthis.loadingTableDefinitions = true;\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setupTableDefinitions();\r\n\t\t\t},\r\n\t\t\tthis.tableRedrawDebonceDelay);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityDefinitionDto\r\n} from '@api/interfaces/security/security-definition.dto.interface';\r\nimport {\r\n\tISecurityItemDto\r\n} from '@api/interfaces/security/security-item.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tBusinessLogicEntity\r\n} from '@shared/business-logic-entities/business-logic-entity';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityLayout\r\n} from '@shared/implementations/entities/entity-layout';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIStoredVariableDefinition\r\n} from '@shared/interfaces/application-objects/stored-variable-definition';\r\nimport {\r\n\tIEntity\r\n} from '@shared/interfaces/entities/entity';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tBaseStoredVariableService\r\n} from '@shared/services/base/base-stored-variable.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tcloneDeep,\r\n\tisEqual\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing a common interface to gather entity information.\r\n *\r\n * @export\r\n * @class EntityService\r\n * @extends {BaseStoredVariableService}\r\n */\r\n@Injectable()\r\nexport class EntityService\r\n\textends BaseStoredVariableService\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityService.\r\n\t *\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance service for this component.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type service for this component.\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The entity layout service for this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service for this component.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The entity version service for this component.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tprivate readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tprivate readonly entityLayoutApiService: EntityLayoutApiService,\r\n\t\tprivate readonly entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tprivate readonly entityTypeApiService: EntityTypeApiService,\r\n\t\tprivate readonly entityVersionApiService: EntityVersionApiService,\r\n\t\tprivate readonly resolverService: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.storedVariables =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.entityDefinitions,\r\n\t\t\t\t\tapiService: this.entityDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.entityLayouts,\r\n\t\t\t\t\tapiService: this.entityLayoutApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.entityLayoutTypes,\r\n\t\t\t\t\tapiService: this.entityLayoutTypeApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.entityTypes,\r\n\t\t\t\t\tapiService: this.entityTypeApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.entityVersions,\r\n\t\t\t\t\tapiService: this.entityVersionApiService\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.storedVariables.forEach(\r\n\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tstoredVariable.apiService.entityService = this;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definitions.\r\n\t *\r\n\t * @type {IEntityDefinition[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic entityDefinitions: IEntityDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity layouts.\r\n\t *\r\n\t * @type {IEntityLayout[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic entityLayouts: IEntityLayout[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout types.\r\n\t *\r\n\t * @type {IEntityLayoutType[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic entityLayoutTypes: IEntityLayoutType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity types.\r\n\t *\r\n\t * @type {IEntityType[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic entityTypes: IEntityType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity versions.\r\n\t *\r\n\t * @type {IEntityVersion[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic entityVersions: IEntityVersion[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local variable that allows this to query for the\r\n\t * max result set. If this value is set as false, this will instead call\r\n\t * for the api helper get full data set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic allowedMaxResultSet: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the storage variables that will be stored in this\r\n\t * singleton service.\r\n\t *\r\n\t * @type {IStoredVariableDefinition[]}\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic storedVariables: IStoredVariableDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets a formly layout based on the defined layout type of summary for the\r\n\t * sent entity type id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityType\r\n\t * The entity type to gather a layout for.\r\n\t * @param {string} layoutName\r\n\t * The entity layout type to load.\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance to load a layout for.\r\n\t * @param {boolean} disableAllFields\r\n\t * If true this will disable all layout fields, this defaults to false.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will return a formly field layout representing\r\n\t * the sent entity type id with a layout type of summary.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async getFormlyLayout(\r\n\t\tpageContext: IDynamicComponentContext,\r\n\t\tentityType: IEntityType,\r\n\t\tlayoutName: string,\r\n\t\tentityInstanceId: number,\r\n\t\tdisableAllFields: boolean = false): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityType.group;\r\n\t\tconst entityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tentityInstanceId);\r\n\r\n\t\tconst entityVersion: IEntityVersion =\r\n\t\t\tthis.entityVersions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityVersion: IEntityVersion) =>\r\n\t\t\t\t\t\tnestedEntityVersion.typeId === entityType.id\r\n\t\t\t\t\t\t\t&& nestedEntityVersion.number ===\r\n\t\t\t\t\t\t\t\tentityInstance.versionNumber\r\n\t\t\t\t\t\t\t&& nestedEntityVersion.enabled === true);\r\n\r\n\t\tconst entityLayoutType: IEntityLayoutType =\r\n\t\t\tthis.entityLayoutTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityLayoutType: IEntityLayoutType) =>\r\n\t\t\t\t\t\tnestedEntityLayoutType.name ===\r\n\t\t\t\t\t\t\tlayoutName);\r\n\r\n\t\tconst entityLayout: IEntityLayout =\r\n\t\t\tthis.entityLayouts\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityLayout: IEntityLayout) =>\r\n\t\t\t\t\t\tnestedEntityLayout.typeId === entityType.id\r\n\t\t\t\t\t\t\t&& nestedEntityLayout.versionId ===\r\n\t\t\t\t\t\t\t\tentityVersion.id\r\n\t\t\t\t\t\t\t&& nestedEntityLayout.layoutTypeId ===\r\n\t\t\t\t\t\t\t\tentityLayoutType.id);\r\n\r\n\t\tconst entitySecurityAccessPolicy: any =\r\n\t\t\tawait this.getEntityAccessPolicies(\r\n\t\t\t\tentityType.group,\r\n\t\t\t\tentityInstanceId);\r\n\r\n\t\tconst formlyLayout: FormlyFieldConfig[] =\r\n\t\t\tawait new EntityLayout(entityLayout)\r\n\t\t\t\t.getFormlyEntityLayout(\r\n\t\t\t\t\tpageContext,\r\n\t\t\t\t\tentitySecurityAccessPolicy?.data);\r\n\r\n\t\tif (disableAllFields === true)\r\n\t\t{\r\n\t\t\tFormlyHelper.disableAllFields(formlyLayout);\r\n\t\t}\r\n\r\n\t\treturn formlyLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers data and returns a fully populated Entity.\r\n\t *\r\n\t * @param {number} entityInstanceId\r\n\t * The id of the entity to be fully populated.\r\n\t * @param {string} entityInstanceType\r\n\t * The type of the entity to be fully populated.\r\n\t * @param {string} [entityLayoutTypeName]\r\n\t * If sent, this will return the layout associated with\r\n\t * this layout type for this entity.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async populateEntity(\r\n\t\tentityInstanceId: number,\r\n\t\tentityInstanceType: string,\r\n\t\tentityLayoutTypeName?: string): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityInstanceType;\r\n\t\tconst entityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tentityInstanceId);\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityType: IEntityType) =>\r\n\t\t\t\t\t\tnestedEntityType.group === entityInstanceType);\r\n\r\n\t\tconst entityVersion: IEntityVersion =\r\n\t\t\tthis.entityVersions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityVersion: IEntityVersion) =>\r\n\t\t\t\t\t\tnestedEntityVersion.typeId === entityType.id\r\n\t\t\t\t\t\t\t&& nestedEntityVersion.number ===\r\n\t\t\t\t\t\t\t\tentityInstance.versionNumber\r\n\t\t\t\t\t\t\t&& nestedEntityVersion.enabled === true);\r\n\r\n\t\tlet entityLayoutType: IEntityLayoutType;\r\n\t\tif (!AnyHelper.isNullOrEmpty(entityLayoutTypeName))\r\n\t\t{\r\n\t\t\tentityLayoutType =\r\n\t\t\t\tthis.entityLayoutTypes\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(nestedEntityLayouttype: IEntityLayoutType) =>\r\n\t\t\t\t\t\t\tnestedEntityLayouttype.name ===\r\n\t\t\t\t\t\t\t\tentityLayoutTypeName);\r\n\t\t}\r\n\r\n\t\tconst entityDefinition: IEntityDefinition =\r\n\t\t\tthis.entityDefinitions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityDefinition: IEntityDefinition) =>\r\n\t\t\t\t\t\tnestedEntityDefinition.typeId === entityType.id\r\n\t\t\t\t\t\t\t&& nestedEntityDefinition.versionId ===\r\n\t\t\t\t\t\t\t\tentityVersion.id);\r\n\r\n\t\tlet entityLayout: IEntityLayout;\r\n\t\tif (!AnyHelper.isNullOrEmpty(entityLayoutType))\r\n\t\t{\r\n\t\t\tentityLayout =\r\n\t\t\t\tthis.entityLayouts\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(nestedEntityLayout: IEntityLayout) =>\r\n\t\t\t\t\t\t\tnestedEntityLayout.typeId === entityType.id\r\n\t\t\t\t\t\t\t\t&& nestedEntityLayout.versionId ===\r\n\t\t\t\t\t\t\t\t\tentityVersion.id\r\n\t\t\t\t\t\t\t\t&& nestedEntityLayout.layoutTypeId ===\r\n\t\t\t\t\t\t\t\t\tentityLayoutType.id);\r\n\t\t}\r\n\r\n\t\tconst entity: IEntity =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tentityDefinition: entityDefinition,\r\n\t\t\t\tentityInstance: entityInstance,\r\n\t\t\t\tentityLayout: entityLayout,\r\n\t\t\t\tentityLayoutType: entityLayoutType,\r\n\t\t\t\tentityType: entityType,\r\n\t\t\t\tentityVersion: entityVersion\r\n\t\t\t};\r\n\r\n\t\treturn entity;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies the set of entity types matching the sent wildcard filter\r\n\t * has at least one entity type with ownership level view or\r\n\t * greater permissions.\r\n\t *\r\n\t * @async\r\n\t * @param {string} wildcardFilter\r\n\t * The wildcard filter of entitys type to verify access for.\r\n\t * @param {IEntityLayoutType} entityLayoutType\r\n\t * The entity layout type used for an access view check. This value defaults\r\n\t * to null.\r\n\t * @returns {Promise}\r\n\t * An awaitable value signifying whether or not the entity type has at\r\n\t * least one entity version allowed, and that the version has a full\r\n\t * layout type available to link to.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async verifyWildcardEntityTypeAccess(\r\n\t\twildcardFilter: string,\r\n\t\tentityLayoutType: IEntityLayoutType = null): Promise\r\n\t{\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\twildcardFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (entityTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tentityTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType,\r\n\t\t\t\t\t\tentityLayoutType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies the entity type has ownership level view or greater permissions.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} entityType\r\n\t * The entity type to verify access for.\r\n\t * @param {IEntityLayoutType} entityLayoutType\r\n\t * The entity layout type used for an access view check. This value defaults\r\n\t * to null.\r\n\t * @returns {Promise}\r\n\t * An awaitable value signifying whether or not the entity type has at\r\n\t * least one entity version allowed, and that the version has a full\r\n\t * layout type available to link to.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async verifyEntityTypeAccess(\r\n\t\tentityType: IEntityType,\r\n\t\tentityLayoutType: IEntityLayoutType = null): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst entityVersions: IEntityVersion[] =\r\n\t\t\tthis.entityVersions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityVersion: IEntityVersion) =>\r\n\t\t\t\t\t\tentityVersion.typeId === entityType.id);\r\n\r\n\t\tif (entityVersions.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(entityLayoutType)\r\n\t\t\t|| entityLayoutType.name === AppConstants.layoutTypes.generated)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst entityVersionIds: number[] =\r\n\t\t\tentityVersions\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(entityVersion: IEntityVersion) =>\r\n\t\t\t\t\t\tentityVersion.id);\r\n\r\n\t\tconst entityLayouts: IEntityLayout[] =\r\n\t\t\tthis.entityLayouts\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityLayout: IEntityLayout) =>\r\n\t\t\t\t\t\tentityLayout.layoutTypeId === entityLayoutType.id\r\n\t\t\t\t\t\t\t&& entityLayout.typeId === entityType.id\r\n\t\t\t\t\t\t\t&& entityVersionIds.indexOf(\r\n\t\t\t\t\t\t\t\tentityLayout.versionId) !== -1);\r\n\r\n\t\treturn entityLayouts.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies the entity type has ownership level view or greater permissions.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group to verify access for.\r\n\t * @param {string} entityLayoutTypeName\r\n\t * The entity layout type name used for an access view check. This value\r\n\t * defaults to null.\r\n\t * @returns {Promise}\r\n\t * An awaitable value signifying whether or not the entity type has at\r\n\t * least one entity version allowed, and that the version has a full\r\n\t * layout type available to link to.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async verifyEntityTypeAccessByGroup(\r\n\t\tentityTypeGroup: string,\r\n\t\tentityLayoutTypeName: string = null): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityType: IEntityType) =>\r\n\t\t\t\t\t\tnestedEntityType.group === entityTypeGroup);\r\n\r\n\t\tif (AnyHelper.isNull(entityType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst entityLayoutType: IEntityLayoutType =\r\n\t\t\tAnyHelper.isNullOrWhitespace(entityLayoutTypeName)\r\n\t\t\t\t? null\r\n\t\t\t\t: this.entityLayoutTypes\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(nestedEntityLayoutType: IEntityLayoutType) =>\r\n\t\t\t\t\t\t\tnestedEntityLayoutType.name ===\r\n\t\t\t\t\t\t\t\tentityLayoutTypeName);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(entityLayoutTypeName)\r\n\t\t\t&& AnyHelper.isNull(entityLayoutType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.verifyEntityTypeAccess(\r\n\t\t\tentityType,\r\n\t\t\tentityLayoutType);\r\n\t}\r\n\r\n\t/**\r\n\t * Given an entity type and version number, this will get the matching\r\n\t * entity definition.\r\n\t *\r\n\t * @async\r\n\t * @param {number} typeId\r\n\t * The entity type id.\r\n\t * @param {string} versionNumber\r\n\t * The entity version number.\r\n\t * @returns {IEntityDefinition}\r\n\t * The matching entity definition for this sent type id and version number.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getEntityDefinition(\r\n\t\ttypeId: number,\r\n\t\tversionNumber: number): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst entityVersion: IEntityVersion =\r\n\t\t\tthis.entityVersions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityVersion: IEntityVersion) =>\r\n\t\t\t\t\t\tnestedEntityVersion.typeId === typeId\r\n\t\t\t\t\t\t\t&& nestedEntityVersion.number === versionNumber);\r\n\r\n\t\treturn this.entityDefinitions\r\n\t\t\t.find(\r\n\t\t\t\t(entityDefinition: IEntityDefinition) =>\r\n\t\t\t\t\tentityDefinition.typeId === typeId\r\n\t\t\t\t\t&& entityDefinition.versionId ===\r\n\t\t\t\t\t\tentityVersion.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a parent entity instance id, an entity type group, and a wildcard\r\n\t * entity type name filter, this will get all of the children matching\r\n\t * that wildcard value.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance to get wildcard children for.\r\n\t * @param {string} entityInstanceType\r\n\t * The entity instance parent type group.\r\n\t * @param {string} wildcardChildFilter\r\n\t * The wildcard that will be checked against supported child types in order\r\n\t * to find that set of associated children. Ie. 'WorkItem'\r\n\t * @param {string} orderBy\r\n\t * The order by value to use when querying for wildcard children.\r\n\t * @returns {Promise}\r\n\t * An awaitable value that will contain all of the children of the sent\r\n\t * entity instance by id matching the wildcard child type.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getWildcardChildren(\r\n\t\tentityInstanceId: number,\r\n\t\tentityInstanceType: string,\r\n\t\twildcardChildFilter: string,\r\n\t\torderBy: string): Promise\r\n\t{\r\n\t\tconst entity: IEntity =\r\n\t\t\tawait this.populateEntity(\r\n\t\t\t\tentityInstanceId,\r\n\t\t\t\tentityInstanceType);\r\n\r\n\t\tconst childEntityTypes: string[] =\r\n\t\t\tnew EntityDefinition(entity.entityDefinition)\r\n\t\t\t\t.supportedChildTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(type: string) =>\r\n\t\t\t\t\t\ttype === wildcardChildFilter\r\n\t\t\t\t\t\t\t|| type.startsWith(`${wildcardChildFilter}.`))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(type: string) =>\r\n\t\t\t\t\t\ttype.replace(\r\n\t\t\t\t\t\t\tAppConstants.characters.asterisk,\r\n\t\t\t\t\t\t\tAppConstants.empty));\r\n\r\n\t\tif (childEntityTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst supportedEntityTypes: EntityType[] =\r\n\t\t\tawait this.getEntityTypesFromNameList(childEntityTypes);\r\n\r\n\t\tconst filter: string =\r\n\t\t\tApiFilterHelper.getEntityTypeFilter(supportedEntityTypes);\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = entityInstanceType;\r\n\r\n\t\treturn this.getFullHierarchyDataSet(\r\n\t\t\tentityInstanceId,\r\n\t\t\tentityInstanceType,\r\n\t\t\tfilter,\r\n\t\t\torderBy);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of entity types, this query will return all entity\r\n\t * instances of each entity type.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType[]} entityTypes\r\n\t * The entity type array identifying the set of instances to collect.\r\n\t * @param {string} filter\r\n\t * The filter value to use when querying for multiple entity type instances.\r\n\t * @param {string} orderBy\r\n\t * The order by value to use when querying for multiple entity type\r\n\t * instances.\r\n\t * @note This will currently only handle up to two sort values as the\r\n\t * returned set is sorted in-place.\r\n\t * @returns {Promise}\r\n\t * An awaitable value that will contain all of the entity instances that\r\n\t * are of the sent entity type collection. This value will be filtered and\r\n\t * ordered based on the sent parameters.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async queryMultipleEntityTypes(\r\n\t\tentityTypes: IEntityType[],\r\n\t\tfilter: string,\r\n\t\torderBy: string): Promise\r\n\t{\r\n\t\tconst instanceList: IEntityInstance[] = [];\r\n\r\n\t\tconst promises: Promise[] = [];\r\n\r\n\t\tfor (const entityType of entityTypes)\r\n\t\t{\r\n\t\t\tconst apiServiceCopy =\r\n\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t.GetNewService();\r\n\r\n\t\t\tapiServiceCopy.entityInstanceTypeGroup =\r\n\t\t\t\tentityType.group;\r\n\r\n\t\t\tconst promise: Promise =\r\n\t\t\t\tApiHelper\r\n\t\t\t\t\t.getFullDataSet(\r\n\t\t\t\t\t\tapiServiceCopy,\r\n\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\t(response: IEntityInstance[]) =>\r\n\t\t\t\t\t\t\tinstanceList.push(\r\n\t\t\t\t\t\t\t\t...response));\r\n\r\n\t\t\tpromises.push(promise);\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promises);\r\n\r\n\t\treturn ObjectHelper.handleOrderBySort(\r\n\t\t\tinstanceList,\r\n\t\t\torderBy);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of entity type names, this query will return the set of\r\n\t * entity type object associated.\r\n\t *\r\n\t * @async\r\n\t * @param {string[]} entityNames\r\n\t * The entity type name array identifying the set of types to collect.\r\n\t * @returns {Promise}\r\n\t * An awaitable value that will contain all of the entity types that\r\n\t * are in the sent entity type name collection.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getEntityTypesFromNameList(\r\n\t\tentityNames: string[]): Promise\r\n\t{\r\n\t\tif (entityNames.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\treturn this.entityTypes\r\n\t\t\t.filter(\r\n\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\tentityNames.some(\r\n\t\t\t\t\t\t(entityName: string) =>\r\n\t\t\t\t\t\t\tentityType.name.indexOf(entityName) !== -1))\r\n\t\t\t.map(\r\n\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\tnew EntityType(entityType));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets and returns a full hierarchy dataset, requerying for the limit\r\n\t * until no additional items are found.\r\n\t *\r\n\t * @async\r\n\t * @param {number} instanceId\r\n\t * The associated instance to find hierarchy data for.\r\n\t * @param {string} instanceTypeGroup\r\n\t * The instance type group matching the sent instance id.\r\n\t * @param {string} filter\r\n\t * The filter to use when querying for hierarchy data.\r\n\t * @param {string} orderBy\r\n\t * The order by definition for this hierarchy dataset.\r\n\t * @param {boolean} getChildren\r\n\t * If sent this will use the get children method, if this value is false\r\n\t * then get parents will be used. This value defaults to true.\r\n\t * @param {string} hierarchyTypeGroup\r\n\t * If sent this will limit the hierarchy queries to a specific associated\r\n\t * entity type group.\r\n\t * @returns {Promise}\r\n\t * The full hierarchy based data set matching this query.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getFullHierarchyDataSet(\r\n\t\tinstanceId: number,\r\n\t\tinstanceTypeGroup: string,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\tgetChildren: boolean = true,\r\n\t\thierarchyTypeGroup: string = null): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tinstanceTypeGroup;\r\n\r\n\t\tlet resultSet: IEntityInstance[] =\r\n\t\t\tgetChildren === true\r\n\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\tinstanceId,\r\n\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\torderBy,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\thierarchyTypeGroup)\r\n\t\t\t\t: await this.entityInstanceApiService\r\n\t\t\t\t\t.getParents(\r\n\t\t\t\t\t\tinstanceId,\r\n\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\torderBy,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\thierarchyTypeGroup);\r\n\t\tlet dataCount: number = resultSet.length;\r\n\r\n\t\twhile (dataCount % AppConstants.dataLimits.large === 0)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tinstanceTypeGroup;\r\n\r\n\t\t\tconst nestedResultSet: IEntityInstance[] =\r\n\t\t\t\tgetChildren === true\r\n\t\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\t\tinstanceId,\r\n\t\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\t\torderBy,\r\n\t\t\t\t\t\t\tdataCount,\r\n\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\thierarchyTypeGroup)\r\n\t\t\t\t\t: await this.entityInstanceApiService\r\n\t\t\t\t\t\t.getParents(\r\n\t\t\t\t\t\t\tinstanceId,\r\n\t\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\t\torderBy,\r\n\t\t\t\t\t\t\tdataCount,\r\n\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\thierarchyTypeGroup);\r\n\r\n\t\t\tif (nestedResultSet.length === 0)\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tdataCount += nestedResultSet.length;\r\n\r\n\t\t\tresultSet =\r\n\t\t\t\t[\r\n\t\t\t\t\t...resultSet,\r\n\t\t\t\t\t...nestedResultSet\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn resultSet;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a entity access policies.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group.\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance Id.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will return a the json formatted\r\n\t * entity access policies.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getEntityAccessPolicies(\r\n\t\tentityTypeGroup: string,\r\n\t\tentityInstanceId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityTypeGroup;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.getPermissions(entityInstanceId);\r\n\t}\r\n\r\n\t/**\r\n\t * Get a value indicating true if the current user is authorized\r\n\t * to perform an action on an entity.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance on which to check permissions.\r\n\t * @param {string} actionName\r\n\t * The name of the action on which to check permissions.\r\n\t * @returns {boolean}\r\n\t * The value indicating true if user is authorized, false if not.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async actionAuthorized(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\tactionName: string): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst type: IEntityType =\r\n\t\t\tthis.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.name === entityInstance.entityType);\r\n\r\n\t\tconst permissions: ISecurityDefinitionDto =\r\n\t\t\tawait this.getEntityAccessPolicies(\r\n\t\t\t\ttype.group,\r\n\t\t\t\tentityInstance.id);\r\n\r\n\t\tconst action: any = permissions.actions\r\n\t\t\t.find((item: ISecurityItemDto) =>\r\n\t\t\t\titem.path === actionName\r\n\t\t\t\t\t&& item.rights.execute);\r\n\r\n\t\treturn !AnyHelper.isNull(action);\r\n\t}\r\n\r\n\t/** Gets an accumulated aggregate object by entity type.\r\n\t *\r\n\t * @async\r\n\t * @param {string} typeWildCard\r\n\t * The entity type wild card.\r\n\t * This will allow to get multiple entity types to set the\r\n\t * entity instance entity type group.\r\n\t * @param {string} method\r\n\t * The aggregate method.\r\n\t * @param {string} property\r\n\t * The aggregate property.\r\n\t * @param {string} filter\r\n\t * The aggregate filter.\r\n\t * @param {string} groupBy\r\n\t * The aggregate groupBy.\r\n\t * @returns {Promise}\r\n\t * The value accumulated aggregate object.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getAccumulatedAggregateByType(\r\n\t\ttypeWildCard: string,\r\n\t\tmethod: string,\r\n\t\tproperty: string = AppConstants.empty,\r\n\t\tfilter: string = AppConstants.empty,\r\n\t\tgroupBy: string = AppConstants.empty): Promise\r\n\t{\r\n\t\tconst apiConfiguration: {\r\n\t\t\tobjectSearch: IObjectSearch;\r\n\t\t\tapiPromise: (objectSearch: IObjectSearch) => Promise;\r\n\t\t} =\r\n\t\t{\r\n\t\t\tobjectSearch:\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tmethod: method,\r\n\t\t\t\t\tproperty: property,\r\n\t\t\t\t\tfilter: filter,\r\n\t\t\t\t\tgroupBy: groupBy\r\n\t\t\t\t},\r\n\t\t\tapiPromise: async (objectSearch: IObjectSearch):\r\n\t\t\t\tPromise =>\r\n\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\tobjectSearch.method,\r\n\t\t\t\t\t\tobjectSearch.property,\r\n\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\tobjectSearch.groupBy)\r\n\t\t};\r\n\r\n\t\tconst entityByType: {\r\n\t\t\tentityType: IEntityType;\r\n\t\t\tapiResponse: IAggregate[];\r\n\t\t}[] =\r\n\t\t\tawait this.getEntitiesByType(\r\n\t\t\t\t'Name.StartsWith',\r\n\t\t\t\ttypeWildCard,\r\n\t\t\t\t'eq true',\r\n\t\t\t\tapiConfiguration);\r\n\r\n\t\tconst accumulatedAggregate: IAggregate[] = [];\r\n\r\n\t\tentityByType.forEach(\r\n\t\t\t(entity) =>\r\n\t\t\t{\r\n\t\t\t\tentity.apiResponse.forEach(\r\n\t\t\t\t\t(entityAggregate) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(entityAggregate))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet existingKey = false;\r\n\t\t\t\t\t\t\tlet aggregateKey = -1;\r\n\t\t\t\t\t\t\tfor (let index = 0;\r\n\t\t\t\t\t\t\t\tindex < accumulatedAggregate.length;\r\n\t\t\t\t\t\t\t\tindex++)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (typeof accumulatedAggregate[index].key\r\n\t\t\t\t\t\t\t\t\t=== AppConstants.propertyTypes.object\r\n\t\t\t\t\t\t\t\t\t? isEqual(\r\n\t\t\t\t\t\t\t\t\t\taccumulatedAggregate[index].key,\r\n\t\t\t\t\t\t\t\t\t\tentityAggregate.key)\r\n\t\t\t\t\t\t\t\t\t: accumulatedAggregate[index].key\r\n\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t=== entityAggregate.key\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase())\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\texistingKey = true;\r\n\t\t\t\t\t\t\t\t\taggregateKey = index;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (existingKey === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\taccumulatedAggregate[aggregateKey].value\r\n\t\t\t\t\t\t\t\t\t+= entityAggregate.value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\taccumulatedAggregate.push(entityAggregate);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn accumulatedAggregate;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets entities by type.\r\n\t *\r\n\t * @async\r\n\t * @param {string} queryPrefix\r\n\t * The query prefix to obtain wild card based result.\r\n\t * @param {string} wildCard\r\n\t * The entity type wild card.\r\n\t * This will allow to get multiple entity types to set the\r\n\t * entity instance entity type group.\r\n\t * @param {string} queryOperator\r\n\t * The query operator. This will allow to finish the quert\r\n\t * wildcard logic. If 'eq true' then it will look for a truthy\r\n\t * compare of the filter query statement, and similar with other\r\n\t * query operators.\r\n\t * @param {{\r\n\t\t\tobjectSearch: IObjectSearch;\r\n\t\t\tapiPromise: (objectSearch: IObjectSearch) => Promise;\r\n\t\t}} apiConfiguration\r\n\t * The configuration that will iterate by entity type.\r\n\t * @returns {Promise}\r\n\t * An array of the apiPromise return type with as many objects as\r\n\t * entity types found with the wildcard statement and the object search\r\n\t * configurations.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getEntitiesByType(\r\n\t\tqueryPrefix: string,\r\n\t\twildCard: string,\r\n\t\tqueryOperator: string,\r\n\t\tapiConfiguration: {\r\n\t\t\tobjectSearch: IObjectSearch;\r\n\t\t\tapiPromise: (\r\n\t\t\t\tobjectSearch: IObjectSearch,\r\n\t\t\t\tentityType?: IEntityType) => Promise;\r\n\t\t}): Promise\r\n\t{\r\n\t\tconst filterQuery: string =\r\n\t\t\t!AnyHelper.isNullOrEmpty(queryPrefix)\r\n\t\t\t\t? `${queryPrefix}('${wildCard}') ${queryOperator}`\r\n\t\t\t\t: `${wildCard} ${queryOperator}`;\r\n\r\n\t\tconst entityTypes =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${filterQuery}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst entityByType = [];\r\n\r\n\t\tfor (const entityType of entityTypes)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityType.group;\r\n\r\n\t\t\tconst apiResponse =\r\n\t\t\t\tawait apiConfiguration\r\n\t\t\t\t\t.apiPromise(\r\n\t\t\t\t\t\tapiConfiguration.objectSearch,\r\n\t\t\t\t\t\tentityType);\r\n\r\n\t\t\tentityByType.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tentityType: entityType,\r\n\t\t\t\t\tapiResponse: apiResponse\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn entityByType;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the columns object array based on the available summary data paths.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group to get summary columns for.\r\n\t * @param {IEntityDefinition} entityDefinition\r\n\t * If sent, this is the entity definition to gather summary columns for. If\r\n\t * this value is not sent it will be found via the entity type group.\r\n\t * @returns {Promise}\r\n\t * The awaitable set of summary data path columns associated with the\r\n\t * sent entity type group or entity definition.\r\n\t * @memberof EntityService\r\n\t */\r\n\t public async getDynamicSummaryColumns(\r\n\t\tentityTypeGroup: string,\r\n\t\tentityDefinition: IEntityDefinition = null):\r\n\t\tPromise\r\n\t {\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(entityTypeGroup)\r\n\t\t\t&& AnyHelper.isNull(entityDefinition))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet columnIndex: number = 1;\r\n\t\tconst summaryDataPathColumns: ICommonTableColumn[] = [];\r\n\r\n\t\tlet entityDefinitionInterface: IEntityDefinition = entityDefinition;\r\n\t\tif (AnyHelper.isNull(entityDefinition))\r\n\t\t{\r\n\t\t\tconst entityType: IEntityType =\r\n\t\t\t\tthis.entityTypes\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(nestedEntityType: IEntityType) =>\r\n\t\t\t\t\t\t\tnestedEntityType.group === entityTypeGroup);\r\n\r\n\t\t\tentityDefinitionInterface =\r\n\t\t\t\tthis.entityDefinitions\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(nestedEntityDefinition: IEntityDefinition) =>\r\n\t\t\t\t\t\t\tnestedEntityDefinition.typeId === entityType.id);\r\n\t\t}\r\n\t\tconst entityDefinitionImplementation: EntityDefinition =\r\n\t\t\tnew EntityDefinition(entityDefinitionInterface);\r\n\r\n\t\tif (AnyHelper.isNull(entityDefinitionImplementation.summaryDataPaths)\r\n\t\t\t|| entityDefinitionImplementation.summaryDataPaths.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tfor (const summaryDataPath of\r\n\t\t\tentityDefinitionImplementation.summaryDataPaths)\r\n\t\t{\r\n\t\t\tconst cleanedPath: string =\r\n\t\t\t\t(summaryDataPath.anyOfPath || summaryDataPath.path)\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tAppConstants.nestedDataKeyPrefix\r\n\t\t\t\t\t\t\t+ AppConstants.nestedDataIdentifier,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t/\\[\\d+\\]/g,\r\n\t\t\t\t\t\t'[]');\r\n\t\t\tconst propertyDefinition: any =\r\n\t\t\t\tentityDefinitionImplementation.getPropertyDefinition(\r\n\t\t\t\t\tcleanedPath);\r\n\r\n\t\t\tconst dataFormat =\r\n\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tsummaryDataPath.dataFormat)\r\n\t\t\t\t\t? StringHelper\r\n\t\t\t\t\t\t.toProperCase(\r\n\t\t\t\t\t\t\tsummaryDataPath\r\n\t\t\t\t\t\t\t\t.dataFormat)\r\n\t\t\t\t\t: null;\r\n\r\n\t\t\tconst outputFormat =\r\n\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tpropertyDefinition.value.outputFormat)\r\n\t\t\t\t\t? StringHelper\r\n\t\t\t\t\t\t.toProperCase(\r\n\t\t\t\t\t\t\tpropertyDefinition\r\n\t\t\t\t\t\t\t\t.value\r\n\t\t\t\t\t\t\t\t.outputFormat)\r\n\t\t\t\t\t: null;\r\n\r\n\t\t\tsummaryDataPathColumns.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: summaryDataPath.path.replace(\r\n\t\t\t\t\t\tAppConstants.nestedDataKeyPrefix,\r\n\t\t\t\t\t\tAppConstants.empty),\r\n\t\t\t\t\tcolumnHeader:\r\n\t\t\t\t\t\tsummaryDataPath.dataLabel\r\n\t\t\t\t\t\t\t|| propertyDefinition.value.description\r\n\t\t\t\t\t\t\t|| `${StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\t\t(StringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\t\t\tpropertyDefinition.key,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.characters.period))))}`,\r\n\t\t\t\t\tdisplayOrder: columnIndex++,\r\n\t\t\t\t\tdataFormatType:\r\n\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\tdataFormat)\r\n\t\t\t\t\t\t\t? dataFormat\r\n\t\t\t\t\t\t\t: outputFormat\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn summaryDataPathColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a business logic entity.\r\n\t *\r\n\t * @param {IEntityInstance} instance\r\n\t * The entity instance that the business logic entity will represent.\r\n\t * @returns {BusinessLogicEntity}\r\n\t * A business logic entity.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic getBusinessLogicEntity(\r\n\t\tinstance: IEntityInstance): BusinessLogicEntity\r\n\t{\r\n\t\treturn new BusinessLogicEntity(\r\n\t\t\tinstance,\r\n\t\t\tthis.resolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries for and returns the history matching the sent filter\r\n\t * and order by. This data set will continue querying until all\r\n\t * database values are found.\r\n\t *\r\n\t * @async\r\n\t * @static\r\n\t * @param {number} instanceId\r\n\t * The entity instance id to get the history for.\r\n\t * @param {string} instanceTypeGroup\r\n\t * The entity instance type group to get the history for.\r\n\t * @param {string} filter\r\n\t * The filter value that will be sent to the api service getHistory method.\r\n\t * @param {string} orderBy\r\n\t * The order by value that will be sent to the api service getHistory\r\n\t * method.\r\n\t * @param {boolean} decorateUpdatedByUsers\r\n\t * If sent and true, this will add a changed by username to the history\r\n\t * record.\r\n\t * @param {IEntityInstance} currentEntityInstance\r\n\t * The entity instance holding the current data record, if this is sent\r\n\t * it will be added to the history.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will contain the full data set of the instance\r\n\t * history api service.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getHistory(\r\n\t\tinstanceId: number,\r\n\t\tinstanceTypeGroup: string,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\tdecorateUpdatedByUsers: boolean = false,\r\n\t\tcurrentEntityInstance: IEntityInstance = null):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tinstanceTypeGroup;\r\n\t\tlet resultSet: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getHistory(\r\n\t\t\t\tinstanceId,\r\n\t\t\t\tfilter,\r\n\t\t\t\torderBy,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large);\r\n\t\tlet dataCount: number = resultSet.length;\r\n\r\n\t\twhile (dataCount !== 0\r\n\t\t\t&& dataCount % AppConstants.dataLimits.large === 0)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tinstanceTypeGroup;\r\n\t\t\tconst nestedResultSet: IEntityInstance[] =\r\n\t\t\t\tawait this.entityInstanceApiService.getHistory(\r\n\t\t\t\t\tinstanceId,\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\torderBy,\r\n\t\t\t\t\tdataCount,\r\n\t\t\t\t\tAppConstants.dataLimits.large);\r\n\r\n\t\t\tif (nestedResultSet.length === 0)\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tdataCount += nestedResultSet.length;\r\n\r\n\t\t\tresultSet =\r\n\t\t\t\t[\r\n\t\t\t\t\t...resultSet,\r\n\t\t\t\t\t...nestedResultSet\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\t// Include the current result in the history.\r\n\t\tif (!AnyHelper.isNull(currentEntityInstance))\r\n\t\t{\r\n\t\t\tresultSet.push(\r\n\t\t\t\tcloneDeep(currentEntityInstance));\r\n\t\t}\r\n\r\n\t\tif (decorateUpdatedByUsers === true)\r\n\t\t{\r\n\t\t\tresultSet =\r\n\t\t\t\tawait this.decorateUpdatedByUsers(resultSet);\r\n\t\t}\r\n\r\n\t\treturn resultSet;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of entities this will decorate the username\r\n\t * to be displayed for last changed by.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance[]} entityInstances\r\n\t * The loaded set of entity instance history data items.\r\n\t * @returns {Promise\r\n\t{\r\n\t\tif (entityInstances.length === 0)\r\n\t\t{\r\n\t\t\treturn entityInstances;\r\n\t\t}\r\n\r\n\t\tconst changedByIds: string[] =\r\n\t\t\t[...new Set(\r\n\t\t\t\tentityInstances.map(\r\n\t\t\t\t\t(item: IEntityInstance) =>\r\n\t\t\t\t\t\titem.changedById.toString()))];\r\n\t\tconst changedByIdFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\tchangedByIds,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst changedByUsers: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tchangedByIdFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tentityInstances.forEach(\r\n\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t{\r\n\t\t\t\tconst changedByUser: IEntityInstance =\r\n\t\t\t\t\tchangedByUsers.find(\r\n\t\t\t\t\t\t(changedByUserItem: IEntityInstance) =>\r\n\t\t\t\t\t\t\tchangedByUserItem.id ===\r\n\t\t\t\t\t\t\t\tentityInstance.changedById);\r\n\r\n\t\t\t\tif (!AnyHelper.isNull(changedByUser))\r\n\t\t\t\t{\r\n\t\t\t\t\t(entityInstance).updatedByUser =\r\n\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\tchangedByUser.data.firstName,\r\n\t\t\t\t\t\t\tchangedByUser.data.lastName);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn entityInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the module for an entity based on the targetted item type.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityTypeName\r\n\t * The entity type name to get a context menu module name for.\r\n\t * @returns {Promise}\r\n\t * An awaitable string that specifies the context menu module.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getContextMenuModule(\r\n\t\tentityTypeName: string): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityType: IEntityType) =>\r\n\t\t\t\t\t\tnestedEntityType.name === entityTypeName);\r\n\t\tconst entityDefinition: IEntityDefinition =\r\n\t\t\tthis.entityDefinitions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(nestedEntityDefinition: IEntityDefinition) =>\r\n\t\t\t\t\t\tnestedEntityDefinition.typeId === entityType.id);\r\n\r\n\t\treturn new EntityDefinition(entityDefinition)\r\n\t\t\t.contextMenuModule;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a user id, this will return the name ready for display.\r\n\t *\r\n\t * @async\r\n\t * @param {number} userId\r\n\t * The user id to get a user display name for.\r\n\t * @returns {Promise}\r\n\t * An awaitable string that specifies the display name for the user id\r\n\t * sent. This will either be 'firstName lastName' or 'legalName'.\r\n\t * @memberof EntityService\r\n\t */\r\n\tpublic async getUserDisplayName(\r\n\t\tuserId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst user: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tuserId);\r\n\r\n\t\tif (AnyHelper.isNull(user?.data))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.toNameString(\r\n\t\t\tuser.data.firstName,\r\n\t\t\tuser.data.lastName,\r\n\t\t\tuser.data.legalName);\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{processor?.tagline}}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{{title}}\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{{disclaimer}}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tPayment Date\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{currentData.paymentResult.transactionDate | dateTimeFromIso | dateTimeToLocal | dateTimeToFormat:'D h:mm a ZZZZ'}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tTransaction Number\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{currentData.paymentResult.transactionId}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t 1\">\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{item.description}} 0 && paymentResult == null\">{{itemIndex}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{item.amount | currency}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tTotal Payment Amount\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{totalPaymentAmount | currency}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tPayment Method\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{paymentMethodDescription}} ending in {{currentData.paymentMethod.accountNumber}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{{itemIndex + 1}}{{feeDisclaimer}}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tA copy of the receipt is available in your files drawer for download and has been sent to the following email: {{currentData.insured.emails[0].address}}.\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer,\r\n\tSafeResourceUrl\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'make-payment-details',\r\n\ttemplateUrl: './make-payment-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./make-payment-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing the details of the Make Payment and Receipt steps.\r\n *\r\n * @export\r\n * @class MakePaymentDetailsComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class MakePaymentDetailsComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the Make Payment Details component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to customize the UI.\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The DOM Sanitizer class that prevents script injection.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sanitizer: DomSanitizer,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the title of the component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\t@Input() public title: string;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets a boolean value that determines\r\n\t * if the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the processor object that contains\r\n\t * the payment processor data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic processor: any;\r\n\r\n\t/**\r\n\t * Gets or sets the object that contains\r\n\t * the payment method settings.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic paymentMethodSettings: any;\r\n\r\n\t/**\r\n\t * Gets or sets the collection of payment items\r\n\t * that are displayed as the payment details.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic paymentItems: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the total payment amount which includes\r\n\t * the entered payment amount plus any applicable fees.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic totalPaymentAmount: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets url of the Processor logo\r\n\t * that is displayed in this component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic logoUrl: SafeResourceUrl;\r\n\r\n\t/**\r\n\t * Gets or sets the payment method disclaimer\r\n\t * that will be displayed in this component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic disclaimer: string;\r\n\r\n\t/**\r\n\t * Gets or sets the list of fee disclaimers\r\n\t * that will be displayed in this component.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic feeDisclaimers: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the payment method description\r\n\t * that is displayed to the user.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic paymentMethodDescription: string;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context\r\n\t\t\t\t.source\r\n\t\t\t\t.activeMenuItem\r\n\t\t\t\t.currentData\r\n\t\t\t\t.data;\r\n\r\n\t\tawait this.initializeData();\r\n\r\n\t\tthis.loading = false;\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets CSS class that displays the icon\r\n\t * for the selected payment method type.\r\n\t *\r\n\t * @return {string}\r\n\t * The name of the CSS class.\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic getPaymentMethodClass(): string\r\n\t{\r\n\t\tif (this.currentData.paymentMethod.type\r\n\t\t\t!== AppConstants.paymentMethodTypes.creditCard)\r\n\t\t{\r\n\t\t\treturn AppConstants.cssClasses.fontAwesomePrefix\r\n\t\t\t\t+ AppConstants.cssIcons.bank;\r\n\t\t}\r\n\r\n\t\tconst cardType: string =\r\n\t\t\tStringHelper.toCamelCase(\r\n\t\t\t\tthis.currentData.paymentMethod.cardType);\r\n\r\n\t\treturn AppConstants.cssClasses.fontAwesomePrefix\r\n\t\t\t+ (AppConstants.cssIcons[cardType]\r\n\t\t\t\t|| AppConstants.cssIcons.creditCard);\r\n\t}\r\n\r\n\t/**\r\n\t * Interpolates a given text by replacing the template fields\r\n\t * with the data from the current context.\r\n\t *\r\n\t * @param {string} value\r\n\t * The string to interpolate.\r\n\t * @return {string}\r\n\t * Returns the interpolated string.\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tpublic interpolate(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(value))\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.interpolate(\r\n\t\t\tvalue,\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the data used in this wizard step.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tprivate async initializeData(): Promise\r\n\t{\r\n\t\tconst systemSettings: any =\r\n\t\t\tawait this.getSystemSettings();\r\n\r\n\t\tconst processorName: string =\r\n\t\t\tStringHelper\r\n\t\t\t\t.toCamelCase(\r\n\t\t\t\t\tthis.currentData\r\n\t\t\t\t\t\t.paymentMethod\r\n\t\t\t\t\t\t.processor);\r\n\r\n\t\tthis.processor =\r\n\t\t\tsystemSettings[processorName];\r\n\r\n\t\tthis.paymentMethodSettings =\r\n\t\t\tsystemSettings\r\n\t\t\t\t.paymentMethods\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(paymentMethod: any) =>\r\n\t\t\t\t\t\tpaymentMethod.processor\r\n\t\t\t\t\t\t\t=== this.currentData\r\n\t\t\t\t\t\t\t\t.paymentMethod\r\n\t\t\t\t\t\t\t\t.processor\r\n\t\t\t\t\t\t\t&& paymentMethod.type\r\n\t\t\t\t\t\t\t\t=== this.currentData\r\n\t\t\t\t\t\t\t\t\t.paymentMethod\r\n\t\t\t\t\t\t\t\t\t.type);\r\n\r\n\t\tthis.paymentItems = [];\r\n\t\tthis.paymentItems\r\n\t\t\t.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tdescription: 'Payment Amount',\r\n\t\t\t\t\tamount: this.currentData.paymentAmount\r\n\t\t\t\t});\r\n\r\n\t\tthis.paymentItems\r\n\t\t\t.push(\r\n\t\t\t\t...this.paymentMethodSettings\r\n\t\t\t\t\t.fees\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(fee: any) =>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdescription: fee.name,\r\n\t\t\t\t\t\t\tamount:\r\n\t\t\t\t\t\t\t\tfee.type === AppConstants.feeTypes.percent\r\n\t\t\t\t\t\t\t\t\t? fee.value * this.currentData.paymentAmount\r\n\t\t\t\t\t\t\t\t\t: fee.value\r\n\t\t\t\t\t\t}));\r\n\r\n\t\tthis.totalPaymentAmount =\r\n\t\t\tthis.paymentItems\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(partialSum: number, item: any) =>\r\n\t\t\t\t\t\tpartialSum + item.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\tthis.logoUrl =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t\t`data:image/png;base64,${this.processor.logo}`);\r\n\r\n\t\tthis.disclaimer =\r\n\t\t\tthis.interpolate(\r\n\t\t\t\tthis.paymentMethodSettings\r\n\t\t\t\t\t.disclaimer);\r\n\r\n\t\tthis.feeDisclaimers =\r\n\t\t\tthis.paymentMethodSettings\r\n\t\t\t\t.fees\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(fee: any) =>\r\n\t\t\t\t\t\tthis.interpolate(\r\n\t\t\t\t\t\t\tfee.disclaimer));\r\n\r\n\t\tthis.paymentMethodDescription =\r\n\t\t\tthis.paymentMethodSettings.name\r\n\t\t\t\t+ (this.currentData\r\n\t\t\t\t\t.paymentMethod\r\n\t\t\t\t\t.type !== AppConstants.paymentMethodTypes.creditCard\r\n\t\t\t\t\t? ' account'\r\n\t\t\t\t\t: AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the system settings.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * Returns the settings object from the System entity.\r\n\t * @memberof MakePaymentDetailsComponent\r\n\t */\r\n\tprivate async getSystemSettings(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\tconst systemEntityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\treturn systemEntityInstance.data.settings;\r\n\t}\r\n}","
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{reason.name || reason.description}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{reason.description}}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{reason.name || reason.description}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{reason.detailedDescription}}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n
\r\n\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'insurance-status-reasons',\r\n\ttemplateUrl: './status-reasons.component.html',\r\n\tstyleUrls: [\r\n\t\t'./status-reasons.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a shared display for gathering selected reasons and\r\n * note data.\r\n *\r\n * @export\r\n * @class StatusReasonsComponent\r\n */\r\nexport class StatusReasonsComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof StatusReasonsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the validity change event emitter that will signal to all\r\n\t * listening components that this component has has a change in validity.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof StatusReasonsComponent\r\n\t */\r\n\t@Output() public validityChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets a boolean value to determine if the status reasons\r\n\t * component will display the detailed reasons view.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof StatusReasonsComponent\r\n\t */\r\n\t@Input() public detailedView: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof StatusReasonsComponent\r\n\t */\r\n\t@Input() public dynamicFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.comments',\r\n\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Comments',\r\n\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.small\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the formly component and\r\n\t * the reasons list.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * A truthy representing if the data in the form display is valid.\r\n\t * @memberof StatusReasonsComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean = null): Promise\r\n\t{\r\n\t\tthis.validityChange.emit(\r\n\t\t\t(this.context.source.activeMenuItem.currentData.data\r\n\t\t\t\t.availableReasons == null\r\n\t\t\t\t|| this.context.source.activeMenuItem.currentData.data\r\n\t\t\t\t\t.selectedReasons?.length > 0)\r\n\t\t\t\t&& (AnyHelper.isNull(isValid)\r\n\t\t\t\t\t|| isValid === true));\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

 

\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\n\r\n@Component({\r\n\tselector: 'adjustment-details',\r\n\ttemplateUrl: './adjustment-details.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to collect the commission adjustment\r\n * details information.\r\n *\r\n * @export\r\n * @class AdjustmentDetailsComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AdjustmentDetailsComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the adjustment write off component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the provided transaction number.\r\n\t *\r\n\t * @async\r\n\t * @param {AbstractControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} _field\r\n\t * The formly field configuration.\r\n\t * @return {boolean}\r\n\t * The transaction number validity\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tpublic async transactionNumberValidator(\r\n\t\tcontrol: AbstractControl,\r\n\t\t_field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(control.value))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst group: string = 'Group';\r\n\r\n\t\tconst availableEntityTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tApiFilterHelper.getWildcardFilter(\r\n\t\t\t\t\t\tgroup,\r\n\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t.policyTermTransactionWildcard),\r\n\t\t\t\t\tgroup,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large);\r\n\r\n\t\tif (availableEntityTypes.length >= 1)\r\n\t\t{\r\n\t\t\tfor (const entityType of availableEntityTypes)\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tentityType.group;\r\n\r\n\t\t\t\tconst policyTermTransactionEntityInstance: IEntityInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t`${InsuranceConstants.commonProperties.transactionNumber} `\r\n\t\t\t\t\t\t\t\t+ `eq '${control.value}'`,\r\n\t\t\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\tif (!AnyHelper.isNull(policyTermTransactionEntityInstance))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpolicyNumber:\r\n\t\t\t\t\t\t\t\tpolicyTermTransactionEntityInstance\r\n\t\t\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t\t\t.policyNumber,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tpolicyNumber: AppConstants.empty,\r\n\t\t\t});\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tplaceholder: 'Select an Option',\r\n\t\t\t\t\t\tlabel: 'Reason',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: 'Correction',\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.correction,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.correction\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.recoupment,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.recoupment\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.other,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.other\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\t_event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (field.formControl.value ===\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t.commissionAdjustmentReasonTypes\r\n\t\t\t\t\t\t\t\t\t\t.correction)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.enable();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.setValue(AppConstants.empty);\r\n\t\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[1]\r\n\t\t\t\t\t\t\t\t\t\t.formControl.disable();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'transactionNumber',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttype: 'string',\r\n\t\t\t\t\t\tlabel: 'Transaction Id',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'Transaction Id can be found in the Transaction '\r\n\t\t\t\t\t\t\t\t+ 'Table displayed in the Policy Term Summary '\r\n\t\t\t\t\t\t\t\t+ 'Page'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\ttransactionNumberValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.transactionNumberValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'This transaction number does not exist.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'amount',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Amount',\r\n\t\t\t\t\t\tuseCurrency: true,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidAmout: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tcontrol.value !== 0,\r\n\t\t\t\t\t\t\tmessage: 'Invalid amount value.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'note',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttype: 'string',\r\n\t\t\t\t\t\tlabel: 'Note',\r\n\t\t\t\t\t\tdescription: 'Commission adjustment note.'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tPolicy ID: \r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tTransaction ID: \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tNote: \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tPrior Balance: \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tAdjustment: \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tNew Balance: \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{currentData.policyNumber}}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{currentData.transactionNumber}}\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{{currentData.note}}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{currentData?.adjustmentDetails?.priorBalance | currency}}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{currentData.amount | currency}}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{currentData?.adjustmentDetails?.newBalance | currency}}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\r\n","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'adjustment-summary',\r\n\ttemplateUrl: './adjustment-summary.component.html',\r\n\tstyleUrls: [\r\n\t\t'./adjustment-summary.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to display the commissions summary\r\n * information.\r\n *\r\n * @export\r\n * @class AdjustmentSummaryComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AdjustmentSummaryComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the adjustment write off component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service api used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the agency id associated to the commission adjustment.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic agencyId: number;\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed to create the commission\r\n\t * adjustment.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic readonly workflowActionName: string =\r\n\t\t'CreateCommissionAdjustment';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.agencyId =\r\n\t\t\tthis.currentData.id;\r\n\r\n\t\tconst ledgerEntityInstance: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getAgencyLedger(\r\n\t\t\t\tthis.currentData.id);\r\n\r\n\t\tconst ledgerPreviosBalance: number =\r\n\t\t\tawait this.getLedgerPreviousBalance(ledgerEntityInstance.id);\r\n\r\n\t\tconst adjustmentDetailsData: any =\r\n\t\t\t{\r\n\t\t\t\tpriorBalance: ledgerPreviosBalance,\r\n\t\t\t\tnewBalance:\r\n\t\t\t\t\tledgerPreviosBalance + this.currentData.amount\r\n\t\t\t};\r\n\r\n\t\tthis.currentData =\r\n\t\t\t{\r\n\t\t\t\t...this.currentData,\r\n\t\t\t\tadjustmentDetails: adjustmentDetailsData\r\n\t\t\t};\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tadjustmentDetails: adjustmentDetailsData,\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(\r\n\t\t\tthis.commissionAdjustment.bind(this));\r\n\r\n\t\tthis.context.source.validStepChanged(true);\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Identifies if transaction number has been provided.\r\n\t *\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic hasTransactionNumber(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNullOrEmpty(this.currentData.transactionNumber);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the commission adjustment event and navigate to the agency\r\n\t * entity instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tpublic async commissionAdjustment(): Promise\r\n\t{\r\n\t\tconst queryString: string =\r\n\t\t\t`?transactionNumber=${this.currentData.transactionNumber}`\r\n\t\t\t\t+ `&amount=${this.currentData.amount}`\r\n\t\t\t\t+ `¬e=${this.currentData.note}`\r\n\t\t\t\t+ `&reason=${this.currentData.reason}`;\r\n\r\n\t\tawait this.commissionAdjustmentExecution(\r\n\t\t\tthis.agencyId,\r\n\t\t\tqueryString);\r\n\r\n\t\tthis.navigateToAgencyDashboard(\r\n\t\t\tthis.agencyId);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Ledger previous balance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} ledgerId\r\n\t * The ledger previous balance.\r\n\t * @return {number}\r\n\t * The ledger previous balance.\r\n\t * @memberof AdjustmentDetailsComponent\r\n\t */\r\n\tprivate async getLedgerPreviousBalance(\r\n\t\tledgerId: number): Promise\r\n\t{\r\n\t\tconst ledgerTransactionInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getWildcardChildren(\r\n\t\t\t\tledgerId,\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t.ledger,\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t.ledgerTransactionWildCard,\r\n\t\t\t\t'id desc');\r\n\r\n\t\tconst previousBalance: number =\r\n\t\t\tledgerTransactionInstances.length > 0\r\n\t\t\t\t? ledgerTransactionInstances[0].data.balance\r\n\t\t\t\t: 0;\r\n\r\n\t\treturn previousBalance;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the commission adjustment process, which executes the\r\n\t * CreateCommissionAdjustment workflow service with the collected data from\r\n\t * the commission adjustment wizard, then creates the commission ledger\r\n\t * transaction information.\r\n\t *\r\n\t * @async\r\n\t * @param {number} agencyId\r\n\t * The agency id.\r\n\t * @param {string} queryString\r\n\t * The extra parameters sent as query string parameters.\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tprivate async commissionAdjustmentExecution(\r\n\t\tagencyId: number,\r\n\t\tqueryString: string): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any, _reject: any): Promise =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t.agencies;\r\n\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.executeAction(\r\n\t\t\t\t\t\t\t\tagencyId,\r\n\t\t\t\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Processing commission adjustment',\r\n\t\t\t\t'Commission adjustment processed',\r\n\t\t\t\t'A commission adjustment has been applied to the agency.',\r\n\t\t\t\t'A commission adjustment has not been applied to the agency.'));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the agency dashboard using the provided agency id.\r\n\t *\r\n\t * @param {number} agencyId\r\n\t * The agency id to navigate to.\r\n\t * @memberof AdjustmentSummaryComponent\r\n\t */\r\n\tprivate navigateToAgencyDashboard(\r\n\t\tagencyId: number): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tagencyId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ organization.data.name.legalName || organization.entityType + ' - ' + organization.id }}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
0\"\r\n\t\t\t\t\t\tclass=\"organization-address\">\r\n\t\t\t\t\t\t{{ organization.data.addresses[0].address }}, {{ organization.data.addresses[0].city }} {{ organization.data.addresses[0].state }}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ organization.data.name.legalName || organization.entityType + ' - ' + organization.id }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n\t
\r\n
\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t

\r\n\t\t\tLoading all commissionable organizations. This may take a couple minutes..\r\n\t\t

\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n// tslint:enable: max-line-length\r\n\r\n@Component({\r\n\tselector: 'select-disbursement-organizations',\r\n\ttemplateUrl: './select-disbursement-organizations.component.html',\r\n\tstyleUrls: [\r\n\t\t'./select-disbursement-organizations.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for selecting organizations to\r\n * be incuded in a disbursement.\r\n *\r\n * @export\r\n * @class SelectDisbursementOrganizationsComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class SelectDisbursementOrganizationsComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the select disbursement component.\r\n\t *\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {Router} router\r\n\t * TThe router for navigation.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used in this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service for this component\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic activityService: ActivityService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the validity change event emitter that will signal to all\r\n\t * listening components that this component has had a change in validity.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\t@Output() public validityChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * The list of organizations receiving commissions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t */\r\n\tpublic organizations: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected organizations.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic selectedOrganizations: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the flag indicating if a detailed view should be used.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic detailedView: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the flag indicating the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = true;\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.organizations = await this.getAgencies();\r\n\r\n\t\tthis.context.source.addToNext(\r\n\t\t\tthis.createDisbursement\r\n\t\t\t\t.bind(this));\r\n\r\n\t\tthis.validityChanged();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.loading = false;\r\n\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * creates a disbursement dto.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic async createDisbursement(): Promise\r\n\t{\r\n\t\tconst disbursements: any[] = [];\r\n\r\n\t\tthis.selectedOrganizations.forEach(\r\n\t\t\t(organization: IEntityInstance) =>\r\n\t\t\t{\r\n\t\t\t\tdisbursements.push(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\torganizationId: organization.id\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tconst disbursmentInstance: IEntityInstance =\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tversionNumber: 1,\r\n\t\t\t\tentityType: InsuranceConstants.insuranceEntityTypes.commissionDisbursement,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tdisbursements: disbursements\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.commissionDisbursements;\r\n\r\n\t\tconst createPromise = this.entityInstanceApiService\r\n\t\t\t.createEntityInstance(\r\n\t\t\t\tdisbursmentInstance,\r\n\t\t\t\tthis.currentData.organizationGroup,\r\n\t\t\t\tthis.currentData.organizationId,\r\n\t\t\t\t{\r\n\t\t\t\t\tdisbursementDate: this.currentData.snapshotDate,\r\n\t\t\t\t\tcommissionEntityTypes:\r\n\t\t\t\t\t\tthis.currentData.commissionEntityTypes.join(\r\n\t\t\t\t\t\t\tAppConstants.characters.comma)\r\n\t\t\t\t});\r\n\r\n\t\tconst id: number =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tcreatePromise,\r\n\t\t\t\t\t'Creating Disbursement',\r\n\t\t\t\t\t'Disbursement created',\r\n\t\t\t\t\t'Disbursement has been created.',\r\n\t\t\t\t\t'Disbursement has not been created.'));\r\n\r\n\t\tthis.navigateToComissionDisbursementPage(id);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tpublic async validityChanged(): Promise\r\n\t{\r\n\t\tconst validity: boolean =\r\n\t\t\tthis.selectedOrganizations.length > 0;\r\n\r\n\t\tthis.context.source.validStepChanged(validity);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event.\r\n\t *\r\n\t * @param {number} id\r\n\t * The id of the entity to navigate to.\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tprivate navigateToComissionDisbursementPage(\r\n\t\tid: number)\r\n\t{\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.organizations}/entities`\r\n\t\t\t\t+ '/Commission.Disbursements/'\r\n\t\t\t\t+ AppConstants.viewTypes.edit\r\n\t\t\t\t+ '/' + id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the agencies.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof SelectDisbursementOrganizationsComponent\r\n\t */\r\n\tprivate async getAgencies(): Promise\r\n\t{\r\n\t\tconst data: any = this.currentData;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tdata.organizationGroup;\r\n\r\n\t\tconst query: string =\r\n\t\t\t`?commissionOrganizationTypes=${data.commissionEntityTypes.join(\r\n\t\t\t\tAppConstants.characters.comma)}`;\r\n\r\n\t\tconst response: any = await this.entityInstanceApiService\r\n\t\t\t.executeAction(\r\n\t\t\t\tdata.organizationId,\r\n\t\t\t\t'GetCommissionableAgencies',\r\n\t\t\t\tnull,\r\n\t\t\t\tquery);\r\n\r\n\t\tconst instances: IEntityInstance[] =\r\n\t\t\tresponse.body.value;\r\n\r\n\t\treturn instances ?? [];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPremium\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tFees\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tTaxes\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tTotal\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.premium | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.fees | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.taxes | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.total | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPrior Term Transfer\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPayments\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tWrite Offs\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.priorTermTransfer | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.payments | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.policyTermWrittenOffBalance | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tRemaining Balance\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tMinimum Due\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.remainingBalance | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{{context.source.activeMenuItem.currentData.data.paymentDetails.minimumDue | currency}}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t
\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tIInsurancePaymentSummary\r\n} from '@insurance/interfaces/insurance-payment-summary.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'adjustment-write-off-amount',\r\n\ttemplateUrl: './adjustment-write-off-amount.component.html',\r\n\tstyleUrls: [\r\n\t\t'./adjustment-write-off-amount.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to display the payment details and\r\n * collect an amount for a policy term write off.\r\n *\r\n * @export\r\n * @class AdjustmentWriteOffAmountComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AdjustmentWriteOffAmountComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the adjustment write off component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity instance associated to the current\r\n\t * data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic policyTermEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger entity instance associated to the current\r\n\t * policy term.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic ledgerEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst policyTermId: number = currentData.id;\r\n\r\n\t\tthis.policyTermEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyTerm(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tthis.ledgerEntityInstance =\r\n\t\t\tawait this.insuranceService.getLedger(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tconst ledgerTransactionInstances: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getLedgerTransactions(\r\n\t\t\t\tthis.ledgerEntityInstance.id);\r\n\r\n\t\tconst priorTermTransfer: number =\r\n\t\t\tInsuranceHelper.getPriorTermTransferBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst policyTermWrittenOffBalance: number =\r\n\t\t\tInsuranceHelper.getPolicyTermWrittenOffBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst payments: number =\r\n\t\t\tInsuranceHelper.getPaymentsBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst operationalFees: number =\r\n\t\t\tInsuranceHelper.getPolicyTermOperationalFeeBalance(\r\n\t\t\t\tthis.policyTermEntityInstance,\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst futureIssuedTransactions: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getFutureIssuedTransactions(\r\n\t\t\t\tthis.policyTermEntityInstance);\r\n\r\n\t\t// If we are past bind, only use the draft payment schedule when\r\n\t\t// future issued transactions exist.\r\n\t\tlet accountingPayments: any[] =\r\n\t\t\tthis.policyTermEntityInstance\r\n\t\t\t\t?.data.accounting?.paymentSchedule?.payments;\r\n\r\n\t\tif (futureIssuedTransactions.length > 0\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\taccountingPayments))\r\n\t\t{\r\n\t\t\tconst actionResponse: any =\r\n\t\t\t\tawait this.insuranceService.generateDraftPaymentPlanSchedule(\r\n\t\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\t\taccountingPayments =\r\n\t\t\t\tactionResponse?.body?.value.payments;\r\n\t\t}\r\n\r\n\t\tconst remainingPayments: IInsurancePaymentSummary[] =\r\n\t\t\tawait this.insuranceService.getRemainingPaymentSummaries(\r\n\t\t\t\tpolicyTermId,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\taccountingPayments);\r\n\t\tconst nextPayment: IInsurancePaymentSummary =\r\n\t\t\tawait this.insuranceService.getNextInstallmentPayment(\r\n\t\t\t\tpolicyTermId,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\tremainingPayments,\r\n\t\t\t\tfalse);\r\n\r\n\t\tlet accountingData: any;\r\n\t\tlet paymentDetailsData: any;\r\n\t\tconst minimumDue: number = nextPayment?.due ?? 0;\r\n\r\n\t\tif (this.policyTermEntityInstance.data.status ===\r\n\t\t\tInsuranceConstants.policyTermStatusTypes.active)\r\n\t\t{\r\n\t\t\taccountingData =\r\n\t\t\t\tthis.policyTermEntityInstance.data.accounting;\r\n\r\n\t\t\tpaymentDetailsData =\r\n\t\t\t\t{\r\n\t\t\t\t\tpremium: accountingData.writtenPremium,\r\n\t\t\t\t\tfees: accountingData.writtenFees + operationalFees,\r\n\t\t\t\t\ttaxes: accountingData.writtenTaxes,\r\n\t\t\t\t\ttotal: accountingData.writtenTotal + operationalFees,\r\n\t\t\t\t\tpriorTermTransfer: priorTermTransfer,\r\n\t\t\t\t\tpolicyTermWrittenOffBalance: policyTermWrittenOffBalance,\r\n\t\t\t\t\tpayments: payments,\r\n\t\t\t\t\tremainingBalance:\r\n\t\t\t\t\t\tthis.ledgerEntityInstance.data.balance,\r\n\t\t\t\t\tminimumDue: minimumDue\r\n\t\t\t\t};\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst policyTermTransactionInstance: IEntityInstance =\r\n\t\t\t\tawait this.insuranceService\r\n\t\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.id);\r\n\r\n\t\t\taccountingData =\r\n\t\t\t\tpolicyTermTransactionInstance.data.accounting;\r\n\r\n\t\t\tpaymentDetailsData =\r\n\t\t\t\t{\r\n\t\t\t\t\tpremium: accountingData.directWrittenPremium,\r\n\t\t\t\t\tfees: accountingData.directWrittenFees + operationalFees,\r\n\t\t\t\t\ttaxes: accountingData.directWrittenTaxes,\r\n\t\t\t\t\ttotal: accountingData.directWrittenTotal + operationalFees,\r\n\t\t\t\t\tpriorTermTransfer: priorTermTransfer,\r\n\t\t\t\t\tpolicyTermWrittenOffBalance: policyTermWrittenOffBalance,\r\n\t\t\t\t\tpayments: payments,\r\n\t\t\t\t\tremainingBalance:\r\n\t\t\t\t\t\taccountingData.directWrittenTotal\r\n\t\t\t\t\t\t\t+ priorTermTransfer\r\n\t\t\t\t\t\t\t+ payments\r\n\t\t\t\t\t\t\t+ policyTermWrittenOffBalance\r\n\t\t\t\t\t\t\t+ operationalFees,\r\n\t\t\t\t\tminimumDue: minimumDue\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tnewBalance: currentData.newBalance\r\n\t\t\t\t\t?? paymentDetailsData.remainingBalance,\r\n\t\t\t\tpaymentDetails: currentData.paymentDetailsData\r\n\t\t\t\t\t?? paymentDetailsData,\r\n\t\t\t\tamount: currentData.amount,\r\n\t\t\t\ttype: currentData.type ??\r\n\t\t\t\t\tInsuranceConstants.accountingTypes.premium\r\n\t\t\t});\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'type',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Write Off Type',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.premium,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.premium,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.fee,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.fee,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.tax,\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tInsuranceConstants.accountingTypes.tax,\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'amount',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Write Off Amount',\r\n\t\t\t\t\t\tuseCurrency: true,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\t_event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst newBalance: number =\r\n\t\t\t\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t\t\t\t.activeMenuItem.currentData.data\r\n\t\t\t\t\t\t\t\t\t\t.paymentDetails.remainingBalance\r\n\t\t\t\t\t\t\t\t\t- (field.formControl.value || 0);\r\n\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[2]\r\n\t\t\t\t\t\t\t\t\t.formControl.setValue(newBalance);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tpositivePaymentAmount: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.positivePaymentAmountValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'A value above zero dollars must be written off.'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tallowedTotalWritten: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.allowedTotalRemainingBalanceValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'A value less than the total remaining balance is'\r\n\t\t\t\t\t\t\t\t+ ' required.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'newBalance',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'New Balance',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tuseCurrency: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the payment amount is positive\r\n\t *\r\n\t * @param {AbstractControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} _field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tprivate positivePaymentAmountValidator(\r\n\t\tcontrol: AbstractControl,\r\n\t\t_field: FormlyFieldConfig): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNullOrWhitespace(control.value)\r\n\t\t\t&& control.value > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the payment amount is less than the total remaining balance.\r\n\t *\r\n\t * @param {AbstractControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} _field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tprivate allowedTotalRemainingBalanceValidator(\r\n\t\tcontrol: AbstractControl,\r\n\t\t_field: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tconst paymentDetails: any =\r\n\t\t\tthis.context.source\r\n\t\t\t\t.activeMenuItem.currentData.data\r\n\t\t\t\t.paymentDetails;\r\n\r\n\t\treturn control.value <= paymentDetails.remainingBalance;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n@Component({\r\n\tselector: 'adjustment-write-off-comments',\r\n\ttemplateUrl: './adjustment-write-off-comments.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to select a note for\r\n * a term based adjustment write off.\r\n *\r\n * @export\r\n * @class AdjustmentWriteOffCommentsComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class AdjustmentWriteOffCommentsComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof AdjustmentWriteOffCommentsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.comments',\r\n\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Comments',\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.small\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed to update the PolicyTerm\r\n\t * data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdjustmentWriteOffAmountComponent\r\n\t */\r\n\tpublic readonly workflowActionName: string =\r\n\t\t'WriteOffCreateLedgerTransaction';\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentWriteOffCommentsComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tcomments: currentData.comments\r\n\t\t\t\t\t|| AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.writeOff.bind(this));\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the write off event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdjustmentWriteOffCommentsComponent\r\n\t */\r\n\tpublic async writeOff(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\t`?writeOffType=${currentData.type}`\r\n\t\t\t\t+ `&amount=${currentData.amount}`\r\n\t\t\t\t+ `&comments=${currentData.comments}`;\r\n\r\n\t\tawait this.writeOffExecution(\r\n\t\t\tthis.policyTermEntityInstance,\r\n\t\t\tqueryString);\r\n\r\n\t\tthis.navigateToPolicyTermDashboard(\r\n\t\t\tthis.policyTermEntityInstance.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the make payment process, which executes the MakePayment\r\n\t * workflow service with the collected data from the make payment wizard,\r\n\t * then creates the payment information.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} policyTermInstanceData\r\n\t * The PolicyTerm entity instance data to be updated.\r\n\t * @param {string} queryString\r\n\t * The extra parameters sent as query string parameters.\r\n\t * @memberof AdjustmentWriteOffCommentsComponent\r\n\t */\r\n\tprivate async writeOffExecution(\r\n\t\tpolicyTermInstanceData: IEntityInstance,\r\n\t\tqueryString: string): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t.policyTerms;\r\n\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.executeAction(\r\n\t\t\t\t\t\t\tpolicyTermInstanceData.id,\r\n\t\t\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\t\t\tpolicyTermInstanceData,\r\n\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Processing write off',\r\n\t\t\t\t'Write off processed',\r\n\t\t\t\t'A write off has been applied to the policy.',\r\n\t\t\t\t'A write off has not been applied to the policy.'));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy term dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @param {number} entityId\r\n\t * The policy term entity id to navigate to.\r\n\t * @memberof AdjustmentWriteOffCommentsComponent\r\n\t */\r\n\tprivate navigateToPolicyTermDashboard(\r\n\t\tentityId: number): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'bind-transaction',\r\n\ttemplateUrl: './bind-transaction.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for binding a policy term transaction.\r\n *\r\n * @export\r\n * @class BindTransactionComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class BindTransactionComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the bind transaction component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity type to be updated.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic policyTermEntityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTermTransaction entity type to be updated.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic policyTermTransactionEntityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity instance associated to the current\r\n\t * data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate policyTermEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTermTransaction entity instance associated to the\r\n\t * current data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate policyTermTransactionEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action being executed to update the PolicyTerm\r\n\t * data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate readonly workflowActionName: string = 'TransactionBind';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tconst policyTermTransactionId = this.currentData.data.id;\r\n\r\n\t\tthis.policyTermEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t'Group eq \\'PolicyTerms\\' AND Name eq \\'PolicyTerm\\'',\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.policyTermTransactionEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Group eq '${this.currentData.data.entityType}' `\r\n\t\t\t\t\t\t+ `AND Name eq '${this.currentData.data.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.policyTermEntityInstance =\r\n\t\t\tawait this.getPolicyTerm(\r\n\t\t\t\tthis.policyTermEntityType,\r\n\t\t\t\tthis.policyTermTransactionEntityType,\r\n\t\t\t\tpolicyTermTransactionId);\r\n\r\n\t\tthis.policyTermTransactionEntityInstance =\r\n\t\t\tawait this.getPolicyTermTransaction(\r\n\t\t\t\tthis.policyTermTransactionEntityType,\r\n\t\t\t\tpolicyTermTransactionId);\r\n\r\n\t\tthis.context.source.addToNext(this.bind.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the PolicyTerm parent instance data associated to the current\r\n\t * PolicyTermTransaction id collected from the Bind Wizard data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} policyTermEntityType\r\n\t * The PolicyTerm entity type.\r\n\t * @param {IEntityType} policyTermTransactionEntityType\r\n\t * The PolicyTermTransaction entity type.\r\n\t * @param {number} policyTermTransactionId\r\n\t * The PolicyTermTransaction entity instance id.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async getPolicyTerm(\r\n\t\tpolicyTermEntityType: IEntityType,\r\n\t\tpolicyTermTransactionEntityType: IEntityType,\r\n\t\tpolicyTermTransactionId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = policyTermTransactionEntityType.group;\r\n\r\n\t\tconst entityParents: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getParents(\r\n\t\t\t\t\tpolicyTermTransactionId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tpolicyTermEntityType.group);\r\n\r\n\t\treturn entityParents[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the PolicyTermTransaction instance data associated to the current\r\n\t * PolicyTermTransaction id collected from the Bind Wizard data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} policyTermTransactionEntityType\r\n\t * The PolicyTermTransaction entity type.\r\n\t * @param {number} policyTermTransactionId\r\n\t * The PolicyTermTransaction entity instance id.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async getPolicyTermTransaction(\r\n\t\tpolicyTermTransactionEntityType: IEntityType,\r\n\t\tpolicyTermTransactionId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = policyTermTransactionEntityType.group;\r\n\r\n\t\tconst policyTermTransactionData: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`id eq ${policyTermTransactionId}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn policyTermTransactionData;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the transaction bind event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async bind(): Promise\r\n\t{\r\n\t\tawait this.transactionBind();\r\n\r\n\t\tawait this.navigateToPolicyTermDashboard(\r\n\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\tthis.policyTermEntityType.group);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction bind process, which updates the PolicyTerm\r\n\t * entity data with the collected data from the Bind Winzard and then\r\n\t * executes the TransacionBind workflow action to update the associated\r\n\t * PolicyTermTransaction data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} policyTermEntityType\r\n\t * The PolicyTerm entity type.\r\n\t * @param {IEntityInstance} policyTermInstanceData\r\n\t * The PolicyTerm entity instance data to be updated.\r\n\t * @param {IEntityType} policyTermTransactionEntityType\r\n\t * The PolicyTermTransaction entity type.\r\n\t * @param {IEntityInstance} policyTermTransactionInstanceData\r\n\t * The PolicyTermTransaction entity instance data to be updated.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tpublic async transactionBind()\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.policyTermTransactionEntityType)\r\n\t\t\t\t.displayName;\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async (resolve: any, reject: any) => {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tawait this.executeTransactionBindWorkflow(\r\n\t\t\t\t\t\t\tthis.policyTermTransactionEntityType,\r\n\t\t\t\t\t\t\tthis.policyTermTransactionEntityInstance);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t'Binding transaction',\r\n\t\t\t\t'Transaction bound',\r\n\t\t\t\t`${displayName} has been bound.`,\r\n\t\t\t\t`${displayName} has not been bound.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the TransactionBind workflow action.\r\n\t *\r\n\t * @param {IEntityType} policyTermTransactionEntityType\r\n\t * The PolicyTermTransaction entity type.\r\n\t * @param {IEntityInstance} policyTermTransactionInstanceData\r\n\t * The PolicyTermTransaction entity instance data to be updated.\r\n\t * @returns {Promise}\r\n\t * The IActionResponse response from the PolicyTermTransaction update.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate async executeTransactionBindWorkflow(\r\n\t\tpolicyTermTransactionEntityType: IEntityType,\r\n\t\tpolicyTermTransactionInstanceData:\r\n\t\t\tIEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tpolicyTermTransactionEntityType.group;\r\n\r\n\t\tconst actionResponse: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tpolicyTermTransactionInstanceData.id,\r\n\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\tpolicyTermTransactionInstanceData,\r\n\t\t\t\t\tthis.getQueryString());\r\n\r\n\t\treturn actionResponse;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a query string.\r\n\t *\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate getQueryString(): string\r\n\t{\r\n\t\tconst queryString: string = '?'\r\n\t\t\t+ `${InsuranceConstants.queryParameters.invoiceTo}=`\r\n\t\t\t+ this.currentData.data.invoiceTo.resourceIdentifier\r\n\t\t\t+ `&${InsuranceConstants.queryParameters.invoicingMethod}=`\r\n\t\t\t+ this.currentData.data.invoicingMethod\r\n\t\t\t+ `&${InsuranceConstants.queryParameters.enableAutoPayments}=`\r\n\t\t\t+ this.currentData.data.enableAutomaticInstallmentPayments\r\n\t\t\t+ `&${InsuranceConstants.queryParameters.electronicDocuments}=`\r\n\t\t\t+ this.currentData.data.electronicDocuments\r\n\t\t\t+ `&${InsuranceConstants.queryParameters.paymentPlanResourceId}=`\r\n\t\t\t+ this.currentData.data.paymentPlan.resourceIdentifier;\r\n\r\n\t\treturn queryString;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy term dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The policy term entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate async navigateToPolicyTermDashboard(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof BindTransactionComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.invoicingMethod',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Invoicing Method',\r\n\t\t\t\t\t\tdescription: 'The invoicing method.',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\tdefault: 'Paper',\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 'Paper',\r\n\t\t\t\t\t\t\t\tlabel: 'Paper'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.enableAutomaticInstallmentPayments',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Enable Automatic Installment Payments',\r\n\t\t\t\t\t\tdefault: false\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'create-transaction',\r\n\ttemplateUrl: './create-transaction.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for creating a policy transaction.\r\n *\r\n * @export\r\n * @class CreateTransactionComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CreateTransactionComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the create transaction component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The entity layout API service.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the entity type to be created.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic entityCreationType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets a string representing the parent type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate parentTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets a number representing the parent id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate parentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the product name associated to this transaction.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate productName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the transaction entity group associated to the current data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate transactionEntityGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the transaction entity name associated to the current data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate transactionEntityName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the transaction id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate transactionId: number;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.setParentEntityInformation();\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addToNext(\r\n\t\t\t\tthis.create.bind(this));\r\n\r\n\t\tif (this.context.data?.displayedWizardSteps[1]?.alwaysVerify != null) {\r\n\t\t\tthis.context.data.displayedWizardSteps[1].alwaysVerify = true;\r\n\t\t}\r\n\r\n\t\tthis.context.source.activeWizardStep.validator =\r\n\t\t\t() => (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.dynamicFormlyLayout[0]?.formControl?.value)\r\n\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tthis.dynamicFormlyLayout[1]?.formControl?.value)\r\n\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tthis.dynamicFormlyLayout[2]?.formControl?.value)\r\n\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tthis.dynamicFormlyLayout[3]?.formControl?.value));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the transaction creation event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\r\n\t\tthis.productName =\r\n\t\t\tthis.currentData.data.productName;\r\n\r\n\t\tthis.transactionEntityGroup =\r\n\t\t\t`PolicyTermTransaction.${this.productName}`;\r\n\r\n\t\tthis.transactionEntityName =\r\n\t\t\t`PolicyTermTransaction.${this.productName}`;\r\n\r\n\t\tthis.entityCreationType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Group eq '${this.transactionEntityGroup}' AND Name eq `\r\n\t\t\t\t\t+ `'${this.transactionEntityName}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst applicantType =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.currentData.data.type)\r\n\t\t\t\t? 'Individual'\r\n\t\t\t\t: this.currentData.data.type;\r\n\r\n\t\tconst transactionData: IEntityInstance =\r\n\t\t\tthis.createTransactionData(\r\n\t\t\t\tthis.entityCreationType.name,\r\n\t\t\t\tapplicantType,\r\n\t\t\t\tthis.currentData.data?.legalName,\r\n\t\t\t\tthis.currentData.data?.legalStructure,\r\n\t\t\t\tthis.currentData.data?.prefix,\r\n\t\t\t\tthis.currentData.data?.firstName,\r\n\t\t\t\tthis.currentData.data?.middleName,\r\n\t\t\t\tthis.currentData.data?.lastName,\r\n\t\t\t\tthis.currentData.data?.suffix,\r\n\t\t\t\tthis.currentData.data?.effectiveDate,\r\n\t\t\t\tthis.currentData.data?.termLength);\r\n\r\n\t\tthis.transactionId =\r\n\t\t\tawait this.createEntity(\r\n\t\t\t\tthis.entityCreationType,\r\n\t\t\t\ttransactionData);\r\n\r\n\t\tawait this.navigateToQuickQuote(\r\n\t\t\tthis.transactionId,\r\n\t\t\tthis.entityCreationType.group);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the Transaction entity intance data based on the collected\r\n\t * data. This data will be saved on the creation process.\r\n\t *\r\n\t * @param {string} entityType\r\n\t * The entity type to be created.\r\n\t * @param {string} applicantType\r\n\t * The applicant type (Individual/Organization).\r\n\t * @param {string} legalName\r\n\t * The organization legal name.\r\n\t * @param {string} legalStructure\r\n\t * The organization legal structure:\r\n\t * (Corporation/Limited Liability Company/Sole Proprietorship/Non-Profit).\r\n\t * @param {string} prefix\r\n\t * The prefix.\r\n\t * @param {string} firstName\r\n\t * The first name.\r\n\t * @param {string} middleName\r\n\t * The middle name.\r\n\t * @param {string} lastName\r\n\t * The last name.\r\n\t * @param {string} suffix\r\n\t * The suffix.\r\n\t * @param {string} effectiveDate\r\n\t * The effective date.\r\n\t * @param {string} termLength\r\n\t * The term length.\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate createTransactionData(\r\n\t\tentityType: string,\r\n\t\tapplicantType: string,\r\n\t\tlegalName: string,\r\n\t\tlegalStructure: string,\r\n\t\tprefix: string,\r\n\t\tfirstName: string,\r\n\t\tmiddleName: string,\r\n\t\tlastName: string,\r\n\t\tsuffix: string,\r\n\t\teffectiveDate: string,\r\n\t\ttermLength: string): IEntityInstance\r\n\t{\r\n\t\tconst transactionData: IEntityInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: entityType,\r\n\t\t\t\tversionNumber: null,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\teffectiveDate: effectiveDate,\r\n\t\t\t\t\tinterests: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: 'NamedInsured',\r\n\t\t\t\t\t\t\tsubType: 'Primary',\r\n\t\t\t\t\t\t\tcharacteristics: {\r\n\t\t\t\t\t\t\t\tname: {\r\n\t\t\t\t\t\t\t\t\ttype: applicantType,\r\n\t\t\t\t\t\t\t\t\tlegalName: applicantType === 'Organization'\r\n\t\t\t\t\t\t\t\t\t\t? legalName ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tlegalStructure: applicantType ===\r\n\t\t\t\t\t\t\t\t\t\t'Organization'\r\n\t\t\t\t\t\t\t\t\t\t? legalStructure ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tprefix: applicantType === 'Individual'\r\n\t\t\t\t\t\t\t\t\t\t? prefix ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tfirstName: applicantType === 'Individual'\r\n\t\t\t\t\t\t\t\t\t\t? firstName ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tmiddleName: applicantType === 'Individual'\r\n\t\t\t\t\t\t\t\t\t\t? middleName ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tlastName: applicantType === 'Individual'\r\n\t\t\t\t\t\t\t\t\t\t? lastName ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\t\t\t\tsuffix: applicantType === 'Individual'\r\n\t\t\t\t\t\t\t\t\t\t? suffix ?? null\r\n\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\ttermLength: parseInt(\r\n\t\t\t\t\t\ttermLength,\r\n\t\t\t\t\t\tAppConstants.parseRadix)\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn transactionData;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity creation event.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @async\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async createEntity(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(entityCreationType)\r\n\t\t\t\t.displayName;\r\n\r\n\t\tconst newEntityId: number =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.createEntityInstance(\r\n\t\t\t\t\t\tentityCreationType,\r\n\t\t\t\t\t\tentityInstanceData),\r\n\t\t\t\t\t'Creating transaction',\r\n\t\t\t\t\t'Transaction created',\r\n\t\t\t\t\t`${displayName} has been created.`,\r\n\t\t\t\t\t`${displayName} has not been created.`));\r\n\r\n\t\treturn newEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance and all entity relationships.\r\n\t *\r\n\t * @param {IEntityType} entityCreationType\r\n\t * The entity type to be created.\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async createEntityInstance(\r\n\t\tentityCreationType: IEntityType,\r\n\t\tentityInstanceData: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tentityCreationType.group;\r\n\r\n\t\tconst createdEntityId: number =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\tentityInstanceData,\r\n\t\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\t\tthis.parentId,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tproductName: this.productName,\r\n\t\t\t\t\t\taccountNumber: this.currentData.data.accountNumber\r\n\t\t\t\t\t});\r\n\r\n\t\treturn createdEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the quick quote using the entity id provided.\r\n\t *\r\n\t * @param {number} entityId\r\n\t * The entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @async\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async navigateToQuickQuote(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.moduleService.name =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tthis.entityCreationType.name);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.storeData(\r\n\t\t\tthis.currentData);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.quickQuote\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t// /**\r\n\t// * Sets the parent entity information.\r\n\t// *\r\n\t// * @memberof CreateTransactionComponent\r\n\t// */\r\n\tprivate setParentEntityInformation()\r\n\t{\r\n\t\tthis.parentTypeGroup = 'Organization.Agencies';\r\n\t\tthis.parentId =\r\n\t\t\tthis.currentData.data.agencyId;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates products for a state.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @return {Promise}\r\n\t * The state validity.\r\n\t * @async\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async validState(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst products: any[] =\r\n\t\t\tawait this.insuranceService.getActiveProductNamesByState(\r\n\t\t\t\tthis.context.source.activeMenuItem.currentData.data.agencyId,\r\n\t\t\t\tfield.formControl.value);\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(products))\r\n\t\t{\r\n\t\t\tfield.asyncValidators.stateValidator.message =\r\n\t\t\t\t'No products exist for this state.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(!AnyHelper.isNullOrEmptyArray(products));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates term lengths for a product.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @return {Promise}\r\n\t * The product validity\r\n\t * @async\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async validTermLength(\r\n\t\tfield: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst termLengths: any[] =\r\n\t\t\t!AnyHelper.isNullOrEmpty(field.formControl.value)\r\n\t\t\t\t? await this.entityInstanceApiService.query(\r\n\t\t\t\t\t`name eq '${field.formControl.value}'`,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t: [];\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(termLengths))\r\n\t\t{\r\n\t\t\tfield.asyncValidators.productValidator.message =\r\n\t\t\t\t'No term lengths exist for this product.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(!AnyHelper.isNullOrEmptyArray(termLengths));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @memberof CreateTransactionComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\r\n\t\tconst defaultEffectiveDateFunction: string =\r\n\t\t\t'return function () { return this.source.resolver.resolveStatic('\r\n\t\t\t+ '\\\"DateHelper\\\", \\\"startOf\\\", [ this.source.resolver.'\r\n\t\t\t+ 'resolveStatic(\\\"DateHelper\\\", \\\"getSystemDateTime\\\",'\r\n\t\t\t+ ' [ true ]), \\\"day\\\" ]).toISO(); }';\r\n\r\n\t\tconst statePromise: string =\r\n\t\t\t'return async function() {return await this.source.resolver.'\r\n\t\t\t+'resolveInsurance(\\'InsuranceService\\')'\r\n\t\t\t+ '.getUniqueStates(this.source.activeMenuItem.'\r\n\t\t\t+ 'currentData.data.agencyId);}';\r\n\r\n\t\tconst productPromise: string =\r\n\t\t\t'return async function(field){let stateControl='\r\n\t\t\t+ 'field.parent.fieldGroup[1];let options=[];'\r\n\t\t\t+ 'if(stateControl.formControl.value!=null)'\r\n\t\t\t+ '{options = await this.source.resolver.resolveInsurance('\r\n\t\t\t+ '\\'InsuranceService\\').getActiveProductNamesByState(this.source'\r\n\t\t\t+ '.activeMenuItem.currentData.data.agencyId, stateControl.'\r\n\t\t\t+ 'formControl.value);if(options.length==0){field.props.'\r\n\t\t\t+ 'disabled=true;field.props.placeholder=\\\"No Available Options\\\";'\r\n\t\t\t+ 'field.formControl.updateValueAndValidity();}'\r\n\t\t\t+ 'else if(options.length==1){field.props.disabled=false;'\r\n\t\t\t+ 'field.formControl.setValue(options[0]);'\r\n\t\t\t+ 'field.props.disabled=true;field.formControl.'\r\n\t\t\t+ 'updateValueAndValidity();field.props.change(field, event);}'\r\n\t\t\t+ 'else{field.props.disabled=false;field.props.placeholder='\r\n\t\t\t+ '\\\"Select an Option\\\";field.formControl.updateValueAndValidity();'\r\n\t\t\t+ '}}else{field.props.disabled = true;field.props.placeholder='\r\n\t\t\t+ '\\\"No Available Options\\\";}return options;}';\r\n\r\n\t\tconst termLengthPromise: string =\r\n\t\t\t'return async function(field){let stateControl = field.parent.'\r\n\t\t\t+ 'fieldGroup[1];let productControl=field.parent.fieldGroup[2];'\r\n\t\t\t+ 'let options=[];if(productControl.formControl.value!=null'\r\n\t\t\t+ ' && stateControl.formControl.value != null){options = '\r\n\t\t\t+ 'await this.source.resolver.resolveInsurance('\r\n\t\t\t+ '\\'InsuranceService\\').getProductByName(productControl'\r\n\t\t\t+ '.formControl.value);if(options.data?.termLengths?.length==0)'\r\n\t\t\t+ '{field.props.disabled=true;field.props.placeholder='\r\n\t\t\t+ '\\\"No Available Options\\\";field.formControl.'\r\n\t\t\t+ 'updateValueAndValidity();}else if(options.data?.termLengths?'\r\n\t\t\t+ '.length==1){field.props.disabled=false;field.formControl.'\r\n\t\t\t+ 'setValue(String(options.data.termLengths[0].minutes));'\r\n\t\t\t+ 'field.props.disabled=true;field.formControl.'\r\n\t\t\t+ 'updateValueAndValidity();this.source.validStepChanged('\r\n\t\t\t+ 'this.source.activeWizardStep.validator());}else{'\r\n\t\t\t+ 'field.props.disabled=false;field.props.placeholder='\r\n\t\t\t+ '\\\"Select an Option\\\";field.formControl.'\r\n\t\t\t+ 'updateValueAndValidity();}return options.data.termLengths;}'\r\n\t\t\t+ 'else{field.props.disabled=true;field.props.placeholder='\r\n\t\t\t+ '\\\"No Available Options\\\";return options;}}';\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.effectiveDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Effective Date',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tuseDefaultFunction: true,\r\n\t\t\t\t\t\tdefault: defaultEffectiveDateFunction\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.state',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'State',\r\n\t\t\t\t\t\tdescription: 'The property state.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdataPromise: statePromise,\r\n\t\t\t\t\t\tlabelFunction: 'return function (item)'\r\n\t\t\t\t\t\t\t+' { return item; }',\r\n\t\t\t\t\t\tvalueTemplate: '#{item}',\r\n\t\t\t\t\t\tchange: () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst productControl =\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[2];\r\n\t\t\t\t\t\t\tconst termLengthControl =\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3];\r\n\t\t\t\t\t\t\tif (productControl?.props?.initializeDataOptions !=\r\n\t\t\t\t\t\t\t\tnull\r\n\t\t\t\t\t\t\t\t\t&& termLengthControl?.props\r\n\t\t\t\t\t\t\t\t\t\t?.initializeDataOptions !=\r\n\t\t\t\t\t\t\t\t\t\t\tnull)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.setValue(null);\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tproductControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.setValue(null);\r\n\t\t\t\t\t\t\t\tproductControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\tproductControl\r\n\t\t\t\t\t\t\t\t\t.props.disabled = true;\r\n\t\t\t\t\t\t\t\tproductControl\r\n\t\t\t\t\t\t\t\t\t?.props\r\n\t\t\t\t\t\t\t\t\t?.initializeDataOptions();\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t?.props\r\n\t\t\t\t\t\t\t\t\t?.initializeDataOptions();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tstateValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validState(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.productName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Product',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdataPromise: productPromise,\r\n\t\t\t\t\t\tlabelFunction: 'return function (item)'\r\n\t\t\t\t\t\t\t+' { return item; }',\r\n\t\t\t\t\t\tvalueTemplate: '#{item}',\r\n\t\t\t\t\t\tchange: () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst termLengthControl =\r\n\t\t\t\t\t\t\t\tthis.dynamicFormlyLayout[3];\r\n\t\t\t\t\t\t\tif (termLengthControl\r\n\t\t\t\t\t\t\t\t?.props\r\n\t\t\t\t\t\t\t\t?.initializeDataOptions !=\r\n\t\t\t\t\t\t\t\t\tnull)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.setValue(null);\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t.formControl\r\n\t\t\t\t\t\t\t\t\t.updateValueAndValidity();\r\n\t\t\t\t\t\t\t\ttermLengthControl\r\n\t\t\t\t\t\t\t\t\t?.props\r\n\t\t\t\t\t\t\t\t\t?.initializeDataOptions();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n \t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tproductValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validTermLength(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.termLength',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Term Length',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tshowClear: true,\r\n \tdataPromise: termLengthPromise,\r\n \tlabelTemplate: '${item.name}',\r\n \tvalueTemplate: '${item.minutes}'\r\n \t}\r\n \t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\n\r\n@Component({\r\n\tselector: 'make-payment-receipt',\r\n\ttemplateUrl: './make-payment-receipt.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for displaying payment results.\r\n *\r\n * @export\r\n * @class MakePaymentReceiptComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class MakePaymentReceiptComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the Make Payment Receipt component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The service used to get Insurance related entities.\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic insuranceService: InsuranceService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context\r\n\t\t\t\t.source\r\n\t\t\t\t.activeMenuItem\r\n\t\t\t\t.currentData\r\n\t\t\t\t.data;\r\n\r\n\t\tthis.currentData.insured =\r\n\t\t\tawait this.getInsured();\r\n\r\n\t\tthis.context.source.addToNext(\r\n\t\t\tthis.navigateToPolicyTermDashboard\r\n\t\t\t\t.bind(\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\tthis.currentData.id,\r\n\t\t\t\t\tthis.currentData.entityTypeGroup));\r\n\r\n\t\tthis.context.source.activeWizardStep.backLabel = null;\r\n\r\n\t\tthis.context.source.activeWizardStep.alwaysVerify = true;\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\r\n\t\tawait this.context.source.validStepChanged(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Named Insured for the current Policy Term.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\tprivate async getInsured(): Promise\r\n\t{\r\n\t\tconst policyTermTransaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tthis.currentData.id);\r\n\r\n\t\tconst insured: any =\r\n\t\t\tpolicyTermTransaction\r\n\t\t\t\t.data\r\n\t\t\t\t.interests\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(interest: any) =>\r\n\t\t\t\t\t\tinterest.type\r\n\t\t\t\t\t\t\t=== InsuranceConstants\r\n\t\t\t\t\t\t\t\t.interestTypes\r\n\t\t\t\t\t\t\t\t.namedInsured\r\n\t\t\t\t\t\t\t&& interest.subType\r\n\t\t\t\t\t\t\t\t=== InsuranceConstants\r\n\t\t\t\t\t\t\t\t\t.interestSubTypes\r\n\t\t\t\t\t\t\t\t\t.primary)\r\n\t\t\t\t?.characteristics;\r\n\r\n\t\treturn insured;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy term dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The policy term entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof MakePaymentReceiptComponent\r\n\t */\r\n\tprivate async navigateToPolicyTermDashboard(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\n\r\n@Component({\r\n\tselector: 'make-payment',\r\n\ttemplateUrl: './make-payment.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for making a policy term payment.\r\n *\r\n * @export\r\n * @class MakePaymentComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class MakePaymentComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the make payment component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity type to be updated.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic policyTermEntityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity instance associated to the current\r\n\t * data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic policyTermEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed to process the payment.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tprivate readonly workflowActionName: string =\r\n\t\t'MakePayment';\r\n\r\n\t/**\r\n\t * Gets the name of the next wizard step.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tprivate readonly nextStepName: string =\r\n\t\t'Receipt';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst policyTermId = this.currentData.id;\r\n\r\n\t\tthis.policyTermEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Name eq '${this.currentData.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.policyTermEntityInstance =\r\n\t\t\tawait this.getPolicyTerm(\r\n\t\t\t\tthis.policyTermEntityType.group,\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tthis.context.source.addToNext(this.makePayment.bind(this));\r\n\r\n\t\tthis.context.source.activeWizardStep.alwaysVerify = true;\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\r\n\t\tawait this.context.source.validStepChanged(true);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the make payment event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic async makePayment(): Promise\r\n\t{\r\n\t\tconst queryString: string =\r\n\t\t\t`?paymentMethod=${this.currentData.paymentMethod.resourceIdentifier}`\r\n\t\t\t\t+ `&amount=${this.currentData.paymentAmount}`;\r\n\r\n\t\tconst result: any =\r\n\t\t\tawait this.makePaymentExecution(\r\n\t\t\t\tthis.policyTermEntityType,\r\n\t\t\t\tthis.policyTermEntityInstance,\r\n\t\t\t\tqueryString);\r\n\r\n\t\tif (result.value?.success)\r\n\t\t{\r\n\t\t\tthis.context\r\n\t\t\t\t.source\r\n\t\t\t\t.stepTo(\r\n\t\t\t\t\tthis.nextStepName);\r\n\r\n\t\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.navigateToPolicyTermDashboard(\r\n\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\tthis.policyTermEntityType.group);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the PolicyTerm instance data associated to the current id from the\r\n\t * Payment Wizard data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} policyTermEntityTypeGroupName\r\n\t * The PolicyTerm entity type group name.\r\n\t * @param {number} policyTermId\r\n\t * The PolicyTerm entity instance id.\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tpublic async getPolicyTerm(\r\n\t\tpolicyTermEntityTypeGroupName: string,\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tpolicyTermEntityTypeGroupName;\r\n\r\n\t\tconst policyTermInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(policyTermId);\r\n\r\n\t\treturn policyTermInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the make payment process, which executes the MakePayment\r\n\t * workflow service with the collected data from the make payment wizard,\r\n\t * then creates the payment information.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} policyTermEntityType\r\n\t * The PolicyTerm entity type.\r\n\t * @param {IEntityInstance} policyTermInstanceData\r\n\t * The PolicyTerm entity instance data to be updated.\r\n\t * @param {string} queryString\r\n\t * The extra parameters sent as query string parameters.\r\n\t * @returns {Promise}\r\n\t * Returns the result of the workflow action execution.\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tprivate async makePaymentExecution(\r\n\t\tpolicyTermEntityType: IEntityType,\r\n\t\tpolicyTermInstanceData: IEntityInstance,\r\n\t\tqueryString: string): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t\t\t});\r\n\r\n\t\tconst result: any =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tnew Promise(\r\n\t\t\t\t\t\tasync (\r\n\t\t\t\t\t\t\tresolve: any,\r\n\t\t\t\t\t\t\treject: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst actionResponse: any =\r\n\t\t\t\t\t\t\t\t\tawait this.executeWorkflow(\r\n\t\t\t\t\t\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\t\t\t\t\t\tpolicyTermEntityType.group,\r\n\t\t\t\t\t\t\t\t\t\tpolicyTermInstanceData,\r\n\t\t\t\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\t\t\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpaymentResult:\r\n\t\t\t\t\t\t\t\t\t\t\tactionResponse.body.value\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tresolve(actionResponse.body);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcatch (error)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t'Processing payment',\r\n\t\t\t\t\t'Payment processed',\r\n\t\t\t\t\t'Payment processed successfully.',\r\n\t\t\t\t\t'Payment failed to process.'));\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a given workflow action.\r\n\t *\r\n\t * @async\r\n\t * @param {string} workflowActionName\r\n\t * The name of the workflow action to execute\r\n\t * @param {string} policyTermEntityTypeGroupName\r\n\t * The PolicyTerm entity type group name.\r\n\t * @param {IEntityInstance} policyTermInstanceData\r\n\t * The PolicyTerm entity instance data.\r\n\t * @param {string} queryString\r\n\t * The extra parameters sent as query string parameters.\r\n\t * @returns {Promise}\r\n\t * The IActionResponse response from the workflow action\r\n\t * execution.\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tprivate async executeWorkflow(\r\n\t\tworkflowActionName: string,\r\n\t\tpolicyTermEntityTypeGroupName: string,\r\n\t\tpolicyTermInstanceData: IEntityInstance,\r\n\t\tqueryString: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tpolicyTermEntityTypeGroupName;\r\n\r\n\t\tconst actionResponse: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tpolicyTermInstanceData.id,\r\n\t\t\t\t\tworkflowActionName,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tqueryString);\r\n\r\n\t\treturn actionResponse;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy term dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The policy term entity id to navigate.\r\n\t * @param {string} group\r\n\t * The entity group associated to the navigation.\r\n\t * @memberof MakePaymentComponent\r\n\t */\r\n\tprivate async navigateToPolicyTermDashboard(\r\n\t\tentityId: number,\r\n\t\tgroup: string)\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tgroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{clientMessage}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'non-renew-policy',\r\n\ttemplateUrl: './non-renew-policy.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for binding a policy term transaction.\r\n *\r\n * @export\r\n * @class NonRenewPolicyComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class NonRenewPolicyComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets true/false if the current policy is allowing the non-renew\r\n\t * process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic allowedNonRenew: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the client message displayed if not allowed to non-renew.\r\n\t * process.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic clientMessage: string;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedNonRenew =\r\n\t\t\tawait this.nonRenewIsAllowed();\r\n\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.policyNonRenew;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons:\r\n\t\t\t\t\tthis.getReasons(\r\n\t\t\t\t\t\tthis.productEntityInstance.data.reasons,\r\n\t\t\t\t\t\tInsuranceConstants.statusReasonTypes.rejection)\r\n\t\t\t\t\t\t.filter(reason => reason.isNonRenewalReason === true),\r\n\t\t\t\tselectedReasons: [],\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.nonRenew.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the policy non-renew event and navigate to the policy\r\n\t * dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic async nonRenew(): Promise\r\n\t{\r\n\t\tawait this.policyNonRenew();\r\n\t\tawait this.navigateToPolicyDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the policy non-renew process by executing the policyNonRenew\r\n\t * workflow action to update the associated Policy entity data with the\r\n\t * collected data from the Non-Renew Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic async policyNonRenew(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.entityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst selectedReasons: string =\r\n\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\tcurrentData.selectedReasons,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.entityInstance.data.reasons = [];\r\n\r\n\t\tconst queryString: string =\r\n\t\t\t`?comments=${currentData.comments}`\r\n\t\t\t\t+ `&reasons=${selectedReasons}`;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\tthis.entityType,\r\n\t\t\t\t\t\tthis.entityInstance,\r\n\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Processing non-renewal',\r\n\t\t\t\t'Non-renewal processed',\r\n\t\t\t\t`${displayName} has been set to non-renew.`,\r\n\t\t\t\t`${displayName} has not been set to non-renew.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will validate if the non-renew process is allowed by calculating\r\n\t * the expiration date and the allowed days to non-renew the policy.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * True if the non-renew process is allowed, otherwise will return false.\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tprivate async nonRenewIsAllowed(): Promise\r\n\t{\r\n\t\tif (this.entityInstance.data.isRenewable === false\r\n\t\t\t|| this.entityInstance.data.status\r\n\t\t\t\t!== InsuranceConstants.policyStatusTypes.active)\r\n\t\t{\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Non-Renew is not allowed from the current policy state.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst daysFromExpirationToAllowNonRenew: number =\r\n\t\t\tthis.productEntityInstance.data.daysFromExpirationToAllowNonRenew;\r\n\r\n\t\tconst policyTermInstance: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getActivePolicyTerm(\r\n\t\t\t\tthis.entityInstanceId);\r\n\r\n\t\tconst expirationDate: DateTime =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tpolicyTermInstance.data.expirationDate);\r\n\r\n\t\tconst today: DateTime =\r\n\t\t\tDateHelper.startOf(\r\n\t\t\t\tDateTime.local());\r\n\r\n\t\tconst nonRenewDate: DateTime =\r\n\t\t\tDateHelper.addTimeUnit(\r\n\t\t\t\texpirationDate,\r\n\t\t\t\t-daysFromExpirationToAllowNonRenew);\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\t'You are unable to Non-Renew this '\r\n\t\t\t\t+ 'policy as today\\'s date is within '\r\n\t\t\t\t+ `${daysFromExpirationToAllowNonRenew} `\r\n\t\t\t\t+ 'days of the current term\\'s expiration date.';\r\n\r\n\t\treturn today < nonRenewDate;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tprivate async navigateToPolicyDashboard()\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityInstanceTypeGroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.entityInstanceId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tPaymentBatchConstants\r\n} from '@shared/constants/payment-batch-constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'payment-batch-create',\r\n\ttemplateUrl: './payment-batch-approve.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for approve a payment batch.\r\n *\r\n * @export\r\n * @class PaymentBatchApproveComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class PaymentBatchApproveComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the approve payment batch component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic staticFormlyLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity type to be created.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic entityApprovalType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the payment batch id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate paymentBatchId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action being executed against the current\r\n\t * wizard steps entity instance.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate readonly workflowActionName: string = 'PaymentBatchApprove';\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate readonly invalidWizardStepMessage: string =\r\n\t\t'This payment batch has already been approved or rejected.';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.paymentBatchId = this.currentData.data.entityId;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.currentData.data.entityTypeGroup;\r\n\t\tconst paymentBatch: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tthis.paymentBatchId);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tentityInstance: paymentBatch\r\n\t\t\t});\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addToNext(\r\n\t\t\t\tthis.approve.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.isWizardStepValidForDisplay(\r\n\t\t\tpaymentBatch);\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the approve event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tpublic async approve(): Promise\r\n\t{\r\n\t\tthis.entityApprovalType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Name eq '${this.currentData.data.entityTypeGroup}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tawait this.approveEntity();\r\n\r\n\t\tawait this.navigateToPaymentBatch();\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity approval event.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate async approveEntity(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst displayName: string =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tthis.entityApprovalType.name\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tAppConstants.characters.period,\r\n\t\t\t\t\t\tAppConstants.empty));\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.approveEntityInstance(),\r\n\t\t\t\t'Approving Payment Batch',\r\n\t\t\t\t'Payment Batch approved',\r\n\t\t\t\t`${displayName} has been approved.`,\r\n\t\t\t\t`${displayName} has not been approved.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Approves a payment batch entity instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate async approveEntityInstance(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tthis.entityApprovalType.group;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.executeAction(\r\n\t\t\t\tthis.paymentBatchId,\r\n\t\t\t\tthis.workflowActionName);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the payment batch using the entity id provided.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate async navigateToPaymentBatch()\r\n\t{\r\n\t\tthis.moduleService.name =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tthis.entityApprovalType.name);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.storeData(\r\n\t\t\tthis.currentData);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityApprovalType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.paymentBatchId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the static formly layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.staticFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDashboard,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdashboardDisplayComponentInstanceName:\r\n\t\t\t\t\t\t\t'PaymentBatchGenericDashboard'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @param {IEntityInstance} paymentBatch\r\n\t * The payment batch to validate.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not the wizard step is valid for display.\r\n\t * @memberof PaymentBatchApproveComponent\r\n\t */\r\n\tprivate isWizardStepValidForDisplay(\r\n\t\tpaymentBatch: IEntityInstance): boolean\r\n\t{\r\n\t\tconst result: boolean =\r\n\t\t\tpaymentBatch.data.status ===\r\n\t\t\t\tPaymentBatchConstants.paymentBatchStatus.pending;\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\tresult === true\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.invalidWizardStepMessage;\r\n\r\n\t\treturn result;\r\n\t}\r\n}","
\r\n\t
\r\n\t\tPayment Batch\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tPaymentBatchConstants\r\n} from '@shared/constants/payment-batch-constants';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tDateTimeUnit\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'payment-batch-create',\r\n\ttemplateUrl: './payment-batch-create.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for creating a payment batch.\r\n *\r\n * @export\r\n * @class PaymentBatchCreateComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class PaymentBatchCreateComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the create payment batch component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic staticFormlyLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the entity type to be created.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic entityCreationType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets a string representing the parent type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate parentTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets a number representing the parent id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate parentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the payment batch id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate paymentBatchId: number;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.setParentEntityInformation();\r\n\r\n\t\tthis.context.source\r\n\t\t\t.addToNext(\r\n\t\t\t\tthis.create.bind(this));\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the creation event and navigate to the new\r\n\t * entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tpublic async create(): Promise\r\n\t{\r\n\t\tthis.entityCreationType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Name eq '${this.currentData.data.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.paymentBatchId =\r\n\t\t\tawait this.createEntity();\r\n\r\n\t\tawait this.navigateToPaymentBatch();\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the entity creation event.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate async createEntity(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst paymentBatch: IEntityInstance =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: this.entityCreationType.name,\r\n\t\t\t\tversionNumber: null,\r\n\t\t\t\tdata: {}\r\n\t\t\t};\r\n\r\n\t\tconst displayName: string =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tthis.entityCreationType.name\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tAppConstants.characters.period,\r\n\t\t\t\t\t\tAppConstants.empty));\r\n\r\n\t\tconst newEntityId: number =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.createEntityInstance(\r\n\t\t\t\t\t\tpaymentBatch),\r\n\t\t\t\t\t'Creating Payment Batch',\r\n\t\t\t\t\t'Payment Batch created',\r\n\t\t\t\t\t`${displayName} has been created.`,\r\n\t\t\t\t\t`${displayName} has not been created.`));\r\n\r\n\t\treturn newEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity instance and all entity relationships.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} entityInstanceData\r\n\t * The entity instance data to be saved.\r\n\t * @returns {Promise}\r\n\t * The id of the newly created entity.\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate async createEntityInstance(\r\n\t\tentityInstanceData: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tthis.entityCreationType.group;\r\n\r\n\t\tconst createdEntityId: number =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\tentityInstanceData,\r\n\t\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\t\tthis.parentId,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbatchDate:\r\n\t\t\t\t\t\t\tthis.currentData.data.batchDate,\r\n\t\t\t\t\t\tcountOfChecksControl:\r\n\t\t\t\t\t\t\tthis.currentData.data.countOfChecksControl,\r\n\t\t\t\t\t\tsumOfChecksControl:\r\n\t\t\t\t\t\t\tthis.currentData.data.sumOfChecksControl,\r\n\t\t\t\t\t});\r\n\r\n\t\treturn createdEntityId;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the payment batch using the entity id provided.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate async navigateToPaymentBatch(): Promise\r\n\t{\r\n\t\tthis.moduleService.name =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tthis.entityCreationType.name);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.storeData(\r\n\t\t\tthis.currentData);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityCreationType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.paymentBatchId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the parent entity information.\r\n\t *\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate setParentEntityInformation(): void\r\n\t{\r\n\t\tthis.parentTypeGroup =\r\n\t\t\tthis.currentData.data.parentEntityType.group;\r\n\t\tthis.parentId =\r\n\t\t\tthis.currentData.data.parentId;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the static formly layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchCreateComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tbatchDate:\r\n\t\t\t\t\tDateHelper\r\n\t\t\t\t\t\t.getSystemDateTime()\r\n\t\t\t\t\t\t.startOf(\r\n\t\t\t\t\t\t\tDateHelper.timeUnits.day),\r\n\t\t\t\tcountOfChecksControl: 0,\r\n\t\t\t\tsumOfChecksControl: 0\r\n\t\t\t});\r\n\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst matchingEntityTypes: IDropdownOption[] =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.name.indexOf(\r\n\t\t\t\t\t\t\tPaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t\t\t.entityTypePrefix) === 0)\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: new EntityType(entityType).displayName,\r\n\t\t\t\t\t\t\tvalue: entityType.name\r\n\t\t\t\t\t\t});\r\n\r\n\t\tthis.staticFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.entityType',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\toptions: matchingEntityTypes\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.batchDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Batch Date',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.countOfChecksControl',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Count of Checks Control',\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.sumOfChecksControl',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Sum of Checks Control',\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\tuseCurrency: true,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tAt least one Credit Card or ACH payment method must be available to make payments.\r\n\t\t\t\r\n\t\t
\r\n\t\t
0\">\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t
\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tIInsurancePaymentSummary\r\n} from '@insurance/interfaces/insurance-payment-summary.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInputGroupItem\r\n} from '@shared/interfaces/application-objects/input-group-item.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-disable max-len */\r\n\r\n@Component({\r\n\tselector: 'payment-details',\r\n\ttemplateUrl: './payment-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./payment-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to display the payment details for a\r\n * policy term.\r\n *\r\n * @export\r\n * @class PaymentDetailsComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class PaymentDetailsComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the payment details component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tDynamicWizardComponent,\r\n\t * \tIWizardContext>}\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the context active menu item current data collected on the\r\n\t * dynamic wizard steps.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the policy term accounting payment methods data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof PaymentDetailsComponent\r\n\t*/\r\n\tpublic paymentMethodsData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity instance associated to the current\r\n\t * data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic policyTermEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the ledger entity instance associated to the current\r\n\t * policy term.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic ledgerEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.currentData.paymentOption = 'minimumDue';\r\n\t\tthis.currentData.paymentAmount = 0;\r\n\r\n\t\tconst policyTermId = this.currentData.id;\r\n\r\n\t\tthis.policyTermEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyTerm(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tthis.ledgerEntityInstance =\r\n\t\t\tawait this.insuranceService.getLedger(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tconst ledgerTransactionInstances: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getLedgerTransactions(\r\n\t\t\t\tthis.ledgerEntityInstance.id);\r\n\r\n\t\tthis.paymentMethodsData =\r\n\t\t\tthis.policyTermEntityInstance.data.preferences.paymentMethods\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(paymentMethod: any) =>\r\n\t\t\t\t\t\tpaymentMethod.type !== 'Check');\r\n\r\n\t\tconst priorTermTransfer: number =\r\n\t\t\tInsuranceHelper.getPriorTermTransferBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst policyTermWrittenOffBalance: number =\r\n\t\t\tInsuranceHelper.getPolicyTermWrittenOffBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tconst payments: number =\r\n\t\t\tInsuranceHelper.getPaymentsBalance(\r\n\t\t\t\tledgerTransactionInstances);\r\n\r\n\t\tlet accountingData: any;\r\n\t\tlet paymentDetailsData: any;\r\n\r\n\t\tif (this.policyTermEntityInstance.data.status ===\r\n\t\t\tInsuranceConstants.policyTermStatusTypes.active)\r\n\t\t{\r\n\t\t\taccountingData =\r\n\t\t\t\tthis.policyTermEntityInstance.data.accounting;\r\n\r\n\t\t\tpaymentDetailsData =\r\n\t\t\t\t{\r\n\t\t\t\t\tpremium: accountingData.writtenPremium,\r\n\t\t\t\t\tfees: accountingData.writtenFees,\r\n\t\t\t\t\ttaxes: accountingData.writtenTaxes,\r\n\t\t\t\t\ttotal: accountingData.writtenTotal,\r\n\t\t\t\t\tpriorTermTransfer: priorTermTransfer,\r\n\t\t\t\t\tpolicyTermWrittenOffBalance: policyTermWrittenOffBalance,\r\n\t\t\t\t\tpayments: payments,\r\n\t\t\t\t\tremainingBalance:\r\n\t\t\t\t\t\tthis.ledgerEntityInstance.data.balance\r\n\t\t\t\t\t\t\t+ priorTermTransfer\r\n\t\t\t\t};\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst policyTermTransactionInstance: IEntityInstance =\r\n\t\t\t\tawait this.insuranceService\r\n\t\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.id);\r\n\r\n\t\t\taccountingData =\r\n\t\t\t\tpolicyTermTransactionInstance.data.accounting;\r\n\r\n\t\t\tpaymentDetailsData =\r\n\t\t\t\t{\r\n\t\t\t\t\tpremium: accountingData.directWrittenPremium,\r\n\t\t\t\t\tfees: accountingData.directWrittenFees,\r\n\t\t\t\t\ttaxes: accountingData.directWrittenTaxes,\r\n\t\t\t\t\ttotal: accountingData.directWrittenTotal,\r\n\t\t\t\t\tpriorTermTransfer: priorTermTransfer,\r\n\t\t\t\t\tpolicyTermWrittenOffBalance: policyTermWrittenOffBalance,\r\n\t\t\t\t\tpayments: payments,\r\n\t\t\t\t\tremainingBalance:\r\n\t\t\t\t\t\taccountingData.directWrittenTotal\r\n\t\t\t\t\t\t\t+ priorTermTransfer\r\n\t\t\t\t\t\t\t+ payments\r\n\t\t\t\t\t\t\t+ policyTermWrittenOffBalance\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.currentData.paymentDetails =\r\n\t\t\tpaymentDetailsData;\r\n\r\n\t\tconst futureIssuedTransactions: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getFutureIssuedTransactions(\r\n\t\t\t\tthis.policyTermEntityInstance);\r\n\r\n\t\tlet actionResponse: any;\r\n\t\tlet generatedPayments: IInsurancePaymentSummary[] = [];\r\n\t\tlet includeUninvoicedOperationalFees: boolean = false;\r\n\t\tif (this.policyTermEntityInstance.data.status ===\r\n\t\t\tInsuranceConstants.policyTermStatusTypes.pending)\r\n\t\t{\r\n\t\t\tactionResponse =\r\n\t\t\t\tawait this.insuranceService.generateDraftPaymentPlanSchedule(\r\n\t\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue);\r\n\r\n\t\t\tincludeUninvoicedOperationalFees =\r\n\t\t\t\tfutureIssuedTransactions.length === 0;\r\n\r\n\t\t\tgeneratedPayments =\r\n\t\t\t\tawait this.insuranceService.mapPaymentSchedulePaymentSummary(\r\n\t\t\t\t\tpolicyTermId,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\t\tactionResponse?.body?.value.payments,\r\n\t\t\t\t\tincludeUninvoicedOperationalFees);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (futureIssuedTransactions.length > 0)\r\n\t\t\t{\r\n\t\t\t\tactionResponse =\r\n\t\t\t\t\tawait this.insuranceService.generateDraftPaymentPlanSchedule(\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\t\t\t}\r\n\r\n\t\t\tgeneratedPayments =\r\n\t\t\t\tawait this.insuranceService.mapPaymentSchedulePaymentSummary(\r\n\t\t\t\t\tpolicyTermId,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\t\tactionResponse?.body?.value.payments\r\n\t\t\t\t\t\t?? this.policyTermEntityInstance.data\r\n\t\t\t\t\t\t\t.accounting?.paymentSchedule?.payments,\r\n\t\t\t\t\tincludeUninvoicedOperationalFees);\r\n\t\t}\r\n\r\n\t\tconst nextPaymentInstallment: IInsurancePaymentSummary =\r\n\t\t\tawait this.insuranceService.getNextInstallmentPayment(\r\n\t\t\t\tpolicyTermId,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\tgeneratedPayments,\r\n\t\t\t\tfalse);\r\n\t\tthis.currentData.paymentDetails.minimumDue =\r\n\t\t\t(nextPaymentInstallment?.due ?? 0)\r\n\t\t\t\t+ priorTermTransfer;\r\n\r\n\t\tthis.currentData.paymentOption =\r\n\t\t\t'minimumDue';\r\n\t\tthis.currentData.paymentAmount =\r\n\t\t\tthis.currentData.paymentDetails.minimumDue;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tpolicyTerm: this.policyTermEntityInstance,\r\n\t\t\t\tgeneratedPayments: generatedPayments,\r\n\t\t\t\tpaymentResult: null\r\n\t\t\t});\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t\tthis.context.source.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the payment amount is a correct input.\r\n\t *\r\n\t * @param {FormControl} _control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tprivate paymentAmountValidator(\r\n\t\t_control: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tconst valueField: AbstractControl =\r\n\t\t\tfield.form.get(\r\n\t\t\t\tAppConstants.nestedDataIdentifier\r\n\t\t\t\t\t+ field.props.valueKey);\r\n\r\n\t\treturn !AnyHelper.isNull(valueField) && valueField.value > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the payment methods available.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tprivate paymentMethodsValidator(\r\n\t\tcontrol: UntypedFormControl): boolean\r\n\t{\r\n\t\tconst paymentMethods: IDropdownOption[] =\r\n\t\t\tthis.getPaymentMethods();\r\n\r\n\t\tif (control.value === null)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn paymentMethods.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the available payment methods for the current policy term instance.\r\n\t *\r\n\t * @return {IDropdownOption[]}\r\n\t * The payment methods converted to a IDropdownOption array.\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tprivate getPaymentMethods(): IDropdownOption[]\r\n\t{\r\n\t\treturn this.paymentMethodsData\r\n\t\t\t.map(\r\n\t\t\t\t(paymentMethod: any) =>\r\n\t\t\t\t\t({\r\n\t\t\t\t\t\tlabel: this.getPaymentMethodName(paymentMethod),\r\n\t\t\t\t\t\tvalue: paymentMethod\r\n\t\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default payment method.\r\n\t *\r\n\t * @return {any}\r\n\t * The default payment method.\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tprivate getDefaultPaymentMethod(): any\r\n\t{\r\n\t\treturn this.paymentMethodsData.find(paymentMethod =>\r\n\t\t\tpaymentMethod.isDefault === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the payment method label for the payment methods dropdown.\r\n\t *\r\n\t * @return {string}\r\n\t * The formatted payment method type plus the payment method name.\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tprivate getPaymentMethodName(\r\n\t\tpaymentMethod: any): string\r\n\t{\r\n\t\treturn paymentMethod.accountHolder\r\n\t\t\t+ ', '\r\n\t\t\t+ StringHelper\r\n\t\t\t\t.normalizeCamelcase(paymentMethod.type)\r\n\t\t\t\t+ ` (${paymentMethod.accountNumber})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentDetailsComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst paymentMethods: IDropdownOption[] =\r\n\t\t\tthis.getPaymentMethods();\r\n\r\n\t\tpaymentMethods.sort((\r\n\t\t\tfirstItem: IDropdownOption,\r\n\t\t\tsecondItem: IDropdownOption) =>\r\n\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\tfirstItem,\r\n\t\t\t\tsecondItem,\r\n\t\t\t\tAppConstants.commonProperties.label));\r\n\r\n\t\tconst defaultPaymentMethod: any =\r\n\t\t\tthis.getDefaultPaymentMethod();\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.paymentMethod',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Payment Method',\r\n\t\t\t\t\t\tplaceholder: 'Select an Option',\r\n\t\t\t\t\t\toptions: paymentMethods,\r\n\t\t\t\t\t\tdefault: defaultPaymentMethod,\r\n\t\t\t\t\t\tshowClear: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.paymentMethodsValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Payment method is required.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.paymentOption',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputRadioButton,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Payment Amount',\r\n\t\t\t\t\t\tformatType: 'currency',\r\n\t\t\t\t\t\tvalueKey: 'paymentAmount',\r\n\t\t\t\t\t\tinputGroupItems:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tname: 'Minimum Due',\r\n\t\t\t\t\t\t\t\t\tkey: 'minimumDue',\r\n\t\t\t\t\t\t\t\t\toptionValue:\r\n\t\t\t\t\t\t\t\t\t\tthis.currentData.paymentDetails\r\n\t\t\t\t\t\t\t\t\t\t\t.minimumDue,\r\n\t\t\t\t\t\t\t\t\tdisabledInput: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tname: 'Remaining Balance',\r\n\t\t\t\t\t\t\t\t\tkey: 'remainingBalance',\r\n\t\t\t\t\t\t\t\t\toptionValue:\r\n\t\t\t\t\t\t\t\t\t\tthis.currentData.paymentDetails\r\n\t\t\t\t\t\t\t\t\t\t\t.remainingBalance,\r\n\t\t\t\t\t\t\t\t\tdisabledInput: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tname: 'Other',\r\n\t\t\t\t\t\t\t\t\tkey: 'other',\r\n\t\t\t\t\t\t\t\t\toptionValue: null,\r\n\t\t\t\t\t\t\t\t\tplaceholder: '$0.00',\r\n\t\t\t\t\t\t\t\t\tdisabledInput: true,\r\n\t\t\t\t\t\t\t\t\tallowEntry: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.paymentAmountValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'A value above zero dollars must be paid.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.paymentAmount',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tclassName: 'visually-hidden',\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.termsAndConditions',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCheckbox,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tclassName: 'ellipsis-text',\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcheckboxText:\r\n\t\t\t\t\t\t\t'I agree to the terms and conditions of the '\r\n\t\t\t\t\t\t\t+ 'Payment Authorization Agreement'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tcontrol.value === true),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'You must agree to the terms before proceeding.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{clientMessage}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'rescind-non-renew-policy',\r\n\ttemplateUrl: './rescind-non-renew-policy.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for binding a policy term transaction.\r\n *\r\n * @export\r\n * @class RescindNonRenewPolicyComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class RescindNonRenewPolicyComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets true/false if the current policy is allowing\r\n\t * rescind renew process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tpublic allowedRescindNonRenew: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the client message displayed if not allowed\r\n\t * to rescind renew.\r\n\t * process.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\r\n\tpublic clientMessage: string =\r\n\t\t'Rescind Non-Renew is not allowed from the current policy state.';\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof RescindNonRenewPolicyComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedRescindNonRenew =\r\n\t\t\tthis.rescindNonRenewIsAllowed();\r\n\t\tthis.workflowActionName = 'PolicyRescindNonRenew';\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.rescindNonRenew.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the policy rescind non-renew event and navigate to the\r\n\t * policy dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof RescindNonRenewPolicyComponent\r\n\t */\r\n\tpublic async rescindNonRenew(): Promise\r\n\t{\r\n\t\tawait this.policyRescindNonRenew();\r\n\t\tawait this.navigateToPolicyDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the policy rescind non-renew process by executing the\r\n\t * policyRescindNonRenew workflow action to update the associated Policy\r\n\t * entity data with the collected data from the Rescind Non-Renew Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof RescindNonRenewPolicyComponent\r\n\t */\r\n\tpublic async policyRescindNonRenew(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.entityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst queryString: string =\r\n\t\t\t\t\t\t`?comments=${currentData.comments}`;\r\n\r\n\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\tthis.entityType,\r\n\t\t\t\t\t\tthis.entityInstance,\r\n\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Rescinding non-renewal',\r\n\t\t\t\t'Non-renewal rescinded',\r\n\t\t\t\t`Non-renewal has been rescinded for ${displayName}.`,\r\n\t\t\t\t`Non-renewal has not been rescinded for ${displayName}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy dashboard using the policy term id\r\n\t * provided.\r\n\t *\r\n\t * @async\r\n\t * @memberof RescindNonRenewPolicyComponent\r\n\t */\r\n\tprivate async navigateToPolicyDashboard()\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityInstanceTypeGroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.entityInstanceId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will validate if the non-renew process is allowed by calculating\r\n\t * the expiration date and the allowed days to non-renew the policy.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * True if the non-renew process is allowed, otherwise will return false.\r\n\t * @memberof NonRenewPolicyComponent\r\n\t */\r\n\tprivate rescindNonRenewIsAllowed(): boolean\r\n\t{\r\n\t\treturn this.entityInstance.data.isRenewable === false\r\n\t\t\t&& this.entityInstance.data.status\r\n\t\t\t\t=== InsuranceConstants.policyStatusTypes.active;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tTransactionStatusEffectiveDateDirective\r\n} from '@insurance/directives/transaction-status-effective-date.directive';\r\nimport {\r\n\tIInsuranceEntityTypes\r\n} from '@insurance/interfaces/insurance-entity-types.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'transaction-cancel-effective-date',\r\n\ttemplateUrl: './transaction-cancel-effective-date.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-cancel-effective-date.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for setting the effective date\r\n * of a policy transaction status change.\r\n *\r\n * @export\r\n * @class TransactionCancelEffectiveDateComponent\r\n * @extends {TransactionCancelEffectiveDateComponent}\r\n */\r\nexport class TransactionCancelEffectiveDateComponent\r\n\textends TransactionStatusEffectiveDateDirective\r\n{\r\n\t/**\r\n\t * Initializes an instance of the transaction status effective date\r\n\t * component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used in this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tinsuranceService,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed against the current\r\n\t * wizard step entity instance.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic static readonly workflowActionName: string =\r\n\t\t'TransactionCancel';\r\n\r\n\t/**\r\n\t * Gets or sets the newly created pending cancel transaction id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic createdPendingCancelTransactionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the existing transaction instance that is being cancelled.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic existingTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance entity types.\r\n\t *\r\n\t * @type {IInsuranceEntityTypes}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic insuranceEntityTypes: IInsuranceEntityTypes;\r\n\r\n\t/**\r\n\t * Gets or sets a value that indicates if new navigation data should be set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic override updateNavigationData: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic invalidWizardStepMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components. This\r\n\t * value can be overridden in the implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic override staticFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.statusEffectiveDate',\r\n\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Effective Date',\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tquickDateSelection:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Override',\r\n\t\t\t\t\t\t\ttooltipOptions: {\r\n\t\t\t\t\t\t\t\ttooltipLabel: AppConstants.empty\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\tDateHelper.fromUtcSystemIsoToSimulatedLocalDate(\r\n\t\t\t\t\t\t\t\t\tthis.overrideButtonClick().toISO())\r\n\t\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidators: {\r\n\t\t\t\t\tvalidEffectiveDate: {\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(control.value)\r\n\t\t\t\t\t\t\t\t\t>= this.policyTermInceptionDate\r\n\t\t\t\t\t\t\t\t\t\t&& DateTime.fromISO(control.value)\r\n\t\t\t\t\t\t\t\t\t\t\t< this.policyTermExpirationDate,\r\n\t\t\t\t\t\tmessage: 'The date must be between the policy '\r\n\t\t\t\t\t\t\t+ 'effective and expiration dates.'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tminimumEffectiveDate: {\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(control.value)\r\n\t\t\t\t\t\t\t\t\t>= this.minimumTransactionEffectiveDate,\r\n\t\t\t\t\t\tmessage: this.getMinimumEffectiveDateMessage.bind(this)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.flatCancel',\r\n\t\t\t\ttype: FormlyConstants.customControls.customCheckbox,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tcheckboxText: 'Flat Cancel',\r\n\t\t\t\t\tdefault: false\r\n\t\t\t\t},\r\n\t\t\t\texpressions: {\r\n\t\t\t\t\thide:\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst hidden: boolean =\r\n\t\t\t\t\t\t\t\tfield.form?.status ===\r\n\t\t\t\t\t\t\t\t\tAppConstants.formControlStatus.invalid\r\n\t\t\t\t\t\t\t\t\t|| field.model.data.statusEffectiveDate\r\n\t\t\t\t\t\t\t\t\t\t!== field.model.data.inceptionDate;\r\n\r\n\t\t\t\t\t\t\tif (hidden === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfield.formControl.setValue(false);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn hidden;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\t\tthis.insuranceEntityTypes =\r\n\t\t\tawait this.insuranceService.populateInsuranceEntityTypes();\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tstatusEffectiveDate:\r\n\t\t\t\t\tcurrentData.isCalculatedEffectiveDate === true\r\n\t\t\t\t\t\t? await this.calculateEffectiveDate()\r\n\t\t\t\t\t\t: currentData.statusEffectiveDate,\r\n\t\t\t\tinceptionDate: this.policyTermInceptionDate.toISO()\r\n\t\t\t});\r\n\r\n\t\tawait this.getEffectiveDateBasedTransaction();\r\n\t\tthis.context.source.addToNext(this.createTransactionCancel.bind(this));\r\n\t\tthis.setOverrideButtonStatus();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a cancellation transaction based on a selected transaction.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tpublic async createTransactionCancel(): Promise\r\n\t{\r\n\t\tawait this.transactionCancel();\r\n\r\n\t\tthis.navigateToPendingCancelTransaction();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the calculated effective date based on the cancel reason settings.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns the calculated date value based on the\r\n\t * cancel reason settings as an ISO string.\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate async calculateEffectiveDate(): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tconst cancelReason: any =\r\n\t\t\tcurrentData.data.selectedReasons[0];\r\n\r\n\t\tconst statusEffectiveDate: DateTime =\r\n\t\t\tcancelReason.cancelReasonType\r\n\t\t\t\t===\tInsuranceConstants.cancelReasonTypes.underwriting\r\n\t\t\t|| cancelReason.cancelReasonType\r\n\t\t\t\t=== InsuranceConstants.cancelReasonTypes.nonPayment\r\n\t\t\t\t? await this.getEffectiveDateBasedOnSettings(cancelReason)\r\n\t\t\t\t: null;\r\n\r\n\t\tconst isCalculatedEffectiveDate: boolean =\r\n\t\t\t!AnyHelper.isNull(statusEffectiveDate);\r\n\r\n\t\tif (isCalculatedEffectiveDate === true)\r\n\t\t{\r\n\t\t\tthis.disableEffectiveDateControl();\r\n\t\t}\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tisCalculatedEffectiveDate: isCalculatedEffectiveDate\r\n\t\t\t});\r\n\r\n\t\treturn AnyHelper.isNull(statusEffectiveDate)\r\n\t\t\t? null\r\n\t\t\t: DateHelper.startOf(\r\n\t\t\t\tstatusEffectiveDate)\r\n\t\t\t\t.toISO();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the transactions effective date based on the reason settings.\r\n\t *\r\n\t * @async\r\n\t * @param {any} cancelReason\r\n\t * The cancel reason that contains the settings.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that the calculated date value based on the cancel\r\n\t * reason settings.\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate async getEffectiveDateBasedOnSettings(\r\n\t\tcancelReason: any): Promise\r\n\t{\r\n\t\tconst productInstance: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getProductByName(\r\n\t\t\t\tthis.policyTerm.data.productName);\r\n\r\n\t\tconst underwritingPeriod: number =\r\n\t\t\tproductInstance.data.newBusiness.underwritingPeriod;\r\n\r\n\t\tconst cancelEffectiveDate: DateTime =\r\n\t\t\tDateTime.fromISO(this.policyTerm.data.effectiveDate)\r\n\t\t\t\t.plus(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tday: underwritingPeriod\r\n\t\t\t\t\t});\r\n\r\n\t\tconst today: DateTime = DateTime.local();\r\n\r\n\t\tconst cancelReasonsDays: number = today <= cancelEffectiveDate\r\n\t\t\t? cancelReason.cancelEffectiveDateWithinUnderwritingPeriod.days\r\n\t\t\t: cancelReason.cancelEffectiveDateOutsideUnderwritingPeriod.days;\r\n\r\n\t\tconst effectiveDate: DateTime =\r\n\t\t\tDateTime.local()\r\n\t\t\t\t.plus(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tday: cancelReasonsDays\r\n\t\t\t\t\t});\r\n\r\n\t\treturn effectiveDate;\r\n\t}\r\n\r\n\t/**\r\n\t * The override button click event.\r\n\t *\r\n\t * @returns {DateTime}\r\n\t * Returns the previously selected effective date value.\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate overrideButtonClick(): DateTime\r\n\t{\r\n\t\tthis.enableEffectiveDateControl();\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tisCalculatedEffectiveDate: false\r\n\t\t\t});\r\n\r\n\t\tconst currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tconst effectiveDate: DateTime =\r\n\t\t\tcurrentData.data.statusEffectiveDate === null\r\n\t\t\t\t? null\r\n\t\t\t\t: DateTime.fromISO(currentData.data.statusEffectiveDate);\r\n\r\n\t\treturn effectiveDate;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the override button status based on the user permissions.\r\n\t *\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate setOverrideButtonStatus(): void\r\n\t{\r\n\t\tconst hasMembership: boolean =\r\n\t\t\tnew User(this.sessionService.user)\r\n\t\t\t\t.hasMembership(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\tInsuranceConstants.securityGroups.underwriterManager\r\n\t\t\t\t\t]);\r\n\r\n\t\tif (hasMembership !== true)\r\n\t\t{\r\n\t\t\tthis.disableOverrideButton();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disables the effective date control.\r\n\t *\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate disableEffectiveDateControl(): void\r\n\t{\r\n\t\tthis.staticFormlyLayout[0]\r\n\t\t\t.props.disabled = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Enables the effective date control.\r\n\t *\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\t private enableEffectiveDateControl(): void\r\n\t {\r\n\t\t this.staticFormlyLayout[0]\r\n\t\t\t .props.disabled = false;\r\n\t }\r\n\r\n\t/**\r\n\t * Disables the override button.\r\n\t *\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate disableOverrideButton(): void\r\n\t{\r\n\t\tthis.staticFormlyLayout[0]\r\n\t\t\t.props.quickDateSelection.disabled = true;\r\n\r\n\t\tthis.staticFormlyLayout[0]\r\n\t\t\t.props.quickDateSelection\r\n\t\t\t.tooltipOptions.tooltipLabel =\r\n\t\t\t\t'You don\\'t have permission to override';\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction cancel process by executing the\r\n\t * TransactionCancel workflow action to create a cancellation transaction\r\n\t * with the collected data from the Cancel Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate async transactionCancel(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tawait this.getEffectiveDateBasedTransaction();\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tstatusEffectiveDate:\r\n\t\t\t\t\t\tcurrentData.statusEffectiveDate,\r\n\t\t\t\t\tflatCancellation:\r\n\t\t\t\t\t\tcurrentData.flatCancel,\r\n\t\t\t\t\tisCalculatedEffectiveDate:\r\n\t\t\t\t\t\tcurrentData.isCalculatedEffectiveDate,\r\n\t\t\t\t\tparentId:\r\n\t\t\t\t\t\tcurrentData.id,\r\n\t\t\t\t\tcomments:\r\n\t\t\t\t\t\tcurrentData.comments,\r\n\t\t\t\t\treasons:\r\n\t\t\t\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\t\t\t\tcurrentData.selectedReasons,\r\n\t\t\t\t\t\t\tAppConstants.commonProperties.id)\r\n\t\t\t\t});\r\n\r\n\t\tthis.existingTransactionInstance.data.effectiveDate =\r\n\t\t\tcurrentData.statusEffectiveDate;\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${this.existingTransactionInstance\r\n\t\t\t\t\t\t\t.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(entityType)\r\n\t\t\t\t.displayName;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tentityType.group;\r\n\t\t\t\t\t\tconst response: IActionResponse =\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.executeAction(\r\n\t\t\t\t\t\t\t\t\tthis.existingTransactionInstance.id,\r\n\t\t\t\t\t\t\t\t\tTransactionCancelEffectiveDateComponent\r\n\t\t\t\t\t\t\t\t\t\t.workflowActionName,\r\n\t\t\t\t\t\t\t\t\tthis.existingTransactionInstance,\r\n\t\t\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\t\tthis.createdPendingCancelTransactionId =\r\n\t\t\t\t\t\t\t(response).body.parameters[\r\n\t\t\t\t\t\t\t\tAppConstants.commonProperties.id];\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Processing cancellation',\r\n\t\t\t\t'Cancellation processed',\r\n\t\t\t\t`${displayName} cancellation has been created.`,\r\n\t\t\t\t`${displayName} cancellation has not been created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will set the existing transaction instance based on the effective\r\n\t * date.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate async getEffectiveDateBasedTransaction(): Promise\r\n\t{\r\n\t\tthis.matchEffectiveDateToTransaction();\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tcurrentData.basedOnEntityTypeGroup;\r\n\t\tthis.existingTransactionInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(currentData.basedOnEntityId);\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the new cancel transaction using the transaction\r\n\t * id provided.\r\n\t *\r\n\t * @memberof TransactionCancelEffectiveDateComponent\r\n\t */\r\n\tprivate navigateToPendingCancelTransaction(): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.policy}/entities`,\r\n\t\t\t\tthis.existingTransactionInstance.entityType,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.createdPendingCancelTransactionId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.layoutTypes.cancelSummary\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIWizardStep\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-step-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-cancel-reasons',\r\n\ttemplateUrl: './transaction-cancel-reasons.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for the cancel transaction.\r\n *\r\n * @export\r\n * @class TransactionCancelReasonsComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionCancelReasonsComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Cancel is not allowed on a non-active policy term, '\r\n\t\t\t+ 'a policy term that is not the most recent, when '\r\n\t\t\t+ 'pending transactions exist in this policy term, when '\r\n\t\t\t+ 'the latest is a cancellation transaction, or when '\r\n\t\t\t+ 'future transactions exist.';\r\n\r\n\t/**\r\n\t * Gets or sets true/false if the current policy term is allowing the\r\n\t * cancel process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic allowedTransactionCancel: boolean;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedTransactionCancel =\r\n\t\t\tawait this.isWizardStepValidForDisplay();\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tconst selectedReasons: any =\r\n\t\t\tAnyHelper.isNull(currentData.data.selectedReasons)\r\n\t\t\t\t? []\r\n\t\t\t\t: currentData.data.selectedReasons;\r\n\r\n\t\tconst availableReasons: any[] =\r\n\t\t\tthis.getReasons(\r\n\t\t\t\tthis.productEntityInstance.data.reasons,\r\n\t\t\t\tInsuranceConstants.statusReasonTypes.rejection)\r\n\t\t\t\t.filter(reason => reason.isCancelReason === true);\r\n\r\n\t\tavailableReasons.forEach(\r\n\t\t\t(cancelReason: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst description: string =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(cancelReason.description)\r\n\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t: ' - ' + cancelReason.description;\r\n\r\n\t\t\t\tconst cancelReasonType: string =\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\tcancelReason.cancelReasonType);\r\n\r\n\t\t\t\tcancelReason.detailedDescription =\r\n\t\t\t\t\tcancelReasonType + description;\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons: availableReasons,\r\n\t\t\t\tselectedReasons: selectedReasons,\r\n\t\t\t\tstatusEntityId: this.entityInstanceId,\r\n\t\t\t\tstatusEntityTypeGroup: this.entityType.group,\r\n\t\t\t\tisCalculatedEffectiveDate: true\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will validate if the selected cancel reasons has the same cancel\r\n\t * reason type.\r\n\t *\r\n\t * @async\r\n\t * @returns {boolean}\r\n\t * True if all the selected cancel reasons has the same cancel reason type,\r\n\t * otherwise will return false.\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic hasValidSelectedReasons(): boolean\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tif (currentData.data.selectedReasons.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst cancelReasons: any[] =\r\n\t\t\tcurrentData.data.selectedReasons;\r\n\r\n\t\tconst uniqueObject =\r\n\t\t\t[\r\n\t\t\t\t...new Set(cancelReasons.map((cancelReason: any) =>\r\n\t\t\t\t\tcancelReason.cancelReasonType))\r\n\t\t\t];\r\n\r\n\t\tconst result: boolean =\r\n\t\t\tuniqueObject.length === 1;\r\n\r\n\t\tconst activeWizardStep: IWizardStep =\r\n\t\t\tthis.context.source.activeWizardStep;\r\n\r\n\t\tactiveWizardStep.nextTooltipLabel =\r\n\t\t\tresult === false\r\n\t\t\t\t? 'You can only add multiple reasons of the same '\r\n\t\t\t\t\t+ 'cancel reason type'\r\n\t\t\t\t: null;\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyByPolicyTermId(\r\n\t\t\t\tthis.policyTermEntityInstance.id);\r\n\r\n\t\tif (AnyHelper.isNull(policy))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst activePolicyTerm: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getActivePolicyTerm(\r\n\t\t\t\tpolicy.id);\r\n\r\n\t\tconst latestTransaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tactivePolicyTerm.id);\r\n\r\n\t\tconst result: boolean =\r\n\t\t\t!(this.policyTermEntityInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t\t|| activePolicyTerm.data.renewalTerm >\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.data.renewalTerm\r\n\t\t\t\t\t|| latestTransaction.data.type ===\r\n\t\t\t\t\t\tInsuranceConstants.transactionTypes.cancellation\r\n\t\t\t\t\t|| (latestTransaction.data.status !==\r\n\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.issued\r\n\t\t\t\t\t\t&& latestTransaction.data.status !==\r\n\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.declined)\r\n\t\t\t\t\t|| latestTransaction.data.effectiveDate >\r\n\t\t\t\t\t\tDateHelper.getSystemDateTime());\r\n\r\n\t\treturn result;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-transaction-cancel-reinstate-comments',\r\n\ttemplateUrl: './transaction-cancel-reinstate-comments.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for performing a reinstate on a\r\n * cancelled transaction.\r\n *\r\n * @export\r\n * @class TransactionCancelReinstateCommentsComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionCancelReinstateCommentsComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the active menu item data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic currentData: any;\r\n\r\n\t/**\r\n\t * Gets the noi cancelled message if this wizard can not complete.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tprivate readonly policyTermIsNotCancelledMessage: string =\r\n\t\t'This policy term is not currently in a cancelled state.';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method will lookup and initialize data for a status reasons\r\n\t * display.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = true;\r\n\t\tthis.currentData =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tif (await this.isWizardStepValidForDisplay() === false)\r\n\t\t{\r\n\t\t\tthis.clientMessage = this.policyTermIsNotCancelledMessage;\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst transactionEntityType: string =\r\n\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t+ this.currentData.productName;\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.group} `\r\n\t\t\t\t\t\t+ `eq '${transactionEntityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tthis.entityInstanceId =\r\n\t\t\tthis.entityInstance.id;\r\n\t\tthis.entityInstanceTypeGroup =\r\n\t\t\tthis.entityType.group;\r\n\t\tthis.insuranceEntityTypes =\r\n\t\t\tawait this.insuranceService.populateInsuranceEntityTypes();\r\n\t\tthis.policyTermEntityInstance =\r\n\t\t\tawait this.getEntityInstance(\r\n\t\t\t\tthis.currentData.statusEntityTypeGroup,\r\n\t\t\t\tthis.currentData.statusEntityId);\r\n\t\tthis.productEntityInstance =\r\n\t\t\tawait this.getProduct(\r\n\t\t\t\tthis.insuranceEntityTypes.productEntityType,\r\n\t\t\t\tthis.policyTermEntityInstance.data.productName);\r\n\t\tawait this.performPostInitActions();\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Allows additional actions following on init.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.termCancelReinstate;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tid: this.entityInstance.id,\r\n\t\t\t\ttypeGroup: this.entityType.group,\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.reinstateCancel.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will fire the cancel reinstate action and navigate to the policy\r\n\t * term.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic async reinstateCancel(): Promise\r\n\t{\r\n\t\tawait this.transactionCancelReinstate();\r\n\t\tawait this.navigateToPolicyTermDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction reinstate cancel process by executing the\r\n\t * TransactionCancelReinstate workflow action to update the associated\r\n\t * Policy term transaction entity data with the collected data from the\r\n\t * reinstate cancel Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic async transactionCancelReinstate(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.insuranceEntityTypes.policyTermEntityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\t\tconst queryString: string =\r\n\t\t\t`?parentId=${currentData.statusEntityId}`\r\n\t\t\t\t+ `&comments=${currentData.comments}`;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType,\r\n\t\t\t\t\t\t\tthis.policyTermEntityInstance,\r\n\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Processing reinstatement',\r\n\t\t\t\t'Reinstatement processed',\r\n\t\t\t\t`${displayName} reinstatement has been issued.`,\r\n\t\t\t\t`${displayName} reinstatement has not been issued.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\tthis.entityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tthis.currentData.statusEntityId);\r\n\r\n\t\treturn this.entityInstance.data.type ===\r\n\t\t\tInsuranceConstants.transactionTypes.cancellation\r\n\t\t\t&& this.entityInstance.data.status ===\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.issued;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy term dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCancelReinstateCommentsComponent\r\n\t */\r\n\tprivate async navigateToPolicyTermDashboard()\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.policy}/entities`,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t\t.currentData.data.statusEntityId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tBusinessLogicEntity\r\n} from '@shared/business-logic-entities/business-logic-entity';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIWizardStep\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-step-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-decline-reasons',\r\n\ttemplateUrl: './transaction-decline-reasons.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for the cancel transaction.\r\n *\r\n * @export\r\n * @class TransactionCancelReasonsComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionDeclineReasonsComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Declination is not allowed.';\r\n\r\n\t/**\r\n\t * Gets or sets true/false if the current policy term is allowing the\r\n\t * declination process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic allowedTransactionDecline: boolean;\r\n\r\n\t/**\r\n\t * Gets a value of true indicating if the user\r\n\t * can decline. False otherwise.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the value.\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic async userCanDecline(): Promise\r\n\t{\r\n\t\treturn this.insuranceService\r\n\t\t\t.getTransaction(this.entityInstance)\r\n\t\t\t.userCanDecline();\r\n\t}\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedTransactionDecline = await this.userCanDecline();\r\n\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.transactionDecline;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tconst selectedReasons: any =\r\n\t\t\tAnyHelper.isNull(currentData.data.selectedReasons)\r\n\t\t\t\t? []\r\n\t\t\t\t: currentData.data.selectedReasons;\r\n\r\n\t\tconst availableReasons: any[] =\r\n\t\t\tthis.getReasons(\r\n\t\t\t\tthis.productEntityInstance.data.reasons,\r\n\t\t\t\tInsuranceConstants.statusReasonTypes.rejection)\r\n\t\t\t\t.filter(reason => reason.isDeclinationReason);\r\n\r\n\t\tavailableReasons.forEach(\r\n\t\t\t(reason: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst cancelReasonType: string =\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\treason.cancelReasonType);\r\n\r\n\t\t\t\treason.detailedDescription = AnyHelper\r\n\t\t\t\t\t.isNullOrEmpty(cancelReasonType)\r\n\t\t\t\t\t? reason.description\r\n\t\t\t\t\t: `${cancelReasonType} - ${reason.description}`;\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons: availableReasons,\r\n\t\t\t\tselectedReasons: selectedReasons,\r\n\t\t\t\tstatusEntityId: this.entityInstanceId,\r\n\t\t\t\tstatusEntityTypeGroup: this.entityType.group,\r\n\t\t\t\tisCalculatedEffectiveDate: true\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.decline.bind(this));\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the transaction declination event and navigate\r\n\t * to the policy dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic async decline(): Promise\r\n\t{\r\n\t\tawait this.declineTransaction();\r\n\t\tawait this.refreshPolicyTermRules();\r\n\t\tawait this.navigateToPolicyDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Refreshes the policy term rules by saving it.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic async refreshPolicyTermRules(): Promise {\r\n\t\tconst policyTerm = this.entityService\r\n\t\t\t.getBusinessLogicEntity(\r\n\t\t\t\tawait this.getPolicyTerm());\r\n\r\n\t\tawait policyTerm.save();\r\n\t}\r\n\r\n\t/**\r\n\t * This will decline the transaction\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic declineTransaction()\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.entityType)\r\n\t\t\t\t.displayName;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.entityInstance.data.reasons = [];\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\tthis.entityType,\r\n\t\t\t\t\t\tthis.entityInstance,\r\n\t\t\t\t\t\tthis.getQueryString(currentData));\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Processing declination',\r\n\t\t\t\t'Declination processed',\r\n\t\t\t\t`${displayName} has been declined.`,\r\n\t\t\t\t`${displayName} has not been declined.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will validate if the selected cancel reasons has the same cancel\r\n\t * reason type.\r\n\t *\r\n\t * @async\r\n\t * @returns {boolean}\r\n\t * True if all the selected cancel reasons has the same cancel reason type,\r\n\t * otherwise will return false.\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic hasValidSelectedReasons(): boolean\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tif (currentData.data.selectedReasons.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst cancelReasons: any[] =\r\n\t\t\tcurrentData.data.selectedReasons;\r\n\r\n\t\tconst uniqueObject =\r\n\t\t\t[\r\n\t\t\t\t...new Set(cancelReasons.map((declineReason: any) =>\r\n\t\t\t\t\tdeclineReason.declinationReasonType))\r\n\t\t\t];\r\n\r\n\t\tconst result: boolean =\r\n\t\t\tuniqueObject.length === 1;\r\n\r\n\t\tconst activeWizardStep: IWizardStep =\r\n\t\t\tthis.context.source.activeWizardStep;\r\n\r\n\t\tactiveWizardStep.nextTooltipLabel =\r\n\t\t\tresult === false\r\n\t\t\t\t? 'You can only add multiple reasons of the same '\r\n\t\t\t\t\t+ 'decline reason type'\r\n\t\t\t\t: null;\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the quesry string.\r\n\t *\r\n\t * @param {any} currentData\r\n\t * @returns {string}\r\n\t * the query string.\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tpublic getQueryString(\r\n\t\tcurrentData: any): string\r\n\t{\r\n\t\tconst selectedReasons: string =\r\n\t\t\tObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\tcurrentData.selectedReasons,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\treturn AnyHelper.isNullOrEmpty(currentData.comments)\r\n\t\t\t? `?reasons=${selectedReasons}`\r\n\t\t\t: `?comments=${currentData.comments}`\r\n\t\t\t\t+ `&reasons=${selectedReasons}`\r\n\t\t\t\t+ '¬eType=Note';\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the policy dashboard using the\r\n\t * policy term id aquired from the transaction.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionDeclineReasonsComponent\r\n\t */\r\n\tprivate async navigateToPolicyDashboard()\r\n\t{\r\n\t\tconst policyTermInstance: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getPolicyTermByTransaction(\r\n\t\t\t\t\tthis.entityInstance.id,\r\n\t\t\t\t\tthis.entityInstance.entityType);\r\n\r\n\t\tconst policyTerm: BusinessLogicEntity =\r\n\t\t\tthis.entityService.getBusinessLogicEntity(policyTermInstance);\r\n\r\n\t\tconst policyTermType: IEntityType =\r\n\t\t\tawait policyTerm.getEntityTypeAsync();\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tpolicyTermType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tpolicyTerm.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tTransactionEndorseIssueSummaryComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-endorse-issue-summary/transaction-endorse-issue-summary.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIInsurancePaymentSummary\r\n} from '@insurance/interfaces/insurance-payment-summary.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/difference-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-endorse-issue-differences',\r\n\ttemplateUrl: './transaction-endorse-issue-differences.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for issuing an endorsement on\r\n * a policy transaction.\r\n *\r\n * @export\r\n * @class TransactionEndorseIssueDifferencesComponent\r\n */\r\nexport class TransactionEndorseIssueDifferencesComponent implements OnInit\r\n\r\n{\r\n\t/**\r\n\t * Creates a new instance of the transaction endorse issue differences\r\n\t * component.\r\n\t *\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used to check for the wizard final action being allowed.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition api service used in this component.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector references used to update the view when differences\r\n\t * are displayed and loaded.\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the existing transaction instance that is being endorsed.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic existingTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the pending endorse transaction instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic endorseTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition that is used for schema based display\r\n\t * definitions.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the difference definitions that will be displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {IDifferenceDefinition[]}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic differences: IDifferenceDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the comparison object friendly name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic readonly comparisonObjectName: string =\r\n\t\t'Policy';\r\n\r\n\t/**\r\n\t * Gets or sets the excluded difference properties. If sent as a partial\r\n\t * all instances that contain this will be removed otherwise exact\r\n\t * property location matches will be excluded.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic readonly excludedDifferenceProperties: string[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t// First level data.\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.id,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.createDate,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.changeDate,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.changedById,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.createdById,\r\n\r\n\t\t\t// Nested level data.\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ InsuranceConstants.commonProperties\r\n\t\t\t\t\t.effectiveDate,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ InsuranceConstants.commonProperties\r\n\t\t\t\t\t.transactionNumber,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ InsuranceConstants.commonProperties\r\n\t\t\t\t\t.basedOnTransactionNumber,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.type,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t.status,\r\n\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t+ AppConstants.nestedDataIdentifier\r\n\t\t\t\t+ InsuranceConstants.commonProperties\r\n\t\t\t\t\t.reasons,\r\n\r\n\t\t\t// Remove at all levels.\r\n\t\t\tInsuranceConstants.commonProperties\r\n\t\t\t\t.accounting,\r\n\t\t\tAppConstants.commonProperties\r\n\t\t\t\t.resourceIdentifier\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the blocking rule message if this wizard can not complete.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tprivate readonly blockingRuleMessage: string =\r\n\t\t'There are rule violations blocking an issue of this endorsement.';\r\n\r\n\t/**\r\n\t * Gets the no difference found message if this wizard can not\r\n\t * complete.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tprivate readonly noDifferenceFoundMessage: string =\r\n\t\t'There are no differences found which makes this endorsement invalid.';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This will set up the data for the differences display.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(false);\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tcurrentData.entityTypeGroup;\r\n\t\tthis.endorseTransactionInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(currentData.entityId);\r\n\r\n\t\tif (await this.isWizardStepValidForDisplay() === false)\r\n\t\t{\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Endorsement Issue is not allowed '\r\n\t\t\t\t+ 'from the current policy state.';\r\n\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst basedOnTransactionNumber: string =\r\n\t\t\tthis.endorseTransactionInstance.data.basedOnTransactionNumber;\r\n\t\tthis.existingTransactionInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${InsuranceConstants.commonProperties.transactionNumber} `\r\n\t\t\t\t\t\t+ `eq '${basedOnTransactionNumber}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t+ AppConstants.sortDirections.descending);\r\n\r\n\t\tif (AnyHelper.isNull(this.existingTransactionInstance))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'Unable to find the original transaction with a transaction '\r\n\t\t\t\t\t+ `number of '${basedOnTransactionNumber}'.`);\r\n\t\t}\r\n\r\n\t\tawait this.setPolicyNumber();\r\n\r\n\t\tconst isBlocked: boolean =\r\n\t\t\tawait this.ruleService.isActionBlocked(\r\n\t\t\t\tcurrentData.entityId,\r\n\t\t\t\tTransactionEndorseIssueSummaryComponent.workflowActionName);\r\n\t\tif (isBlocked === true)\r\n\t\t{\r\n\t\t\tthis.clientMessage = this.blockingRuleMessage;\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.setDifferenceData();\r\n\t\tif (this.differences.length === 0)\r\n\t\t{\r\n\t\t\tthis.clientMessage = this.noDifferenceFoundMessage;\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.setEntityDefinition();\r\n\r\n\t\t// Generate the draft payment plan for the next step here so\r\n\t\t// the data is readily available to be shared between components.\r\n\t\tconst actionResponse: any =\r\n\t\t\tawait this.insuranceService.generateDraftPaymentPlanSchedule(\r\n\t\t\t\tcurrentData.entityId,\r\n\t\t\t\tcurrentData.entityTypeGroup,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.endorseTransactionInstance.data.effectiveDate,\r\n\t\t\t\ttrue);\r\n\t\tconst generatedPayments: IInsurancePaymentSummary[] =\r\n\t\t\tawait this.insuranceService.mapPaymentSchedulePaymentSummary(\r\n\t\t\t\tcurrentData.entityId,\r\n\t\t\t\tcurrentData.entityTypeGroup,\r\n\t\t\t\tactionResponse?.body?.value.payments);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tbasedOnTransactionNumber: basedOnTransactionNumber,\r\n\t\t\t\tbasedOnEntityId: this.existingTransactionInstance.id,\r\n\t\t\t\tgeneratedPayments: generatedPayments\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\t\tthis.context.source.validStepChanged(true);\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Detects changes in the component view.\r\n\t *\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic detectChanges(): void\r\n\t{\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the differences property value for use in the differences display.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic async setDifferenceData(): Promise\r\n\t{\r\n\t\t// Flip the order of transaction data.\r\n\t\tthis.endorseTransactionInstance.data =\r\n\t\t\tthis.orderDataValues(\r\n\t\t\t\tthis.endorseTransactionInstance.data);\r\n\t\tthis.existingTransactionInstance.data =\r\n\t\t\tthis.orderDataValues(\r\n\t\t\t\tthis.existingTransactionInstance.data);\r\n\r\n\t\t// Ensure differences exist.\r\n\t\tthis.differences =\r\n\t\t\tObjectHelper.getBusinessLogicDifferences(\r\n\t\t\t\tthis.comparisonObjectName,\r\n\t\t\t\tthis.existingTransactionInstance,\r\n\t\t\t\tthis.endorseTransactionInstance,\r\n\t\t\t\tthis.excludedDifferenceProperties);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and sets the entity definition property that is sent to the\r\n\t * differences component.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic async setEntityDefinition(): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${this.existingTransactionInstance.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst entityDefinition: IEntityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.typeId} eq `\r\n\t\t\t\t\t\t+ `${entityType.id}`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.versionId} desc`);\r\n\t\tthis.entityDefinition =\r\n\t\t\tnew EntityDefinition(entityDefinition);\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers policy data related to the sent policy term and sets the policy\r\n\t * number as context data in the wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic async setPolicyNumber(): Promise\r\n\t{\r\n\t\tconst policyTermParents: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.existingTransactionInstance.id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\t\tconst policyParents: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tpolicyTermParents[0].id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies);\r\n\r\n\t\tconst policyNumber: string =\r\n\t\t\tpolicyParents[0].data.policyNumber;\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tpolicyNumber: policyNumber\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.updateWizardLabel(\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data.policyNumber,\r\n\t\t\ttrue);\r\n\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\treturn this.endorseTransactionInstance.data.status ===\r\n\t\t\tInsuranceConstants.transactionStatusTypes.pending\r\n\t\t\t&& this.endorseTransactionInstance.data.type\r\n\t\t\t\t=== InsuranceConstants.transactionTypes.endorsement;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a data object found in a transaction entity instance, this will\r\n\t * ensure that the data differences are displayed with assets prior to\r\n\t * interests.\r\n\t *\r\n\t * @param {any} data\r\n\t * The transaction data object that will be displayed in the differences\r\n\t * component.\r\n\t * @returns {any}\r\n\t * A set of business logic ordered data values.\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\tprivate orderDataValues(\r\n\t\tdata: any): any\r\n\t{\r\n\t\tconst orderedData: any = {...data};\r\n\r\n\t\tconst assets: any = orderedData.assets;\r\n\t\tconst interests: any = orderedData.interests;\r\n\r\n\t\tdelete orderedData.assets;\r\n\t\tdelete orderedData.interests;\r\n\r\n\t\torderedData.assets = assets;\r\n\t\torderedData.interests = interests;\r\n\r\n\t\treturn orderedData;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIInsuranceEntityTypes\r\n} from '@insurance/interfaces/insurance-entity-types.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-endorse-issue-summary',\r\n\ttemplateUrl: './transaction-endorse-issue-summary.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for issuing an endorsement on\r\n * a policy transaction.\r\n *\r\n * @export\r\n * @class TransactionEndorseIssueSummaryComponent\r\n */\r\nexport class TransactionEndorseIssueSummaryComponent implements OnInit\r\n{\r\n\t/**\r\n\t * Creates a new instance of the transaction endorse issue summary\r\n\t * component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insruance service used in this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference used to update the view when differences\r\n\t * are displayed and loaded.\r\n\t * @memberof TransactionEndorseIssueDifferencesComponent\r\n\t */\r\n\t public constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed against the current\r\n\t * wizard step entity instance.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic static readonly workflowActionName: string =\r\n\t\t'TransactionEndorseIssue';\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the existing transaction instance that is being endorsed.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic existingTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the pending endorse transaction instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic endorseTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the pending endorse transaction policy term parent instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic policyTermInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance entity types.\r\n\t *\r\n\t * @type {IInsuranceEntityTypes}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic insuranceEntityTypes: IInsuranceEntityTypes;\r\n\r\n\t/**\r\n\t * Gets the dashboard that will be displayed in this wizard step.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic readonly dashboardDisplayComponentInstanceName: string =\r\n\t\t'TransactionEndorseSummaryDashboard';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This will set up the summary display and set the next action.\r\n\t *\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = true;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\t\tthis.insuranceEntityTypes =\r\n\t\t\tawait this.insuranceService.populateInsuranceEntityTypes();\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tcurrentData.entityTypeGroup;\r\n\t\tthis.endorseTransactionInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(currentData.entityId);\r\n\t\tthis.existingTransactionInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(currentData.basedOnEntityId);\r\n\r\n\t\tconst endorseAccounting: any =\r\n\t\t\tthis.endorseTransactionInstance.data.accounting;\r\n\r\n\t\tconst policyTermParents: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.existingTransactionInstance.id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group);\r\n\r\n\t\tthis.policyTermInstance = policyTermParents[0];\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group;\r\n\t\tconst policyTermTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.policyTermInstance.id,\r\n\t\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `\"${InsuranceConstants.transactionStatusTypes.issued}\"`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tcurrentData.entityTypeGroup);\r\n\t\tconst policyTermLedgers: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.policyTermInstance.id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tthis.insuranceEntityTypes.ledgerEntityType.group);\r\n\r\n\t\tconst totalDirectWrittenPremium: number =\r\n\t\t\tpolicyTermTransactions.reduce(\r\n\t\t\t\t(accumulator: number,\r\n\t\t\t\t\tpolicyTermTransaction: IEntityInstance) =>\r\n\t\t\t\t\taccumulator +\r\n\t\t\t\t\t\tpolicyTermTransaction.data\r\n\t\t\t\t\t\t\t.accounting.directWrittenPremium,\r\n\t\t\t\t0);\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\ttransactionEffectiveDate:\r\n\t\t\t\t\tthis.endorseTransactionInstance.data.effectiveDate,\r\n\t\t\t\tpremiumChange:\r\n\t\t\t\t\tendorseAccounting.directWrittenPremium,\r\n\t\t\t\ttotalPremium:\r\n\t\t\t\t\ttotalDirectWrittenPremium\r\n\t\t\t\t\t\t+ endorseAccounting.directWrittenPremium,\r\n\t\t\t\tremainingBalance:\r\n\t\t\t\t\tpolicyTermLedgers[0].data.balance\r\n\t\t\t\t\t\t+ endorseAccounting.directWrittenPremium\r\n\t\t\t\t\t\t+ endorseAccounting.directWrittenFees\r\n\t\t\t\t\t\t+ endorseAccounting.directWrittenTaxes\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.issueEndorsement.bind(this));\r\n\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\t\tthis.context.source.validStepChanged(true);\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Issues a selected endorsement.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic async issueEndorsement(): Promise\r\n\t{\r\n\t\tawait this.transactionEndorseIssue();\r\n\t\tthis.navigateToPolicyTermDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Fires a change detection cycle allowing the form to broadcast changes\r\n\t * to the listening component.\r\n\t *\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic fireChanges(): void\r\n\t{\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the fireChanges on a set time out\r\n\t * to avoid any dashboard locked view on not detecting\r\n\t * the loading false state upon changes.\r\n\t *\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tpublic customDashboardChanges()\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.fireChanges();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.oneSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction endorse process by executing the PolicyEndorse\r\n\t * workflow action to update the associated Policy term transaction\r\n\t * entity data with the collected data from the Endorse Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tprivate async transactionEndorseIssue(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${this.existingTransactionInstance\r\n\t\t\t\t\t\t\t.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(entityType)\r\n\t\t\t\t.displayName;\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tentityType.group;\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.executeAction(\r\n\t\t\t\t\t\t\t\tthis.endorseTransactionInstance.id,\r\n\t\t\t\t\t\t\t\tTransactionEndorseIssueSummaryComponent\r\n\t\t\t\t\t\t\t\t\t.workflowActionName,\r\n\t\t\t\t\t\t\t\tthis.endorseTransactionInstance);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Issuing endorsement',\r\n\t\t\t\t'Endorsement issued',\r\n\t\t\t\t`${displayName} endorsement has been issued.`,\r\n\t\t\t\t`${displayName} endorsement has not been issued.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the parent policy term dashboard.\r\n\t *\r\n\t * @memberof TransactionEndorseIssueSummaryComponent\r\n\t */\r\n\tprivate navigateToPolicyTermDashboard(): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.policy}/entities`,\r\n\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.policyTermInstance.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-endorse-reasons',\r\n\ttemplateUrl: './transaction-endorse-reasons.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for endorsing a policy transaction.\r\n *\r\n * @export\r\n * @class TransactionEndorseReasonsComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionEndorseReasonsComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets the newly created pending endorsement transaction id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic createdPendingEndorsementTransactionId: number;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.transactionEndorse;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tavailableReasons:\r\n\t\t\t\t\tthis.getReasons(\r\n\t\t\t\t\t\tthis.productEntityInstance.data.reasons,\r\n\t\t\t\t\t\tInsuranceConstants.statusReasonTypes.endorsement),\r\n\t\t\t\tselectedReasons: [],\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.endorse.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the endorse event and navigate to the pending endorse\r\n\t * transaction.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic async endorse(): Promise\r\n\t{\r\n\t\tawait this.transactionEndorse();\r\n\t\tawait this.navigateToPendingEndorseTransaction();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction endorse process by executing the PolicyEndorse\r\n\t * workflow action to update the associated Policy term transaction\r\n\t * entity data with the collected data from the Endorse Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic async transactionEndorse(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.entityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tconst queryString: string =\r\n\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t{\r\n\t\t\t\t\tstatusEffectiveDate: currentData.statusEffectiveDate,\r\n\t\t\t\t\tparentId: currentData.statusEntityId,\r\n\t\t\t\t\tcomments: currentData.comments,\r\n\t\t\t\t\treasons: ObjectArrayHelper.commaSeparatedPropertyValues(\r\n\t\t\t\t\t\tcurrentData.selectedReasons,\r\n\t\t\t\t\t\tAppConstants.commonProperties.id)\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst response: IActionResponse =\r\n\t\t\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\t\t\tthis.entityType,\r\n\t\t\t\t\t\t\t\tthis.entityInstance,\r\n\t\t\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\t\tthis.createdPendingEndorsementTransactionId =\r\n\t\t\t\t\t\t\t(response).body.value;\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Creating endorsement',\r\n\t\t\t\t'Endorsement created',\r\n\t\t\t\t`${displayName} endorsement has been created.`,\r\n\t\t\t\t`${displayName} endorsement has not been created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the new endorse transaction using the transaction\r\n\t * id provided.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tprivate async navigateToPendingEndorseTransaction()\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tthis.entityInstanceTypeGroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.createdPendingEndorsementTransactionId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{clientMessage}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tTransactionStatusEffectiveDateDirective\r\n} from '@insurance/directives/transaction-status-effective-date.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n@Component({\r\n\tselector: 'transaction-endorse-status-effective-date',\r\n\ttemplateUrl: './transaction-endorse-status-effective-date.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-endorse-status-effective-date.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a wizard step for setting the effective date\r\n * of a policy transaction status change.\r\n *\r\n * @export\r\n * @class TransactionEndorseStatusEffectiveDateComponent\r\n * @extends {TransactionStatusEffectiveDateDirective}\r\n */\r\nexport class TransactionEndorseStatusEffectiveDateComponent\r\n\textends TransactionStatusEffectiveDateDirective\r\n{\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionEndorseStatusEffectiveDateComponent\r\n\t */\r\n\tpublic invalidWizardStepMessage: string =\r\n\t\t'Endorse is not allowed on a non-active policy term, '\r\n\t\t\t+ 'when the last transaction is an issued cancellation, or '\r\n\t\t\t+ 'when pending transactions exist in this policy term.';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionEndorseStatusEffectiveDateComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.context.source.addToNext(\r\n\t\t\tthis.matchEffectiveDateToTransaction.bind(this));\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionEndorseStatusEffectiveDateComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyByPolicyTermId(\r\n\t\t\t\tthis.policyTerm.id);\r\n\r\n\t\tif (AnyHelper.isNull(policy))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst latestTransaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tthis.policyTerm.id);\r\n\r\n\t\tconst termStatusNotAllowed: boolean =\r\n\t\t\tthis.policyTerm.data.status !==\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t&& (this.policyTerm.data.status !==\r\n\t\t\t\t\tInsuranceConstants.policyTermStatusTypes.pending\r\n\t\t\t\t\t|| (this.policyTerm.data.status ===\r\n\t\t\t\t\t\tInsuranceConstants.policyTermStatusTypes.pending\r\n\t\t\t\t\t\t\t&& this.policyTerm.data.renewalTerm === 0\r\n\t\t\t\t\t\t\t&& latestTransaction.data.status !==\r\n\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t.issued));\r\n\t\tconst result: boolean =\r\n\t\t\t!(termStatusNotAllowed\r\n\t\t\t\t|| latestTransaction.data.type ===\r\n\t\t\t\t\tInsuranceConstants.transactionTypes.cancellation\r\n\t\t\t\t|| (latestTransaction.data.status !==\r\n\t\t\t\t\tInsuranceConstants.transactionStatusTypes.issued\r\n\t\t\t\t\t&& latestTransaction.data.status !==\r\n\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.declined));\r\n\r\n\t\tthis.clientMessage =\r\n\t\t\tresult === true\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.invalidWizardStepMessage;\r\n\r\n\t\treturn result;\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{clientMessage}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-rescind-cancel',\r\n\ttemplateUrl: './transaction-rescind-cancel.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to rescind a cancelled transaction.\r\n *\r\n * @export\r\n * @class TransactionRescindCancelComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionRescindCancelComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionRescindCancelComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Rescind cancellation is not allowed on a non-active policy term, '\r\n\t\t\t+ 'a policy term that is not the most recent, or when '\r\n\t\t\t+ 'the latest is not a cancellation transaction.';\r\n\r\n\t/**\r\n\t * Gets or sets true/false if the current policy term is allowing the\r\n\t * rescind cancellation process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic allowedRescindCancellation: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the policy term transaction entity instance associated to\r\n\t * the current policy term data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic policyTermTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @memberof TransactionRescindCancelComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedRescindCancellation =\r\n\t\t\tawait this.isWizardStepValidForDisplay();\r\n\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.termRescindCancel;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.rescindCancel.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the transaction rescind cancel event and navigate to the\r\n\t * policy term dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionRescindCancelComponent\r\n\t */\r\n\tpublic async rescindCancel(): Promise\r\n\t{\r\n\t\tawait this.transactionRescindCancel();\r\n\t\tthis.navigateToPolicyTermDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction rescind cancellation process by executing the\r\n\t * transactionRescindCancel workflow action to update the associated Policy\r\n\t * entity data with the collected data from the Transaction Rescind Cancel\r\n\t * Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionRescindCancelComponent\r\n\t */\r\n\tpublic async transactionRescindCancel(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.insuranceEntityTypes.policyTermEntityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst queryString: string =\r\n\t\t\t\t\t\t`?comments=${currentData.comments}`;\r\n\r\n\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType,\r\n\t\t\t\t\t\tthis.policyTermEntityInstance,\r\n\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Rescinding cancellation',\r\n\t\t\t\t'Cancellation rescinded',\r\n\t\t\t\t`Cancellation has been rescinded for ${displayName}.`,\r\n\t\t\t\t`Cancellation has not been rescinded for ${displayName}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionCancelReasonsComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyByPolicyTermId(\r\n\t\t\t\tthis.policyTermEntityInstance.id);\r\n\r\n\t\tif (AnyHelper.isNull(policy))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst activePolicyTerm: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getActivePolicyTerm(\r\n\t\t\t\tpolicy.id);\r\n\r\n\t\tconst policyTermTransactionTypeGroup: string =\r\n\t\t\t'PolicyTermTransaction.'\r\n\t\t\t\t+ `${this.policyTermEntityInstance.data.productName}`;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group;\r\n\r\n\t\tconst latestTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.issued}' ` +\r\n\t\t\t\t`and ${AppConstants.commonProperties.type} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionTypes.cancellation}'`,\r\n\t\t\t\t`${InsuranceConstants.commonProperties.effectiveDate} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}, `\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tpolicyTermTransactionTypeGroup);\r\n\r\n\t\tif (latestTransactions.length > 0)\r\n\t\t{\r\n\t\t\tthis.policyTermTransactionInstance = latestTransactions[0];\r\n\t\t}\r\n\r\n\t\tconst result: boolean =\r\n\t\t\t!(this.policyTermEntityInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t\t|| activePolicyTerm.data.renewalTerm >\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.data.renewalTerm\r\n\t\t\t\t\t|| latestTransactions.length === 0);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the parent policy term dashboard.\r\n\t *\r\n\t * @memberof TransactionRescindCancelComponent\r\n\t */\r\n\tprivate navigateToPolicyTermDashboard(): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.policy}/entities`,\r\n\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tcurrentData.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
\r\n\t
\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{clientMessage}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-rescind-endorse',\r\n\ttemplateUrl: './transaction-rescind-endorse.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wizard step to rescind an endorsed transaction.\r\n *\r\n * @export\r\n * @class TransactionRescindEndorseComponent\r\n * @extends {StatusReasonsDirective}\r\n */\r\nexport class TransactionRescindEndorseComponent\r\n\textends StatusReasonsDirective\r\n{\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Rescind endorsement is not allowed on a non-active policy term, '\r\n\t\t\t+ 'a policy term that is not the most recent, or when '\r\n\t\t\t+ 'the latest is not a endorsement transaction.';\r\n\r\n\t/**\r\n\t * Gets or sets true/false if the current policy term is allowing the\r\n\t * rescind endorsement process.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic allowedRescindEndorsement: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the policy term transaction entity instance associated to\r\n\t * the current policy term data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionEndorseReasonsComponent\r\n\t */\r\n\tpublic policyTermTransactionInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Allows additional actions following the shared status reasons directive\r\n\t * on init.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.allowedRescindEndorsement =\r\n\t\t\tawait this.isWizardStepValidForDisplay();\r\n\r\n\t\tthis.workflowActionName =\r\n\t\t\tInsuranceConstants.workflowActions.termRescindEndorse;\r\n\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t{\r\n\t\t\t\tcomments: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.context.source.addToNext(this.rescindEndorse.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * This will send the transaction rescind endorse event and navigate to the\r\n\t * policy term dashboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic async rescindEndorse(): Promise\r\n\t{\r\n\t\tawait this.transactionRescindEndorse();\r\n\t\tthis.navigateToPolicyTermDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the transaction rescind endorsement process by executing the\r\n\t * transactionRescindEndorse workflow action to update the associated Policy\r\n\t * entity data with the collected data from the Transaction Rescind Endorse\r\n\t * Wizard.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic async transactionRescindEndorse(): Promise\r\n\t{\r\n\t\tconst displayName: string =\r\n\t\t\tnew EntityType(this.insuranceEntityTypes.policyTermEntityType)\r\n\t\t\t\t.displayName;\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.context.source.wizardStepLoading = true;\r\n\t\t\t});\r\n\r\n\t\treturn this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, _reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst queryString: string =\r\n\t\t\t\t\t\t`?comments=${currentData.comments}`;\r\n\r\n\t\t\t\t\tawait this.executeWorkflowAction(\r\n\t\t\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType,\r\n\t\t\t\t\t\tthis.policyTermEntityInstance,\r\n\t\t\t\t\t\tqueryString);\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}),\r\n\t\t\t\t'Rescinding endorsement',\r\n\t\t\t\t'Endorsement rescinded',\r\n\t\t\t\t`Endorsement has been rescinded for ${displayName}.`,\r\n\t\t\t\t`Endorsement has not been rescinded for ${displayName}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getPolicyByPolicyTermId(\r\n\t\t\t\tthis.policyTermEntityInstance.id);\r\n\r\n\t\tif (AnyHelper.isNull(policy))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst activePolicyTerm: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getActivePolicyTerm(\r\n\t\t\t\tpolicy.id);\r\n\r\n\t\tconst policyTermTransactionTypeGroup: string =\r\n\t\t\t'PolicyTermTransaction.'\r\n\t\t\t\t+ `${this.policyTermEntityInstance.data.productName}`;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group;\r\n\r\n\t\tconst latestTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.policyTermEntityInstance.id,\r\n\t\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.issued}' `\r\n\t\t\t\t\t+ `and ${AppConstants.commonProperties.type} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionTypes.endorsement}'`,\r\n\t\t\t\t`${InsuranceConstants.commonProperties.effectiveDate} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}, `\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tpolicyTermTransactionTypeGroup);\r\n\r\n\t\tif (latestTransactions.length > 0)\r\n\t\t{\r\n\t\t\tthis.policyTermTransactionInstance = latestTransactions[0];\r\n\t\t}\r\n\r\n\t\tconst result: boolean =\r\n\t\t\t!(this.policyTermEntityInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t\t|| activePolicyTerm.data.renewalTerm >\r\n\t\t\t\t\t\tthis.policyTermEntityInstance.data.renewalTerm\r\n\t\t\t\t\t|| latestTransactions.length === 0);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * This will navigate to the parent policy term dashboard.\r\n\t *\r\n\t * @memberof TransactionRescindEndorseComponent\r\n\t */\r\n\tprivate navigateToPolicyTermDashboard(): void\r\n\t{\r\n\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tautomateVerify: false\r\n\t\t\t});\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.policy}/entities`,\r\n\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tcurrentData.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * for insurance based business logic.\r\n *\r\n * @export\r\n * @class InsuranceConstants\r\n */\r\nexport class InsuranceConstants\r\n{\r\n\t/**\r\n\t * Gets or sets the policy term transaction prefix.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly policyTermTransactionPrefix: string =\r\n\t\t'PolicyTermTransaction.';\r\n\r\n\t/**\r\n\t * Gets or sets the available accounting types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly accountingTypes:\r\n\t{\r\n\t\tfee: string;\r\n\t\tpremium: string;\r\n\t\ttax: string;\r\n\t} = {\r\n\t\t\tfee: 'Fee',\r\n\t\t\tpremium: 'Premium',\r\n\t\t\ttax: 'Tax'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available commission adjustment reason types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly commissionAdjustmentReasonTypes:\r\n\t{\r\n\t\tcorrection: string;\r\n\t\trecoupment: string;\r\n\t\tother: string;\r\n\t} = {\r\n\t\t\tcorrection: 'Correction',\r\n\t\t\trecoupment: 'Recoupment',\r\n\t\t\tother: 'Other'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available commission types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly commissionTypes:\r\n\t{\r\n\t\tcommission: string;\r\n\t\tpayment: string;\r\n\t} = {\r\n\t\t\tcommission: 'Commission',\r\n\t\t\tpayment: 'Payment'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available commission adjustment types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly commissionAdjustmentTypes:\r\n\t{\r\n\t\tmanual: string;\r\n\t\trollup: string;\r\n\t\twriteOff: string;\r\n\t} = {\r\n\t\t\tmanual: 'Manual',\r\n\t\t\trollup: 'Rollup',\r\n\t\t\twriteOff: 'WriteOff'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available commission source types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly commissionSourceTypes:\r\n\t{\r\n\t\tdirect: string;\r\n\t\tsub: string;\r\n\t} = {\r\n\t\t\tdirect: 'Direct',\r\n\t\t\tsub: 'Sub'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of common properties found in the insurance module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly commonProperties:\r\n\t{\r\n\t\taccounting: string;\r\n\t\tbasedOnTransactionNumber: string;\r\n\t\teffectiveDate: string;\r\n\t\tpolicyNumber: string;\r\n\t\treasons: string;\r\n\t\ttransactionNumber: string;\r\n\t} = {\r\n\t\t\taccounting: 'accounting',\r\n\t\t\tbasedOnTransactionNumber: 'basedOnTransactionNumber',\r\n\t\t\teffectiveDate: 'effectiveDate',\r\n\t\t\tpolicyNumber: 'policyNumber',\r\n\t\t\treasons: 'reasons',\r\n\t\t\ttransactionNumber: 'transactionNumber'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the insurance entity type groups available in this module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly insuranceEntityTypeGroups:\r\n\t{\r\n\t\taccounts: string\r\n\t\tagencies: string;\r\n\t\tbackOfficeVendors: string;\r\n\t\tclaimsVendors: string;\r\n\t\tcommissionDisbursements: string;\r\n\t\tcommissionsSchedules: string;\r\n\t\tholdingCompanies: string;\r\n\t\tindependentAdjustingCompanies: string;\r\n\t\tinsuranceCompanies: string;\r\n\t\tledger: string;\r\n\t\tledgerTransaction: string;\r\n\t\tledgerTransactionWildCard: string;\r\n\t\tmanagingGeneralAgencies: string;\r\n\t\tpolicies: string;\r\n\t\tpolicyTerms: string;\r\n\t\tpolicyTermTransactionWildcard: string;\r\n\t\tproducts: string;\r\n\t\tthirdPartyAdministrators: string;\r\n\t\tusers: string;\r\n\t} =\t{\r\n\t\t\taccounts: 'Accounts',\r\n\t\t\tagencies: 'Organization.Agencies',\r\n\t\t\tbackOfficeVendors: 'Organization.BackOfficeVendors',\r\n\t\t\tclaimsVendors: 'Organization.ClaimsVendors',\r\n\t\t\tcommissionDisbursements: 'Commission.Disbursements',\r\n\t\t\tcommissionsSchedules: 'CommissionsSchedules',\r\n\t\t\tholdingCompanies: 'Organization.HoldingCompanies',\r\n\t\t\tindependentAdjustingCompanies:\r\n\t\t\t\t'Organization.IndependentAdjustingCompanies',\r\n\t\t\tinsuranceCompanies: 'Organization.InsuranceCompanies',\r\n\t\t\tledger: 'Ledgers',\r\n\t\t\tledgerTransaction: 'LedgerTransactions',\r\n\t\t\tledgerTransactionWildCard: 'LedgerTransaction',\r\n\t\t\tmanagingGeneralAgencies: 'Organization.ManagingGeneralAgencies',\r\n\t\t\tpolicies: 'Policies',\r\n\t\t\tpolicyTerms: 'PolicyTerms',\r\n\t\t\tpolicyTermTransactionWildcard: 'PolicyTermTransaction.*',\r\n\t\t\tproducts: 'Products',\r\n\t\t\tthirdPartyAdministrators: 'Organization.ThirdPartyAdministrators',\r\n\t\t\tusers: 'Users'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance entity types available in this module.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly insuranceEntityTypes:\r\n\t{\r\n\t\taccount: string;\r\n\t\tagency: string;\r\n\t\tclaimsVendor: string;\r\n\t\tcommissionDisbursement: string;\r\n\t\tindependentAdjustingCompany: string;\r\n\t\tinsuranceCompany: string;\r\n\t\tpolicy: string;\r\n\t\tpolicyTerm: string;\r\n\t\tproduct: string;\r\n\t\tthirdPartyAdministrator: string;\r\n\t\tuser: string;\r\n\t} =\t{\r\n\t\t\taccount: 'Account',\r\n\t\t\tagency: 'Organization.Agency',\r\n\t\t\tclaimsVendor: 'Organization.ClaimsVendor',\r\n\t\t\tcommissionDisbursement: 'Commission.Disbursement',\r\n\t\t\tindependentAdjustingCompany:\r\n\t\t\t\t'Organization.IndependentAdjustingCompany',\r\n\t\t\tinsuranceCompany: 'Organization.InsuranceCompany',\r\n\t\t\tpolicy: 'Policy',\r\n\t\t\tpolicyTerm: 'PolicyTerm',\r\n\t\t\tproduct: 'Product',\r\n\t\t\tthirdPartyAdministrator: 'Organization.ThirdPartyAdministrator',\r\n\t\t\tuser: 'User'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available insurance specific layout types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly layoutTypes:\r\n\t{\r\n\t\tcancelSummary: string;\r\n\t} = {\r\n\t\t\tcancelSummary: 'CancelSummary'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available ledger transaction categories.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly ledgerTransactionCategories:\r\n\t{\r\n\t\ttransfer: string;\r\n\t} = {\r\n\t\t\ttransfer: 'Transfer'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available ledger transaction adjustment types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly ledgerTransactionAdjustmentTypes:\r\n\t{\r\n\t\trefund: string;\r\n\t\treversal: string;\r\n\t\twriteOff: string;\r\n\t} = {\r\n\t\t\trefund: 'Refund',\r\n\t\t\treversal: 'Reversal',\r\n\t\t\twriteOff: 'WriteOff'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available ledger transaction types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly ledgerTransactionTypes:\r\n\t{\r\n\t\tfee: string;\r\n\t\tpayment: string;\r\n\t\tpremium: string;\r\n\t\ttax: string;\r\n\t} = {\r\n\t\t\tfee: 'Fee',\r\n\t\t\tpayment: 'Payment',\r\n\t\t\tpremium: 'Premium',\r\n\t\t\ttax: 'Tax'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available policy status types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly policyStatusTypes:\r\n\t{\r\n\t\tactive: string;\r\n\t\tinactive: string;\r\n\t\tpending: string;\r\n\t} = {\r\n\t\t\tactive: 'Active',\r\n\t\t\tinactive: 'Inactive',\r\n\t\t\tpending: 'Pending'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available transaction status types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly policyTermStatusTypes:\r\n\t{\r\n\t\tactive: string;\r\n\t\tcancelled: string;\r\n\t\tpending: string;\r\n\t} = {\r\n\t\t\tactive: 'Active',\r\n\t\t\tcancelled: 'Cancelled',\r\n\t\t\tpending: 'Pending'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the product setting authorities.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly productSettingAuthorities:\r\n\t{\r\n\t\tactive: string;\r\n\t\tinactive: string;\r\n\t\tserviceExisting: string;\r\n\t} = {\r\n\t\t\tactive: 'Active',\r\n\t\t\tinactive: 'Inactive',\r\n\t\t\tserviceExisting: 'Service Existing'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance service provider types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly serviceProviderTypes:\r\n\t{\r\n\t\tagency: string;\r\n\t\tproducer: string;\r\n\t} = {\r\n\t\t\tagency: 'Agency',\r\n\t\t\tproducer: 'Producer'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance service provider subtypes.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly serviceProviderSubtypes:\r\n\t{\r\n\t\treinsuranceIntermediary: string;\r\n\t\tretail: string;\r\n\t\tsurplusLines: string;\r\n\t} = {\r\n\t\t\treinsuranceIntermediary: 'Reinsurance Intermediary',\r\n\t\t\tretail: 'Retail',\r\n\t\t\tsurplusLines: 'Surplus Lines'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance service provider entity type groups.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly serviceProviderEntityTypeGroups:\r\n\t{\r\n\t\tagency: string;\r\n\t\tproducer: string;\r\n\t} = {\r\n\t\t\tagency: 'Organization.Agencies',\r\n\t\t\tproducer: 'Users'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the set of insurance service provider action names.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly serviceProviderActionNames:\r\n\t{\r\n\t\tadd: string;\r\n\t\tremove: string;\r\n\t} = {\r\n\t\t\tadd: 'Add',\r\n\t\t\tremove: 'Remove'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available product status reason types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly statusReasonTypes:\r\n\t{\r\n\t\tendorsement: string;\r\n\t\trejection: string;\r\n\t} = {\r\n\t\t\tendorsement: 'Endorsement',\r\n\t\t\trejection: 'Rejection',\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available cancel reason types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly cancelReasonTypes:\r\n\t{\r\n\t\tunderwriting: string;\r\n\t\tnonPayment: string;\r\n\t\tinsuredRequest: string;\r\n\t} = {\r\n\t\t\tunderwriting: 'Underwriting',\r\n\t\t\tnonPayment: 'NonPayment',\r\n\t\t\tinsuredRequest: 'InsuredRequest'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available transaction status types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly transactionStatusTypes:\r\n\t{\r\n\t\tapplication: string;\r\n\t\tarchived: string;\r\n\t\tbound: string;\r\n\t\tdeclined: string;\r\n\t\tissued: string;\r\n\t\tobsolete: string;\r\n\t\tpending: string;\r\n\t\tquote: string;\r\n\t\tsubmitted: string;\r\n\t} = {\r\n\t\t\tapplication: 'Application',\r\n\t\t\tarchived: 'Archived',\r\n\t\t\tbound: 'Bound',\r\n\t\t\tdeclined: 'Declined',\r\n\t\t\tissued: 'Issued',\r\n\t\t\tobsolete: 'Obsolete',\r\n\t\t\tpending: 'Pending',\r\n\t\t\tquote: 'Quote',\r\n\t\t\tsubmitted: 'Submitted'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available transaction types.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly transactionTypes:\r\n\t{\r\n\t\tnewBusiness: string;\r\n\t\tendorsement: string;\r\n\t\tcancellation: string;\r\n\t\trenewal: string;\r\n\t\treinstatement: string;\r\n\t} = {\r\n\t\t\tnewBusiness: 'NewBusiness',\r\n\t\t\tendorsement: 'Endorsement',\r\n\t\t\tcancellation: 'Cancellation',\r\n\t\t\trenewal: 'Renewal',\r\n\t\t\treinstatement: 'Reinstatement'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the available insurance specific workflow actions.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly workflowActions:\r\n\t{\r\n\t\tpolicyNonRenew: string;\r\n\t\ttransactionEndorse: string;\r\n\t\ttermCancelReinstate: string;\r\n\t\ttermRescindCancel: string;\r\n\t\ttermRescindEndorse: string;\r\n\t\ttransactionDecline: string;\r\n\t} = {\r\n\t\t\tpolicyNonRenew: 'PolicyNonRenew',\r\n\t\t\ttransactionEndorse: 'TransactionEndorse',\r\n\t\t\ttermCancelReinstate: 'TermCancelReinstate',\r\n\t\t\ttermRescindCancel: 'TermRescindCancel',\r\n\t\t\ttermRescindEndorse: 'TermRescindEndorse',\r\n\t\t\ttransactionDecline: 'TransactionDecline'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the declinable transaction types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly declinableTransactionTypes: string[] =\r\n\t\t[\r\n\t\t\tthis.transactionTypes.endorsement,\r\n\t\t\tthis.transactionTypes.newBusiness\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the approvable transaction types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly approvableTransactionTypes: string[] =\r\n\t\t[\tthis.transactionTypes.endorsement,\r\n\t\t\tthis.transactionTypes.newBusiness\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the available insurance specific query parameters.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly queryParameters:\r\n\t{\r\n\t\tpaymentPlanId: string;\r\n\t\tpaymentPlanResourceId: string;\r\n\t\t\tupdateTermOnly: string;\r\n\t\tinvoiceTo: string;\r\n\t\tinvoicingMethod: string;\r\n\t\tenableAutoPayments: string;\r\n\t\telectronicDocuments: string;\r\n\t\ttargetDate: string;\r\n\t\trebase: string;\r\n\t} = {\r\n\t\t\tpaymentPlanId: 'paymentPlanId',\r\n\t\t\tpaymentPlanResourceId: 'paymentPlanResourceId',\r\n\t\t\tupdateTermOnly: 'updateTermOnly',\r\n\t\t\tinvoiceTo: 'invoiceTo',\r\n\t\t\tinvoicingMethod: 'invoicingMethod',\r\n\t\t\tenableAutoPayments: 'enableAutoPayments',\r\n\t\t\telectronicDocuments: 'electronicDocuments',\r\n\t\t\ttargetDate: 'targetDate',\r\n\t\t\trebase: 'rebase'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Enumarates the interest types.\r\n\t *\r\n\t * @static\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly interestTypes:\r\n\t{\r\n\t\tnamedInsured: string;\r\n\t} = {\r\n\t\t\tnamedInsured: 'NamedInsured'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Enumarates the interest sub-types.\r\n\t *\r\n\t * @static\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly interestSubTypes:\r\n\t{\r\n\t\tadditional: string;\r\n\t\tprimary: string;\r\n\t\tsecondary: string;\r\n\t} = {\r\n\t\t\tadditional: 'Additional',\r\n\t\t\tprimary: 'Primary',\r\n\t\t\tsecondary: 'Secondary'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Enumarates the Insurance security groups.\r\n\t *\r\n\t * @static\r\n\t * @type {any}\r\n\t * @memberof InsuranceConstants\r\n\t */\r\n\tpublic static readonly securityGroups:\r\n\t{\r\n\t\tunderwriter: string;\r\n\t\tunderwriterManager: string;\r\n\t\tcompanyCSR: string;\r\n\t} = {\r\n\t\t\tunderwriter: 'UW',\r\n\t\t\tunderwriterManager: 'UWM',\r\n\t\t\tcompanyCSR: 'CompanyCSR'\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[AssociatedTransaction]'\r\n})\r\n\r\n/**\r\n * A component representing a shared display associated transaction\r\n * components\r\n *\r\n * @export\r\n * @class AssociatedTransactionDirective\r\n * @implements IDynamicComponent, OnInit\r\n */\r\nexport class AssociatedTransactionDirective\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the data to iterate within this component.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic data: any[];\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the data object used in this component.\r\n\t *\r\n\t * @param {string} dataProperty\r\n\t * The property name to get the data from.\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic setData(dataProperty: string): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.data.entityInstance.data[dataProperty]))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.data = this.context.data.entityInstance.data[dataProperty];\r\n\t\tthis.setDefinitionData();\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\t(this.context.source).finishedLoading))\r\n\t\t{\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.finishedLoading.emit(\r\n\t\t\t\t\ttrue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the formatted type title.\r\n\t *\r\n\t * @param {string} value\r\n\t * The root value to format.\r\n\t * @returns {string}\r\n\t * The display title.\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic getDisplaySubTitle(value: string): string\r\n\t{\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.toProperCase(value));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the definition data.\r\n\t *\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic setDefinitionData(): void\r\n\t{\r\n\t\tif(AnyHelper.isNullOrEmpty(this.data))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor(const item of this.data)\r\n\t\t{\r\n\t\t\tthis.setIconClass(item);\r\n\r\n\t\t\tif(!AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\tthis.context.data.associationDefinition))\r\n\t\t\t{\r\n\t\t\t\tthis.context.data.associationDefinition.forEach(\r\n\t\t\t\t\t(definition: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.setDisplayProperties(\r\n\t\t\t\t\t\t\titem,\r\n\t\t\t\t\t\t\tdefinition);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the icon class.\r\n\t *\r\n\t * @param {any} _property\r\n\t * The mapping property.\r\n\t *\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tpublic setIconClass(_property: any): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the display properties\r\n\t *\r\n\t * @param {any} item\r\n\t * The object item.\r\n\t * @param {any} definition\r\n\t * The definition object.\r\n\t * @memberof AssociatedTransactionDirective\r\n\t */\r\n\tprivate setDisplayProperties(\r\n\t\titem: any,\r\n\t\tdefinition: any): void\r\n\t{\r\n\t\tif (item.type.toLowerCase()\r\n\t\t\t=== definition.type.toLowerCase())\r\n\t\t{\r\n\t\t\tconst displayProperties: any[] = [];\r\n\t\t\titem.iconClass = definition.iconClass;\r\n\r\n\t\t\tdefinition.displayProperties.forEach(\r\n\t\t\t\t(property: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\titem.characteristics[\r\n\t\t\t\t\t\t\tStringHelper.toCamelCase(property)]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdisplayProperties.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: StringHelper.toProperCase(property),\r\n\t\t\t\t\t\t\t\tvalue: item.characteristics[property]\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\titem.displayProperties = displayProperties;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIInsuranceEntityTypes\r\n} from '@insurance/interfaces/insurance-entity-types.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Directive({\r\n\tselector: '[InsuranceStatusReasons]'\r\n})\r\n\r\n/**\r\n * A component representing a shared display for gathering selected reasons and\r\n * note data.\r\n *\r\n * @export\r\n * @class StatusReasonsDirective\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class StatusReasonsDirective\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of a status reasons directive which will share\r\n\t * logic for a wizard step using a status reasons component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity message service used to notify the user.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity creation.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used to lookup entity modules upon creation.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used to lookup insurance modules upon creation.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance id that will store these reasons and\r\n\t * notes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic entityInstanceId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance type group that will store these reasons\r\n\t * and notes.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic entityInstanceTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the insruance entity types.\r\n\t *\r\n\t * @type {IInsuranceEntityTypes}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic insuranceEntityTypes: IInsuranceEntityTypes;\r\n\r\n\t/**\r\n\t * Gets or sets the primary entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the primary entity instance associated to the current step\r\n\t * data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the PolicyTerm entity instance associated to the current\r\n\t * Policy data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic policyTermEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the Product entity instance associated to the current\r\n\t * data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic productEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action being executed against the current\r\n\t * wizard steps entity instance.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected workflowActionName: string;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method will lookup and initialize data for a status reasons\r\n\t * display.\r\n\t *\r\n\t * @async\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = true;\r\n\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData;\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t\t+ `eq '${currentData.data.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.entityInstanceId =\r\n\t\t\tcurrentData.data.id;\r\n\t\tthis.entityInstanceTypeGroup =\r\n\t\t\tthis.entityType.group;\r\n\r\n\t\tif (!ClaimConstants.claimsModuleEntityTypeGroups\r\n\t\t\t.includes(this.entityInstanceTypeGroup))\r\n\t\t{\r\n\t\t\tthis.insuranceEntityTypes =\r\n\t\t\tawait this.insuranceService.populateInsuranceEntityTypes();\r\n\r\n\t\t\tthis.entityInstance =\r\n\t\t\t\tawait this.getEntityInstance(\r\n\t\t\t\t\tthis.entityInstanceTypeGroup,\r\n\t\t\t\t\tthis.entityInstanceId);\r\n\r\n\t\t\tthis.policyTermEntityInstance =\r\n\t\t\t\tawait this.getPolicyTerm();\r\n\r\n\t\t\tthis.productEntityInstance =\r\n\t\t\t\tawait this.getProduct(\r\n\t\t\t\t\tthis.insuranceEntityTypes.productEntityType,\r\n\t\t\t\t\tthis.policyTermEntityInstance.data.productName);\r\n\t\t}\r\n\r\n\t\tawait this.performPostInitActions();\r\n\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will be implemented in components using this directive for business\r\n\t * logic that requires loaded values.\r\n\t *\r\n\t * @async\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\t// this method can be implemented in the extended component for\r\n\t\t// wizard step specific setups.\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the status reason component.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * A truthy defining if the displayed status reason component is valid.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tpublic validityChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the entity instance data associated to the current\r\n\t * entity instance id collected from the Wizard data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityInstanceTypeGroup\r\n\t * The entity type group.\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance id.\r\n\t * @return {Promise}\r\n\t * The entity instance.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected async getEntityInstance(\r\n\t\tentityInstanceTypeGroup: string,\r\n\t\tentityInstanceId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityInstanceTypeGroup;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.get(entityInstanceId);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the PolicyTerm instance data associated to the current\r\n\t * entity instance id using this component.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The PolicyTerm instance.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected async getPolicyTerm(): Promise\r\n\t{\r\n\t\tif (this.entityInstanceTypeGroup ===\r\n\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group)\r\n\t\t{\r\n\t\t\treturn this.entityInstance;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = this.entityInstanceTypeGroup;\r\n\r\n\t\tconst entityAssociations: IEntityInstance[] =\r\n\t\t\tthis.entityInstanceTypeGroup\r\n\t\t\t\t.indexOf(InsuranceConstants.policyTermTransactionPrefix) === 0\r\n\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t.getParents(\r\n\t\t\t\t\t\tthis.entityInstanceId,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group)\r\n\t\t\t\t: await this.entityInstanceApiService\r\n\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\tthis.entityInstanceId,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\tthis.insuranceEntityTypes.policyTermEntityType.group);\r\n\r\n\t\treturn entityAssociations[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Product instance data associated to the current PolicyTerm data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} productEntityType\r\n\t * The Product entity type.\r\n\t * @param {number} productName\r\n\t * The product name.\r\n\t * @return {Promise}\r\n\t * The Product instance.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected async getProduct(\r\n\t\tproductEntityType: IEntityType,\r\n\t\tproductName: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = productEntityType.group;\r\n\r\n\t\tconst policyInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq '${productName}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn policyInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes an entity workflow action.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityType} workflowEntityType\r\n\t * The workflow entity type.\r\n\t * @param {IEntityInstance} workflowInstanceData\r\n\t * The workflow entity instance data to be updated.\r\n\t * @returns {Promise}\r\n\t * The IActionResponse response from the Policy update.\r\n\t * @param {string} query\r\n\t * An optional query string of parameters.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected async executeWorkflowAction(\r\n\t\tworkflowEntityType: IEntityType,\r\n\t\tworkflowInstanceData: IEntityInstance,\r\n\t\tquery?: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tworkflowEntityType.group;\r\n\r\n\t\tconst actionResponse: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tworkflowInstanceData.id,\r\n\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\tworkflowInstanceData,\r\n\t\t\t\t\tquery);\r\n\r\n\t\treturn actionResponse;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the available reasons from the sent reasons array.\r\n\t *\r\n\t * @param {any[]} reasons\r\n\t * The product reasons available.\r\n\t * @param {string} type\r\n\t * The status reason type to filter the result set by.\r\n\t * @returns {any[]}\r\n\t * The list of all active reasons in the sent reason array.\r\n\t * @memberof StatusReasonsDirective\r\n\t */\r\n\tprotected getReasons(\r\n\t\treasons: any[],\r\n\t\ttype: string): any[]\r\n\t{\r\n\t\treturn reasons\r\n\t\t\t.filter(\r\n\t\t\t\t(reason: any) =>\r\n\t\t\t\t\treason.active === true\r\n\t\t\t\t\t\t&& reason.type === type)\r\n\t\t\t.sort(\r\n\t\t\t\t(itemOne: any,\r\n\t\t\t\t\titemTwo: any) =>\r\n\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\titemOne,\r\n\t\t\t\t\t\titemTwo,\r\n\t\t\t\t\t\tAppConstants.commonProperties.name));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[TransactionStatusEffectiveDate]'\r\n})\r\n\r\n/**\r\n * A directive representing a shared display for gather transaction based status\r\n * dates.\r\n *\r\n * @export\r\n * @class TransactionStatusEffectiveDateDirective\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class TransactionStatusEffectiveDateDirective\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the transaction status effective date\r\n\t * component.\r\n\t *\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used in this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service used in this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this component.\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a value that indicates if new navigation data should be set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic updateNavigationData: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a client message to display if this wizard is not valid\r\n\t * to be completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the message that will be set if the valid wizard step check\r\n\t * returns false. This value should be set in the implementing component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic invalidWizardStepMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the policy entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic policy: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the policy term entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic policyTerm: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the collection of non pending transactions.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic transactionChildren: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components. This\r\n\t * value can be overridden in the implementing component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic staticFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.statusEffectiveDate',\r\n\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Effective Date',\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tquickDateSelection:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Use Inception Date',\r\n\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\tDateHelper.fromUtcSystemIsoToSimulatedLocalDate(\r\n\t\t\t\t\t\t\t\t\tthis.policyTermInceptionDate.toISO())\r\n\t\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidators: {\r\n\t\t\t\t\tvalidEffectiveDate: {\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(control.value)\r\n\t\t\t\t\t\t\t\t\t>= this.policyTermInceptionDate\r\n\t\t\t\t\t\t\t\t\t&& DateTime.fromISO(control.value)\r\n\t\t\t\t\t\t\t\t\t\t< this.policyTermExpirationDate,\r\n\t\t\t\t\t\tmessage: 'The endorse date must be between the policy '\r\n\t\t\t\t\t\t\t+ 'effective and expiration dates.'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tminimumEffectiveDate: {\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(control.value) >=\r\n\t\t\t\t\t\t\t\t\tthis.minimumTransactionEffectiveDate,\r\n\t\t\t\t\t\tmessage: this.getMinimumEffectiveDateMessage.bind(this)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the minimum allowed effective date for validations. This equates\r\n\t * the the most recent effective date of an issue transaction.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tprotected get minimumTransactionEffectiveDate(): DateTime\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tthis.transactionChildren[\r\n\t\t\t\tthis.transactionChildren.length - 1].data.effectiveDate);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the first issued transactions effective date.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tprotected get policyTermInceptionDate(): DateTime\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tthis.policyTerm.data.effectiveDate);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the first issued transactions effective date.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tprotected get policyTermExpirationDate(): DateTime\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tthis.policyTerm.data.expirationDate);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the dynamic child transaction entity type name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tprotected get childTransactionEntityTypeName(): string\r\n\t{\r\n\t\treturn `PolicyTermTransaction.${this.policyTerm.data.productName}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = true;\r\n\r\n\t\tthis.context.source.validStepChanged(false);\r\n\r\n\t\tconst routeData: any =\r\n\t\t\tthis.context.source.activeMenuItem.currentData.data;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\trouteData.statusEntityTypeGroup;\r\n\t\tthis.policyTerm =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\trouteData.statusEntityId);\r\n\r\n\t\tawait this.setPolicy();\r\n\r\n\t\tthis.transactionChildren =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tthis.policyTerm.id,\r\n\t\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.issued}'`,\r\n\t\t\t\t`${InsuranceConstants.commonProperties.effectiveDate} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.ascending}, `\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tthis.childTransactionEntityTypeName);\r\n\r\n\t\tthis.context.source.updateGuardComparisonData();\r\n\r\n\t\tif ((await this.isWizardStepValidForDisplay()) === false)\r\n\t\t{\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\tthis.invalidWizardStepMessage;\r\n\t\t\tthis.context.source.wizardStepLoading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.performPostInitActions();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.context.source.wizardStepLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the wizard step based on the implementing component logic to\r\n\t * confirm if this should be displayed or not.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a value signifying whether or not\r\n\t * the wizard step is valid for display.\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic async isWizardStepValidForDisplay(): Promise\r\n\t{\r\n\t\t// this should be implemented in the calling component if you wish\r\n\t\t// to have logic based hides or shows of this step.\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the policy parent entity instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic async setPolicy()\r\n\t{\r\n\t\tconst policyParents: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getParents(\r\n\t\t\t\tthis.policyTerm.id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies);\r\n\t\tthis.policy = policyParents[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic async validityChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.context.source.validStepChanged(isValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the logic of selecting the most recent issued transaction that\r\n\t * was on or before the selected effective date in the wizard step.\r\n\t *\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic matchEffectiveDateToTransaction(): void\r\n\t{\r\n\t\tconst currentEffectiveDate: string =\r\n\t\t\tthis.context.source.activeMenuItem\r\n\t\t\t\t.currentData.data.statusEffectiveDate;\r\n\t\tconst priorChildren: IEntityInstance[] =\r\n\t\t\t[...this.transactionChildren]\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(currentEffectiveDate)\r\n\t\t\t\t\t\t\t|| DateTime.fromISO(\r\n\t\t\t\t\t\t\t\ttransaction.data.effectiveDate) <=\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(currentEffectiveDate))\r\n\t\t\t\t.reverse();\r\n\r\n\t\tif (this.updateNavigationData === true)\r\n\t\t{\r\n\t\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\t{\r\n\t\t\t\t\tentityType: this.childTransactionEntityTypeName,\r\n\t\t\t\t\tid: priorChildren[0].id\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.context.source.addOrUpdateStepData(\r\n\t\t\t\t{\r\n\t\t\t\t\tbasedOnEntityTypeGroup: this.childTransactionEntityTypeName,\r\n\t\t\t\t\tbasedOnEntityId: priorChildren[0].id\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a minimum effective date validation message.\r\n\t *\r\n\t * @returns {string}\r\n\t * A message signifying to the user that the selected date is not on or\r\n\t * after to the minimum transaction effective date.\r\n\t * @memberof TransactionStatusEffectiveDateDirective\r\n\t */\r\n\tpublic getMinimumEffectiveDateMessage(): string\r\n\t{\r\n\t\treturn 'The date must be on or after the '\r\n\t\t\t+ 'most recent issued effective date '\r\n\t\t\t+ `of ${DateHelper.formatDate(\r\n\t\t\t\tthis.minimumTransactionEffectiveDate)}.`;\r\n\t}\r\n}","
\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t
\r\n\t\t\t{{context.data.associationLabel}}\r\n\t\t
\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t 0\"\r\n\t\t\t\t\t[ngIfElse]=\"NoResults\">\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{{noResultsMessage}}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
\r\n\t
\r\n\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIBaseEntity\r\n} from '@api/interfaces/base/base-entity.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'associated-entity-list',\r\n\ttemplateUrl: './associated-entity-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./associated-entity-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a list for displaying summary details\r\n * of objects.\r\n *\r\n * @export\r\n * @class AssociatedEntityListComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the associated entity list component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used to gather associated entities.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service component.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector component.\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the list of associated entities to display\r\n\t * in this list.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic data: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the association definition.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic associationDefinition: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the no results found message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic noResultsMessage: string = AppConstants.noResultsFoundMessage;\r\n\r\n\t/**\r\n\t * Gets the limit to use when querying for associated entities.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tprivate readonly listLimit: number = 100;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.context.data.associationDataPromise))\r\n\t\t{\r\n\t\t\tthis.data =\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\tthis.context.data.associationDataPromise,\r\n\t\t\t\tthis.context);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.context.data.entityTypeGroup;\r\n\r\n\t\t\tconst entityRelationship: string =\r\n\t\t\t\tthis.context.data.entityRelationship?.toLowerCase();\r\n\r\n\t\t\tconst associatedEntityTypeGroup: string =\r\n\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tthis.context.data.associatedEntityTypeGroup)\r\n\t\t\t\t\t? this.context.data.associatedEntityTypeGroup\r\n\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\tconst associatedEntities: IEntityInstance[] =\r\n\t\t\t\tentityRelationship === 'children'\r\n\t\t\t\t\t? await this.entityInstanceApiService.getChildren(\r\n\t\t\t\t\t\tthis.context.data.entityId,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tthis.listLimit,\r\n\t\t\t\t\t\tassociatedEntityTypeGroup)\r\n\t\t\t\t\t: await this.entityInstanceApiService.getParents(\r\n\t\t\t\t\t\tthis.context.data.entityId,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tthis.listLimit,\r\n\t\t\t\t\t\tassociatedEntityTypeGroup);\r\n\r\n\t\t\tif (associatedEntities?.length > 0\r\n\t\t\t\t&& !AnyHelper.isNullOrEmpty(associatedEntityTypeGroup))\r\n\t\t\t{\r\n\t\t\t\tconst commaSeparatedIdArray: string =\r\n\t\t\t\t\tassociatedEntities\r\n\t\t\t\t\t\t.map((item: IBaseEntity) => item.id)\r\n\t\t\t\t\t\t.join(AppConstants.characters.comma);\r\n\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tthis.context.data.associatedEntityTypeGroup;\r\n\t\t\t\tthis.data =\r\n\t\t\t\t\tawait this.entityInstanceApiService.query(\r\n\t\t\t\t\t\t`(Id IN (${commaSeparatedIdArray}))`,\r\n\t\t\t\t\t\t'Id DESC',\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tthis.listLimit);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.data = associatedEntities;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.associationDefinition =\r\n\t\t\t!AnyHelper.isNullOrEmpty(this.context.data.associationDefinition)\r\n\t\t\t\t? JSON.parse(this.context.data.associationDefinition)\r\n\t\t\t\t: this.associationDefinition;\r\n\r\n\t\tthis.loading = false;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the item context for the child associated entity item\r\n\t * component. Each list item is created from this context.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance to gather a context for.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * A context ready for individual list item displays.\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic getItemContext(\r\n\t\tentityInstance: IEntityInstance): IDynamicComponentContext\r\n\t{\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tentityInstance: entityInstance,\r\n\t\t\t\t\tentityListContext: this.context.data,\r\n\t\t\t\t\tassociationDefinition: this.associationDefinition\r\n\t\t\t\t},\r\n\t\t\t\tsource: this.context.source\r\n\t\t\t};\r\n\t}\r\n}","\r\n
\r\n\t\r\n\t\tNo Data\r\n\t\r\n
\r\n\r\n
\r\n\t
    \r\n\r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tInsured\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\tName:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.primaryInsured.name}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tType:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.primaryInsured.type}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tPhone:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.primaryInsured.phone}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tEmail:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.primaryInsured.email}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tAddress:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.primaryInsured.address}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
  • \r\n\r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAgent\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\tName:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.agencyInformation.name}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tAgency:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.agencyInformation.agency}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tPhone:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.agencyInformation.phone}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tEmail:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.agencyInformation.email}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tAddress:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.data.keyContacts.agencyInformation.address}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
  • \r\n\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIInsuranceKeyContacts\r\n} from '@insurance/interfaces/insurance-key-contacts.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-associated-key-contacts',\r\n\ttemplateUrl: './associated-key-contacts.component.html',\r\n\tstyleUrls: [\r\n\t\t'./associated-key-contacts.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated key contact display used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class AssociatedKeyContactsComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AssociatedKeyContactsComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AssociatedKeyContactsComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof AssociatedKeyContactsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\t(this.context.data).entityInstance))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst keyContacts: IInsuranceKeyContacts =\r\n\t\t\t(this.context.data).entityInstance;\r\n\t\tthis.context.data.keyContacts =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tprimaryInsured: {\r\n\t\t\t\t\t\tname:\r\n\t\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t.name.firstName,\r\n\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t.name.lastName),\r\n\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\tkeyContacts.primaryInsured.subType,\r\n\t\t\t\t\t\tphone:\r\n\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t.phones?.length > 0\r\n\t\t\t\t\t\t\t\t? keyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t.phones[0].number || AppConstants.empty\r\n\t\t\t\t\t\t\t\t: AppConstants.empty,\r\n\t\t\t\t\t\temail:\r\n\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t.emails.length > 0\r\n\t\t\t\t\t\t\t\t? keyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t.emails[0].address || AppConstants.empty\r\n\t\t\t\t\t\t\t\t: AppConstants.empty,\r\n\t\t\t\t\t\taddress:\r\n\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t.addresses.length > 0\r\n\t\t\t\t\t\t\t\t? StringHelper.toAddressString(\r\n\t\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0]?.address,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0]?.city,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0]?.state,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.primaryInsured.characteristics\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0]?.postalCode)\r\n\t\t\t\t\t\t\t\t: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\tagencyInformation: {\r\n\t\t\t\t\t\tname:\r\n\t\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\t\tkeyContacts.producer?.data.firstName,\r\n\t\t\t\t\t\t\t\tkeyContacts.producer?.data.lastName),\r\n\t\t\t\t\t\tagency:\r\n\t\t\t\t\t\t\tkeyContacts.agency?.data.name.legalName\r\n\t\t\t\t\t\t\t\t|| AppConstants.empty,\r\n\t\t\t\t\t\tphone:\r\n\t\t\t\t\t\t\tkeyContacts.producer?.data.phone\r\n\t\t\t\t\t\t\t\t|| AppConstants.empty,\r\n\t\t\t\t\t\temail:\r\n\t\t\t\t\t\t\tkeyContacts.producer?.data.email\r\n\t\t\t\t\t\t\t\t|| AppConstants.empty,\r\n\t\t\t\t\t\taddress:\r\n\t\t\t\t\t\t\tkeyContacts.agency?.data\r\n\t\t\t\t\t\t\t\t.addresses?.length > 0\r\n\t\t\t\t\t\t\t\t? StringHelper.toAddressString(\r\n\t\t\t\t\t\t\t\t\tkeyContacts.agency?.data\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0].address,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.agency?.data\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0].city,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.agency?.data\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0].state,\r\n\t\t\t\t\t\t\t\t\tkeyContacts.agency?.data\r\n\t\t\t\t\t\t\t\t\t\t.addresses[0].postalCode)\r\n\t\t\t\t\t\t\t\t: AppConstants.empty\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'associated-organization',\r\n\ttemplateUrl: './associated-organization.component.html',\r\n\tstyleUrls: [\r\n\t\t'./associated-organization.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated company used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class AssociatedCompanyComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AssociatedOrganizationComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the associated organization component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for organization navigation.\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AssociatedCompanyComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Handles the legal name click by navigating to the organization\r\n\t * this component represents.\r\n\t *\r\n\t * @memberof AssociatedEntityListComponent\r\n\t */\r\n\tpublic navigateToOrganization(): void\r\n\t{\r\n\t\t// With a same route change occurring, add this to the history\r\n\t\t// to keep back functionality\r\n\t\thistory.pushState(\r\n\t\t\tnull,\r\n\t\t\t'',\r\n\t\t\tthis.router.url\r\n\t\t);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.organizations}/entities`,\r\n\t\t\t\tthis.context.data.entityListContext.associatedEntityTypeGroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tthis.context.data.entityInstance.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\treplaceUrl: true,\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}});\r\n\t}\r\n}","
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{context.data?.entityInstance.data?.name?.legalName}}\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t{{context.data?.entityInstance.data?.taxInformation?.type}}\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t{{context.data?.entityInstance.data?.name?.doingBusinessAs}}\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t{{context.data?.entityInstance.data?.domicileState}}\r\n\t\t\r\n\t
\r\n
","\r\n
\r\n\t\r\n\t\tNo Data\r\n\t\r\n
\r\n\r\n
\r\n\t
    \r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDirect Written\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.directWrittenPremium | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.directWrittenFees | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.directWrittenTaxes | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.directWrittenTotal | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
  • \r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tPremium\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tFees\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tTaxes\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tTotal\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
  • \r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAnnualized\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.annualizedPremium | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.annualizedFees | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.annualizedTaxes | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{context.data.accounting.annualizedTotal | currency}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
  • \r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-accounting-details',\r\n\ttemplateUrl: './transaction-accounting-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-accounting-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing transaction accounting details used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionAccountingDetailsComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class TransactionAccountingDetailsComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionAccountingDetailsComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof TransactionAccountingDetailsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\t(this.context.source).entityInstance))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.context.data.accounting =\r\n\t\t\t(this.context.source).entityInstance.data.accounting;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t\tNo Data\r\n\t\r\n
\r\n
\r\n\t
    \r\n\t\t 0\"\r\n\t\t\tngFor\r\n\t\t\tlet-item\r\n\t\t\t[ngForOf]=\"data\">\r\n\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{getDisplaySubTitle(item.type)}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{property.label}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{property.value}}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tAddress:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].address}},\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].city}},\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].state}}\r\n\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].postalCode}}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tDescription:\r\n\t\t\t\t\t\t\t\t{{item.characteristics.description}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
  • \r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAssociatedTransactionDirective\r\n} from '@insurance/directives/associated-transaction.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-assets',\r\n\ttemplateUrl: './transaction-assets.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-assets.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated company used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionAssetsComponent\r\n * @extends AssociatedTransactionDirective\r\n * @implements OnInit\r\n */\r\nexport class TransactionAssetsComponent\r\n\textends AssociatedTransactionDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Sets the address icon class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionAssetsComponent\r\n\t */\r\n\tprivate readonly addressIconClass: string = 'fa-home';\r\n\r\n\t/**\r\n\t * Sets the asset property name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionAssetsComponent\r\n\t */\r\n\tprivate readonly assetPropertyName: string = 'assets';\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof TransactionAssetsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.data.entityInstance))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setData(this.assetPropertyName);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the icon class.\r\n\t *\r\n\t * @param {any} property\r\n\t * The mapping property.\r\n\t *\r\n\t * @memberof TransactionAssetsComponent\r\n\t */\r\n\tpublic setIconClass(property: any): void\r\n\t{\r\n\t\tproperty.iconClass =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(property.characteristics.addresses)\r\n\t\t\t\t? this.addressIconClass\r\n\t\t\t\t: null;\r\n\t}\r\n}","\r\n\r\n\t
\r\n\t\t 0\"\r\n\t\t\t[ngIfElse]=\"NoData\">\r\n\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tPolicy\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
0\">\r\n\t\t\t\t\tCoverages\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t{{policyCoverage.name}}: {{getCurrencyAmount(policyCoverage.amount)}}\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
0\">\r\n\t\t\t\t\tDeductibles\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t{{policyDeductible.name}}: {{getCurrencyAmount(policyDeductible.amount)}}\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
0\">\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{getScopeTitle(nonPolicyItem[0])}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{scopeItem.type}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{scopeItem.description}}\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
0\">\r\n\t\t\t\t\t\t\t\tCoverages\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\t\t{{nonPolicyCoverage.name}}: {{getCurrencyAmount(nonPolicyCoverage.amount)}}\r\n\t\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
0\">\r\n\t\t\t\t\t\t\t\tDeductibles\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\t\t{{nonPolicyDeductible.name}}: {{getCurrencyAmount(nonPolicyDeductible.amount)}}\r\n\t\t\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tNo Data\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tJsonSchemaHelper\r\n} from '@shared/helpers/json-schema.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDescriptionDisplayDefinition\r\n} from '@shared/interfaces/application-objects/description-display-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tget,\r\n\tsetWith\r\n} from 'lodash';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-coverages-deductibles',\r\n\ttemplateUrl: './transaction-coverages-deductibles.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-coverages-deductibles.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated company used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionCoveragesDeductiblesComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class TransactionCoveragesDeductiblesComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of the Transaction\r\n\t * Coverages And Deductibles component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition api service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The entity instance api service.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic insuranceService: InsuranceService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the coverages and deductibles used in this component.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic coveragesAndDeductibles: any = {};\r\n\r\n\t/**\r\n\t * Gets or sets this component loading state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the coverages and deductibles workflow action name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tprivate readonly getCoveragesAndDeductiblesAction: string =\r\n\t\t'TransactionGetCoveragesAndDeductibles';\r\n\r\n\t/**\r\n\t * Gets the policy scope name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tprivate readonly policyScope: string =\r\n\t\t'Policy';\r\n\r\n\t/**\r\n\t * Initiates the component to get and dynamically process the\r\n\t * coverages and deductibles data on a generic format\r\n\t *\r\n\t * @async\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst entityInstanceId: number =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.data.entityInstance.id;\r\n\r\n\t\tif (AnyHelper.isNull(entityInstanceId))\r\n\t\t{\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getPolicyTerm(entityInstanceId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst response: any =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t\tthis.getCoveragesAndDeductiblesAction,\r\n\t\t\t\t\tpolicyTerm);\r\n\r\n\t\tthis.setCoveragesAndDeductibles(response.body.value);\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\t(this.context.source).finishedLoading))\r\n\t\t{\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.finishedLoading.emit(\r\n\t\t\t\t\ttrue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the coverages and deductibles displayable object used\r\n\t * at thes component view.\r\n\t *\r\n\t * @async\r\n\t * @param {any} responseValue\r\n\t * The response value returned from the workflow action.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic async setCoveragesAndDeductibles(responseValue: any): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(responseValue)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(\r\n\t\t\t\tresponseValue.transaction)\r\n\t\t\t|| (AnyHelper.isNullOrEmpty(responseValue.coverages)\r\n\t\t\t\t&& AnyHelper.isNullOrEmpty(responseValue.deductibles)))\r\n\t\t{\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst coveragesAndDeductiblesItems: any[] =\r\n\t\t\t[\r\n\t\t\t\t...responseValue.coverages,\r\n\t\t\t\t...responseValue.deductibles\r\n\t\t\t];\r\n\r\n\t\tfor (const responseItem of coveragesAndDeductiblesItems)\r\n\t\t{\r\n\t\t\tconst category: string =\r\n\t\t\t\tresponseItem.category.toLowerCase();\r\n\t\t\tconst resourceIdentifier: string =\r\n\t\t\t\tresponseItem.resourceIdentifier;\r\n\t\t\tlet path: string;\r\n\r\n\t\t\tif (responseItem.scope === this.policyScope)\r\n\t\t\t{\r\n\t\t\t\tpath = `policy.${category}`;\r\n\t\t\t\tthis.setCoverageAndDeductibleValues(\r\n\t\t\t\t\t`policy.${category}`,\r\n\t\t\t\t\tresponseItem);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(this.coveragesAndDeductibles.nonPolicy))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.coveragesAndDeductibles.nonPolicy = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst existingScope: any[] =\r\n\t\t\t\t\tget(\r\n\t\t\t\t\t\tthis.coveragesAndDeductibles,\r\n\t\t\t\t\t\t`nonPolicy.${responseItem.propertyName}`)\r\n\t\t\t\t\t\t\t?? [];\r\n\r\n\t\t\t\tconst existingItemIndex: number =\r\n\t\t\t\t\texistingScope.findIndex(\r\n\t\t\t\t\t\t(typeItem) =>\r\n\t\t\t\t\t\t\ttypeItem.type === responseItem.type\r\n\t\t\t\t\t\t\t\t&& typeItem.resourceIdentifier\r\n\t\t\t\t\t\t\t\t\t=== resourceIdentifier);\r\n\r\n\t\t\t\tconst nonPolicyItemPath: string =\r\n\t\t\t\t\t`nonPolicy.${responseItem.propertyName}`;\r\n\r\n\t\t\t\tif (existingItemIndex !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tpath =\r\n\t\t\t\t\t\tnonPolicyItemPath\r\n\t\t\t\t\t\t\t+ `[${existingItemIndex}].${category}`;\r\n\r\n\t\t\t\t\tthis.setCoverageAndDeductibleValues(\r\n\t\t\t\t\t\tpath,\r\n\t\t\t\t\t\tresponseItem);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tconst existingNonPolicyData: any =\r\n\t\t\t\t\t\tthis.coveragesAndDeductibles.nonPolicy[\r\n\t\t\t\t\t\t\t`${responseItem.propertyName}`] ?? [];\r\n\r\n\t\t\t\t\tthis.coveragesAndDeductibles.nonPolicy[\r\n\t\t\t\t\t\t`${responseItem.propertyName}`] =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...existingNonPolicyData,\r\n\t\t\t\t\t\t\t\t...[\r\n\t\t\t\t\t\t\t\t\tawait this.getNonPolicyObject(\r\n\t\t\t\t\t\t\t\t\t\tresponseValue.transaction,\r\n\t\t\t\t\t\t\t\t\t\tresponseItem)\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\tconst newItemIndex: number = this.coveragesAndDeductibles\r\n\t\t\t\t\t\t.nonPolicy[\r\n\t\t\t\t\t\t\t`${responseItem.propertyName}`]\r\n\t\t\t\t\t\t.findIndex((item: any) =>\r\n\t\t\t\t\t\t\titem.type === responseItem.type\r\n\t\t\t\t\t\t\t\t&& item.resourceIdentifier\r\n\t\t\t\t\t\t\t\t\t=== resourceIdentifier);\r\n\r\n\t\t\t\t\tpath =\r\n\t\t\t\t\t\tnonPolicyItemPath\r\n\t\t\t\t\t\t\t+ `[${newItemIndex}].${category}`;\r\n\r\n\t\t\t\t\tthis.setCoverageAndDeductibleValues(\r\n\t\t\t\t\t\tpath,\r\n\t\t\t\t\t\tresponseItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.coveragesAndDeductibles.nonPolicy =\r\n\t\t\t!AnyHelper.isNullOrEmpty(this.coveragesAndDeductibles.nonPolicy)\r\n\t\t\t\t? Array.from(\r\n\t\t\t\t\tObject.entries(this.coveragesAndDeductibles.nonPolicy))\r\n\t\t\t\t: null;\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a non-policy object.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} transaction\r\n\t * The transaction entity instance.\r\n\t * @param {any} responseItem\r\n\t * The coverage and deductible item data\r\n\t * @returns {Promise}\r\n\t * The new non policy object.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic async getNonPolicyObject(\r\n\t\ttransaction: IEntityInstance,\r\n\t\tresponseItem: any): Promise\r\n\t{\r\n\t\treturn {\r\n\t\t\tresourceIdentifier:\r\n\t\t\t\tresponseItem.resourceIdentifier,\r\n\t\t\ttype: responseItem.type,\r\n\t\t\tdescription:\r\n\t\t\t\tawait this.getCoverageAndDeductibleDescription(\r\n\t\t\t\t\ttransaction,\r\n\t\t\t\t\tresponseItem),\r\n\t\t\tcoverages: [],\r\n\t\t\tdeductibles: []\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the coverage and deductible description.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} transaction\r\n\t * The transaction entity instance.\r\n\t * @param {any} responseItem\r\n\t * The coverage and deductible item data\r\n\t * @returns {Promise}\r\n\t * The coverage and deductible description.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic async getCoverageAndDeductibleDescription(\r\n\t\ttransaction: IEntityInstance,\r\n\t\tresponseItem: any): Promise\r\n\t{\r\n\t\tconst matchingItem: any =\r\n\t\t\t(transaction.data[responseItem.propertyName])\r\n\t\t\t\t?.find((item: any) =>\r\n\t\t\t\t\titem.resourceIdentifier\r\n\t\t\t\t\t\t=== responseItem.resourceIdentifier);\r\n\r\n\t\tif (AnyHelper.isNull(matchingItem))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tmatchingItem.characteristics?.displayDescription))\r\n\t\t{\r\n\t\t\treturn matchingItem.characteristics.displayDescription;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn this.getObjectDescription(\r\n\t\t\t\tmatchingItem,\r\n\t\t\t\tresponseItem,\r\n\t\t\t\ttransaction.entityType);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the object description.\r\n\t *\r\n\t * @async\r\n\t * @param {any} matchingItem\r\n\t * The matching data item.\r\n\t * @param {any} responseItem\r\n\t * The response data item.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group.\r\n\t * @returns {Promise}\r\n\t * The object description.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic async getObjectDescription(\r\n\t\tmatchingItem: any,\r\n\t\tresponseItem: any,\r\n\t\tentityTypeGroup: string): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService.\r\n\t\t\t\tgetSingleQueryResult(\r\n\t\t\t\t\t`Name eq '${entityTypeGroup}'`,\r\n\t\t\t\t\tnull);\r\n\r\n\t\tconst matchingDefinition: IEntityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`typeId eq ${entityType.id}`,\r\n\t\t\t\t\tnull);\r\n\r\n\t\tconst entityDefinition: EntityDefinition =\r\n\t\t\tnew EntityDefinition(matchingDefinition);\r\n\r\n\t\tconst propertyValue: any =\r\n\t\t\tJsonSchemaHelper.getArrayItemDefinition(\r\n\t\t\t\tJsonSchemaHelper.getSchemaDefinition(\r\n\t\t\t\t\tentityDefinition.dereferencedDataProperties,\r\n\t\t\t\t\tresponseItem.propertyName),\r\n\t\t\t\tresponseItem.type);\r\n\r\n\t\tconst descriptionPropertyKeys: IDescriptionDisplayDefinition[] =\r\n\t\t\tpropertyValue.descriptionPropertyKeys;\r\n\r\n\t\treturn !AnyHelper.isNullOrEmptyArray(descriptionPropertyKeys)\r\n\t\t\t? ObjectHelper.getObjectDescription(\r\n\t\t\t\tmatchingItem,\r\n\t\t\t\tdescriptionPropertyKeys)\r\n\t\t\t: AppConstants.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the coverage and deductible name and amount values.\r\n\t *\r\n\t * @param {string} path\r\n\t * The path where to set the values.\r\n\t * @param {any} responseItem\r\n\t * The coverages and deductibles response data item.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic setCoverageAndDeductibleValues(\r\n\t\tpath: string,\r\n\t\tresponseItem: any): void\r\n\t{\r\n\t\tconst existingList: any[] =\r\n\t\t\tget(\r\n\t\t\t\tthis.coveragesAndDeductibles,\r\n\t\t\t\tpath);\r\n\r\n\t\tconst index = !AnyHelper.isNullOrEmpty(existingList)\r\n\t\t\t? existingList.length\r\n\t\t\t: 0;\r\n\r\n\t\tsetWith(\r\n\t\t\tthis.coveragesAndDeductibles,\r\n\t\t\t`${path}[${index}]`,\r\n\t\t\t{\r\n\t\t\t\tname: responseItem.name,\r\n\t\t\t\tamount: responseItem.amountValue\r\n\t\t\t},\r\n\t\t\t(value) => value);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the amount value formatted in currency type.\r\n\t *\r\n\t * @param {string} amount\r\n\t * The original amount value.\r\n\t * @returns {string}\r\n\t * The currency amount.\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic getCurrencyAmount(amount: string): string\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.numberToCurrency(parseFloat(amount));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the scope formatted to normalize camel case.\r\n\t *\r\n\t * @param {string} scope\r\n\t * The original scope name.\r\n\t * @returns {string}\r\n\t * The scope title\r\n\t * @memberof TransactionCoveragesDeductiblesComponent\r\n\t */\r\n\tpublic getScopeTitle(scope: string): string\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.normalizeCamelcase(scope);\r\n\t}\r\n}","
\r\n\t\r\n\t\tNo Data\r\n\t\r\n
\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{form.data.name}}\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t
  • \r\n\t\t\t\t\t{{item.key}}: {{item.value}}\r\n\t\t\t\t
  • \r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-forms',\r\n\ttemplateUrl: './transaction-forms.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an associated company used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionFormsComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class TransactionFormsComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionFormsComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\tpublic forms: IFileEntity[] = [];\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof TransactionFormsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.forms =\r\n\t\t\tthis.context.data.entityInstance?.forms;\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\t(this.context.source).finishedLoading))\r\n\t\t{\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.finishedLoading.emit(\r\n\t\t\t\t\ttrue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets filetered file custom metadata.\r\n\t *\r\n\t * @param {IFileEntity} form\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof TransactionFormsComponent\r\n\t */\r\n\tpublic filterMetadata(\r\n\t\tform: IFileEntity): IKeyValuePair[]\r\n\t{\r\n\t\treturn FileHelper\r\n\t\t\t.getCustomMetadata(\r\n\t\t\t\tform,\r\n\t\t\t\t[\r\n\t\t\t\t\t'formCode',\r\n\t\t\t\t\t'formEdition'\r\n\t\t\t\t]\r\n\t\t\t);\r\n\t}\r\n}","\r\n
\r\n\t\r\n\t\tNo Data\r\n\t\r\n
\r\n
\r\n\t
    \r\n\t\t 0\"\r\n\t\t\tngFor\r\n\t\t\tlet-item\r\n\t\t\t[ngForOf]=\"data\">\r\n\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{getDisplaySubTitle(item.type)}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{property.label}}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{property.value}}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tName:\r\n\t\t\t\t\t\t\t\t{{item.characteristics?.name?.legalName}}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tAddress:\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].address}},\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].city}},\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].state}}\r\n\t\t\t\t\t\t\t\t\t\t{{item.characteristics.addresses[0].postalCode}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tDescription:\r\n\t\t\t\t\t\t\t\t\t{{item.characteristics.description}}\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tName:\r\n\t\t\t\t\t\t\t\t\t{{item.characteristics.name.firstName}}\r\n\t\t\t\t\t\t\t\t\t{{item.characteristics.name.lastName}}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSubtype:\r\n\t\t\t\t\t\t\t\t\t{{item.subType}}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
  • \r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAssociatedTransactionDirective\r\n} from '@insurance/directives/associated-transaction.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-interests',\r\n\ttemplateUrl: './transaction-interests.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-interests.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated company used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionInterestsComponent\r\n * @extends AssociatedTransactionDirective\r\n * @implements OnInit\r\n */\r\nexport class TransactionInterestsComponent\r\n\textends AssociatedTransactionDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Sets the individual icon class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tprivate readonly individualIconClass: string = 'fa-user';\r\n\r\n\t/**\r\n\t * Sets the organization icon class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tprivate readonly organizationIconClass: string = 'fa-users';\r\n\r\n\t/**\r\n\t * Sets the individual type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tprivate readonly individualType: string = 'Individual';\r\n\r\n\t/**\r\n\t * Sets the organization type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tprivate readonly organizationType: string = 'Organization';\r\n\r\n\t/**\r\n\t * Sets the interests property name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tprivate readonly interestsPropertyName: string = 'interests';\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.data.entityInstance))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setData(this.interestsPropertyName);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the icon class.\r\n\t *\r\n\t * @param {any} property\r\n\t * The mapping property.\r\n\t *\r\n\t * @memberof TransactionInterestsComponent\r\n\t */\r\n\tpublic setIconClass(property: any): void\r\n\t{\r\n\t\tconst iconClass =\r\n\t\t\tproperty.characteristics?.name?.type === this.individualType\r\n\t\t\t\t? this.individualIconClass\r\n\t\t\t\t: null;\r\n\r\n\t\tproperty.iconClass = AnyHelper.isNull(iconClass)\r\n\t\t\t\t&& property.characteristics?.name?.type\r\n\t\t\t\t\t=== this.organizationType\r\n\t\t\t? this.organizationIconClass\r\n\t\t\t: iconClass;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIAssociatedEntityListContext\r\n} from '@shared/interfaces/dynamic-interfaces/associated-entity-list-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'transaction-reasons',\r\n\ttemplateUrl: './transaction-reasons.component.html',\r\n\tstyleUrls: [\r\n\t\t'./transaction-reasons.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an associated transaction reasons used\r\n * in the associated entity list.\r\n *\r\n * @export\r\n * @class TransactionReasonsComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class TransactionReasonsComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the transaction reasons component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for policy dashboard navigation.\r\n\t * @memberof TransactionReasonsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof TransactionReasonsComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n}","
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{context.data?.entityInstance.data.name}}\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t{{context.data?.entityInstance.data.description}}\r\n\t\t\r\n\t
\r\n
","
\r\n\t\r\n\t\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommissionsHelper\r\n} from '@insurance/helpers/commissions..helper';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport { DateHelper } from '@shared/helpers/date.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'commission-disbursement-details',\r\n\ttemplateUrl: './commission-disbursement-details.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a commissions disbursment details component.\r\n *\r\n * @export\r\n * @class CommissionDisbursementDetailsComponent\r\n * @extends CommonTablePageDirective\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class CommissionDisbursementDetailsComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the commission disbursement details component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used in this component.\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the common table.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t */\r\n\tpublic commonTable: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the selected table filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic tableFilter: string = 'All';\r\n\r\n\t/**\r\n\t * Gets or sets the list of commission disbursements.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic disbursements: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of filtered disbursements.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic filteredDisbursements: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected row count..\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic selectedRowCount: number = 5;\r\n\r\n\t/**\r\n\t * Gets or sets the selected agency.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic selectedAgency: any;\r\n\r\n\t/**\r\n\t * Gets the set of quick filters for this component.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic readonly quickfilters:\r\n\t\t{\r\n\t\t\tall: string;\r\n\t\t\tpositiveAmount: string;\r\n\t\t\tnegativeAmount: string;\r\n\t\t\tzeroAmount: string;\r\n\t\t\tcommissionsAmount: string;\r\n\t\t\tadjustmentsAmount: string;\r\n\t\t\tdirectCommissionsAmount: string;\r\n\t\t\tsubCommissionsAmount: string;\r\n\t\t} = {\r\n\t\t\tall: 'All',\r\n\t\t\tpositiveAmount: 'Positive',\r\n\t\t\tnegativeAmount: 'Negative',\r\n\t\t\tzeroAmount: 'Zero',\r\n\t\t\tcommissionsAmount: 'Commissions',\r\n\t\t\tadjustmentsAmount: 'Adjustments',\r\n\t\t\tdirectCommissionsAmount: 'Direct Commissions',\r\n\t\t\tsubCommissionsAmount: 'Sub Commissions'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.data =\r\n\t\t\tthis.context.source.entityContext.data.entityInstance;\r\n\r\n\t\tthis.disbursements =\r\n\t\t\tthis.getCommissionDisbursementDetails(\r\n\t\t\t\tthis.context.data.data.disbursements);\r\n\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.setfilteredDisbursements();\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission disbursement details.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic getCommissionDisbursementDetails(\r\n\t\tdisbursements: any): any\r\n\t{\r\n\t\tconst disbursementsClone: any =\r\n\t\t\tcloneDeep(disbursements);\r\n\r\n\t\tconst disbursementDetails =\tdisbursementsClone\r\n\t\t\t.flatMap(\r\n\t\t\t\t(disbursement: any) =>\r\n\t\t\t\t\tdisbursement.commissions.map(\r\n\t\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst transaction: any =\r\n\t\t\t\t\t\t\t\tcommission.ledgerTransactionCommission;\r\n\t\t\t\t\t\t\tconst metadata: any =\r\n\t\t\t\t\t\t\t\ttransaction.metadata;\r\n\r\n\t\t\t\t\t\t\tconst disbursementDetail: any =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\torganizationId:\r\n\t\t\t\t\t\t\t\t\t\tdisbursement.organizationId,\r\n\t\t\t\t\t\t\t\t\tagencyName:\r\n\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\t\tmetadata.agencyName)\r\n\t\t\t\t\t\t\t\t\t\t\t? metadata.agencyName\r\n\t\t\t\t\t\t\t\t\t\t\t: disbursement\r\n\t\t\t\t\t\t\t\t\t\t\t\t.organizationName\r\n\t\t\t\t\t\t\t\t\t\t\t\t.displayName,\r\n\t\t\t\t\t\t\t\t\tdate:\r\n\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\t\tcommission.createDate)\r\n\t\t\t\t\t\t\t\t\t\t\t? commission.createDate\r\n\t\t\t\t\t\t\t\t\t\t\t: commission.effectiveDate,\r\n\t\t\t\t\t\t\t\t\tpolicyInstanceId:\r\n\t\t\t\t\t\t\t\t\t\tmetadata.policyInstanceId,\r\n\t\t\t\t\t\t\t\t\tpolicyNumber:\r\n\t\t\t\t\t\t\t\t\t\tmetadata.policyNumber,\r\n\t\t\t\t\t\t\t\t\tpolicyTermTransactionEntityType:\r\n\t\t\t\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\t\t\t\t\t.policyTermTransactionEntityType,\r\n\t\t\t\t\t\t\t\t\tpolicyTermTransactionInstanceId:\r\n\t\t\t\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\t\t\t\t\t.policyTermTransactionInstanceId,\r\n\t\t\t\t\t\t\t\t\ttransactionNumber:\r\n\t\t\t\t\t\t\t\t\t\tmetadata.transactionNumber,\r\n\t\t\t\t\t\t\t\t\tadjustmentType:\r\n\t\t\t\t\t\t\t\t\t\ttransaction.adjustmentType,\r\n\t\t\t\t\t\t\t\t\tnote:\r\n\t\t\t\t\t\t\t\t\t\ttransaction.note,\r\n\t\t\t\t\t\t\t\t\tcommissionableAmount:\r\n\t\t\t\t\t\t\t\t\t\tmetadata.commissionableAmount,\r\n\t\t\t\t\t\t\t\t\tamount:\r\n\t\t\t\t\t\t\t\t\t\ttransaction.amount,\r\n\t\t\t\t\t\t\t\t\tisCommissionType:\r\n\t\t\t\t\t\t\t\t\t\tCommissionsHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.isCommissionType(\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransaction),\r\n\t\t\t\t\t\t\t\t\tisAdjustmentType:\r\n\t\t\t\t\t\t\t\t\t\tCommissionsHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.isAdjustmentType(\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransaction),\r\n\t\t\t\t\t\t\t\t\tisDirectCommissionType:\r\n\t\t\t\t\t\t\t\t\t\tCommissionsHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.isDirectCommissionType(\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransaction),\r\n\t\t\t\t\t\t\t\t\tisSubCommissionType:\r\n\t\t\t\t\t\t\t\t\t\tCommissionsHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.isSubCommissionType(\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransaction),\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\treturn disbursementDetail;\r\n\t\t\t\t\t\t}));\r\n\r\n\t\t// Sort details by agencyName (asc) and date (desc)\r\n\t\tdisbursementDetails\r\n\t\t\t.sort(\r\n\t\t\t\t(detailOne: any, detailTwo: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst agencyComparison =\r\n\t\t\t\t\t\tdetailOne\r\n\t\t\t\t\t\t\t.agencyName\r\n\t\t\t\t\t\t\t.localeCompare(detailTwo.agencyName);\r\n\r\n\t\t\t\t\tif (agencyComparison !== 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn agencyComparison;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Compares date in desc mode\r\n\t\t\t\t\tconst dateOne = DateHelper.fromUtcIso(detailOne.date);\r\n\t\t\t\t\tconst dateTwo = DateHelper.fromUtcIso(detailTwo.date);\r\n\r\n\t\t\t\t\treturn dateTwo.toMillis() - dateOne.toMillis();\r\n\t\t\t\t});\r\n\r\n\t\treturn disbursementDetails;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tconst policyNumberLinkFunction: string =\r\n\t\t\t'return function() { return { url: '\r\n\t\t\t\t+ '\\'policy/entities/policies/edit/\\''\r\n\t\t\t\t+ ' + this.policyInstanceId, '\r\n\t\t\t\t+ 'layoutType: \\'Full\\' }; }';\r\n\r\n\t\tconst transactionNumberLinkFunction: string =\r\n\t\t\t'return function() { return { url: '\r\n\t\t\t\t+ '\\'policy/entities/\\''\r\n\t\t\t\t+ ' + this.policyTermTransactionEntityType + \\''\r\n\t\t\t\t+ '/edit/\\''\r\n\t\t\t\t+ ' + this.policyTermTransactionInstanceId, '\r\n\t\t\t\t+ 'layoutType: \\'Full\\' }; }';\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'agencyName',\r\n\t\t\t\t\tcolumnHeader: 'Agency',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'date',\r\n\t\t\t\t\tcolumnHeader: 'Date',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.date,\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'policyNumber',\r\n\t\t\t\t\tcolumnHeader: 'Policy #',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.link,\r\n\t\t\t\t\tlinkFunction: policyNumberLinkFunction,\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'transactionNumber',\r\n\t\t\t\t\tcolumnHeader: 'Transaction #',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.link,\r\n\t\t\t\t\tlinkFunction: transactionNumberLinkFunction,\r\n\t\t\t\t\tdisplayOrder: 4\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'adjustmentType',\r\n\t\t\t\t\tcolumnHeader: 'Adjustment Type',\r\n\t\t\t\t\tdisplayOrder: 5\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'note',\r\n\t\t\t\t\tcolumnHeader: 'Note',\r\n\t\t\t\t\tdisplayOrder: 6\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'commissionableAmount',\r\n\t\t\t\t\tcolumnHeader: 'Commissionable Amount',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.currency,\r\n\t\t\t\t\tdisplayOrder: 7\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'amount',\r\n\t\t\t\t\tcolumnHeader: 'Amount',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.currency,\r\n\t\t\t\t\tdisplayOrder: 8\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.availableColumns\r\n\t\t\t];\r\n\r\n\t\tthis.commonTable =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Agencies',\r\n\t\t\t\tdataKey: 'organizationId',\r\n\t\t\t\texportable: true,\r\n\t\t\t\ttableHeight: {\r\n\t\t\t\t\tvirtualPageSizeBased: true,\r\n\t\t\t\t\tminimumDrawerItemHeight: 9\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.all,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.all\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.positiveAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.positiveAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.negativeAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.negativeAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.zeroAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.zeroAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.commissionsAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.commissionsAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.adjustmentsAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.adjustmentsAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters\r\n\t\t\t\t\t\t\t\t\t\t.directCommissionsAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters\r\n\t\t\t\t\t\t\t\t\t\t.directCommissionsAmount\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters\r\n\t\t\t\t\t\t\t\t\t\t.subCommissionsAmount,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters\r\n\t\t\t\t\t\t\t\t\t\t.subCommissionsAmount\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilter\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilter,\r\n\t\t\t\t\torderBy: `date ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.setfilteredDisbursements();\r\n\r\n\t\t\t\t\t\treturn Promise.resolve(this.filteredDisbursements);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t\tthis.selectedAgency = commonTableContext.data;\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the filtered commission disbursements.\r\n\t *\r\n\t * @memberof CommissionDisbursementDetailsComponent\r\n\t */\r\n\tprivate setfilteredDisbursements(): void\r\n\t{\r\n\t\tswitch (this.commonTable.objectSearch.filter)\r\n\t\t{\r\n\t\t\tcase this.quickfilters.positiveAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.amount > 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.negativeAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.amount < 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.zeroAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.amount === 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.commissionsAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.isCommissionType === true);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.adjustmentsAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.isAdjustmentType === true);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.directCommissionsAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.isDirectCommissionType === true);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.subCommissionsAmount:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.isSubCommissionType === true);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.filteredDisbursements = this.disbursements;\r\n\t\t}\r\n\t}\r\n}","
\r\n\t\r\n\t\r\n
\r\n\r\n
\r\n\t 0\"\r\n\t\t[ngIfElse]=\"NoCommissions\">\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\tNo commissions for this disbursement.\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n// tslint:disable: max-line-length\r\n\r\n@Component({\r\n\tselector: 'commission-disbursement-list-expand',\r\n\ttemplateUrl: './commission-disbursement-list-expand.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a commissions disbursement expand component.\r\n *\r\n * @export\r\n * @class CommissionDisbursementListExpandComponent\r\n * @extends CommonTablePageDirective\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CommissionDisbursementListExpandComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Instantiates the class.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service for this class.\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the parent context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\t@Input() public parentContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the containing component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic loadingTableDefinition: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the common table component.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic commonTable: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the available columnss\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic availableColumns: ICommonTableColumn[] =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Memo',\r\n\t\t\t\tdisplayOrder: 1,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.note'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\tdisplayOrder: 2,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.type'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Commissionable Amount',\r\n\t\t\t\tdisplayOrder: 3,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.metadata.commissionableAmount',\r\n\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Schedule',\r\n\t\t\t\tdisplayOrder: 4,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.metadata.commissionScheduleName'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Rate',\r\n\t\t\t\tdisplayOrder: 5,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.metadata.commissionRate',\r\n\t\t\t\tdataFormatType: 'Percent',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tcolumnHeader: 'Amount',\r\n\t\t\t\tdisplayOrder: 6,\r\n\t\t\t\tdataKey: 'ledgerTransactionCommission.amount',\r\n\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * sets up the table definitions\r\n\t *\r\n\t * @memberof CommissionDisbursementListExpandComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.commonTable =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Commission Detail',\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tsortField: 'accountingDate',\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise: (_: IObjectSearch) =>\r\n\t\t\t\t\tPromise.resolve(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.commissions),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinition = false;\r\n\t}\r\n}","
\r\n\t\r\n\t\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n
","/* !\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommissionsHelper\r\n} from '@insurance/helpers/commissions..helper';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'commission-disbursement-summary',\r\n\ttemplateUrl: './commission-disbursement-summary.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a commissions disbursment list component.\r\n *\r\n * @export\r\n * @class CommissionDisbursementSummaryComponent\r\n * @extends CommonTablePageDirective\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class CommissionDisbursementSummaryComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes an instance of the commission disbursement list component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used in this component.\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the common table.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t */\r\n\tpublic commonTable: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the selected table filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic tableFilter: string = 'All';\r\n\r\n\t/**\r\n\t * Gets or sets the list of commission disbursements.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic disbursements: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of filtered disbursements.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic filteredDisbursements: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected row count..\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic selectedRowCount: number = 5;\r\n\r\n\t/**\r\n\t * Gets or sets the selected agency.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic selectedAgency: any;\r\n\r\n\t/**\r\n\t * Gets the set of quick filters for this component.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic readonly quickfilters:\r\n\t\t{\r\n\t\t\tall: string;\r\n\t\t\tpositive: string;\r\n\t\t\tnegative: string;\r\n\t\t\tzero: string;\r\n\t\t\tach: string;\r\n\t\t\tcheck: string;\r\n\t\t} = {\r\n\t\t\tall: 'All',\r\n\t\t\tpositive: 'Positive',\r\n\t\t\tnegative: 'Negative',\r\n\t\t\tzero: 'Zero',\r\n\t\t\tach: 'ACH',\r\n\t\t\tcheck: 'Check'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.data =\r\n\t\t\tthis.context.source.entityContext.data.entityInstance;\r\n\t\tthis.disbursements =\r\n\t\t\tcloneDeep(this.context.data.data.disbursements);\r\n\r\n\t\tthis.setCommissionDisbursementCalculatedValues();\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.setfilteredDisbursements();\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the commission disbursement calculated values for commissions and\r\n\t * adjustments amounts.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic setCommissionDisbursementCalculatedValues(): void\r\n\t{\r\n\t\tconst commissionDisbursementEntityInstance: IEntityInstance =\r\n\t\t\tthis.context.data;\r\n\r\n\t\tthis.disbursements.forEach(\r\n\t\t\t(disbursement: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst totalCommissions = CommissionsHelper\r\n\t\t\t\t\t.getCommissionDisbursementCommissionsByAgencyId(\r\n\t\t\t\t\t\tcommissionDisbursementEntityInstance,\r\n\t\t\t\t\t\tdisbursement.organizationId);\r\n\r\n\t\t\t\tconst totalAdjustments = CommissionsHelper\r\n\t\t\t\t\t.getCommissionDisbursementAdjustmentsByAgencyId(\r\n\t\t\t\t\t\tcommissionDisbursementEntityInstance,\r\n\t\t\t\t\t\tdisbursement.organizationId);\r\n\r\n\t\t\t\tdisbursement.commissionsAmount = totalCommissions;\r\n\t\t\t\tdisbursement.adjustmentsAmount = totalAdjustments;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.availableColumns =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'organizationName.displayName',\r\n\t\t\t\t\tcolumnHeader: 'Agency',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'organizationDisbursementMethod',\r\n\t\t\t\t\tcolumnHeader: 'Disbursement Method',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'account',\r\n\t\t\t\t\tcolumnHeader: 'Account',\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'commissionsAmount',\r\n\t\t\t\t\tcolumnHeader: 'Commissions',\r\n\t\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t\t\tdisplayOrder: 4\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'adjustmentsAmount',\r\n\t\t\t\t\tcolumnHeader: 'Adjustments',\r\n\t\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t\t\tdisplayOrder: 5\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'total',\r\n\t\t\t\t\tcolumnHeader: 'Amount',\r\n\t\t\t\t\tdataFormatType: 'Currency',\r\n\t\t\t\t\tdisplayOrder: 6\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.availableColumns\r\n\t\t\t];\r\n\r\n\t\tthis.commonTable =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Agencies',\r\n\t\t\t\tdataKey: 'organizationId',\r\n\t\t\t\texportable: true,\r\n\t\t\t\ttableHeight: {\r\n\t\t\t\t\tvirtualPageSizeBased: true,\r\n\t\t\t\t\tminimumDrawerItemHeight: 9\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.all,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.all\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.positive,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.positive\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.negative,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.negative\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.zero,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.zero\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.ach,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.ach\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: this.quickfilters.check,\r\n\t\t\t\t\t\t\t\t\tvalue: this.quickfilters.check\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilter\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilter,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.setfilteredDisbursements();\r\n\r\n\t\t\t\t\t\treturn Promise.resolve(this.filteredDisbursements);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t\tthis.selectedAgency = commonTableContext.data;\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the filtered commission disbursements.\r\n\t *\r\n\t * @memberof CommissionDisbursementSummaryComponent\r\n\t */\r\n\tprivate setfilteredDisbursements(): void\r\n\t{\r\n\t\tswitch (this.commonTable.objectSearch.filter)\r\n\t\t{\r\n\t\t\tcase this.quickfilters.positive:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.total > 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.negative:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\t disbursement.total < 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.zero:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement.total === 0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.ach:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement\r\n\t\t\t\t\t\t\t\t.organizationDisbursementMethod === 'ACH');\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.quickfilters.check:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements.filter(\r\n\t\t\t\t\t\tdisbursement =>\r\n\t\t\t\t\t\t\tdisbursement\r\n\t\t\t\t\t\t\t\t.organizationDisbursementMethod === 'Check');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.filteredDisbursements =\r\n\t\t\t\t\tthis.disbursements;\r\n\t\t}\r\n\t}\r\n}","\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-create-quote-or-claim',\r\n\ttemplateUrl: './create-quote-or-claim.component.html',\r\n\tstyleUrls: [\r\n\t\t'./create-quote-or-claim.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing a simple display of a create quote and create claim\r\n * action.\r\n *\r\n * @export\r\n * @class CreateQuoteOrClaimComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class CreateQuoteOrClaimComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the create quote or claim component.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used to load user data.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use when loading operation group data.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service to use when performing operation\r\n\t * commands.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionsApiService\r\n\t * The api service used to load operation definitions data.\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic operationDefinitionApiService: OperationDefinitionApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not the user has claims\r\n\t * module access.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic hasClaimsMembership: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not the user has policy\r\n\t * module access.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic hasPolicyMembership: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the operation definition name for the create claim operation.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic readonly createClaimOperationDefinitionName: string =\r\n\t\t'ClaimCreateClaim';\r\n\r\n\t/**\r\n\t * Gets the operation definition name for the create quote operation.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic readonly createQuoteOperationDefinitionName: string =\r\n\t\t'PolicyCreateQuote';\r\n\r\n\t/**\r\n\t * Implements the OnInit interface.\r\n\t * This will set the initial values for the component.\r\n\t *\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tconst user: User =\r\n\t\t\tnew User(this.sessionService.user);\r\n\r\n\t\tthis.hasClaimsMembership =\r\n\t\t\tuser.hasMembership(\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.securityGroups.claimModuleAccess\r\n\t\t\t\t]);\r\n\t\tthis.hasPolicyMembership =\r\n\t\t\tuser.hasMembership(\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.securityGroups.policyModuleAccess\r\n\t\t\t\t]);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the selected create quote or claim wizard.\r\n\t *\r\n\t * @async\r\n\t * @param {string} operationDefinitionName\r\n\t * The operation definition name to execute.\r\n\t * @memberof CreateQuoteOrClaimComponent\r\n\t */\r\n\tpublic async createNavigation(\r\n\t\toperationDefinitionName: string): Promise\r\n\t{\r\n\t\tconst operationDefinition: IOperationDefinition =\r\n\t\t\tawait this.operationDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${operationDefinitionName}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`);\r\n\r\n\t\tconst postOperationDefinition: IOperationDefinition =\r\n\t\t\tawait this.operationService\r\n\t\t\t\t.populateOperationDefinition(\r\n\t\t\t\t\toperationDefinition,\r\n\t\t\t\t\t{},\r\n\t\t\t\t\tthis.context);\r\n\r\n\t\tawait this.operationExecutionService\r\n\t\t\t.executeMappedOperation(\r\n\t\t\t\tpostOperationDefinition);\r\n\t}\r\n}","\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tPayment Details\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{nextPayment.date | dateTimeFromIso | dateTimeToLocal | dateTimeToFormat:'L/d/yy'}}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tWritten Premium\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tWritten Fees\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tWritten Taxes\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tTotal Written\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{(nextPayment?.installmentWrittenPremium ?? 0) | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{(nextPayment?.installmentWrittenFees ?? 0)| currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{(nextPayment?.installmentWrittenTaxes ?? 0)| currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{((nextPayment?.installmentWrittenPremium\r\n\t\t\t\t\t\t\t+ nextPayment?.installmentWrittenFees\r\n\t\t\t\t\t\t\t+ nextPayment?.installmentWrittenTaxes) ?? 0)| currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{item.name}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{item.amount | currency}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tTotal Operational Fees\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{summedOperationalFees | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tBalance Forward\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tAdjustments\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tPayments\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tOther\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{totalTransferBalance | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{summedAdjustments | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{summedLedgerPayments | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{summedOtherCredits | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tDue\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tRemaining Balance\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{(nextPayment?.due ?? 0 + transferBalance) | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{remainingBalance | currency}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tIInsurancePaymentSummary\r\n} from '@insurance/interfaces/insurance-payment-summary.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-next-payment-installment-details',\r\n\ttemplateUrl: './next-payment-installment-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./next-payment-installment-details.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing a next payment installment details componet.\r\n *\r\n * @export\r\n * @class NextPaymentInstallmentDetailsComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class NextPaymentInstallmentDetailsComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an the next payment installment details\r\n\t * component.\r\n\t *\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this component.\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the next payment that will be displayed.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic nextPayment: any;\r\n\r\n\t/**\r\n\t * Gets or sets the operational fees for this payment that have\r\n\t * a refernce id.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic invoicedOperationalFees: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the sum of operational fees for this payment that have\r\n\t * a refernce id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic summedOperationalFees: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the total transfer balance for this payment schedule\r\n\t * and payment.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic totalTransferBalance: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the transfer balance from the previous term.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic transferBalance: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the sum of ledger payments for this payment schedule.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic summedLedgerPayments: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the sum of adjustments for this payment schedule.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic summedAdjustments: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the sum of other credits for this payment schedule.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic summedOtherCredits: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the remaining balance of payments for this payment schedule.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic remainingBalance: number = 0;\r\n\r\n\t/**\r\n\t * Initiates the component to get the data object.\r\n\t *\r\n\t * @async\r\n\t * @memberof NextPaymentInstallmentDetailsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst entityInstanceId: number =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityInstance.id\r\n\t\t\t\t?? (this.context.source)\r\n\t\t\t\t\t.activeMenuItem.currentData.data.id;\r\n\t\tconst entityTypeGroup: string =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityContext?.source.entityTypeGroup\r\n\t\t\t\t?? InsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tlet policyTerm: IEntityInstance;\r\n\t\tlet ledger: IEntityInstance;\r\n\r\n\t\tif (entityTypeGroup !==\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t{\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.insuranceService.getPolicyTermByTransaction(\r\n\t\t\t\t\tentityInstanceId,\r\n\t\t\t\t\tentityTypeGroup);\r\n\t\t\tledger =\r\n\t\t\t\tawait this.insuranceService.getLedger(\r\n\t\t\t\t\tpolicyTerm.id);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityTypeGroup;\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t\tentityInstanceId);\r\n\t\t\tledger =\r\n\t\t\t\tawait this.insuranceService.getLedger(\r\n\t\t\t\t\tentityInstanceId);\r\n\t\t}\r\n\r\n\t\tconst policyTermTransaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tpolicyTerm.id);\r\n\t\tconst ledgerTransactions: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getLedgerTransactions(\r\n\t\t\t\tledger.id);\r\n\r\n\t\tconst futureIssuedTransactions: IEntityInstance[] =\r\n\t\t\t\tawait this.insuranceService.getFutureIssuedTransactions(\r\n\t\t\t\t\tpolicyTerm);\r\n\t\tconst wizardPayments: any[] =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.activeMenuItem?.currentData.data.generatedPayments\r\n\t\t\t\t?? (this.context.source)\r\n\t\t\t\t\t.activeMenuItem?.currentData.data\r\n\t\t\t\t\t.policyTerm.data.accounting.paymentSchedule.payments;\r\n\r\n\t\t// If we are past bind, only use the draft payment schedule when\r\n\t\t// future issued transactions exist.\r\n\t\tlet accountingPayments: any[] =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.pageContext\r\n\t\t\t\t?.data\r\n\t\t\t\t?.accountingPayments\r\n\t\t\t\t?? (this.context.source).entityContext\r\n\t\t\t\t\t?.source.entityInstance\r\n\t\t\t\t\t?.data.accounting?.paymentSchedule?.payments;\r\n\r\n\t\tif (futureIssuedTransactions.length > 0\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\taccountingPayments))\r\n\t\t{\r\n\t\t\tconst actionResponse: any =\r\n\t\t\t\tawait this.insuranceService.generateDraftPaymentPlanSchedule(\r\n\t\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\t\taccountingPayments =\r\n\t\t\t\tactionResponse?.body?.value.payments;\r\n\t\t}\r\n\r\n\t\tconst remainingPayments: IInsurancePaymentSummary[] =\r\n\t\t\tawait this.insuranceService.getRemainingPaymentSummaries(\r\n\t\t\t\tentityInstanceId,\r\n\t\t\t\tentityTypeGroup,\r\n\t\t\t\taccountingPayments\r\n\t\t\t\t\t?? wizardPayments,\r\n\t\t\t\t!AnyHelper.isNull(accountingPayments));\r\n\t\tthis.nextPayment =\r\n\t\t\tawait this.insuranceService.getNextInstallmentPayment(\r\n\t\t\t\tentityInstanceId,\r\n\t\t\t\tentityTypeGroup,\r\n\t\t\t\tremainingPayments,\r\n\t\t\t\tfalse);\r\n\r\n\t\tconst includeUninvoicedOperationalFees: boolean =\r\n\t\t\tAnyHelper.isNull(accountingPayments);\r\n\r\n\t\tthis.invoicedOperationalFees =\r\n\t\t\t(!includeUninvoicedOperationalFees\r\n\t\t\t\t? this.nextPayment?.operationalFees\r\n\t\t\t\t\t.filter((operationalFee: any) =>\r\n\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\toperationalFee.referenceId))\r\n\t\t\t\t: this.nextPayment?.operationalFees) ?? [];\r\n\r\n\t\tthis.summedOperationalFees =\r\n\t\t\tthis.invoicedOperationalFees\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: number,\r\n\t\t\t\t\t\toperationalFee: any) =>\r\n\t\t\t\t\t\tsum + operationalFee.amount,\r\n\t\t\t\t\t0) ?? 0;\r\n\r\n\t\tthis.transferBalance =\r\n\t\t\t(InsuranceHelper.getPriorTermTransferBalance(\r\n\t\t\t\tledgerTransactions) ?? 0);\r\n\t\tconst previousBalance: number =\r\n\t\t\tMath.max(\r\n\t\t\t\tthis.nextPayment?.paymentBalanceForward ?? 0,\r\n\t\t\t\tthis.nextPayment?.realizedPaymentBalanceForward ?? 0);\r\n\r\n\t\tthis.totalTransferBalance =\r\n\t\t\tthis.transferBalance + previousBalance;\r\n\t\tthis.summedAdjustments =\r\n\t\t\tInsuranceHelper.getPolicyTermWrittenOffBalance(\r\n\t\t\t\tledgerTransactions);\r\n\t\tthis.summedLedgerPayments =\r\n\t\t\tInsuranceHelper.getPaymentsBalance(\r\n\t\t\t\tledgerTransactions);\r\n\r\n\t\tthis.summedOtherCredits = 0;\r\n\r\n\t\tconst accountingTotal: number =\r\n\t\t\tpolicyTerm.data.status ===\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t? policyTerm.data.accounting.writtenTotal\r\n\t\t\t\t: policyTermTransaction.data.accounting.directWrittenTotal;\r\n\t\tthis.remainingBalance =\r\n\t\t\tpolicyTerm.data.status ===\r\n\t\t\t\tInsuranceConstants.policyTermStatusTypes.active\r\n\t\t\t\t? ledger.data.balance\r\n\t\t\t\t: accountingTotal\r\n\t\t\t\t\t+ this.transferBalance\r\n\t\t\t\t\t+ this.summedAdjustments\r\n\t\t\t\t\t+ this.summedLedgerPayments;\r\n\r\n\t\tthis.loading = false;\r\n\r\n\t\t(this.context.source)\r\n\t\t\t.finishedLoading\r\n\t\t\t?.emit();\r\n\t\t(this.context.source)\r\n\t\t\t.changeDetectorReference\r\n\t\t\t?.detectChanges();\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t\tGo to\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClaimConstants\r\n} from '@claims/constants/claims-constants';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-policy-and-claim-quick-search',\r\n\ttemplateUrl: './policy-and-claim-quick-search.component.html',\r\n\tstyleUrls: [\r\n\t\t'./policy-and-claim-quick-search.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing a simple display of a policy and claim\r\n * quick search layout.\r\n *\r\n * @export\r\n * @class PolicyAndClaimQuickSearchComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class PolicyAndClaimQuickSearchComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the policy and claim quick search\r\n\t * component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The operation service to use when loading operation group data.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used to load user data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to load navigation data.\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not this component is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether or not the go to functionality\r\n\t * is disabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic disabled: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the search text used in the input.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic searchText: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the selected type used in the dropdown.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic selectedType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the search placeholder based on the selected category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic searchPlaceholder: string = 'Policy Number';\r\n\r\n\t/**\r\n\t * Gets or sets the search types.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic readonly searchTypes: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Implements the OnInit interface.\r\n\t * This will set the initial values for the component.\r\n\t *\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tconst user: User =\r\n\t\t\tnew User(this.sessionService.user);\r\n\r\n\t\tconst hasClaimsMembership: boolean =\r\n\t\t\tuser.hasMembership(\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.securityGroups.claimModuleAccess\r\n\t\t\t\t]);\r\n\t\tconst hasPolicyMembership: boolean =\r\n\t\t\tuser.hasMembership(\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.securityGroups.policyModuleAccess\r\n\t\t\t\t]);\r\n\r\n\t\tif (hasPolicyMembership === true)\r\n\t\t{\r\n\t\t\tthis.searchTypes.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: InsuranceConstants.insuranceEntityTypes.policy,\r\n\t\t\t\t\tvalue: InsuranceConstants.insuranceEntityTypes.policy\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (hasClaimsMembership === true)\r\n\t\t{\r\n\t\t\tthis.searchTypes.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: ClaimConstants.claimEntityTypes.claim,\r\n\t\t\t\t\tvalue: ClaimConstants.claimEntityTypes.claim,\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.selectedType =\r\n\t\t\thasPolicyMembership === true\r\n\t\t\t\t? InsuranceConstants.insuranceEntityTypes.policy\r\n\t\t\t\t: ClaimConstants.claimEntityTypes.claim;\r\n\r\n\t\tthis.updateControls();\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles search type and filter data to customize the view and\r\n\t * enable the navigate action when valid.\r\n\t *\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic updateControls(): void\r\n\t{\r\n\t\tconst typeSwitch: boolean =\r\n\t\t\tthis.searchPlaceholder.indexOf(this.selectedType) === -1;\r\n\r\n\t\tif (typeSwitch === true)\r\n\t\t{\r\n\t\t\tthis.searchPlaceholder =\r\n\t\t\t\t`${this.selectedType} Number`;\r\n\t\t\tthis.searchText = AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tthis.disabled =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.searchText)\r\n\t\t\t\t|| AnyHelper.isNullOrWhitespace(this.selectedType);\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the selected policy or claim based on the input type\r\n\t * and number.\r\n\t *\r\n\t * @async\r\n\t * @memberof PolicyAndClaimQuickSearchComponent\r\n\t */\r\n\tpublic async navigateToEntity(): Promise\r\n\t{\r\n\t\tif (this.disabled === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst searchText: string =\r\n\t\t\tthis.searchText.trim();\r\n\t\tconst policyNavigation: boolean =\r\n\t\t\tthis.selectedType ===\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes.policy;\r\n\t\tconst entityTypeGroup: string =\r\n\t\t\tpolicyNavigation === true\r\n\t\t\t\t? InsuranceConstants.insuranceEntityTypeGroups.policyTerms\r\n\t\t\t\t: ClaimConstants.claimEntityTypeGroups.claims;\r\n\t\tconst camelcaseEntityType: string =\r\n\t\t\tStringHelper.toCamelCase(\r\n\t\t\t\tthis.selectedType);\r\n\t\tconst filter: string =\r\n\t\t\tpolicyNavigation === true\r\n\t\t\t\t? `${InsuranceConstants.commonProperties.policyNumber} eq `\r\n\t\t\t\t\t+ `'${searchText}'`\r\n\t\t\t\t: `${ClaimConstants.commonProperties.claimNumber} eq `\r\n\t\t\t\t\t+ `'${searchText}'`;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityTypeGroup;\r\n\t\tconst entity: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\tfilter,\r\n\t\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t\t+ AppConstants.characters.space\r\n\t\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(entity))\r\n\t\t{\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t`${this.selectedType} Not Found`,\r\n\t\t\t\t`No ${camelcaseEntityType} found with `\r\n\t\t\t\t\t+ `the provided ${camelcaseEntityType} number.`,\r\n\t\t\t\tAppConstants.activityStatus.error);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${camelcaseEntityType}/${AppConstants.route.entities}`,\r\n\t\t\t\tentityTypeGroup,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tentity.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData: ObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlayoutType: AppConstants.layoutTypes.full\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/**\r\n * A class containing static helper methods for commissions.\r\n *\r\n * @export\r\n * @class CommissionsHelper\r\n */\r\nexport class CommissionsHelper\r\n{\r\n\t/**\r\n\t * Gets the commission disbursement disbursement methods aggregates array.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @param {IEntityInstance} ledgerTransactionCommissionType\r\n\t * The ledger transaction commission type.\r\n\t * @returns {number}\r\n\t * The disbursement methods aggregates array which contains the\r\n\t * disbursement method and the commission amount associated.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementMethods(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\tledgerTransactionCommissionType: string = 'Commission'): IAggregate[]\r\n\t{\r\n\t\tconst disbursements: any =\r\n\t\t\tentityInstance.data.disbursements;\r\n\r\n\t\tconst groupedDisbursementMethods: IAggregate[] = Object.values(\r\n\t\t\tdisbursements\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(aggregate: IAggregate, disbursement: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst method: string =\r\n\t\t\t\t\t\t\tdisbursement.organizationDisbursementMethod;\r\n\r\n\t\t\t\t\t\tconst totalAmount: number =\tdisbursement.commissions\r\n\t\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t\t\t\t\tcommission.ledgerTransactionCommission.type\r\n\t\t\t\t\t\t\t\t\t\t=== ledgerTransactionCommissionType)\r\n\t\t\t\t\t\t\t.reduce(\r\n\t\t\t\t\t\t\t\t(sum: number, commission: any) =>\r\n\t\t\t\t\t\t\t\t\tsum + commission\r\n\t\t\t\t\t\t\t\t\t\t.ledgerTransactionCommission\r\n\t\t\t\t\t\t\t\t\t\t.amount,\r\n\t\t\t\t\t\t\t\t0);\r\n\r\n\t\t\t\t\t\tif(!aggregate[method])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taggregate[method] =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdisbursementMethod: method\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: 0\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\taggregate[method].value += totalAmount;\r\n\r\n\t\t\t\t\t\treturn aggregate;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}));\r\n\r\n\t\treturn groupedDisbursementMethods;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission disbursement commissions earned amount.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @returns {number}\r\n\t * The amount of the commissions earned.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementEarnedAmount(\r\n\t\tentityInstance: IEntityInstance): number\r\n\t{\r\n\t\tconst disbursements: any =\r\n\t\t\tentityInstance.data.disbursements;\r\n\r\n\t\tconst totalCommissions: number =\r\n\t\t\tdisbursements\r\n\t\t\t\t.flatMap(\r\n\t\t\t\t\t(disbursement: any) =>\r\n\t\t\t\t\t\tdisbursement.commissions)\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t\tcommission.ledgerTransactionCommission)\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transactionCommission: any) =>\r\n\t\t\t\t\t\tthis.isCommissionType(transactionCommission))\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: number, transactionCommission: any) =>\r\n\t\t\t\t\t\tsum + transactionCommission.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn totalCommissions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission disbursement adjustments amount.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @returns {number}\r\n\t * The amount of the commissions adjustment.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementAdjustmentsAmount(\r\n\t\tentityInstance: IEntityInstance): number\r\n\t{\r\n\t\tconst disbursements: any =\r\n\t\t\tentityInstance.data.disbursements;\r\n\r\n\t\tconst totalAdjustments: number =\r\n\t\t\tdisbursements\r\n\t\t\t\t.flatMap(\r\n\t\t\t\t\t(disbursement: any) =>\r\n\t\t\t\t\t\tdisbursement.commissions)\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t\tcommission.ledgerTransactionCommission)\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transactionCommission: any) =>\r\n\t\t\t\t\t\tthis.isAdjustmentType(transactionCommission))\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: any, transactionCommission: any) =>\r\n\t\t\t\t\t\tsum + transactionCommission.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn totalAdjustments;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission disbursement amount.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @returns {number}\r\n\t * The amount of the commissions disbursement.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementAmount(\r\n\t\tentityInstance: IEntityInstance): number\r\n\t{\r\n\t\treturn entityInstance.data.total;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commissions amount by agency id from the commission\r\n\t * disbursement entity instance.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @param {number} organizationId\r\n\t * The organization id.\r\n\t * @returns {number}\r\n\t * The commissions amount of the commissions disbursement for the provided\r\n\t * agency id.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementCommissionsByAgencyId(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\torganizationId: number): number\r\n\t{\r\n\t\tconst disbursements: any =\r\n\t\t\tentityInstance.data.disbursements;\r\n\r\n\t\tconst disbursement: any =\r\n\t\t\tdisbursements\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\titem.organizationId === organizationId);\r\n\r\n\t\tif (AnyHelper.isNull(disbursement))\r\n\t\t{\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst totalCommissions: number =\r\n\t\t\tdisbursement.commissions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst transaction: any =\r\n\t\t\t\t\t\t\tcommission.ledgerTransactionCommission;\r\n\r\n\t\t\t\t\t\treturn this.isCommissionType(transaction);\r\n\t\t\t\t\t})\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: number, commission: any) =>\r\n\t\t\t\t\t\tsum + commission.ledgerTransactionCommission.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn totalCommissions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the adjustments amount by agency id from the commission\r\n\t * disbursement entity instance.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The commission disbursement entity instance.\r\n\t * @param {number} organizationId\r\n\t * The organization id.\r\n\t * @returns {number}\r\n\t * The adjustments amount of the commissions disbursement for the provided\r\n\t * agency id.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static getCommissionDisbursementAdjustmentsByAgencyId(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\torganizationId: number): number\r\n\t{\r\n\t\tconst disbursements: any =\r\n\t\t\tentityInstance.data.disbursements;\r\n\r\n\t\tconst disbursement: any =\r\n\t\t\tdisbursements\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\titem.organizationId === organizationId);\r\n\r\n\t\tif (AnyHelper.isNull(disbursement))\r\n\t\t{\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst totalAdjustemnts: number =\r\n\t\t\tdisbursement.commissions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(commission: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst transaction: any =\r\n\t\t\t\t\t\t\tcommission.ledgerTransactionCommission;\r\n\r\n\t\t\t\t\t\treturn this.isAdjustmentType(transaction);\r\n\t\t\t\t\t})\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: number, commission: any) =>\r\n\t\t\t\t\t\tsum + commission.ledgerTransactionCommission.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn totalAdjustemnts;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the the provided ledger transacion commission is identified\r\n\t * as Commission type, based on the type and adjustment type.\r\n\t *\r\n\t * @static\r\n\t * @param {Any} ledgerTransactionCommission\r\n\t * The ledgerTransactionCommission object stored on the commission\r\n\t * disbursement entity instance.\r\n\t * @returns {boolean}\r\n\t * Returns true if is it a Commission, otherwise false.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static isCommissionType(\r\n\t\tledgerTransactionCommission: any): boolean\r\n\t{\r\n\t\treturn (ledgerTransactionCommission.type\r\n\t\t\t=== InsuranceConstants.commissionTypes.commission\r\n\t\t\t&& (AnyHelper.isNull(ledgerTransactionCommission.adjustmentType)\r\n\t\t\t\t|| ledgerTransactionCommission.adjustmentType\r\n\t\t\t\t\t=== InsuranceConstants.commissionAdjustmentTypes.rollup));\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the the provided ledger transacion commission is identified\r\n\t * as Adjustment type, based on the type and adjustment type.\r\n\t *\r\n\t * @static\r\n\t * @param {Any} ledgerTransactionCommission\r\n\t * The ledgerTransactionCommission object stored on the commission\r\n\t * disbursement entity instance.\r\n\t * @returns {boolean}\r\n\t * Returns true if is it an Adjustment type, otherwise false.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static isAdjustmentType(\r\n\t\tledgerTransactionCommission: any): boolean\r\n\t{\r\n\t\treturn (ledgerTransactionCommission.type\r\n\t\t\t=== InsuranceConstants.commissionTypes.commission\r\n\t\t\t&& (!AnyHelper.isNull(ledgerTransactionCommission.adjustmentType)\r\n\t\t\t\t&& ledgerTransactionCommission.adjustmentType\r\n\t\t\t\t\t!== InsuranceConstants.commissionAdjustmentTypes.rollup));\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the the provided ledger transacion commission is identified\r\n\t * as Direct Commission type, based on the stored metadata.\r\n\t *\r\n\t * @static\r\n\t * @param {Any} ledgerTransactionCommission\r\n\t * The ledgerTransactionCommission object stored on the commission\r\n\t * disbursement entity instance.\r\n\t * @returns {boolean}\r\n\t * Returns true if is it a Direct Commision type, otherwise false.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static isDirectCommissionType(\r\n\t\tledgerTransactionCommission: any): boolean\r\n\t{\r\n\t\treturn ledgerTransactionCommission.metadata.commissionSource\r\n\t\t\t=== InsuranceConstants.commissionSourceTypes.direct;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the the provided ledger transacion commission is identified\r\n\t * as Sub Commission type, based on the stored metadata.\r\n\t *\r\n\t * @static\r\n\t * @param {Any} ledgerTransactionCommission\r\n\t * The ledgerTransactionCommission object stored on the commission\r\n\t * disbursement entity instance.\r\n\t * @returns {boolean}\r\n\t * Returns true if is it a Sub Commision type, otherwise false.\r\n\t * @memberof CommissionsHelper\r\n\t */\r\n\tpublic static isSubCommissionType(\r\n\t\tledgerTransactionCommission: any): boolean\r\n\t{\r\n\t\treturn ledgerTransactionCommission.metadata.commissionSource\r\n\t\t\t=== InsuranceConstants.commissionSourceTypes.sub;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n/**\r\n * A class containing static helper methods for insurance entities.\r\n *\r\n * @export\r\n * @class InsuranceHelper\r\n */\r\nexport class InsuranceHelper\r\n{\r\n\t/**\r\n\t * Gets or sets the set of commonly excluded transaction status values.\r\n\t *\r\n\t * @static\r\n\t * @type {string[]}\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static readonly transactionExcludedStatusValues: string[] =\r\n\t\t[\r\n\t\t\tInsuranceConstants.transactionStatusTypes.archived,\r\n\t\t\tInsuranceConstants.transactionStatusTypes.declined,\r\n\t\t\tInsuranceConstants.transactionStatusTypes.issued,\r\n\t\t\tInsuranceConstants.transactionStatusTypes.obsolete\r\n\t\t];\r\n\r\n\t/**\r\n\t * Confirms that the status of the policy term transaction exists in the\r\n\t * sent included status values and that this status value does not exist\r\n\t * in the sent excluded status values.\r\n\t *\r\n\t * @static\r\n\t * @param {string} status\r\n\t * The policy term transaction status to be checked.\r\n\t * @param {string[]} includedStatusValues\r\n\t * If sent, this will be the set of possible status values that should\r\n\t * return as a true conditional if it contains the sent status. This value\r\n\t * defaults to an empty array.\r\n\t * @param {string[]} excludedStatusValues\r\n\t * If sent, this will be the set of possible status values that should\r\n\t * return as a false conditional if it contains the sent status. This value\r\n\t * will default to the set of archived, declined, issued, and obsolete\r\n\t * status values.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the sent status value exists in the included\r\n\t * status values and does not exist in the set of excluded status values.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static policyTermTransactionStatusCheck(\r\n\t\tstatus: string,\r\n\t\tincludedStatusValues: string[] = [],\r\n\t\texcludedStatusValues: string[] = this.transactionExcludedStatusValues):\r\n\t\tboolean\r\n\t{\r\n\t\treturn (includedStatusValues.length === 0\r\n\t\t\t|| includedStatusValues.includes(status))\r\n\t\t\t&& (excludedStatusValues.length === 0\r\n\t\t\t\t|| !excludedStatusValues.includes(status));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Ledger prior term transfer balance.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance[]} ledgerTransactions\r\n\t * The LedgerTransaction entity instances.\r\n\t * @return {number}\r\n\t * The ledger prior term transfer balance.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static getPriorTermTransferBalance(\r\n\t\tledgerTransactions: IEntityInstance[]): number\r\n\t{\r\n\t\tconst transferBalance: number =\r\n\t\t\tledgerTransactions.filter(\r\n\t\t\t\tledgerTransaction =>\r\n\t\t\t\t\tledgerTransaction.data.type ===\r\n\t\t\t\t\t\tInsuranceConstants.ledgerTransactionTypes.payment\r\n\t\t\t\t\t\t&& ledgerTransaction.data.category ===\r\n\t\t\t\t\t\t\tInsuranceConstants.ledgerTransactionCategories\r\n\t\t\t\t\t\t\t\t.transfer)\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum, transfer) =>\r\n\t\t\t\t\t\tsum + transfer.data.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn transferBalance;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term written off balance.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance[]} ledgerTransactions\r\n\t * The LedgerTransaction entity instances.\r\n\t * @return {number}\r\n\t * The policy term written off balance.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static getPolicyTermWrittenOffBalance(\r\n\t\tledgerTransactions: IEntityInstance[]): number\r\n\t{\r\n\t\tconst writtenOffBalance: number =\r\n\t\t\tledgerTransactions.filter(\r\n\t\t\t\tledgerTransaction =>\r\n\t\t\t\t\tledgerTransaction.data.adjustmentType ===\r\n\t\t\t\t\t\tInsuranceConstants.ledgerTransactionAdjustmentTypes\r\n\t\t\t\t\t\t\t.writeOff)\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum, transfer) =>\r\n\t\t\t\t\t\tsum + transfer.data.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn writtenOffBalance;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term fee balance from operational fees. This will\r\n\t * not include the accounting written fee amount.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term associated to the ledger transaction set.\r\n\t * @param {IEntityInstance[]} ledgerTransactions\r\n\t * The LedgerTransaction entity instances.\r\n\t * @return {number}\r\n\t * The policy term operational fee balance.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static getPolicyTermOperationalFeeBalance(\r\n\t\tpolicyTerm: IEntityInstance,\r\n\t\tledgerTransactions: IEntityInstance[]): number\r\n\t{\r\n\t\tconst totalFeeBalance: number =\r\n\t\t\tledgerTransactions.filter(\r\n\t\t\t\tledgerTransaction =>\r\n\t\t\t\t\tledgerTransaction.data.type ===\r\n\t\t\t\t\t\tInsuranceConstants.ledgerTransactionTypes.fee)\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum, transfer) =>\r\n\t\t\t\t\t\tsum + transfer.data.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn totalFeeBalance - (policyTerm.data.accounting?.writtenFees ?? 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Ledger payments balance.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance[]} ledgerTransactions\r\n\t * The LedgerTransaction entity instances.\r\n\t * @return {number}\r\n\t * The ledger payments balance.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static getPaymentsBalance(\r\n\t\tledgerTransactions: IEntityInstance[]): number\r\n\t{\r\n\t\tconst transferBalance: number =\r\n\t\t\tledgerTransactions.filter(\r\n\t\t\t\tledgerTransaction =>\r\n\t\t\t\t\tledgerTransaction.data.type ===\r\n\t\t\t\t\t\tInsuranceConstants.ledgerTransactionTypes.payment\r\n\t\t\t\t\t\t&& ledgerTransaction.data.category !==\r\n\t\t\t\t\t\t\tInsuranceConstants.ledgerTransactionCategories\r\n\t\t\t\t\t\t\t\t.transfer)\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum, transfer) =>\r\n\t\t\t\t\t\tsum + transfer.data.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\treturn transferBalance;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates payment plan based values of the policy term object.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term entity to be updated.\r\n\t * @param {string} paymentPlanId\r\n\t * The payment plan id to set.\r\n\t * @param {string} paymentPlanName\r\n\t * The payment plan name to set.\r\n\t * @param {string} paymentPlanVersion\r\n\t * The payment plan version to set.\r\n\t * @returns {IEntityInstance}\r\n\t * A mapped policy term holding updated payment plan information based\r\n\t * on the sent parameters.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static modifyPolicyTermPaymentPlan(\r\n\t\tpolicyTerm: IEntityInstance,\r\n\t\tpaymentPlanId: string,\r\n\t\tpaymentPlanName: string,\r\n\t\tpaymentPlanVersion: string): IEntityInstance\r\n\t{\r\n\t\tpolicyTerm.data.preferences.paymentPlan =\r\n\t\t\tpaymentPlanName;\r\n\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan))\r\n\t\t{\r\n\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: paymentPlanId,\r\n\t\t\t\t\tversion: paymentPlanVersion\r\n\t\t\t\t};\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan.id =\r\n\t\t\t\tpaymentPlanId;\r\n\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan.version =\r\n\t\t\t\tpaymentPlanVersion;\r\n\t\t}\r\n\r\n\t\treturn policyTerm;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term and future issued transaction, this will calculate\r\n\t * the expected policy term accounting object written values. Note: This\r\n\t * will not calculate or alter earned and should only be used for\r\n\t * forecasting the term accounting.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term that will have it's accounting object updated.\r\n\t * @param {IEntityInstance} policyTermTransaction\r\n\t * The future issued or pending policy term transaction that will\r\n\t * be used to update the policy term accounting object.\r\n\t * @returns {Promise}\r\n\t * An updated policy term accounting object mapped from the future\r\n\t * issued or pending sent policy term transaction.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tpublic static mapFutureTransactionToTermAccounting(\r\n\t\tpolicyTerm: IEntityInstance,\r\n\t\tpolicyTermTransaction: IEntityInstance): any\r\n\t{\r\n\t\tconst policyTermAccounting =\r\n\t\t\tpolicyTerm.data.accounting;\r\n\t\tconst policyTermTransactionAccounting =\r\n\t\t\tpolicyTermTransaction.data.accounting;\r\n\r\n\t\tpolicyTermAccounting.writtenPremium +=\r\n\t\t\tpolicyTermTransactionAccounting.directWrittenPremium;\r\n\t\tpolicyTermAccounting.writtenFees +=\r\n\t\t\tpolicyTermTransactionAccounting.directWrittenFees;\r\n\t\tpolicyTermAccounting.writtenTaxes +=\r\n\t\t\tpolicyTermTransactionAccounting.directWrittenTaxes;\r\n\t\tpolicyTermAccounting.writtenTotal +=\r\n\t\t\tpolicyTermTransactionAccounting.directWrittenTotal;\r\n\r\n\t\tpolicyTermAccounting.annualStatementLines =\r\n\t\t\tthis.mapFutureAccountingSplitOuts(\r\n\t\t\t\tpolicyTermAccounting.annualStatementLines,\r\n\t\t\t\tpolicyTermTransactionAccounting.annualStatementLines);\r\n\t\tpolicyTermAccounting.fees =\r\n\t\t\tthis.mapFutureAccountingSplitOuts(\r\n\t\t\t\tpolicyTermAccounting.fees,\r\n\t\t\t\tpolicyTermTransactionAccounting.fees);\r\n\t\tpolicyTermAccounting.taxes =\r\n\t\t\tthis.mapFutureAccountingSplitOuts(\r\n\t\t\t\tpolicyTermAccounting.taxes,\r\n\t\t\t\tpolicyTermTransactionAccounting.taxes);\r\n\r\n\t\treturn policyTermAccounting;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term split out set, this will calculate the mapped\r\n\t * future split out of the policy term based on the transaction\r\n\t * split outs in the same group with the same name.\r\n\t *\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstance} termSplitOuts\r\n\t * The policy term split outs that will have their accounting data updated.\r\n\t * @param {IEntityInstance} transactionSplitOuts\r\n\t * The future issued or pending policy term transaction split out that will\r\n\t * be used to update the policy term accounting object.\r\n\t * @returns {Promise}\r\n\t * An updated policy term accounting split out set mapped from the future\r\n\t * issued or pending sent policy term transaction.\r\n\t * @memberof InsuranceHelper\r\n\t */\r\n\tprivate static mapFutureAccountingSplitOuts(\r\n\t\ttermSplitOuts: any[],\r\n\t\ttransactionSplitOuts: any[]): any\r\n\t{\r\n\t\tfor (const termSplitOut of termSplitOuts)\r\n\t\t{\r\n\t\t\tconst transactionSplitOut: any =\r\n\t\t\t\ttransactionSplitOuts.find(\r\n\t\t\t\t\t(splitOut: any) =>\r\n\t\t\t\t\t\tsplitOut.name === termSplitOut.name);\r\n\r\n\t\t\tif (!AnyHelper.isNull(transactionSplitOut))\r\n\t\t\t{\r\n\t\t\t\ttermSplitOut.written +=\r\n\t\t\t\t\ttransactionSplitOut.directWritten;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const transactionSplitOut of transactionSplitOuts)\r\n\t\t{\r\n\t\t\tconst termSplitOut: any =\r\n\t\t\t\ttermSplitOuts.find(\r\n\t\t\t\t\t(splitOut: any) =>\r\n\t\t\t\t\t\tsplitOut.name === transactionSplitOut.name);\r\n\r\n\t\t\tif (AnyHelper.isNull(termSplitOut))\r\n\t\t\t{\r\n\t\t\t\ttermSplitOuts.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: transactionSplitOut.name,\r\n\t\t\t\t\t\twritten: transactionSplitOut.directWritten\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn termSplitOuts;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tServiceProviderService\r\n} from '@insurance/services/service-provider.service';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const insuranceServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'InsuranceService');\r\n\r\n/*\r\n * Export the service provider token to be\r\n * used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const serviceProviderServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'ServiceProviderService');\r\n\r\n/**\r\n * A lookup to be shared accross the application used\r\n * for classes available in the shared module.\r\n *\r\n * @export\r\n * @class InsuranceTokenLookup\r\n */\r\nexport class InsuranceTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof InsuranceTokenLookup\r\n\t */\r\n\tpublic static tokens =\r\n\t\t{\r\n\t\t\t'InsuranceService':\r\n\t\t\t\tinsuranceServiceToken,\r\n\t\t\t'ServiceProviderService':\r\n\t\t\t\tserviceProviderServiceToken\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tITransactionKeyDates\r\n} from '@insurance/business-logic-entities/transactions/transaction.key-dates';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tBusinessLogicEntity\r\n} from '@shared/business-logic-entities/business-logic-entity';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/**\r\n * A Business Logic Entity of Transaction.\r\n *\r\n * @export\r\n * @class Transaction\r\n */\r\nexport class Transaction\r\n\textends BusinessLogicEntity\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the transaction\r\n\t * businesss logic entity.\r\n\t *\r\n\t * @param {IEntityInstance} transaction\r\n\t * The underlying IWorkItem.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic constructor(\r\n\t\ttransaction: IEntityInstance,\r\n\t\tpublic resolverService: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\ttransaction,\r\n\t\t\tresolverService);\r\n\r\n\t\tthis.insuranceService = this.resolverService\r\n\t\t\t.resolveInsurance('InsuranceService');\r\n\t}\r\n\r\n\t/**\r\n\t * The transaction data object.\r\n\t *\r\n\t * @memberof Transaction\r\n\t */\r\n\tdeclare public data: {\r\n\t\tpolicyNumber: string;\r\n\t\ttransactionNumber: string;\r\n\t\tbasedOnTransactionNumber: string;\r\n\t\ttype: string;\r\n\t\tsubType: string;\r\n\t\tstatus: string;\r\n\t\tpreSubmittedStatus: string;\r\n\t\teffectiveDate: string;\r\n\t\tkeyDates: ITransactionKeyDates;\r\n\t\taccounting: any;\r\n\t\treasons: any[];\r\n\t\tinterests: any[];\r\n\t\tassets: any[];\r\n\t\tcharacteristics: any;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the Insurance Service used in methods.\r\n\t *\r\n\t * @private\r\n\t * @type {InsuranceService}\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic readonly insuranceService: InsuranceService;\r\n\r\n\t/**\r\n\t * Gets the declinable transaction types.\r\n\t *\r\n\t * @returns {string[]}\r\n\t * the string array of types.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic declinableTypes(): string[]\r\n\t{\r\n\t\treturn InsuranceConstants.declinableTransactionTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the approvable transaction types.\r\n\t *\r\n\t * @returns {string[]}\r\n\t * the string array of types.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic approvableTypes(): string[]\r\n\t{\r\n\t\treturn InsuranceConstants.approvableTransactionTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value of true indicating if the user\r\n\t * can decline. False otherwise.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the value.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic async userCanDecline(): Promise\r\n\t{\r\n\t\tconst declinable: boolean =\r\n\t\t\tthis.declinableTypes().includes(this.data.type)\r\n\t\t\t\t&& this.statusCheck(\r\n\t\t\t\t\tthis.data.status,\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.submitted,\r\n\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.bound\r\n\t\t\t\t\t]);\r\n\r\n\t\tif (!declinable)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.actionAuthorized(\r\n\t\t\tthis,\r\n\t\t\t'TransactionDecline');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the product to which this transaction belongs.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the product.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic async getProduct(): Promise\r\n\t{\r\n\t\treturn this.insuranceService\r\n\t\t\t.getProductByTransaction(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the parent Policy Term for this transaction.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The promise holding the policy term.\r\n\t */\r\n\tpublic async getPolicyTerm(): Promise\r\n\t{\r\n\t\tconst transactionType: IEntityType =\r\n\t\t\tthis.insuranceService\r\n\t\t\t\t.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.name === this.entityType);\r\n\r\n\t\treturn this.insuranceService\r\n\t\t\t.getPolicyTermByTransaction(\r\n\t\t\t\tthis.id,\r\n\t\t\t\ttransactionType.group);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value of true indicating if the user\r\n\t * can rescind a declined transaction. False otherwise.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the value.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic async userCanRescindDeclination(): Promise\r\n\t{\r\n\t\tconst declined: string =\r\n\t\t\tInsuranceConstants.transactionStatusTypes.declined;\r\n\r\n\t\tif (this.data.status !== declined)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.data.type !== InsuranceConstants.transactionTypes\r\n\t\t\t.newBusiness\r\n\t\t\t&& this.data.type !== InsuranceConstants.transactionTypes\r\n\t\t\t\t.endorsement)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.getProduct();\r\n\r\n\t\tconst daysAllowedToRescind: number =\r\n\t\t\tproduct\r\n\t\t\t\t.data\r\n\t\t\t\t.newBusiness\r\n\t\t\t\t.declination\r\n\t\t\t\t.daysToAllowRescind;\r\n\r\n\t\tconst declineDate: DateTime = DateHelper\r\n\t\t\t.fromUtcIso(this.data.keyDates.declineDate);\r\n\r\n\t\tconst daysElapsed: number =\r\n\t\t\tparseFloat(DateHelper\r\n\t\t\t\t.getDateDifference(\r\n\t\t\t\t\tdeclineDate,\r\n\t\t\t\t\tDateTime.now().toUTC()));\r\n\r\n\t\tconst inTimeWindow: boolean =\r\n\t\t\t(daysAllowedToRescind - daysElapsed) > 0;\r\n\r\n\t\tif (!inTimeWindow)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tawait this.getPolicyTerm();\r\n\r\n\t\tconst latestTransaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\tpolicyTerm.id);\r\n\r\n\t\tif (latestTransaction.id !== this.id)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService\r\n\t\t\t.actionAuthorized(\r\n\t\t\t\tthis,\r\n\t\t\t\t'TransactionRescindDecline');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value of true indicating if the user\r\n\t * can approve. False otherwise.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the value.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic async userCanApprove(): Promise\r\n\t{\r\n\t\tconst approvable: boolean =\r\n\t\t\tthis.approvableTypes().includes(this.data.type)\r\n\t\t\t\t&& this.statusCheck(\r\n\t\t\t\t\tthis.data.status,\r\n\t\t\t\t\t[InsuranceConstants.transactionStatusTypes.submitted]);\r\n\r\n\t\tif (!approvable)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.actionAuthorized(\r\n\t\t\tthis,\r\n\t\t\t'TransactionApprove');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value of true if the status is both included\r\n\t * and not excluded. False otherwise.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * the promise holding the value.\r\n\t * @memberof Transaction\r\n\t */\r\n\tpublic statusCheck(\r\n\t\tstatus: string,\r\n\t\tincludedStatusValues: string[],\r\n\t\texcludedStatusValues: string[] =\r\n\t\tInsuranceHelper.transactionExcludedStatusValues): boolean\r\n\t{\r\n\t\treturn InsuranceHelper\r\n\t\t\t.policyTermTransactionStatusCheck(\r\n\t\t\t\tstatus,\r\n\t\t\t\tincludedStatusValues,\r\n\t\t\t\texcludedStatusValues);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tBusinessLogicEntity\r\n} from '@shared/business-logic-entities/business-logic-entity';\r\nimport {\r\n\tEmbeddedFileEncoding\r\n} from '@shared/constants/enums/embedded-file-encoding.enum';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/**\r\n * A file business logic entity.\r\n *\r\n * @export\r\n * @class FileEntity\r\n * @extends {BusinessLogicEntity}\r\n * @implements {IFileEntity}\r\n */\r\nexport class FileEntity\r\n\textends BusinessLogicEntity\r\n\timplements IFileEntity\r\n{\r\n\t/**\r\n\t * Creates an instance of a File Entity.\r\n\t *\r\n\t * @param {IFileEntity} fileEntity\r\n\t * The underlying IFileEntity.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service for this class.\r\n\t * @memberof FileEntity\r\n\t */\r\n\tpublic constructor(\r\n\t\tfileEntity: IFileEntity,\r\n\t\tresolverService: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tfileEntity,\r\n\t\t\tresolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * The FileEntity data object.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof FileEntity\r\n\t */\r\n\tdeclare public data: {\r\n\t\tname: string;\r\n\t\tuserName: string;\r\n\t\tdescription: string;\r\n\t\tsubType: string;\r\n\t\ttags: string[];\r\n\t\tstatus:\r\n\t\t\t{\r\n\t\t\t\tstate: FileState;\r\n\t\t\t\tstateChangeReason: string;\r\n\t\t\t};\r\n\t\tstorage:\r\n\t\t\t{\r\n\t\t\t\tstorageType: StorageType;\r\n\t\t\t\tlocation: string;\r\n\t\t\t\tvalue: string;\r\n\t\t\t\tencoding: EmbeddedFileEncoding;\r\n\t\t\t\tpersistenceService: string;\r\n\t\t\t};\r\n\t\tmetadata:\r\n\t\t\t{\r\n\t\t\t\tsizeInBytes: number;\r\n\t\t\t\tmimeType: string;\r\n\t\t\t\textension: string;\r\n\t\t\t\tcustom: any;\r\n\t\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Adds or updates properties to the metadata custom object.\r\n\t *\r\n\t * @returns {FileEntity}\r\n\t * An awaitable insurance entity type object used for lookups.\r\n\t * @memberof FileEntity\r\n\t */\r\n\tpublic addOrUpdateCustomProperties(\r\n\t\tproperties: object): FileEntity\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.data.metadata.custom))\r\n\t\t{\r\n\t\t\tthis.data.metadata.custom = {};\r\n\t\t}\r\n\r\n\t\tthis.addOrUpdateProperties(\r\n\t\t\tthis.data.metadata.custom,\r\n\t\t\tproperties);\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tBusinessLogicEntity\r\n} from '@shared/business-logic-entities/business-logic-entity';\r\nimport {\r\n\tFileEntity\r\n} from '@shared/business-logic-entities/file-entity';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tWorkItemStatus\r\n} from '@shared/constants/enums/work-item-status.enum';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIWorkItemKeyDates\r\n} from '@shared/interfaces/workItems/work-item-key-dates.interface';\r\nimport {\r\n\tIWorkItemReference\r\n} from '@shared/interfaces/workItems/work-item-reference.interface';\r\nimport {\r\n\tIWorkItem\r\n} from '@shared/interfaces/workItems/work-item.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/**\r\n * A component representing an instance of the main work items page.\r\n *\r\n * @export\r\n * @class WorkItem\r\n */\r\nexport class WorkItem\r\n\textends BusinessLogicEntity\r\n\timplements IWorkItem\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work item.\r\n\t *\r\n\t * @param {IWorkItem} workItem\r\n\t * The underlying IWorkItem.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic constructor(\r\n\t\tworkItem: IWorkItem,\r\n\t\tpublic resolverService: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tworkItem,\r\n\t\t\tresolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * The work item data object.\r\n\t *\r\n\t * @memberof WorkItem\r\n\t */\r\n\tdeclare public data: {\r\n\t\tassignedTo: string;\r\n\t\tblocked: boolean;\r\n\t\tdescription: string;\r\n\t\tkeyDates: IWorkItemKeyDates;\r\n\t\tmetadata: any;\r\n\t\tmodule: string;\r\n\t\tpriority: string;\r\n\t\tqueue: string;\r\n\t\treferences: IWorkItemReference[];\r\n\t\tstatus: WorkItemStatus;\r\n\t\tsubType: string;\r\n\t\tsystemGenerated: boolean;\r\n\t\ttype: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets a reference.\r\n\t *\r\n\t * @param {string} referenceType\r\n\t * The reference type to get.\r\n\t * @returns {IWorkItemReference}\r\n\t * A work item reference.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic getReference(\r\n\t\treferenceType: string): IWorkItemReference\r\n\t{\r\n\t\treturn this.data.references\r\n\t\t\t.find(\r\n\t\t\t\t(reference: IWorkItemReference) =>\r\n\t\t\t\t\treference.type === referenceType);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an reference identifier.\r\n\t *\r\n\t * @param {string} referenceType\r\n\t * The reference type to get.\r\n\t * @returns {string}\r\n\t * A work item reference identifier (an id, for example).\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic getIdentifier(referenceType: string): string\r\n\t{\r\n\t\treturn this\r\n\t\t\t.getReference(referenceType)\r\n\t\t\t.identifier;\r\n\t}\r\n\r\n\t/**\r\n\t * Unblocks this work item.\r\n\t *\r\n\t * @param {string} query\r\n\t * Optional query string.\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic unblock(\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\treturn this.executeWorkItemAction(\r\n\t\t\tWorkItemConstants.actions.workItemUnblocked,\r\n\t\t\tquery);\r\n\t}\r\n\r\n\t/**\r\n\t * Blocks this work item.\r\n\t * @param {string} query\r\n\t * Optional query string.\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic block(\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\treturn this.executeWorkItemAction(\r\n\t\t\tWorkItemConstants.actions.workItemBlocked,\r\n\t\t\tquery);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this work item to ignored.\r\n\t *\r\n\t * @param {string} query\r\n\t * Optional query string.\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic ignore(\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\treturn this.executeWorkItemAction(\r\n\t\t\tWorkItemConstants.actions.workItemIgnored,\r\n\t\t\tquery);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets this work item to done.\r\n\t *\r\n\t * @param {string} query\r\n\t * Optional query string.\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic markDone(\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\treturn this.executeWorkItemAction(\r\n\t\t\tWorkItemConstants.actions.workItemDone,\r\n\t\t\tquery);\r\n\t}\r\n\r\n\t/**\r\n\t * resets the work item state to active and unblocked.\r\n\t *\r\n\t * @param {string} query\r\n\t * Optional query string.\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic reset(\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\treturn this.executeWorkItemAction(\r\n\t\t\tWorkItemConstants.actions.workItemReset,\r\n\t\t\tquery);\r\n\t}\r\n\r\n\t/**\r\n\t * Markes the work item done/approved and approves the associated file.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic approveFile(): Promise\r\n\t{\r\n\t\treturn this.fileReviewed(\r\n\t\t\tFileState.Approved);\r\n\t}\r\n\r\n\t/**\r\n\t * Markes the work item done/rejected and rejects the associated file.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic rejectFile(): Promise\r\n\t{\r\n\t\treturn this.fileReviewed(\r\n\t\t\tFileState.Rejected);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the work item and the associated file pre reviewed states.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic resetFileReviewState(): Promise\r\n\t{\r\n\t\treturn this.fileReviewed(\r\n\t\t\tFileState.Pending);\r\n\t}\r\n\r\n\t/**\r\n\t * Markes the work item done and the associated file as reviewed\r\n\t *\r\n\t * @async\r\n\t * @param {string} reviewState\r\n\t * The review state to mark\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic async fileReviewed(\r\n\t\treviewState: string): Promise\r\n\t{\r\n\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t'Updating File Status and Business Rules',\r\n\t\t\t`File Status set as '${reviewState}'.`,\r\n\t\t\tAppConstants.activityStatus.info);\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.executeWorkItemAction(\r\n\t\t\t\t\t`File${reviewState}`),\r\n\t\t\t\t'Updating File Status and Business Rules',\r\n\t\t\t\t'Updated File Status and Business Rules',\r\n\t\t\t\t`File Status set to '${reviewState}'.`,\r\n\t\t\t\t'File Status was not updated.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the associated file entity.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The file entity or null if references are not set.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic async getAssociatedFileEntity(): Promise\r\n\t{\r\n\t\tlet fileId: number;\r\n\t\tlet fileType: string;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tfileId =\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tthis.getIdentifier('FileId'),\r\n\t\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\t\tfileType =\r\n\t\t\t\tthis.getIdentifier('FileEntityType');\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\treturn Promise.resolve(null);\r\n\t\t}\r\n\r\n\t\tconst fileEntityType: IEntityTypeDto =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Name.Equals(\"${fileType}\")`,\r\n\t\t\t\t\t'Id',\r\n\t\t\t\t\tfalse);\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = fileEntityType.group;\r\n\r\n\t\tconst fileInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(fileId);\r\n\r\n\t\treturn new FileEntity(\r\n\t\t\tfileInstance,\r\n\t\t\tthis.resolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the work item action.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItem\r\n\t */\r\n\tpublic async executeWorkItemAction(\r\n\t\tactionName: string,\r\n\t\tquery: string = null): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup\r\n\t\t\t= (await this.getEntityTypeAsync()).group;\r\n\r\n\t\tawait this.entityInstanceApiService\r\n\t\t\t.executeAction(\r\n\t\t\t\tthis.id,\r\n\t\t\t\tactionName,\r\n\t\t\t\tnull,\r\n\t\t\t\tquery);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tISecurityGroupDto\r\n} from '@api/interfaces/security/security-group.dto.interface';\r\nimport {\r\n\tIActionResponseDto\r\n} from '@api/interfaces/workflow/action-response.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tTransaction\r\n} from '@insurance/business-logic-entities/transactions/transaction';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tIInsuranceEntityHierarchy\r\n} from '@insurance/interfaces/insurance-entity-hierarchy';\r\nimport {\r\n\tIInsuranceEntityTypes\r\n} from '@insurance/interfaces/insurance-entity-types.interface';\r\nimport {\r\n\tIInsurancePaymentSummary\r\n} from '@insurance/interfaces/insurance-payment-summary.interface';\r\nimport {\r\n\tIInsuranceReferences\r\n} from '@insurance/interfaces/insurance-references.interface';\r\nimport {\r\n\tIPolicySummary\r\n} from '@insurance/interfaces/policy-summary.interface';\r\nimport {\r\n\tIPolicyTermHierarchy\r\n} from '@insurance/interfaces/policy-term-hierarchy';\r\nimport {\r\n\tWorkItem\r\n} from '@shared/business-logic-entities/work-item';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSharedTypeConstants\r\n} from '@shared/constants/shared-type-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIWorkItem\r\n} from '@shared/interfaces/workItems/work-item.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tUserService\r\n} from '@shared/services/user.service';\r\nimport {\r\n\tDateTime,\r\n\tDateTimeUnit\r\n} from 'luxon';\r\n\r\n/**\r\n * A class representing a common interface to gather fully populated\r\n * insurance information.\r\n *\r\n * @export\r\n * @class InsuranceService\r\n */\r\n@Injectable()\r\nexport class InsuranceService\r\n{\r\n\t/**\r\n\t * Creates an instance of an InsuranceService.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service for this component.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity type service for this component.\r\n\t * @param {Router} router\r\n\t * The router service for this component.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service for this component.\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The resolver service for this component.\r\n\t * @param {UserService} userService\r\n\t * The user service for this component.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic readonly entityService: EntityService,\r\n\t\tpublic readonly ruleService: RuleService,\r\n\t\tpublic readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic readonly router: Router,\r\n\t\tpublic readonly resolverService: ResolverService,\r\n\t\tpublic readonly securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic readonly userService: UserService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and populates an insurance entity type lookup object.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable insurance entity type object used for lookups.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async populateInsuranceEntityTypes(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst insuranceEntityTypes: IInsuranceEntityTypes =\r\n\t\t\t {};\r\n\r\n\t\tconst promiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsuranceEntityTypes.policyEntityType =\r\n\t\t\t\t\t\t\tthis.entityService\r\n\t\t\t\t\t\t\t\t.entityTypes\r\n\t\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\tentityType.group ===\r\n\t\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t.policies);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsuranceEntityTypes.policyTermEntityType =\r\n\t\t\t\t\t\t\tthis.entityService\r\n\t\t\t\t\t\t\t\t.entityTypes\r\n\t\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\tentityType.group ===\r\n\t\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t.policyTerms);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsuranceEntityTypes.productEntityType =\r\n\t\t\t\t\t\t\tthis.entityService\r\n\t\t\t\t\t\t\t\t.entityTypes\r\n\t\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\tentityType.group ===\r\n\t\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t.products);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsuranceEntityTypes.ledgerEntityType =\r\n\t\t\t\t\t\t\tthis.entityService\r\n\t\t\t\t\t\t\t\t.entityTypes\r\n\t\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\tentityType.group ===\r\n\t\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t.ledger);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsuranceEntityTypes.ledgerTransactionEntityType =\r\n\t\t\t\t\t\t\tthis.entityService\r\n\t\t\t\t\t\t\t\t.entityTypes\r\n\t\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\tentityType.group ===\r\n\t\t\t\t\t\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t.ledgerTransaction);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t})\r\n\t\t\t];\r\n\r\n\t\tawait Promise.all(promiseArray);\r\n\r\n\t\treturn insuranceEntityTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the active policy term entity instance from the policy.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance related to the active policy term.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getActivePolicyTerm(\r\n\t\tpolicyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\tlet activePolicyTermInstance: IEntityInstance =\r\n\t\t\tentityRelationships.find((instance: IEntityInstance) =>\r\n\t\t\t\tinstance.data.status ===\r\n\t\t\t\t\tInsuranceConstants.policyTermStatusTypes.active);\r\n\r\n\t\tif (!AnyHelper.isNull(activePolicyTermInstance))\r\n\t\t{\r\n\t\t\treturn activePolicyTermInstance;\r\n\t\t}\r\n\r\n\t\tactivePolicyTermInstance =\r\n\t\t\tentityRelationships.find((instance: IEntityInstance) =>\r\n\t\t\t\tinstance.data.status ===\r\n\t\t\t\t\tInsuranceConstants.policyTermStatusTypes.pending);\r\n\r\n\t\treturn activePolicyTermInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy instance by policy term id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance related to the policy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyByPolicyTermId(\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getParents(\r\n\t\t\t\t\tpolicyTermId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term instance by policy term transaction id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} transactionId\r\n\t * The policy term transaction id.\r\n\t * @param {string} transactionEntityTypeGroup\r\n\t * The policy term transaction entity type group.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance related to the policy term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermByTransaction(\r\n\t\ttransactionId: number,\r\n\t\ttransactionEntityTypeGroup: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = transactionEntityTypeGroup;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getParents(\r\n\t\t\t\t\ttransactionId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term instance by id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance related to the policy term.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\t public async getPolicyTerm(\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst policyTermInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\treturn policyTermInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all policy term instances by policy id that are not archived\r\n\t * or obsolete unless specified otherwise.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {boolean} [includeArchived=false]\r\n\t * Optional parameter to include archived transaction types.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance array\r\n\t * related to the policy term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermsByPolicyId(\r\n\t\tpolicyId: number,\r\n\t\tincludeArchived: boolean = false): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\tlet filter = `${AppConstants.commonProperties.status} ne `\r\n\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.obsolete}'`;\r\n\r\n\t\tif (!includeArchived) {\r\n\t\t\tfilter += ` and ${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.archived}'`;\r\n\t\t}\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\treturn entityRelationships;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets latest policy term by policy id that are not archived.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {boolean} [includeArchived=false]\r\n\t * Optional parameter to include archived transaction types.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance\r\n\t * related to the latest policy term.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getLatestPolicyTermByPolicyId(\r\n\t\tpolicyId: number,\r\n\t\tincludeArchived: boolean = false): Promise\r\n\t{\r\n\t\tlet filter = AppConstants.empty;\r\n\t\tif (!includeArchived) {\r\n\t\t\tfilter += `${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.archived}'`;\r\n\t\t}\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\t'Id desc',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all policy term instances by policy id that are not archived\r\n\t * or obsolete unless specified otherwise.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance array\r\n\t * related to the policy term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getOriginalPolicyTermByPolicyId(\r\n\t\tpolicyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\t'renewalTerm eq \\'0\\'',\r\n\t\t\t\t\t'Id asc',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Product instance by name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} productName\r\n\t * The product name.\r\n\t * @return {Promise}\r\n\t * The product instance that matches the product name.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getProductByName(\r\n\t\tproductName: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst productInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq '${productName}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn productInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Product of a transaction.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} transaction\r\n\t * The transaction.\r\n\t * @return {Promise}\r\n\t * The product instance to which the transaction belongs.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getProductByTransaction(\r\n\t\ttransaction: IEntityInstance): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst transactionType: IEntityType =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.name === transaction.entityType);\r\n\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\ttransaction.id,\r\n\t\t\t\ttransactionType.group);\r\n\r\n\t\treturn this.getProductByName(\r\n\t\t\tpolicyTerm.data.productName);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term transaction entity type by group name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} group\r\n\t * The group name.\r\n\t * @return {Promise}\r\n\t * The policy term transaction entity type that matches the group name.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermTransactionEntityType(\r\n\t\tgroup: string): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst policyTermTransactionEntityType: IEntityType =\r\n\t\t\t this.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.group === group);\r\n\r\n\t\treturn policyTermTransactionEntityType;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the entity type that matches the name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} name\r\n\t * The entity type name.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityType.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getEntityTypeFromName(\r\n\t\tname: string): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\treturn this.entityService\r\n\t\t\t.entityTypes\r\n\t\t\t.find(\r\n\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\tentityType.name === name);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the latest child transaction of the sent policy term id be effective\r\n\t * date. If status or type is sent, this will filter those results to that\r\n\t * matching status, type, or both.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id to find a child policy term transaction for.\r\n\t * @param {string} transactionEntityTypeGroup\r\n\t * The policy term transaction type to get latest for.\r\n\t * @param {string} transactionType\r\n\t * If sent, this will filter the result set to only those with a matching\r\n\t * transaction type. The status filter will also be applied if sent.\r\n\t * @param {string} transactionStatus\r\n\t * If sent, this will filter the result set to only those with a matching\r\n\t * transaction status. The type filter will also be applied if sent.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance that signifies the latest policy term\r\n\t * transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getLatestPolicyTermTransaction(\r\n\t\tpolicyTermId: number,\r\n\t\ttransactionEntityTypeGroup: string,\r\n\t\ttransactionType: string = AppConstants.empty,\r\n\t\ttransactionStatus: string = AppConstants.empty):\r\n\t\t\tPromise\r\n\t{\r\n\t\tconst typeFilter: string =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(transactionType)\r\n\t\t\t\t? `${AppConstants.commonProperties.type} eq `\r\n\t\t\t\t\t+ `'${transactionType}'`\r\n\t\t\t\t: AppConstants.empty;\r\n\t\tconst statusFilter: string =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(transactionStatus)\r\n\t\t\t\t? `${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `'${transactionStatus}'`\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tlet combinedFilter: string = AppConstants.empty;\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase !AnyHelper.isNullOrWhitespace(typeFilter)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(statusFilter):\r\n\t\t\t\tcombinedFilter = typeFilter;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AnyHelper.isNullOrWhitespace(typeFilter)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(statusFilter):\r\n\t\t\t\tcombinedFilter = statusFilter;\r\n\t\t\t\tbreak;\r\n\t\t\tcase !AnyHelper.isNullOrWhitespace(typeFilter)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(statusFilter):\r\n\t\t\t\tcombinedFilter = `${typeFilter} AND ${statusFilter}`;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst entityTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyTermId,\r\n\t\t\t\t\tcombinedFilter,\r\n\t\t\t\t\t`${InsuranceConstants.commonProperties.effectiveDate} `\r\n\t\t\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\t\t\t0,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\ttransactionEntityTypeGroup);\r\n\r\n\t\treturn entityTransactions.length > 0\r\n\t\t\t? entityTransactions[0]\r\n\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t* Gets the latest policy term transaction associated to the policy term id.\r\n\t* This method will filter obsolete\r\n\t* transactions and optionally filter archived transactions.\r\n\t*\r\n\t* @async\r\n\t* @param {number} policyTermId\r\n\t* The policy term id.\r\n\t* @param {boolean} [includeArchived=false]\r\n\t* Optional parameter to include archived transaction types.\r\n\t* @returns {Promise}\r\n\t* An awaitable IEntityInstance related to the policy.\r\n\t* @memberof InsuranceService\r\n\t*/\r\n\tpublic async getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\tpolicyTermId: number,\r\n\t\tincludeArchived: boolean = false): Promise\r\n\t{\r\n\t\tconst policyTermInstance: IEntityInstance =\r\n\t\t\tawait this.getPolicyTerm(policyTermId);\r\n\r\n\t\tconst policyTermTransactionTypeGroup: string =\r\n\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t+ `${policyTermInstance.data.productName}`;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tlet filter = `${AppConstants.commonProperties.status} ne `\r\n\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.obsolete}'`;\r\n\r\n\t\tif (!includeArchived) {\r\n\t\t\tfilter += ` and ${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.archived}'`;\r\n\t\t}\r\n\r\n\t\tconst policyTermTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tpolicyTermId,\r\n\t\t\t\tfilter,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tpolicyTermTransactionTypeGroup);\r\n\r\n\t\treturn policyTermTransactions[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the latest policy term transaction associated to the policy id.\r\n\t * This method will filter obsolete and archived transactions and will use\r\n\t * the latest active policy term.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy term id.\r\n\t * @returns {Promise}\r\n\t * An awaitable IEntityInstance related to the policy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getLatestPolicyTermTransactionByPolicy(\r\n\t\tpolicyId: number): Promise\r\n\t{\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tawait this.getActivePolicyTerm(policyId);\r\n\r\n\t\treturn this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\tpolicyTerm.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds policy forms to the policy term passed.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term for which to get the forms.\r\n\t * @returns {Promise}\r\n\t * An awaitable object with the forms.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getForms(\r\n\t\tpolicyTerm: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst response: any\r\n\t\t\t= await this.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t\t'GetFormFiles',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t'generatorFilter=Tags.Contains(\"PolicyForm\")');\r\n\r\n\t\tconst actionResponse: IActionResponseDto = response.body;\r\n\r\n\t\tconst forms: IFileEntity[] = actionResponse.value;\r\n\r\n\t\tconst loadedForms: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tcount: forms.length,\r\n\t\t\t\tforms: forms\r\n\t\t\t};\r\n\r\n\t\treturn loadedForms;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets insurance references from a transaction, term, or policy instance.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} entity\r\n\t * The entity to get references for.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group to get references for.\r\n\t * @returns {Promise}\r\n\t * An awaitable references object holding related insurance identifiers.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getInsuranceReferences(\r\n\t\tentity: IEntityInstance,\r\n\t\tentityTypeGroup: string): Promise\r\n\t{\r\n\t\tconst insuranceReferences: IInsuranceReferences =\r\n\t\t\t{\r\n\t\t\t\tpolicyNumber: entity.data.policyNumber\r\n\t\t\t};\r\n\r\n\t\tif (entityTypeGroup ===\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t{\r\n\t\t\tinsuranceReferences.renewalTerm = entity.data.renewalTerm;\r\n\t\t}\r\n\t\telse if (entityTypeGroup !==\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies)\r\n\t\t{\r\n\t\t\tconst policyTerm: IEntityInstance =\r\n\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\tentity.id,\r\n\t\t\t\t\tentityTypeGroup);\r\n\t\t\tinsuranceReferences.renewalTerm =\r\n\t\t\t\tpolicyTerm.data.renewalTerm;\r\n\t\t\tinsuranceReferences.transactionNumber =\r\n\t\t\t\tentity.data.transactionNumber;\r\n\t\t}\r\n\r\n\t\treturn insuranceReferences;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets active product payment plan definitions based on the sent entity\r\n\t * id of a policy term or policy term transaction.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id of the policy term or term transaction.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of policy term or term transaction.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of enabled product payment plan definitions based\r\n\t * on the policy term effective date.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getActiveProductPaymentPlanDefinitions(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\tinvoiceToResourceId: string = null): Promise\r\n\t{\r\n\t\tlet product: IEntityInstance;\r\n\t\tlet policyTerm: IEntityInstance;\r\n\r\n\t\tif (entityTypeGroup ===\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityTypeGroup;\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.get(entityId);\r\n\t\t\tproduct =\r\n\t\t\t\tawait this.getProductByName(\r\n\t\t\t\t\tpolicyTerm.data.productName);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\tentityId,\r\n\t\t\t\t\tentityTypeGroup);\r\n\t\t\tproduct =\r\n\t\t\t\tawait this.getProductByName(\r\n\t\t\t\t\tpolicyTerm.data.productName);\r\n\t\t}\r\n\r\n\t\tconst policyTermEffectiveDate: DateTime =\r\n\t\t\tDateHelper.fromUtcIso(policyTerm.data.effectiveDate);\r\n\r\n\t\tconst interestResourceId: string =\r\n\t\t\tinvoiceToResourceId ?? policyTerm.data.preferences?.invoiceTo;\r\n\r\n\t\tconst transaction: IEntityInstance =\r\n\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\tpolicyTerm.id);\r\n\r\n\t\tconst selectedInterest: any =\r\n\t\t\ttransaction.data.interests\r\n\t\t\t\t.find((interest: any) =>\r\n\t\t\t\t\tinterest.resourceIdentifier === interestResourceId);\r\n\r\n\t\tconst supportedInvoiceInterests: string[] =\r\n\t\t\tproduct.data.billing.supportedInvoiceInterests;\r\n\r\n\t\treturn product.data.billing.paymentPlans.filter(\r\n\t\t\t(paymentPlan: any) =>\r\n\t\t\t\tpaymentPlan.enabled === true\r\n\t\t\t\t\t&& (AnyHelper.isNull(paymentPlan.termLength)\r\n\t\t\t\t\t\t|| paymentPlan.termLength ===\r\n\t\t\t\t\t\t\tpolicyTerm.data.termLength)\r\n\t\t\t\t\t&& policyTermEffectiveDate >=\r\n\t\t\t\t\t\tDateHelper.fromUtcIso(paymentPlan.startDate)\r\n\t\t\t\t\t&& policyTermEffectiveDate <\r\n\t\t\t\t\t\tDateHelper.fromUtcIso(paymentPlan.endDate)\r\n\t\t\t\t\t&& ((AnyHelper.isNull(selectedInterest))\r\n\t\t\t\t\t\t|| ((!AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\tpaymentPlan.settings.enabledInvoiceInterests)\r\n\t\t\t\t\t\t\t&& (paymentPlan.settings\r\n\t\t\t\t\t\t\t\t.enabledInvoiceInterests)\r\n\t\t\t\t\t\t\t\t.includes(selectedInterest.type))\r\n\t\t\t\t\t\t\t|| ((AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\t\tpaymentPlan.settings.enabledInvoiceInterests)\r\n\t\t\t\t\t\t\t\t&& !AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\t\t\tsupportedInvoiceInterests))\r\n\t\t\t\t\t\t\t\t\t&& supportedInvoiceInterests\r\n\t\t\t\t\t\t\t\t\t\t.includes(selectedInterest.type)))));\r\n\t}\r\n\r\n\t/**\r\n\t * Generates and returns a draft payment plan schedule based on the\r\n\t * sent parameters.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id of the policy term or term transaction.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of policy term or term transaction.\r\n\t * @param {string} paymentPlanId\r\n\t * The draft payment plan id. If not sent this will default to the stored\r\n\t * term accounting payment schedule payment plan id.\r\n\t * @param {string} paymentPlanName\r\n\t * The draft payment plan name. If not sent this will default to the stored\r\n\t * term preferences payment plan selection.\r\n\t * @param {string} paymentPlanVersion\r\n\t * The draft payment plan version. If not sent this will default to the\r\n\t * stored term accounting payment schedule payment plan version.\r\n\t * @param {DateTime} startDate\r\n\t * The start date for this payment schedule. If not sent this will default\r\n\t * to the stored term effective date.\r\n\t * @param {DateTime} targetDate\r\n\t * The target date for this payment schedule. If not sent this will default\r\n\t * to the stored term effective date.\r\n\t * @param {boolean} includeFutureTransactionAccountingData\r\n\t * Whether or not to include a future issued transaction's written values\r\n\t * for making this draft. This will udpate the term accounting object\r\n\t * sent to account for the payment at the effective date of the future\r\n\t * transaction.\r\n\t * @param {boolean} rebasePaymentPlan\r\n\t * Whether or not to rebase this payment plan, this value defaults to false.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of payments that map to the sent parameters of this\r\n\t * request based on an existing policy term or term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async generateDraftPaymentPlanSchedule(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\tpaymentPlanId: string = null,\r\n\t\tpaymentPlanName: string = null,\r\n\t\tpaymentPlanVersion: string = null,\r\n\t\tstartDate: DateTime = null,\r\n\t\ttargetDate: DateTime = null,\r\n\t\tincludeFutureTransactionAccountingData: boolean = false,\r\n\t\trebasePaymentPlan: boolean = false): Promise\r\n\t{\r\n\t\tlet policyTerm: IEntityInstance;\r\n\r\n\t\tif (entityTypeGroup ===\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityTypeGroup;\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.entityInstanceApiService.get(entityId);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\tentityId,\r\n\t\t\t\t\tentityTypeGroup);\r\n\t\t}\r\n\r\n\t\t// Map default values.\r\n\t\tconst mappedPaymentPlanId =\r\n\t\t\tpaymentPlanId ??\r\n\t\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan.id;\r\n\t\tconst mappedPaymentPlanName =\r\n\t\t\tpaymentPlanName ??\r\n\t\t\t\tpolicyTerm.data.preferences.paymentPlan;\r\n\t\tconst mappedPaymentPlanVersion =\r\n\t\t\tpaymentPlanVersion ??\r\n\t\t\t\tpolicyTerm.data.accounting.paymentSchedule.paymentPlan.version;\r\n\t\tconst mappedStartDate: any =\r\n\t\t\tAnyHelper.isNull(startDate)\r\n\t\t\t\t? DateHelper.fromUtcIso(policyTerm.data.effectiveDate)\r\n\t\t\t\t: startDate;\r\n\t\tconst mappedTargetDate: any =\r\n\t\t\tAnyHelper.isNull(targetDate)\r\n\t\t\t\t? mappedStartDate\r\n\t\t\t\t: targetDate;\r\n\r\n\t\t// Set the request entity as though this selection was made.\r\n\t\t// This value will not be saved.\r\n\t\tpolicyTerm =\r\n\t\t\tInsuranceHelper.modifyPolicyTermPaymentPlan(\r\n\t\t\t\tpolicyTerm,\r\n\t\t\t\tmappedPaymentPlanId,\r\n\t\t\t\tmappedPaymentPlanName,\r\n\t\t\t\tmappedPaymentPlanVersion);\r\n\r\n\t\t// Generate the payment schedule.\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\treturn this.entityInstanceApiService.executeAction(\r\n\t\t\tpolicyTerm.id,\r\n\t\t\t'GenerateDraftPaymentSchedule',\r\n\t\t\tpolicyTerm,\r\n\t\t\t`?paymentPlanId=${mappedPaymentPlanId}`\r\n\t\t\t\t+ `&startDate=${mappedStartDate}`\r\n\t\t\t\t+ `&targetDate=${mappedTargetDate}`\r\n\t\t\t\t+ '&isDraft=true'\r\n\t\t\t\t+ `&rebase=${rebasePaymentPlan}`\r\n\t\t\t\t+ '&includePendingTransaction='\r\n\t\t\t\t+ includeFutureTransactionAccountingData);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a description used to display a policy term invoice to value.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id to find an invoice to description for.\r\n\t * @param {string} invoiceToResourceIdentifier\r\n\t * The interest's resource identifier that identifies an interest on the\r\n\t * latest transaction.\r\n\t * @returns {Promise}\r\n\t * An awaitable description of the interest name whether an organization\r\n\t * or an individual.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermInvoiceToDescription(\r\n\t\tpolicyTermId: number,\r\n\t\tinvoiceToResourceIdentifier: string): Promise\r\n\t{\r\n\t\tconst latestTransaction: IEntityInstance =\r\n\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tconst invoiceTo: any =\r\n\t\t\tlatestTransaction.data.interests\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(interest: any) =>\r\n\t\t\t\t\t\tinterest.resourceIdentifier ===\r\n\t\t\t\t\t\t\tinvoiceToResourceIdentifier);\r\n\r\n\t\tif (AnyHelper.isNull(invoiceTo))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(invoiceTo.characteristics?.name?.type))\r\n\t\t{\r\n\t\t\treturn StringHelper.toNameString(\r\n\t\t\t\tinvoiceTo.characteristics?.name?.firstName,\r\n\t\t\t\tinvoiceTo.characteristics?.name?.lastName,\r\n\t\t\t\tinvoiceTo.characteristics?.name?.legalName);\r\n\t\t}\r\n\r\n\t\treturn SharedTypeConstants.individualTypes.includes(\r\n\t\t\tinvoiceTo.characteristics.name.type)\r\n\t\t\t? StringHelper.toNameString(\r\n\t\t\t\tinvoiceTo.characteristics?.name?.firstName,\r\n\t\t\t\tinvoiceTo.characteristics?.name?.lastName)\r\n\t\t\t: StringHelper.toNameString(\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tinvoiceTo.characteristics?.name?.legalName);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term supported invoice interests.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id to get the invoice to interests.\r\n\t * @returns {Promise}\r\n\t * The applicable invoice to interests that matches the product\r\n\t * invoice to interests pre-defined from configuration.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermSupportedInvoiceInterests(\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tconst latestTransaction: IEntityInstance =\r\n\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.getProductByTransaction(latestTransaction);\r\n\r\n\t\tconst productInvoiceToInterests: string[] =\r\n\t\t\tproduct.data.billing.supportedInvoiceInterests;\r\n\t\tconst transactionInterests: any[] =\r\n\t\t\tlatestTransaction.data.interests;\r\n\r\n\t\treturn transactionInterests.filter(\r\n\t\t\t(transactionInterest) =>\r\n\t\t\t\tproductInvoiceToInterests.some(\r\n\t\t\t\t\t(productInvoiceToInterest) =>\r\n\t\t\t\t\t\tproductInvoiceToInterest === transactionInterest.type));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a description used to display a reason in a term, transaction, or\r\n\t * policy.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id to find reason descriptions for.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group to find reason descriptions for.\r\n\t * @param {string} reasonId\r\n\t * The reason id.\r\n\t * @param {string} productName\r\n\t * If this is available, this will be the product name to look up reasons\r\n\t * against.\r\n\t * @returns {Promise}\r\n\t * An awaitable description related to the reason.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getReasonDescription(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\treasonId: string,\r\n\t\tproductName: string = AppConstants.empty): Promise\r\n\t{\r\n\t\tlet productIdentifier: string = productName;\r\n\t\tif (AnyHelper.isNullOrWhitespace(productIdentifier))\r\n\t\t{\r\n\t\t\tif (entityTypeGroup ===\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies)\r\n\t\t\t{\r\n\t\t\t\tconst policyTerms: IEntityInstance[] =\r\n\t\t\t\t\tawait this.getPolicyTermsByPolicyId(entityId);\r\n\r\n\t\t\t\tif (AnyHelper.isNull(policyTerms[0]))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tproductIdentifier = policyTerms[0].data.productName;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst policyTerm: IEntityInstance =\r\n\t\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\t\tentityId,\r\n\t\t\t\t\t\tentityTypeGroup);\r\n\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(policyTerm))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tproductIdentifier = policyTerm.data.productName;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.getProductByName(productIdentifier);\r\n\r\n\t\tif (AnyHelper.isNull(product?.data))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn product.data.reasons?.find(\r\n\t\t\t(reason: any) =>\r\n\t\t\t\treason.id === reasonId)?.description;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of policy term accounting payment schedule payments, this\r\n\t * will translate that data into a summary output.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id of the policy term or term transaction.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of policy term or term transaction.\r\n\t * @param {string} paymentSchedulePayments\r\n\t * The set of payments to map into a summary display.\r\n\t * @param {boolean} includeUninvoicedOperationalFees\r\n\t * Determines whether the payment schedule should include\r\n\t * uninvoiced operational fees.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of summaries displaying common information used\r\n\t * in payment displays and accounting.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async mapPaymentSchedulePaymentSummary(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\tpaymentSchedulePayments: any[],\r\n\t\tincludeUninvoicedOperationalFees: boolean = false):\r\n\t\t\tPromise\r\n\t{\r\n\t\tlet policyTerm: IEntityInstance;\r\n\t\tlet ledger: IEntityInstance;\r\n\r\n\t\tif (entityTypeGroup !==\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t{\r\n\t\t\tpolicyTerm =\r\n\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\tentityId,\r\n\t\t\t\t\tentityTypeGroup);\r\n\t\t\tledger =\r\n\t\t\t\tawait this.getLedger(\r\n\t\t\t\t\tpolicyTerm.id);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tledger =\r\n\t\t\t\tawait this.getLedger(\r\n\t\t\t\t\tentityId);\r\n\t\t}\r\n\r\n\t\tconst ledgerTransactions: IEntityInstance[] =\r\n\t\t\tawait this.getLedgerTransactions(\r\n\t\t\t\tledger.id,\r\n\t\t\t\t`type eq \\\"${InsuranceConstants\r\n\t\t\t\t\t.ledgerTransactionTypes\r\n\t\t\t\t\t.payment}\\\" `\r\n\t\t\t\t\t+ ` or adjustmentType eq \\\"${InsuranceConstants\r\n\t\t\t\t\t\t.ledgerTransactionAdjustmentTypes\r\n\t\t\t\t\t\t.writeOff}\\\"`);\r\n\r\n\t\tlet totalPaid: number =\r\n\t\t\t-1 * ledgerTransactions\r\n\t\t\t\t.reduce(\r\n\t\t\t\t\t(sum: number,\r\n\t\t\t\t\t\titem: IEntityInstance) =>\r\n\t\t\t\t\t\tsum\r\n\t\t\t\t\t\t\t+ item.data.amount,\r\n\t\t\t\t\t0);\r\n\r\n\t\tlet balanceForward: number = 0;\r\n\r\n\t\treturn paymentSchedulePayments.map(\r\n\t\t\t(payment: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst operationalFeeTotal: number =\r\n\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\tpayment.details\r\n\t\t\t\t\t\t\t.operationalFees);\r\n\t\t\t\tconst invoicedOperationalFeeTotal: number =\r\n\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\tpayment.details\r\n\t\t\t\t\t\t\t.operationalFees\r\n\t\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t\t(operationalFee: any) =>\r\n\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\toperationalFee\r\n\t\t\t\t\t\t\t\t\t\t\t.referenceId)));\r\n\r\n\t\t\t\t// Count operational fees that have been invoiced\r\n\t\t\t\t// based on the flag.\r\n\t\t\t\tconst invoicedAmountDue: number =\r\n\t\t\t\t\tpayment.amount\r\n\t\t\t\t\t\t+ (!includeUninvoicedOperationalFees\r\n\t\t\t\t\t\t\t? -operationalFeeTotal\r\n\t\t\t\t\t\t\t\t+ invoicedOperationalFeeTotal\r\n\t\t\t\t\t\t\t: 0);\r\n\r\n\t\t\t\tlet amountDue: number =\r\n\t\t\t\t\tinvoicedAmountDue;\r\n\r\n\t\t\t\tif (totalPaid > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (totalPaid > amountDue)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttotalPaid -= amountDue;\r\n\t\t\t\t\t\tamountDue = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tamountDue =\r\n\t\t\t\t\t\t\tamountDue\r\n\t\t\t\t\t\t\t\t- totalPaid;\r\n\t\t\t\t\t\ttotalPaid = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbalanceForward += amountDue;\r\n\r\n\t\t\t\tconst currentDate: DateTime =\r\n\t\t\t\t\tDateHelper.getSystemDateTime();\r\n\t\t\t\tconst dueDate: DateTime =\r\n\t\t\t\t\tDateHelper.fromUtcIso(payment.date);\r\n\t\t\t\tconst realizationDate: DateTime =\r\n\t\t\t\t\tDateHelper.fromUtcIso(payment.realizationDate);\r\n\t\t\t\tconst pastDuePayment: boolean =\r\n\t\t\t\t\tamountDue > 0\r\n\t\t\t\t\t\t&& dueDate <= currentDate;\r\n\t\t\t\tconst realizedPayment: boolean =\r\n\t\t\t\t\tamountDue > 0\r\n\t\t\t\t\t\t&& realizationDate <= currentDate;\r\n\r\n\t\t\t\tconst annualStatementLines: number =\r\n\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\tpayment.details.writtenAmount\r\n\t\t\t\t\t\t\t.annualStatementLines);\r\n\t\t\t\tconst fees: number =\r\n\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\tpayment.details.writtenAmount\r\n\t\t\t\t\t\t\t.fees);\r\n\t\t\t\tconst taxes: number =\r\n\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\tpayment.details.writtenAmount\r\n\t\t\t\t\t\t\t.taxes);\r\n\r\n\t\t\t\tconst statusIcon: string =\r\n\t\t\t\t\tthis.getPaymentStatusIcon(\r\n\t\t\t\t\t\tpastDuePayment,\r\n\t\t\t\t\t\tamountDue,\r\n\t\t\t\t\t\tinvoicedAmountDue);\r\n\r\n\t\t\t\treturn \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdate:\r\n\t\t\t\t\t\t\tdueDate,\r\n\t\t\t\t\t\trealizationDate:\r\n\t\t\t\t\t\t\trealizationDate,\r\n\t\t\t\t\t\tpastDuePayment:\r\n\t\t\t\t\t\t\tpastDuePayment,\r\n\t\t\t\t\t\trealizedPayment:\r\n\t\t\t\t\t\t\trealizedPayment,\r\n\t\t\t\t\t\tdue:\r\n\t\t\t\t\t\t\tamountDue,\r\n\t\t\t\t\t\tpaymentAmountDue:\r\n\t\t\t\t\t\t\tamountDue,\r\n\t\t\t\t\t\tpaymentBalanceForward:\r\n\t\t\t\t\t\t\tbalanceForward - amountDue,\r\n\t\t\t\t\t\trealizedPaymentBalanceForward:\r\n\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tinitialAmountDue:\r\n\t\t\t\t\t\t\tinvoicedAmountDue,\r\n\t\t\t\t\t\tstatusIcon:\r\n\t\t\t\t\t\t\tstatusIcon,\r\n\t\t\t\t\t\tstatusIconTooltip:\r\n\t\t\t\t\t\t\tthis.getPaymentStatusIconTooltip(\r\n\t\t\t\t\t\t\t\tstatusIcon),\r\n\t\t\t\t\t\tpremium:\r\n\t\t\t\t\t\t\tannualStatementLines\r\n\t\t\t\t\t\t\t\t+ fees\r\n\t\t\t\t\t\t\t\t+ taxes,\r\n\t\t\t\t\t\tfees:\r\n\t\t\t\t\t\t\toperationalFeeTotal,\r\n\t\t\t\t\t\tadjustments:\r\n\t\t\t\t\t\t\tthis.sumPaymentDetailSplitOuts(\r\n\t\t\t\t\t\t\t\tpayment.details\r\n\t\t\t\t\t\t\t\t\t.adjustments),\r\n\t\t\t\t\t\tinstallmentWrittenPremium:\r\n\t\t\t\t\t\t\tannualStatementLines,\r\n\t\t\t\t\t\tinstallmentWrittenFees:\r\n\t\t\t\t\t\t\tfees,\r\n\t\t\t\t\t\tinstallmentWrittenTaxes:\r\n\t\t\t\t\t\t\ttaxes,\r\n\t\t\t\t\t\toperationalFees:\r\n\t\t\t\t\t\t\tpayment.details\r\n\t\t\t\t\t\t\t\t.operationalFees\r\n\t\t\t\t\t};\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of policy term accounting payment schedule payments, this\r\n\t * will translate that data into summary outputs representing remaining due\r\n\t * payments.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id of the policy term or term transaction.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of policy term or term transaction.\r\n\t * @param {string} paymentSchedulePayments\r\n\t * The set of payments to map into a summary display or a previously\r\n\t * summarized set of payment data.\r\n\t * @param {bool} loadFromAccountingPayments\r\n\t * If sent and false, this will use the existing payment schedule payments.\r\n\t * If not sent or true, this will load the full summary data from\r\n\t * the data accounting payment schedule.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of remaining payment due summaries displaying common\r\n\t * information used in payment displays and accounting.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getRemainingPaymentSummaries(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\tpaymentSchedulePayments: any[],\r\n\t\tloadFromAccountingPayments: boolean = true):\r\n\t\tPromise\r\n\t{\r\n\t\tconst paymentSummary: IInsurancePaymentSummary[] =\r\n\t\t\tloadFromAccountingPayments === true\r\n\t\t\t\t? await this.mapPaymentSchedulePaymentSummary(\r\n\t\t\t\t\tentityId,\r\n\t\t\t\t\tentityTypeGroup,\r\n\t\t\t\t\tpaymentSchedulePayments)\r\n\t\t\t\t: paymentSchedulePayments;\r\n\r\n\t\treturn paymentSummary.filter(\r\n\t\t\t(payment: IInsurancePaymentSummary) =>\r\n\t\t\t\tpayment.due > 0.005);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of policy term accounting payment schedule payments, this\r\n\t * will translate that data into the next summary output from the set of\r\n\t * remaining due payments.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id of the policy term or term transaction.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of policy term or term transaction.\r\n\t * @param {string} paymentSchedulePayments\r\n\t * The set of payments to map into a summary display or a previously\r\n\t * summarized set of payment data.\r\n\t * @param {bool} loadFromAccountingPayments\r\n\t * If sent and false, this will use the existing payment schedule payments.\r\n\t * If not sent or true, this will load the full summary data from\r\n\t * the data accounting payment schedule.\r\n\t * @returns {Promise}\r\n\t * An awaitable remaining payment due summary displaying common\r\n\t * information used in payment displays and accounting.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getNextInstallmentPayment(\r\n\t\tentityId: number,\r\n\t\tentityTypeGroup: string,\r\n\t\tpaymentSchedulePayments: any[],\r\n\t\tloadFromAccountingPayments: boolean = true):\r\n\t\tPromise\r\n\t{\r\n\t\tconst remainingAmountDuePaymentSummaries: IInsurancePaymentSummary[] =\r\n\t\t\tawait this.getRemainingPaymentSummaries(\r\n\t\t\t\tentityId,\r\n\t\t\t\tentityTypeGroup,\r\n\t\t\t\tpaymentSchedulePayments,\r\n\t\t\t\tloadFromAccountingPayments);\r\n\r\n\t\tconst pastDuePayments: IInsurancePaymentSummary[] =\r\n\t\t\tremainingAmountDuePaymentSummaries\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(paymentSummary: IInsurancePaymentSummary) =>\r\n\t\t\t\t\t\tpaymentSummary.pastDuePayment === true);\r\n\t\tconst realizedPayments: IInsurancePaymentSummary[] =\r\n\t\t\tremainingAmountDuePaymentSummaries\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(paymentSummary: IInsurancePaymentSummary) =>\r\n\t\t\t\t\t\tpaymentSummary.realizedPayment === true\r\n\t\t\t\t\t\t\t&& paymentSummary.pastDuePayment === false);\r\n\r\n\t\tlet matchingPayment: IInsurancePaymentSummary = null;\r\n\t\tif (pastDuePayments.length > 0\r\n\t\t\t&& realizedPayments.length === 0)\r\n\t\t{\r\n\t\t\tmatchingPayment =\r\n\t\t\t\tpastDuePayments[pastDuePayments.length - 1];\r\n\t\t}\r\n\t\telse if (realizedPayments.length > 0)\r\n\t\t{\r\n\t\t\tmatchingPayment =\r\n\t\t\t\trealizedPayments[0];\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(matchingPayment))\r\n\t\t{\r\n\t\t\tmatchingPayment.due =\r\n\t\t\t\tmatchingPayment.due + matchingPayment.paymentBalanceForward;\r\n\t\t\tmatchingPayment.realizedPaymentBalanceForward =\r\n\t\t\t\tMath.max(\r\n\t\t\t\t\tmatchingPayment.paymentBalanceForward,\r\n\t\t\t\t\tmatchingPayment.realizedPaymentBalanceForward);\r\n\t\t\tmatchingPayment.paymentBalanceForward = 0;\r\n\r\n\t\t\treturn matchingPayment;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a work item business logic entity.\r\n\t *\r\n\t * @param instance\r\n\t * An entity instance of a work itew.\r\n\t * @returns {WorkItem}\r\n\t * The work item business logic entity.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic getWorkItem(instance: IWorkItem): WorkItem\r\n\t{\r\n\t\treturn new WorkItem(\r\n\t\t\tinstance,\r\n\t\t\tthis.resolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a transaction business logic entity.\r\n\t *\r\n\t * @param instance\r\n\t * An entity instance of a work itew.\r\n\t * @returns {Transaction}\r\n\t * The transaction business logic entity.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic getTransaction(instance: IEntityInstance): Transaction\r\n\t{\r\n\t\treturn new Transaction(\r\n\t\t\tinstance,\r\n\t\t\tthis.resolverService);\r\n\t}\r\n\r\n\t/**\r\n\t * refreshes components.\r\n\t *\r\n\t * @param {string[]} components\r\n\t * the component name.\r\n\t * @param {string} targetType\r\n\t * The target type to refresh\r\n\t * @param {boolean} refreshBadges\r\n\t * If sent and false, this will not refresh the badges of this component,\r\n\t * this value defaults to true.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic refreshComponents(\r\n\t\tcomponents: string[],\r\n\t\ttargetType: string,\r\n\t\trefreshBadges: boolean = true)\r\n\t{\r\n\t\tEventHelper.refreshComponents(\r\n\t\t\tcomponents,\r\n\t\t\ttargetType);\r\n\r\n\t\tif (refreshBadges)\r\n\t\t{\r\n\t\t\tthis.refreshBadges(\r\n\t\t\t\tcomponents,\r\n\t\t\t\ttargetType);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * refreshes badges.\r\n\t *\r\n\t * @param {string[]} components\r\n\t * the component name.\r\n\t * @param {string} targetType\r\n\t * The target type to refresh\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic refreshBadges(\r\n\t\tcomponents: string[],\r\n\t\ttargetType: string) {\r\n\t\tEventHelper.dispatchRefreshBadgePromiseEvents(\r\n\t\t\tcomponents,\r\n\t\t\ttargetType);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Ledger instance data associated to the current PolicyTerm\r\n\t * instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The PolicyTerm entity instance id.\r\n\t * @return {Promise}\r\n\t * The Ledger instance.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getLedger(\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst ledgerInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tpolicyTermId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t.ledger);\r\n\r\n\t\treturn ledgerInstances[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Ledger instance data associated to the current Agency\r\n\t * instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} agencyId\r\n\t * The Agency entity instance id.\r\n\t * @return {Promise}\r\n\t * The Ledger instance.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getAgencyLedger(\r\n\t\tagencyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies;\r\n\r\n\t\tconst ledgerInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tagencyId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t.ledger);\r\n\r\n\t\treturn ledgerInstances[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the LedgerTransacion entity instances associated to the current\r\n\t * Ledger instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} ledgerId\r\n\t * The Ledger entity instance id.\r\n\t * @return {Promise}\r\n\t * The LedgerTransaction instances array.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getLedgerTransactions(\r\n\t\tledgerId: number,\r\n\t\tfilter: string = null): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.ledger;\r\n\r\n\t\tconst ledgerTransactionInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tledgerId,\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t.ledgerTransaction);\r\n\r\n\t\treturn ledgerTransactionInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Get a value indicating true if submission is enabled on the product.\r\n\t *\r\n\t * @async\r\n\t * @returns {boolean}\r\n\t * The value indicating true if it is enabled, false if not.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async productSubmissionEnabled(\r\n\t\ttransaction: IEntityInstance): Promise\r\n\t{\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.getProductByTransaction(transaction);\r\n\r\n\t\treturn product\r\n\t\t\t.data\r\n\t\t\t.submit\r\n\t\t\t.enabled;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the organization's user groups.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} organization\r\n\t * @returns {Promise}\r\n\t * A modified list of security groups that conatinsa display names.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getOrganizationUserGroups(\r\n\t\torganization: IEntityInstance): Promise\r\n\t{\r\n\t\tconst organizationType: string =\r\n\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\torganization.entityType,\r\n\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\tconst filter: string =\r\n\t\t\t`Name.StartsWith('${organizationType}_${organization.id}_')`;\r\n\r\n\t\tconst groups: ISecurityGroupDto[] =\r\n\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\t'Id');\r\n\r\n\t\treturn groups.map(\r\n\t\t\t(group: ISecurityGroupDto) =>\r\n\t\t\t\t(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...group,\r\n\t\t\t\t\t\tdisplayName: StringHelper\r\n\t\t\t\t\t\t\t.beforeCapitalSpaces(StringHelper\r\n\t\t\t\t\t\t\t\t.getLastSplitValue(\r\n\t\t\t\t\t\t\t\t\tgroup.name,\r\n\t\t\t\t\t\t\t\t\t'_'))\r\n\t\t\t\t\t}\r\n\t\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the organization's user groups input items.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} organization\r\n\t * @returns {Promise}\r\n\t * A modified list of security groups input items.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async GetOrganizationSecurityGroupInputItems(\r\n\t\torganization: IEntityInstance): Promise\r\n\t{\r\n\t\tconst securityGroups: any[] =\r\n\t\t\tawait this.getOrganizationUserGroups(organization);\r\n\r\n\t\tconst inputGroups: any[] = [];\r\n\r\n\t\tsecurityGroups.forEach(\r\n\t\t\t(group: any) =>\r\n\t\t\t{\r\n\t\t\t\tinputGroups.push(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: group.displayName,\r\n\t\t\t\t\t\tdescription: group.description,\r\n\t\t\t\t\t\tkey: group,\r\n\t\t\t\t\t\tvalue: false\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn inputGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the organization's user.\r\n\t *\r\n\t * @async\r\n\t * @param {any} user\r\n\t * The user to update.\r\n\t * @param {IEntityInstance} organization\r\n\t * The organization to which the user belongs.\r\n\t * @param {ISecurityGroupDto[]} selectedGroups\r\n\t * The selected groups of which the user is to be a member.\r\n\t * @param {string} typeGroup\r\n\t * @returns {Promise}\r\n\t * the response from the update organization user action.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async updateOrganizationUser(\r\n\t\tuser: any,\r\n\t\torganization: IEntityInstance,\r\n\t\tselectedGroups: ISecurityGroupDto[],\r\n\t\ttypeGroup: string = AppConstants.typeGroups.users): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = typeGroup;\r\n\r\n\t\tconst organizationType: string =\r\n\t\t\tStringHelper\r\n\t\t\t\t.getLastSplitValue(\r\n\t\t\t\t\torganization.entityType,\r\n\t\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\tconst prefix: string = `${organizationType}_${organization.id}`;\r\n\r\n\t\tconst selectedOrganizationGroups: string =\r\n\t\t\tselectedGroups\r\n\t\t\t\t.filter(group => group.name.startsWith(prefix))\r\n\t\t\t\t.map(group => group.id)\r\n\t\t\t\t.join(AppConstants.characters.comma);\r\n\r\n\t\tconst query: string =\r\n\t\t\tAnyHelper.isNullOrEmpty(selectedOrganizationGroups)\r\n\t\t\t\t? '?securityGroups=none'\r\n\t\t\t\t\t+ `&parentId=${organization.id}`\r\n\t\t\t\t: `?securityGroups=${selectedOrganizationGroups}`\r\n\t\t\t\t\t+ `&parentId=${organization.id}`;\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tthis.entityInstanceApiService.executeAction(\r\n\t\t\t\tuser.id,\r\n\t\t\t\t'UpdateOrganizationUser',\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: user.id,\r\n\t\t\t\t\tresourceIdentifier: user.resourceIdentifier,\r\n\t\t\t\t\tversionNumber: user.versionNumber,\r\n\t\t\t\t\tdata: user.data,\r\n\t\t\t\t\tentityType: user.entityType,\r\n\t\t\t\t\tcreatedById: user.createdById,\r\n\t\t\t\t\tchangedById: user.changedById,\r\n\t\t\t\t\tchangeDate: user.changeDate,\r\n\t\t\t\t\tcreateDate: user.createDate\r\n\t\t\t\t},\r\n\t\t\t\tquery);\r\n\r\n\t\tawait promise;\r\n\r\n\t\t// clear/reset client cache for this user.\r\n\t\tawait this.userService.setUserSecurityGroups(user);\r\n\r\n\t\treturn promise;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and returns an organization name matching the sent id and type.\r\n\t *\r\n\t * @async\r\n\t * @param {number} organizationId\r\n\t * The organization id to load.\r\n\t * @param {string} organizationTypeGroup\r\n\t * The organization type group to load.\r\n\t * @returns {Promise}\r\n\t * An awaitable display name matching the sent id and type for this\r\n\t * organization.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getOrganizationName(\r\n\t\torganizationId: number,\r\n\t\torganizationTypeGroup: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\torganizationTypeGroup;\r\n\t\tconst organizationInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\torganizationId);\r\n\r\n\t\tif (AnyHelper.isNull(organizationInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.toNameString(\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\torganizationInstance.data.name.legalName);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all issued transactions with a future effective date.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term used to find future issued transactions.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance set that represents future\r\n\t * issued transactions.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getFutureIssuedTransactions(\r\n\t\tpolicyTerm: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst issuedTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.issued}'`,\r\n\t\t\t\t'Id desc',\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t\t+ policyTerm.data.productName);\r\n\r\n\t\treturn issuedTransactions\r\n\t\t\t.filter(\r\n\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\tDateHelper.fromUtcIso(transaction.data.effectiveDate)\r\n\t\t\t\t\t\t> DateHelper.getSystemDateTime());\r\n\t}\r\n\r\n\t/**\r\n\t * Sums all issued transactions with a future effective date and returns\r\n\t * the total of either premium or fees and taxes.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term used to find future issued transactions.\r\n\t * @param {string} accountingSumType\r\n\t * If sent, this will be the accounting sum returned. This value defaults\r\n\t * to returning the sum of premium accounting and any other value will\r\n\t * return as the sum of fees and taxes.\r\n\t * @returns {Promise}\r\n\t * An awaitable calculation consisting of the sum of future issued\r\n\t * transactions based on the accounting sum type.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async sumFutureIssuedTransactions(\r\n\t\tpolicyTerm: IEntityInstance,\r\n\t\taccountingSumType: string = InsuranceConstants.accountingTypes.premium):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tlet issuedTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t'status eq '\r\n\t\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.issued}'`,\r\n\t\t\t\t'Id desc',\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t\t+ policyTerm.data.productName);\r\n\t\tconst newBusinessOrRenewalTransaction: IEntityInstance =\r\n\t\t\tissuedTransactions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\ttransaction.data.type ===\r\n\t\t\t\t\t\t\tInsuranceConstants.transactionTypes.newBusiness\r\n\t\t\t\t\t\t\t|| transaction.data.type ===\r\n\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes.renewal)[0];\r\n\t\tissuedTransactions =\r\n\t\t\tissuedTransactions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\ttransaction.data.type !==\r\n\t\t\t\t\t\t\tInsuranceConstants.transactionTypes.newBusiness\r\n\t\t\t\t\t\t\t&& transaction.data.type !==\r\n\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes.renewal);\r\n\r\n\t\t// Inception date issued endorsements are included in term accounting.\r\n\t\tconst futureIssuedTransactions: IEntityInstance[] =\r\n\t\t\tissuedTransactions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\tDateHelper.fromUtcIso(transaction.data.effectiveDate)\r\n\t\t\t\t\t\t\t> DateHelper.getSystemDateTime()\r\n\t\t\t\t\t\t\t&& DateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\ttransaction.data.effectiveDate)\r\n\t\t\t\t\t\t\t\t> DateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\tnewBusinessOrRenewalTransaction\r\n\t\t\t\t\t\t\t\t\t\t.data.effectiveDate));\r\n\r\n\t\tif (accountingSumType === InsuranceConstants.accountingTypes.premium)\r\n\t\t{\r\n\t\t\treturn futureIssuedTransactions.reduce(\r\n\t\t\t\t(accumulator: number,\r\n\t\t\t\t\tpolicyTermTransaction: IEntityInstance) =>\r\n\t\t\t\t\taccumulator +\r\n\t\t\t\t\t\tpolicyTermTransaction.data\r\n\t\t\t\t\t\t\t.accounting.directWrittenPremium,\r\n\t\t\t\t0);\r\n\t\t}\r\n\r\n\t\treturn futureIssuedTransactions.reduce(\r\n\t\t\t(accumulator: number,\r\n\t\t\t\tpolicyTermTransaction: IEntityInstance) =>\r\n\t\t\t\taccumulator\r\n\t\t\t\t\t+ policyTermTransaction.data\r\n\t\t\t\t\t\t.accounting.directWrittenFees\r\n\t\t\t\t\t+ policyTermTransaction.data\r\n\t\t\t\t\t\t.accounting.directWrittenTaxes,\r\n\t\t\t0);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and outputs a policy summmary based on the sent policy number.\r\n\t *\r\n\t * @async\r\n\t * @param {string} policyNumber\r\n\t * The policy number to use to find the matching policy to summarize. This\r\n\t * value is available in a policy or policy term.\r\n\t * @returns {Promise}\r\n\t * An awaitable policy summary for common policy displays.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicySummary(\r\n\t\tpolicyNumber: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\t`policyNumber eq '${policyNumber}'`,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(policy))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst policyTerms: IEntityInstance[] =\r\n\t\t\tawait this.getPolicyTermsByPolicyId(\r\n\t\t\t\tpolicy.id);\r\n\t\tconst latestPolicyTerm: IEntityInstance =\r\n\t\t\tpolicyTerms\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(policyTerm: IEntityInstance) =>\r\n\t\t\t\t\t\tpolicyTerm.data.status ===\r\n\t\t\t\t\t\tInsuranceConstants.policyTermStatusTypes.active)\r\n\t\t\t\t?? policyTerms[policyTerms.length - 1];\r\n\t\tconst policyTermTransaction: IEntityInstance =\r\n\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\tlatestPolicyTerm.id);\r\n\r\n\t\tlet summedLedgers: number = 0;\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tfor (const policyTerm of policyTerms)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\tthis.getLedger(\r\n\t\t\t\t\tpolicyTerm.id));\r\n\t\t}\r\n\r\n\t\tawait Promise\r\n\t\t\t.all(promiseArray)\r\n\t\t\t.then(\r\n\t\t\t\t(ledgers: IEntityInstance[]) =>\r\n\t\t\t\t\tsummedLedgers =\r\n\t\t\t\t\t\tledgers\r\n\t\t\t\t\t\t\t.reduce(\r\n\t\t\t\t\t\t\t\t(accumulator: number,\r\n\t\t\t\t\t\t\t\t\tledger: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\t\taccumulator\r\n\t\t\t\t\t\t\t\t\t\t+ (ledger?.data.balance ?? 0),\r\n\t\t\t\t\t\t\t\t0));\r\n\r\n\t\tconst primaryInsured: any =\r\n\t\t\tpolicyTermTransaction.data.interests[0];\r\n\r\n\t\tconst insuredName: string =\r\n\t\t\tStringHelper.toNameString(\r\n\t\t\t\tprimaryInsured.characteristics.name?.firstName\r\n\t\t\t\t\t?? AppConstants.empty,\r\n\t\t\t\tprimaryInsured.characteristics.name?.lastName\r\n\t\t\t\t\t?? AppConstants.empty);\r\n\r\n\t\tconst matchingAddress: any =\r\n\t\t\tprimaryInsured.characteristics\r\n\t\t\t\t.addresses\r\n\t\t\t\t?.find(\r\n\t\t\t\t\t(address: any) =>\r\n\t\t\t\t\t\taddress.type ===\r\n\t\t\t\t\t\t\tSharedTypeConstants.addressType.mailing);\r\n\t\tconst mailingAddress: string =\r\n\t\t\tStringHelper.toAddressString(\r\n\t\t\t\tmatchingAddress?.address ?? AppConstants.empty,\r\n\t\t\t\tmatchingAddress?.city ?? AppConstants.empty,\r\n\t\t\t\tmatchingAddress?.state ?? AppConstants.empty,\r\n\t\t\t\tmatchingAddress?.postalCode ?? AppConstants.empty);\r\n\r\n\t\tconst policySummary: IPolicySummary =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tinsured: insuredName,\r\n\t\t\t\tmailingAddress: mailingAddress,\r\n\t\t\t\tpolicyTotal:\r\n\t\t\t\t\tStringHelper.format(\r\n\t\t\t\t\t\tlatestPolicyTerm?.data.accounting\r\n\t\t\t\t\t\t\t.writtenTotal.toString() ?? '0',\r\n\t\t\t\t\t\tAppConstants.formatTypes.currency),\r\n\t\t\t\tremainingBalance:\r\n\t\t\t\t\tStringHelper.format(\r\n\t\t\t\t\t\tsummedLedgers?.toString() ?? '0',\r\n\t\t\t\t\t\tAppConstants.formatTypes.currency)\r\n\t\t\t};\r\n\r\n\t\treturn policySummary;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the unique states for an agencies active products.\r\n\t *\r\n\t * @async\r\n\t * @param {number} agencyId\r\n\t * The agency Id.\r\n\t * @returns {Promise}\r\n\t * A list of unique states\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getUniqueStates(\r\n\t\tagencyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup\r\n\t\t\t= InsuranceConstants.insuranceEntityTypeGroups.agencies;\r\n\r\n\t\tconst agency = await this.entityInstanceApiService.get(agencyId);\r\n\r\n\t\tconst productSettings = agency.data.productSettings.filter(\r\n\t\t\t(productSetting: any) =>\r\n\t\t\t\tproductSetting.authority ===\r\n\t\t\t \t\tInsuranceConstants.policyStatusTypes.active);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst products = await this.entityInstanceApiService.query(\r\n\t\t\t'active eq \\'true\\'',\r\n\t\t\tAppConstants.name);\r\n\r\n\t\tconst filteredProducts = products.filter(\r\n\t\t\t(product: any) =>\r\n\t\t\t\tproductSettings.some(\r\n\t\t\t\t\t(productSetting: any) =>\r\n\t\t\t\t\t\tproductSetting.name === product.data.name));\r\n\r\n\t\treturn [...new Set(filteredProducts.map(\r\n\t\t\t(product: any) => product.data.state))];\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the names of active products for a specified agency and state,\r\n\t * provided that the product settings permit quote creation.\r\n\t *\r\n\t * @async\r\n\t * @param {number} agencyId\r\n\t * The agency Id.\r\n\t * @param {string} state\r\n\t * The state name.\r\n\t * @returns {Promise}\r\n\t * A list of product names.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getActiveProductNamesByState(\r\n\t\tagencyId: number,\r\n\t\tstate: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup\r\n\t\t\t= InsuranceConstants.insuranceEntityTypeGroups.agencies;\r\n\r\n\t\tconst agency = await this.entityInstanceApiService.get(agencyId);\r\n\r\n\t\tconst productSettings = agency.data.productSettings.filter(\r\n\t\t\t(productSetting: any) =>\r\n\t\t\t\tproductSetting.authority ===\r\n\t\t\t\t\tInsuranceConstants.policyStatusTypes.active);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst products = await this.entityInstanceApiService.query(\r\n\t\t\t`active eq 'true' and state eq '${state}'`,\r\n\t\t\tAppConstants.name);\r\n\r\n\t\tconst filteredProducts = products.filter(\r\n\t\t\t(product: any) =>\r\n\t\t\t\tproductSettings.some(\r\n\t\t\t\t\t(productSetting: any) =>\r\n\t\t\t\t\t\tproductSetting.name === product.data.name\r\n\t\t\t\t\t\t\t&& product.data.newBusiness.quote.enableCreate));\r\n\r\n\t\treturn [...new Set(filteredProducts.map(\r\n\t\t\t(product: any) => product.data.name))];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy instance by id\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance\r\n\t * representing the policy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic getPolicy(policyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\treturn this.entityInstanceApiService.get(policyId);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets account instance by id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} accountId\r\n\t * The account id.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance\r\n\t * representing the account.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic getAccount(accountId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.accounts;\r\n\r\n\t\treturn this.entityInstanceApiService.get(accountId);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy by account id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} accountId\r\n\t * The account id.\r\n\t * @returns {Promise}\r\n\t * An awaitable policy child entity instance\r\n\t * of an account.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyByAccountId(accountId: number):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.accounts;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\taccountId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy term transaction by id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} transactionId\r\n\t * The transaction id.\r\n\t * @param {string} transactionEntityType\r\n\t * The transaction entity type.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance representing\r\n\t * the policy term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic getPolicyTermTransaction(\r\n\t\ttransactionId: number,\r\n\t\ttransactionEntityType: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\ttransactionEntityType;\r\n\r\n\t\treturn this.entityInstanceApiService.get(transactionId);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy id this methods gets the\r\n\t * parent related account instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance representing\r\n\t * the account as parent of the policy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getAccountByPolicyId(\r\n\t\tpolicyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\tconst entityRelationships: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getParents(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.accounts);\r\n\r\n\t\treturn entityRelationships[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Given an entity id and an entity type this will return the\r\n\t * insurance hierarchy set of related entities.\r\n\t *\r\n\t * @async\r\n\t * @param {number} id\r\n\t * The entity id.\r\n\t * @param {string} entityType\r\n\t * The entity type.\r\n\t * @returns {Promise}\r\n\t * An awaitable insurance entity hierarchy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getInsuranceEntityHierarchy(\r\n\t\tid: number,\r\n\t\tentityType: string)\r\n\t\t: Promise\r\n\t{\r\n\t\tlet account: IEntityInstance;\r\n\t\tlet policy: IEntityInstance;\r\n\t\tlet policyTerm: IEntityInstance;\r\n\t\tlet policyTermTransaction: IEntityInstance;\r\n\r\n\t\tswitch(entityType)\r\n\t\t\t{\r\n\t\t\t\tcase InsuranceConstants.insuranceEntityTypes.account:\r\n\t\t\t\t\taccount = await this.getAccount(id);\r\n\t\t\t\t\tpolicy = await this.getPolicyByAccountId(account.id);\r\n\t\t\t\t\tpolicyTerm = await this.getActivePolicyTerm(policy.id);\r\n\t\t\t\t\tpolicyTermTransaction =\r\n\t\t\t\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\t\t\tpolicyTerm.id);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase InsuranceConstants.insuranceEntityTypes.policy:\r\n\t\t\t\t\tpolicy = await this.getPolicy(id);\r\n\t\t\t\t\taccount = await this.getAccountByPolicyId(policy.id);\r\n\t\t\t\t\tpolicyTerm = await this.getActivePolicyTerm(policy.id);\r\n\t\t\t\t\tpolicyTermTransaction =\r\n\t\t\t\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\t\t\tpolicyTerm.id);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase InsuranceConstants.insuranceEntityTypes.policyTerm:\r\n\t\t\t\t\tpolicy = await this.getPolicyByPolicyTermId(id);\r\n\t\t\t\t\taccount = await this.getAccountByPolicyId(policy.id);\r\n\t\t\t\t\tpolicyTerm = await this.getActivePolicyTerm(policy.id);\r\n\t\t\t\t\tpolicyTermTransaction =\r\n\t\t\t\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\t\t\t\tpolicyTerm.id)\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (entityType.includes(\r\n\t\t\t\t\t\tInsuranceConstants.policyTermTransactionPrefix))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpolicyTerm =\r\n\t\t\t\t\t\t\tawait this.getPolicyTermByTransaction(\r\n\t\t\t\t\t\t\t\tid,\r\n\t\t\t\t\t\t\t\tentityType);\r\n\t\t\t\t\t\tpolicy =\r\n\t\t\t\t\t\t\tawait this.getPolicyByPolicyTermId(policyTerm.id);\r\n\t\t\t\t\t\taccount = await this.getAccountByPolicyId(policy.id);\r\n\t\t\t\t\t\tpolicyTermTransaction =\r\n\t\t\t\t\t\t\tawait this.getPolicyTermTransaction(\r\n\t\t\t\t\t\t\t\tid,\r\n\t\t\t\t\t\t\t\tentityType);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthrow new Error(`Entity Type ${entityType} is not `\r\n\t\t\t\t\t\t\t+ 'supported to get Insurance Entity Hierarchy.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\tconst insuranceEntityHierarchy: IInsuranceEntityHierarchy =\r\n\t\t\t{\r\n\t\t\t\taccount: account,\r\n\t\t\t\tpolicy: policy,\r\n\t\t\t\tpolicyTerm: policyTerm,\r\n\t\t\t\tpolicyTermTransaction: policyTermTransaction\r\n\t\t\t}\r\n\r\n\t\treturn insuranceEntityHierarchy;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term id, this will return the hierarchy of the current\r\n\t * term which includes all issued transactions and the last pending\r\n\t * transaction if existing.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyTermId\r\n\t * The policy term id to get the hierarchy for.\r\n\t * @returns {Promise}\r\n\t * An awaitable policy term hierarchy which consists of the term, all issued\r\n\t * transactions, and the latest pending transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermHierarchy(\r\n\t\tpolicyTermId: number): Promise\r\n\t{\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tawait this.getPolicyTerm(\r\n\t\t\t\tpolicyTermId);\r\n\r\n\t\tconst filter: string =\r\n\t\t\t`${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.obsolete}' `\r\n\t\t\t\t+ `and ${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t+ `'${InsuranceConstants.transactionStatusTypes.archived}'`;\r\n\t\tconst policyTermTransactionTypeGroup: string =\r\n\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t+ `${policyTerm.data.productName}`;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\t\tconst policyTermTransactions: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tpolicyTermId,\r\n\t\t\t\tfilter,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tpolicyTermTransactionTypeGroup);\r\n\r\n\t\tconst pendingTransactionTypes: string[] =\r\n\t\t\t[\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.quote,\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.pending,\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.application,\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.submitted,\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.bound\r\n\t\t\t];\r\n\r\n\t\tconst policyTermHierarchy: IPolicyTermHierarchy =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tpolicyTerm: policyTerm,\r\n\t\t\t\t\tissuedTransactions:\r\n\t\t\t\t\t\tpolicyTermTransactions.filter(\r\n\t\t\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\ttransaction.data.status ===\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.issued),\r\n\t\t\t\t\tpendingTransaction:\r\n\t\t\t\t\t\tpolicyTermTransactions.find(\r\n\t\t\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\tpendingTransactionTypes.indexOf(\r\n\t\t\t\t\t\t\t\t\ttransaction.data.status) !== -1)\r\n\t\t\t\t};\r\n\r\n\t\treturn policyTermHierarchy;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term hierarchy, this will gather all files that are\r\n\t * children of the term, issued transactions, or the latest pending\r\n\t * transaction if existing.\r\n\t *\r\n\t * @async\r\n\t * @param {IPolicyTermHierarchy} policyTermHierarchy\r\n\t * The policy term hierarchy to gather all files for.\r\n\t * @returns {Promise}\r\n\t * The awaitable policy term hierarchy files which consists of the term,\r\n\t * all issued transactions, and the latest pending transaction file\r\n\t * collections.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getHierarchyFiles(\r\n\t\tpolicyTermHierarchy: IPolicyTermHierarchy): Promise\r\n\t{\r\n\t\tconst fileWildcard: string = 'File';\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tpolicyTermHierarchy.policyTerm;\r\n\t\tconst policyTermTransactionTypeGroup: string =\r\n\t\t\tInsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t+ `${policyTerm.data.productName}`;\r\n\r\n\t\tconst promiseArray: Promise[] = [];\r\n\r\n\t\tpromiseArray.push(\r\n\t\t\t(async() =>\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\t\t\t\tconst files: IEntityInstance[] =\r\n\t\t\t\t\tawait this.entityService.getWildcardChildren(\r\n\t\t\t\t\t\tpolicyTerm.id,\r\n\t\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t.policyTerms,\r\n\t\t\t\t\t\tfileWildcard,\r\n\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\treturn files;\r\n\t\t\t})());\r\n\r\n\t\tif (!AnyHelper.isNull(policyTermHierarchy.issuedTransactions))\r\n\t\t{\r\n\t\t\t// Check all issued transactions for files.\r\n\t\t\tfor (const issuedTransaction\r\n\t\t\t\tof policyTermHierarchy.issuedTransactions)\r\n\t\t\t{\r\n\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\t(async() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tpolicyTermTransactionTypeGroup;\r\n\t\t\t\t\t\tconst files: IEntityInstance[] =\r\n\t\t\t\t\t\t\tawait this.entityService.getWildcardChildren(\r\n\t\t\t\t\t\t\t\tissuedTransaction.id,\r\n\t\t\t\t\t\t\t\tissuedTransaction.entityType,\r\n\t\t\t\t\t\t\t\tfileWildcard,\r\n\t\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\t\treturn files;\r\n\t\t\t\t\t})());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(policyTermHierarchy.pendingTransaction))\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\t(async() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\tpolicyTermTransactionTypeGroup;\r\n\t\t\t\t\tconst files: IEntityInstance[] =\r\n\t\t\t\t\t\tawait this.entityService.getWildcardChildren(\r\n\t\t\t\t\t\t\tpolicyTermHierarchy.pendingTransaction.id,\r\n\t\t\t\t\t\t\tpolicyTermHierarchy.pendingTransaction.entityType,\r\n\t\t\t\t\t\t\tfileWildcard,\r\n\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\treturn files;\r\n\t\t\t\t})());\r\n\t\t}\r\n\r\n\t\tconst hierarchyFileSets: IEntityInstance[][] =\r\n\t\t\tawait Promise.all(promiseArray);\r\n\t\tconst hierarchyFiles: IEntityInstance[] =\r\n\t\t\thierarchyFileSets.flat();\r\n\r\n\t\treturn hierarchyFiles;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term hierarchy, this will gather all rule violations that\r\n\t * are children of the term, issued transactions, or the latest pending\r\n\t * transaction if existing.\r\n\t *\r\n\t * @async\r\n\t * @param {IPolicyTermHierarchy} policyTermHierarchy\r\n\t * The policy term hierarchy to gather all rules for.\r\n\t * @returns {Promise}\r\n\t * The awaitable policy term hierarchy rules which consists of the term,\r\n\t * all issued transactions, and the latest pending transaction rule\r\n\t * violation collections.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getHierarchyRuleViolations(\r\n\t\tpolicyTermHierarchy: IPolicyTermHierarchy):\r\n\t\tPromise\r\n\t{\r\n\t\tconst promiseArray: Promise[] = [];\r\n\r\n\t\tpromiseArray.push(\r\n\t\t\t(async() =>\r\n\t\t\t{\r\n\t\t\t\tconst ruleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t\t\tawait this.ruleService.getInstanceRuleViolations(\r\n\t\t\t\t\t\tpolicyTermHierarchy.policyTerm.id);\r\n\r\n\t\t\t\treturn ruleViolations;\r\n\t\t\t})());\r\n\r\n\t\tif (!AnyHelper.isNull(policyTermHierarchy.issuedTransactions)\r\n\t\t\t&& policyTermHierarchy.issuedTransactions.length > 0)\r\n\t\t{\r\n\t\t\t// Only check the latest issued transaction for rules.\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\t(async() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst ruleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t\t\t\tawait this.ruleService.getInstanceRuleViolations(\r\n\t\t\t\t\t\t\tpolicyTermHierarchy.issuedTransactions[0].id);\r\n\r\n\t\t\t\t\treturn ruleViolations;\r\n\t\t\t\t})());\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(policyTermHierarchy.pendingTransaction))\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\t(async() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst ruleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t\t\t\tawait this.ruleService.getInstanceRuleViolations(\r\n\t\t\t\t\t\t\tpolicyTermHierarchy.pendingTransaction.id);\r\n\r\n\t\t\t\t\treturn ruleViolations;\r\n\t\t\t\t})());\r\n\t\t}\r\n\r\n\t\tconst hierarchyRuleSets: IEntityInstanceRuleViolation[][] =\r\n\t\t\tawait Promise.all(promiseArray);\r\n\t\tconst hierarchyRules: IEntityInstanceRuleViolation[] =\r\n\t\t\thierarchyRuleSets.flat();\r\n\r\n\t\treturn hierarchyRules;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets base level / master security groups.\r\n\t *\r\n\t * @returns {Promise\r\n\t{\r\n\t\tconst filter: string =\r\n\t\t\t'Name.StartsWith(\"Agency_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"BackOfficeVendor_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"HoldingCompany_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"InsuranceCompany_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"ManagingGeneralAgency_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"ReinsuranceCompany_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"ClaimsVendor_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"IndependentAdjustingCompany_\")=false'\r\n\t\t\t\t+ ' AND Name.StartsWith(\"ThirdPartyAdministrator_\")=false';\r\n\r\n\t\treturn ApiHelper.getFullDataSet(\r\n\t\t\tthis.securityGroupApiService,\r\n\t\t\tfilter,\r\n\t\t\tAppConstants.commonProperties.name,\r\n\t\t\tnull,\r\n\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the parent agencies of the user with the sent user id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} userId\r\n\t * The user id to find the parent agencies for.\r\n\t * @param {string} keywordFilter\r\n\t * If sent this will filter the parent agencies of the user to find\r\n\t * agencies with a matching keyword.\r\n\t * @returns {Promise}\r\n\t * A list of agencies that the user is a child of.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getUserParentAgencies(\r\n\t\tuserId: number,\r\n\t\tkeywordFilter: string = null): Promise\r\n\t{\r\n\t\tlet formattedFilter: string = AppConstants.empty;\r\n\t\tif (!AnyHelper.isNullOrWhitespace(keywordFilter))\r\n\t\t{\r\n\t\t\tformattedFilter =\r\n\t\t\t\t`${AppConstants.commonProperties.keywords}.Contains('`\r\n\t\t\t\t\t+ `${keywordFilter}') eq true`;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.users;\r\n\r\n\t\treturn this.entityInstanceApiService.getParents(\r\n\t\t\tuserId,\r\n\t\t\tformattedFilter,\r\n\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t0,\r\n\t\t\tAppConstants.dataLimits.large,\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries for agencies that hold keywords matching the sent keyword filter.\r\n\t * If loadFullDataset is false, this will return only the first 100\r\n\t * agencies, and if true, will return all agencies.\r\n\t *\r\n\t * @async\r\n\t * @param {string} keywordFilter\r\n\t * If sent this will filter the agencies to those with a matching keyword.\r\n\t * @param {boolean} loadFullDataset\r\n\t * If sent and false, this will load only the initial 100 records. If not\r\n\t * sent or true, this will load all records.\r\n\t * @returns {Promise}\r\n\t * A list of agencies matching the keyword filter.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getFilteredAgencies(\r\n\t\tkeywordFilter: string = null,\r\n\t\tloadFullDataset: boolean = true): Promise\r\n\t{\r\n\t\tlet formattedFilter: string = AppConstants.empty;\r\n\t\tif (!AnyHelper.isNullOrWhitespace(keywordFilter))\r\n\t\t{\r\n\t\t\tformattedFilter =\r\n\t\t\t\t`${AppConstants.commonProperties.keywords}.Contains('`\r\n\t\t\t\t\t+ `${keywordFilter}') eq true`;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies;\r\n\r\n\t\treturn loadFullDataset === true\r\n\t\t\t? ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tformattedFilter,\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies)\r\n\t\t\t: this.entityInstanceApiService.query(\r\n\t\t\t\tformattedFilter,\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.large);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a user id, this will load and return recent policy terms created\r\n\t * by this user.\r\n\t *\r\n\t * @async\r\n\t * @param {number} userId\r\n\t * The user id to find recently created policy terms for. This will\r\n\t * filter by the created by id.\r\n\t * @param {number} numberOfDays\r\n\t * The number of days to search when filtering recent policies.\r\n\t * @param {string} filter\r\n\t * The filter to use in addition to the automatically added number of days\r\n\t * and user id filter. This will default to an empty string.\r\n\t * @param {string} orderBy\r\n\t * The order for the returned data. This will default to id descending.\r\n\t * @param {number} offset\r\n\t * The offset to grab data for. This will default to 0.\r\n\t * @param {number} limit\r\n\t * The limit of data to load per request. This will default to 20.\r\n\t * @returns {Promise[]}\r\n\t * An array of recent policy terms with a mapped insured name based on\r\n\t * term's latest not obsolete or archived term transaction.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getRecentUserPolicyTerms(\r\n\t\tuserId: number,\r\n\t\tnumberOfDays: number = 14,\r\n\t\tfilter: string = AppConstants.empty,\r\n\t\torderBy: string = AppConstants.commonProperties.id\r\n\t\t\t+ AppConstants.characters.space\r\n\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\toffset: number = 0,\r\n\t\tlimit: number = AppConstants.dataLimits.small):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\r\n\t\tconst userFilter: string =\r\n\t\t\t`${AppConstants.commonProperties.createdById} eq ${userId}`;\r\n\r\n\t\tconst startDate: DateTime =\r\n\t\t\tDateHelper.getSystemDateTime().startOf(\r\n\t\t\t\tDateHelper.timeUnits.day)\r\n\t\t\t\t.minus({ days: numberOfDays });\r\n\t\tconst endDate: DateTime =\r\n\t\t\tDateHelper.getSystemDateTime().endOf(\r\n\t\t\t\tDateHelper.timeUnits.day);\r\n\r\n\t\tconst combinedFilter: string =\r\n\t\t\t`(${userFilter}`\r\n\t\t\t\t+ ` and ${AppConstants.commonProperties.createDate} ge `\r\n\t\t\t\t+ `'${startDate.toISO()}'`\r\n\t\t\t\t+ ` and ${AppConstants.commonProperties.createDate} le `\r\n\t\t\t\t+ `'${endDate.toISO()}')`\r\n\t\t\t\t+ (AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: ` and (${filter})`);\r\n\r\n\t\treturn this.entityInstanceApiService.query(\r\n\t\t\tcombinedFilter,\r\n\t\t\torderBy,\r\n\t\t\toffset,\r\n\t\t\tlimit);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a collection of policy terms, this will load and populate the\r\n\t * term's data.insuredName property with the primary insured name from the\r\n\t * term's latest not obsolete or archived transaction.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance[]} policyTerms\r\n\t * The policy terms to map primary insured names into.\r\n\t * @returns {Promise}\r\n\t * An awaitable policy term entity instance array with the data property\r\n\t * of 'insuredName' mapped.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async mapPolicyTermPrimaryInsuredNames(\r\n\t\tpolicyTerms: IEntityInstance[]): Promise\r\n\t{\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tfor (const term of policyTerms)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\t(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t(async () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tterm.data.insuredName =\r\n\t\t\t\t\t\t\t\tawait this.getPolicyTermPrimaryInsuredName(\r\n\t\t\t\t\t\t\t\t\tterm);\r\n\r\n\t\t\t\t\t\t\tresolve(term);\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}));\r\n\t\t}\r\n\t\tawait Promise.all(promiseArray);\r\n\r\n\t\treturn policyTerms;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy term entity instance, this will load and return the\r\n\t * display name of the Term's NamedInsured Interest based on the latest\r\n\t * Term's not obsolete or archived transaction data.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} policyTerm\r\n\t * The policy term to load a primary insured name for.\r\n\t * @returns {Promise}\r\n\t * An awaitable string that represent's the Term's latest primary insured\r\n\t * name.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async getPolicyTermPrimaryInsuredName(\r\n\t\tpolicyTerm: IEntityInstance): Promise\r\n\t{\r\n\t\tconst policyTermTransaction: IEntityInstance =\r\n\t\t\tawait this.getLatestPolicyTermTransactionByPolicyTerm(\r\n\t\t\t\tpolicyTerm.id);\r\n\r\n\t\tif (AnyHelper.isNull(policyTermTransaction))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst primaryInsureds: any =\r\n\t\t\tpolicyTermTransaction.data.interests.filter(\r\n\t\t\t\t(interest: any) =>\r\n\t\t\t\t\tinterest.type ===\r\n\t\t\t\t\t\tInsuranceConstants.interestTypes.namedInsured\r\n\t\t\t\t\t\t&& interest.subType ===\r\n\t\t\t\t\t\t\tInsuranceConstants.interestSubTypes.primary);\r\n\r\n\t\tif (primaryInsureds.length === 0)\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.fromNameObject(\r\n\t\t\tprimaryInsureds[0].characteristics.name);\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to related entity.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityId\r\n\t * The entity id.\r\n\t * @param {string} entityType\r\n\t * The entity type.\r\n\t * @param {string} relatedEntityType\r\n\t * The related entity type.\r\n\t * @param {IInsuranceEntityHierarchy} insuranceEntityHierarchy\r\n\t * The insurance entity hierarchy.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tpublic async navigateToRelatedEntity(\r\n\t\tentityId: number,\r\n\t\tentityType: string,\r\n\t\trelatedEntityType: string,\r\n\t\tinsuranceEntityHierarchy: IInsuranceEntityHierarchy = null): Promise\r\n\t{\r\n\t\tconst entityHierarchy: IInsuranceEntityHierarchy =\r\n\t\t\tAnyHelper.isNull(insuranceEntityHierarchy)\r\n\t\t\t\t? await this.getInsuranceEntityHierarchy(\r\n\t\t\t\t\tentityId,\r\n\t\t\t\t\tentityType)\r\n\t\t\t\t: insuranceEntityHierarchy;\r\n\r\n\t\tconst navigateToEntityInstance: IEntityInstance =\r\n\t\t\t\trelatedEntityType.includes(\r\n\t\t\t\t\tInsuranceConstants.policyTermTransactionPrefix)\r\n\t\t\t\t? entityHierarchy.policyTermTransaction\r\n\t\t\t\t: entityHierarchy[\r\n\t\t\t\t\tStringHelper.toCamelCase(relatedEntityType)];\r\n\r\n\t\tconst navigateToEntityType: IEntityType =\r\n\t\t\tawait this.getEntityTypeFromName(\r\n\t\t\t\tnavigateToEntityInstance.entityType);\r\n\r\n\t\tconst navigateToLayoutType: string =\r\n\t\t\tnavigateToEntityType.name.includes(\r\n\t\t\t\tInsuranceConstants.policyTermTransactionPrefix)\r\n\t\t\t\t&& navigateToEntityInstance.data.type ===\r\n\t\t\t\t\tInsuranceConstants.transactionTypes.newBusiness\r\n\t\t\t\t&& (navigateToEntityInstance.data.status ===\r\n\t\t\t\t\tInsuranceConstants.transactionStatusTypes.quote\r\n\t\t\t\t\t|| navigateToEntityInstance.data.status ===\r\n\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes.pending)\r\n\t\t\t\t? AppConstants.layoutTypes.quickQuote\r\n\t\t\t\t: AppConstants.layoutTypes.full;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t'policy/entities',\r\n\t\t\t\tnavigateToEntityType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tnavigateToEntityInstance.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tnavigateToLayoutType\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of payment level values, this will map the icon that\r\n\t * should be associated to those sent status values such as overdue\r\n\t * or paid in full.\r\n\t *\r\n\t * @param {boolean} pastDueDate\r\n\t * Signifies whether or not this payment is past it's due date.\r\n\t * @param {number} amountDue\r\n\t * The amount remaining as due on this payment, this value will include\r\n\t * non-realized operational fees to calculate a due amount different\r\n\t * than expected.\r\n\t * @param {number} amountDue\r\n\t * The amount invoicede on this payment, this value will include\r\n\t * realized operational fees to calculate a due amount different\r\n\t * than expected.\r\n\t * @returns {string}\r\n\t * A string that signifies that class that should be used when displaying\r\n\t * the payment status icon.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tprivate getPaymentStatusIcon(\r\n\t\tpastDueDate: boolean,\r\n\t\tamountDue: number,\r\n\t\tinvoicedAmountDue: number): string\r\n\t{\r\n\t\tif (amountDue > -0.005 && amountDue < 0.005)\r\n\t\t{\r\n\t\t\treturn AppConstants.statusIconCssClasses.success;\r\n\t\t}\r\n\r\n\t\tif (pastDueDate === true)\r\n\t\t{\r\n\t\t\treturn AppConstants.statusIconCssClasses.error;\r\n\t\t}\r\n\r\n\t\tconst invoicedDifference: number =\r\n\t\t\tinvoicedAmountDue - amountDue;\r\n\t\tif (invoicedDifference < -0.005 || invoicedDifference > 0.005)\r\n\t\t{\r\n\t\t\treturn AppConstants.statusIconCssClasses.warning;\r\n\t\t}\r\n\r\n\t\treturn AppConstants.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a status icon class for a payment, this will return the expected\r\n\t * tootip value.\r\n\t *\r\n\t * @param {string} statusIcon\r\n\t * The status based icon for a payment used to define which icon to display.\r\n\t * @returns {string}\r\n\t * A string that signifies the tooltip value to use for the icon when\r\n\t * displayed.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tprivate getPaymentStatusIconTooltip(\r\n\t\tstatusIcon: string): string\r\n\t{\r\n\t\tswitch (statusIcon)\r\n\t\t{\r\n\t\t\tcase AppConstants.statusIconCssClasses.success:\r\n\t\t\t\treturn 'Paid';\r\n\t\t\tcase AppConstants.statusIconCssClasses.error:\r\n\t\t\t\treturn 'Overdue';\r\n\t\t\tcase AppConstants.statusIconCssClasses.warning:\r\n\t\t\t\treturn 'Amount Due is different from Invoiced';\r\n\t\t\tdefault: return AppConstants.empty;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of payment detail split outs, this will sum those values\r\n\t * and return the full calculated amount of the sent data set.\r\n\t *\r\n\t * @param {any[]} paymentDetailSplitOuts\r\n\t * The payment detail split outs.\r\n\t * @returns {number}\r\n\t * The summed amounts of all of the split outs sent.\r\n\t * @memberof InsuranceService\r\n\t */\r\n\tprivate sumPaymentDetailSplitOuts(\r\n\t\tpaymentDetailSplitOuts: any[]): number\r\n\t{\r\n\t\treturn paymentDetailSplitOuts\r\n\t\t\t.reduce(\r\n\t\t\t\t(sum: number,\r\n\t\t\t\t\titem: any) =>\r\n\t\t\t\t\tsum\r\n\t\t\t\t\t\t+ item.amount,\r\n\t\t\t\t0);\r\n\t}\r\n}","
\r\n\t
    \r\n\t\t
      \r\n\t\t
    \r\n\t
\r\n\r\n\t twoColumnHeaderBreakpoint)\r\n\t\t}\"\r\n\t\t*ngIf=\"!loading\">\r\n\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOutput,\r\n\tSimpleChanges,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tEntityEventParameterConstants\r\n} from '@entity/shared/entity-event-parameter.constants';\r\nimport {\r\n\tEntityEventConstants\r\n} from '@entity/shared/entity-event.constants';\r\nimport {\r\n\tBaseOperationGroupDirective\r\n} from '@operation/directives/base-operation-group.directive';\r\nimport {\r\n\tOperationButtonTypeConstants\r\n} from '@operation/shared/operation-button-type.constants';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'operation-button-bar',\r\n\ttemplateUrl: './operation-button-bar.component.html',\r\n\tstyleUrls: ['./operation-button-bar.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an operation\r\n * button bar.\r\n *\r\n * @export\r\n * @class OperationButtonBarComponent\r\n * @extends {BaseOperationGroupDirective}\r\n * @implements {OnChange}\r\n * @implements {OnDestroy}\r\n * @extends {BaseOperationGroupComponent}\r\n */\r\nexport class OperationButtonBarComponent\r\n\textends BaseOperationGroupDirective\r\n\timplements OnChanges, OnDestroy\r\n{\r\n\t/**\r\n\t * Gets or sets the value used to specify whether this component\r\n\t * is currently loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@Input() public loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the reserve bottom right value of the base page header.\r\n\t * This is primarily used for the filter parameter button and will reserve\r\n\t * thirty two pixels at the bottom right. At desktop content size or larger,\r\n\t * this will reserve the right bottom half of content for more details.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@Input() public reserveHeaderBottomRight: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the fixed overlay location which if sent will\r\n\t * override location calculations.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@Input() public fixedOverlayLocation: string;\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when operations are loaded.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@Output() public loadingOperations: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * the number of loaded operations.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@Output() public loadedOperationsCountChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the element reference for the set of button bars.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@ViewChild('OperationContainer', { read: ElementRef })\r\n\tpublic operationContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the operation button display observer used to debounce\r\n\t * operation display calculations.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic operationDisplayChange: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the save entity menu item if it exists.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic saveEntityMenuItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the singular ellipsis menu item menu item if it exists.\r\n\t * This will always be displayed last in the button bar.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic ellipsisMenuItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the exexuting command flag.\r\n\t * This is used to disable the operation button menu while the command\r\n\t * is being executed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic executingCommand: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the boolean value that will fire a redraw of an ellipsis\r\n\t * menu so the nested item changes are refreshed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic redrawEllipsis: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the the first visible button index which can be used\r\n\t * for left side rounding.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t public firstVisibleButtonIndex: number = -1;\r\n\r\n\t/**\r\n\t * Gets or sets the the last visible button index which can be used\r\n\t * for right side rounding.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic lastVisibleButtonIndex: number = -1;\r\n\r\n\t/**\r\n\t * Gets or sets a value defining whether or not there is a single ellipsis\r\n\t * button currently displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic standaloneEllipsisDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis menu item that will be displayed when we\r\n\t * are collapsing button sets and no ellipsis is already defined.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic ellipsisOperationPlaceholder: MenuItem =\r\n\t\t\r\n\t\t{\r\n\t\t\ticon: 'fa fa-fw fa-ellipsis',\r\n\t\t\tid: OperationButtonTypeConstants.ellipsisButton,\r\n\t\t\tstyleClass: AppConstants.cssClasses.pButtonOutlined,\r\n\t\t\titems: [],\r\n\t\t\tlabel: 'Ellipsis Collapse Button'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the value used by the UI to define at which content\r\n\t * width we should switch to a two column page header layout.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic readonly twoColumnHeaderBreakpoint: number =\r\n\t\tAppConstants.layoutBreakpoints.desktop;\r\n\r\n\t/**\r\n\t * Gets the case sensitive constant used to specify if this group\r\n\t * is displayed via the ellipsis button menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate readonly ellipsisOperationIdentifier: string =\r\n\t\t'Ellipsis';\r\n\r\n\t/**\r\n\t * Gets the case sensitive constant used to specify if this operation\r\n\t * handles the save entity event.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate readonly saveEntityOperationIdentifier: string =\r\n\t\t'SaveEntity';\r\n\r\n\t/**\r\n\t * Gets the case sensitive constant used to specify if this operation\r\n\t * emits the save entity event.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate readonly emitSaveEntityOperationIdentifier: string =\r\n\t\t'EmitSaveEntityEvent';\r\n\r\n\t/**\r\n\t * Gets the debounce delay before hiding or showing operations.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate readonly operationChangeDebounceDelay: number = 50;\r\n\r\n\t/**\r\n\t * Gets the boolean value that will enable or disable the\r\n\t * save entity button if sent in the operation group.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate saveButtonDisabled: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the site layout change event.\r\n\t * This will calculate if an ellipsis menu should be populated to keep\r\n\t * the button bar as a single row.\r\n\t *\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.operationDisplayChange.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the enable/disable save entity event. This will\r\n\t * fire via form based entity validation.\r\n\t *\r\n\t * @param {boolean} enabled\r\n\t * If true, this will enable the entity save button otherwise\r\n\t * it will be disabled.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tEntityEventConstants.enableEntitySaveEvent,\r\n\t\t[EntityEventParameterConstants.enabled])\r\n\tpublic async enableEntitySave(\r\n\t\tenabled: boolean): Promise\r\n\t{\r\n\t\tthis.saveButtonDisabled = !enabled;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.saveEntityMenuItem))\r\n\t\t{\r\n\t\t\tthis.saveEntityMenuItem.disabled = this.saveButtonDisabled;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On component changes event.\r\n\t * This method is used to look for changes in the reserve bottom right\r\n\t * value.\r\n\t *\r\n\t * @param {SimpleChanges} simpleChanges\r\n\t * The altered values that fired this on change event.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tsimpleChanges: SimpleChanges): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tsimpleChanges.reserveHeaderBottomRight?.currentValue)\r\n\t\t\t&& this.reserveHeaderBottomRight !==\r\n\t\t\t\tsimpleChanges.reserveHeaderBottomRight.currentValue)\r\n\t\t{\r\n\t\t\tthis.operationDisplayChange.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will complete the display change subject.\r\n\t *\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.operationDisplayChange.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the tap mobile only event on the tooltip icon\r\n\t * and toggle the display of the tooltip.\r\n\t *\r\n\t * @param {number} elementIndex\r\n\t * The element index that has captured a tooltip toggle event.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic mobileTooltipToggle(\r\n\t\telementIndex: number): void\r\n\t{\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < this.operationContainer?.nativeElement?.children?.length;\r\n\t\t\tindex++)\r\n\t\t{\r\n\t\t\tconst tooltipElement: any =\r\n\t\t\t\tthis.operationContainer.nativeElement.children[index];\r\n\t\t\ttooltipElement.dispatchEvent(\r\n\t\t\t\tnew Event(index === elementIndex\r\n\t\t\t\t\t? MouseEventConstants.mouseEnter\r\n\t\t\t\t\t: MouseEventConstants.mouseLeave));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @param {string} tooltipMessage\r\n\t * If sent, this will be the tooltip message signifying that a tooltip\r\n\t * should be displayed. If this is null, the nested click command\r\n\t * will be ran.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent,\r\n\t\ttooltipMessage: string): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(tooltipMessage))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles calculations and display based on site width to ensure we can\r\n\t * always show a single line operation button bar. If insufficient room\r\n\t * exists these operations are pushed into an ellipsis item. If enough\r\n\t * room exists and an ellipsis item was previously pushed into an ellipsis\r\n\t * item, this will also add that item back until the original operation\r\n\t * group is displayed.\r\n\t *\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic handleOperationButtonDisplay(): void\r\n\t{\r\n\t\tif (this.loading === true\r\n\t\t\t|| AnyHelper.isNull(this.model)\r\n\t\t\t|| AnyHelper.isNull(this.operationContainer))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst operationContainerWidth: number =\r\n\t\t\tthis.operationContainer.nativeElement.scrollWidth;\r\n\r\n\t\tconst utilizedFilterWidth: number =\r\n\t\t\tthis.reserveHeaderBottomRight === true\r\n\t\t\t\t? AppConstants.staticLayoutSizes.headerBottomRightIconWidth\r\n\t\t\t\t: 0;\r\n\t\tconst utilizedTabletWidth: number =\r\n\t\t\tAppConstants.staticLayoutSizes.utilityMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.collapsedContextMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.nestedContentPadding * 3\r\n\t\t\t\t+ utilizedFilterWidth;\r\n\t\tconst utilizedDesktopWidth: number =\r\n\t\t\tutilizedTabletWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.slimMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.nestedContentPadding * 1;\r\n\t\tconst utilizedWidth: number =\r\n\t\t\tthis.siteLayoutService.contentWidth\r\n\t\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t? utilizedTabletWidth\r\n\t\t\t\t\t: utilizedDesktopWidth);\r\n\r\n\t\t// If we are showing parameters and chips, split this width.\r\n\t\tconst availableBarDisplayWidth: number =\r\n\t\t\tthis.reserveHeaderBottomRight === true\r\n\t\t\t\t&& this.siteLayoutService.contentWidth >\r\n\t\t\t\t\tthis.twoColumnHeaderBreakpoint\r\n\t\t\t\t? (this.siteLayoutService.contentWidth\r\n\t\t\t\t\t\t- utilizedDesktopWidth) / 2\r\n\t\t\t\t: utilizedWidth;\r\n\r\n\t\tconst tooSmall: boolean =\r\n\t\t\toperationContainerWidth > availableBarDisplayWidth;\r\n\t\tconst hiddenMenuItems: MenuItem[] =\r\n\t\t\tthis.ellipsisMenuItem?.items?.filter(\r\n\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\tmenuItem.id ===\r\n\t\t\t\t\t\tOperationButtonTypeConstants.button\r\n\t\t\t\t\t\t\t|| menuItem.id ===\r\n\t\t\t\t\t\t\t\tOperationButtonTypeConstants.groupButton) || [];\r\n\r\n\t\tconst hiddenMenuItemWidth: number =\r\n\t\t\thiddenMenuItems?.length > 0\r\n\t\t\t\t? this.getOperationButtonWidth(hiddenMenuItems[0])\r\n\t\t\t\t: this.siteLayoutService.contentWidth;\r\n\t\tconst canDisplayAnotherItem: boolean =\r\n\t\t\tavailableBarDisplayWidth >\r\n\t\t\t\toperationContainerWidth + hiddenMenuItemWidth;\r\n\r\n\t\tif (tooSmall === true || canDisplayAnotherItem === true)\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNull(this.ellipsisMenuItem))\r\n\t\t\t{\r\n\t\t\t\tthis.ellipsisMenuItem = this.ellipsisOperationPlaceholder;\r\n\t\t\t\tthis.model.push(this.ellipsisMenuItem);\r\n\t\t\t}\r\n\r\n\t\t\tlet changeMade: boolean = false;\r\n\r\n\t\t\tif (tooSmall === true\r\n\t\t\t\t&& this.model.length > 1)\r\n\t\t\t{\r\n\t\t\t\tconst shuffleItems: MenuItem[] =\r\n\t\t\t\t\tthis.model.filter(\r\n\t\t\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\t\t\tmenuItem.id !==\r\n\t\t\t\t\t\t\t\tOperationButtonTypeConstants.ellipsisButton);\r\n\t\t\t\tconst shuffleItem: MenuItem =\r\n\t\t\t\t\tshuffleItems[shuffleItems.length - 1];\r\n\r\n\t\t\t\tthis.ellipsisMenuItem.items =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\tshuffleItem,\r\n\t\t\t\t\t\t...this.ellipsisMenuItem.items\r\n\t\t\t\t\t];\r\n\t\t\t\tthis.model.splice(\r\n\t\t\t\t\tthis.model.lastIndexOf(shuffleItem),\r\n\t\t\t\t\t1);\r\n\r\n\t\t\t\tthis.calculateEllipsisDisplay();\r\n\t\t\t\tchangeMade = true;\r\n\t\t\t}\r\n\t\t\telse if (canDisplayAnotherItem === true)\r\n\t\t\t{\r\n\t\t\t\tthis.ellipsisMenuItem.items.splice(0, 1);\r\n\t\t\t\tthis.model.push(hiddenMenuItems[0]);\r\n\r\n\t\t\t\tif (this.ellipsisMenuItem.items.length === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.model =\r\n\t\t\t\t\t\tthis.model.filter(\r\n\t\t\t\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\t\t\t\tmenuItem.id !==\r\n\t\t\t\t\t\t\t\t\tOperationButtonTypeConstants\r\n\t\t\t\t\t\t\t\t\t\t.ellipsisButton);\r\n\t\t\t\t\tthis.ellipsisMenuItem = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.calculateEllipsisDisplay();\r\n\t\t\t\tchangeMade = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (changeMade === true)\r\n\t\t\t{\r\n\t\t\t\tthis.redrawEllipsis = true;\r\n\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.redrawEllipsis = false;\r\n\t\t\t\t});\r\n\t\t\t\tthis.operationDisplayChange.next();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.firstVisibleButtonIndex = this.getFirstVisibleButtonIndex();\r\n\t\tthis.lastVisibleButtonIndex = this.getLastVisibleButtonIndex();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the expected button width of a sent menu item\r\n\t * when displayed in this button bar.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The menu item to perform a display width calculation for.\r\n\t * @returns {number}\r\n\t * The width in pixels of the sent menu item.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic getOperationButtonWidth(\r\n\t\tmenuItem: MenuItem): number\r\n\t{\r\n\t\tconst buttonPaddingAndMargin: number =\r\n\t\t\tAppConstants.staticLayoutSizes.nestedContentPadding * 2;\r\n\t\tconst displayedIconWidth: number = 20;\r\n\t\tconst iconWidth: number =\r\n\t\t\tAnyHelper.isNullOrWhitespace(menuItem.icon)\r\n\t\t\t\t&& menuItem.id !== OperationButtonTypeConstants.groupButton\r\n\t\t\t\t? 0\r\n\t\t\t\t: displayedIconWidth;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(menuItem?.label))\r\n\t\t{\r\n\t\t\treturn iconWidth + buttonPaddingAndMargin;\r\n\t\t}\r\n\r\n\t\tconst textElement: HTMLSpanElement =\r\n\t\t\tdocument.createElement('span');\r\n\t\tdocument.body.appendChild(textElement);\r\n\r\n\t\ttextElement.style.fontFamily =\r\n\t\t\tAppConstants.cssValues.fontFamily;\r\n\t\ttextElement.style.fontSize =\r\n\t\t\t`${AppConstants.staticLayoutSizes.fontSize}px`;\r\n\t\ttextElement.style.height = 'auto';\r\n\t\ttextElement.style.width = 'auto';\r\n\t\ttextElement.style.position = 'absolute';\r\n\t\ttextElement.style.whiteSpace = 'no-wrap';\r\n\t\ttextElement.innerHTML = menuItem.label;\r\n\r\n\t\tconst width = Math.ceil(textElement.clientWidth)\r\n\t\t\t+ iconWidth\r\n\t\t\t+ buttonPaddingAndMargin;\r\n\t\tdocument.body.removeChild(textElement);\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a menu item command from an action\r\n\t * in the button bar.\r\n\t *\r\n\t * @async\r\n\t * @param {Function} command\r\n\t * The command to be executed.\r\n\t * @param {boolean} useCommandPromise\r\n\t * The user interpolated command.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic async executeCommand(\r\n\t\tcommand: string | Function,\r\n\t\tuseCommandPromise: boolean = false): Promise\r\n\t{\r\n\t\tthis.executingCommand = true;\r\n\r\n\t\tconst excecutableCommand: Function =\r\n\t\t\tuseCommandPromise === true\r\n\t\t\t\t? StringHelper.transformToFunction(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tcommand,\r\n\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext)\r\n\t\t\t\t: command;\r\n\r\n\t\tlet commandException: string;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tawait excecutableCommand(\r\n\t\t\t\tthis,\r\n\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tcommandException = exception;\r\n\r\n\t\t\t// Display handled exception for developer support.\r\n\t\t\tconsole.error(\r\n\t\t\t\t'Exception thrown in nested command: ',\r\n\t\t\t\texception);\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.loadingOperations.emit(\r\n\t\t\t\t{\r\n\t\t\t\t\tloadingOperations: false,\r\n\t\t\t\t\texception: commandException\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.executingCommand = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the index that should be a rounded left side button.\r\n\t *\r\n\t * @returns {number}\r\n\t * A value representing the index of the first visible button.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t public getFirstVisibleButtonIndex(): number\r\n\t {\r\n\t\treturn this.model?.findIndex(\r\n\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\tmenuItem.visible !== false\r\n\t\t\t\t\t|| menuItem.items?.length > 0);\r\n\t }\r\n\r\n\t/**\r\n\t * Calculates the index that should be a rounded right side button.\r\n\t *\r\n\t * @returns {number}\r\n\t * A value representing the index of the last visible button.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic getLastVisibleButtonIndex(): number\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.ellipsisMenuItem))\r\n\t\t{\r\n\t\t\treturn AppConstants.negativeIndex;\r\n\t\t}\r\n\r\n\t\tconst lastVisibleItemIndex: number =\r\n\t\t\t[...this.model]\r\n\t\t\t\t?.reverse()\r\n\t\t\t\t.findIndex(\r\n\t\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\t\tmenuItem.visible !== false\r\n\t\t\t\t\t\t\t|| menuItem.items?.length > 0);\r\n\r\n\t\treturn (this.model?.length - 1) - lastVisibleItemIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actions post operation group load.\r\n\t *\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tpublic performPostOperationLoadActions(): void\r\n\t{\r\n\t\tthis.model?.forEach((menuItem: MenuItem) =>\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNull(menuItem.items)\r\n\t\t\t\t|| (!AnyHelper.isNull(menuItem.items)\r\n\t\t\t\t\t&& menuItem.items.length === 0))\r\n\t\t\t{\r\n\t\t\t\tif (menuItem.id?.includes(\r\n\t\t\t\t\tthis.saveEntityOperationIdentifier)\r\n\t\t\t\t\t|| menuItem.id?.includes(\r\n\t\t\t\t\t\tthis.emitSaveEntityOperationIdentifier))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.saveEntityMenuItem = menuItem;\r\n\t\t\t\t\tthis.saveEntityMenuItem.disabled = this.saveButtonDisabled;\r\n\t\t\t\t\tthis.saveEntityMenuItem.styleClass =\r\n\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmenuItem.id =\r\n\t\t\t\t\tOperationButtonTypeConstants.button;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(menuItem.id)\r\n\t\t\t\t\t&& menuItem.id.indexOf(\r\n\t\t\t\t\t\tthis.ellipsisOperationIdentifier) !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tmenuItem.id =\r\n\t\t\t\t\t\tOperationButtonTypeConstants.ellipsisButton;\r\n\t\t\t\t\tmenuItem.styleClass =\r\n\t\t\t\t\t\tAppConstants.cssClasses.pButtonOutlined;\r\n\t\t\t\t\tthis.ellipsisMenuItem = menuItem;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tmenuItem.items.forEach((item: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (item.items != null\r\n\t\t\t\t\t\t\t&& item.items.length > 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Note: This check can be removed if we want\r\n\t\t\t\t\t\t\t// to allow nested operation displays on\r\n\t\t\t\t\t\t\t// all operation button bar components.\r\n\t\t\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t\t\t`The operation group of ${menuItem.label} is `\r\n\t\t\t\t\t\t\t\t+ 'not valid for this action set. '\r\n\t\t\t\t\t\t\t\t+ 'Please use the available Ellipsis display '\r\n\t\t\t\t\t\t\t\t+ 'for multi-level nested actions.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tmenuItem.id =\r\n\t\t\t\t\t\tOperationButtonTypeConstants.groupButton;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (AnyHelper.isNullOrEmpty(menuItem.styleClass))\r\n\t\t\t{\r\n\t\t\t\tmenuItem.styleClass =\r\n\t\t\t\t\tAppConstants.cssClasses.pButtonOutlined;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!AnyHelper.isNull(this.model)\r\n\t\t\t&& this.model.length > 0)\r\n\t\t{\r\n\t\t\tthis.operationDisplayChange.pipe(\r\n\t\t\t\tdebounceTime(this.operationChangeDebounceDelay))\r\n\t\t\t\t.subscribe(() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.handleOperationButtonDisplay();\r\n\t\t\t\t});\r\n\t\t\tthis.operationDisplayChange.next();\r\n\t\t}\r\n\r\n\t\tthis.calculateEllipsisDisplay();\r\n\t\tthis.loadedOperationsCountChanged.emit(this.model?.length || 0);\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates ellipsis based display values.\r\n\t *\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\tprivate calculateEllipsisDisplay(): void\r\n\t{\r\n\t\tthis.standaloneEllipsisDisplayed =\r\n\t\t\tthis.model?.length === 1\r\n\t\t\t&& this.model[0] === this.ellipsisMenuItem;\r\n\t}\r\n}","\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n
","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tanimate,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tBaseOperationMenuDisplayDirective\r\n} from '@operation/directives/base-operation-menu-display.directive';\r\nimport {\r\n\tDisplayAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tScrollPanel\r\n} from 'primeng/scrollpanel';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'operation-button-menu',\r\n\ttemplateUrl: './operation-button-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./operation-button-menu.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tDisplayAnimation,\r\n\t\ttrigger('easeAnimation', [\r\n\t\t\tstate('hidden', style({\r\n\t\t\t\ttransform: 'translate(-50%, 5%)',\r\n\t\t\t\topacity: 0\r\n\t\t\t})),\r\n\t\t\tstate('visible', style({\r\n\t\t\t\ttransform: 'translate(-50%, 0)',\r\n\t\t\t\topacity: 1\r\n\t\t\t})),\r\n\t\t\ttransition('visible => hidden',\r\n\t\t\t\tanimate('195ms ease-out')),\r\n\t\t\ttransition('hidden => visible',\r\n\t\t\t\tanimate('195ms ease-in'))\r\n\t\t]),\r\n\t\ttrigger('rotationAnimation', [\r\n\t\t\tstate('default', style({\r\n\t\t\t\ttransform: 'rotate(0)'\r\n\t\t\t})),\r\n\t\t\tstate('rotated', style({\r\n\t\t\t\ttransform: 'rotate(-180deg)'\r\n\t\t\t})),\r\n\t\t\ttransition('rotated => default',\r\n\t\t\t\tanimate('195ms ease-out')),\r\n\t\t\ttransition('default => rotated',\r\n\t\t\t\tanimate('195ms ease-in'))\r\n\t\t])\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a dropdown\r\n * operation menu component.\r\n * @note This component was built to replicate the primeNG\r\n * split button component and will be consistent with the\r\n * split button display.\r\n *\r\n * @export\r\n * @class OperationButtonMenuComponent\r\n * @extends {BaseOperationMenuDisplayComponent}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class OperationButtonMenuComponent\r\n\textends BaseOperationMenuDisplayDirective\r\n\timplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the operation button menu\r\n\t * component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector ref service.\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(siteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the use ellipsis value that when set as true will\r\n\t * display the operation menu with the ellipsis button.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic useEllipsis: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the fixed overlay location which if sent will\r\n\t * override location calculations.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic fixedOverlayLocation: string;\r\n\r\n\t/**\r\n\t * Gets or sets the if wants to invert the colors.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic invertedColors: boolean;\r\n\r\n\t/**\r\n\t * Gets if show the ellipsis in small size version.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic smallEllipsis: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the menu item that will be displayed in the\r\n\t * dropdown menu.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic operationGroup: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the rounded right border truthy that can be applied to this\r\n\t * button display.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic roundedRightBorder: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the rounded left border truthy that can be applied to this\r\n\t * button display.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@Input()\r\n\tpublic roundedLeftBorder: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t @Input()\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the operation button menu element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@ViewChild('OperationButtonMenu', {static: true})\r\n\t public operationMenu: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis button element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@ViewChild('ellipsisButton')\r\n\tpublic ellipsisButton: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the scroll panel element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@ViewChild('ScrollPanel')\r\n\tpublic scrollPanel: ScrollPanel;\r\n\r\n\t/**\r\n\t * Gets or sets the value used to specify whether the\r\n\t * dropdown menu is currently active and displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic active: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the calculated overlay location.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic calculatedOverlayLocation: string;\r\n\r\n\t/**\r\n\t * Gets or sets the debounced value used to specify whether the\r\n\t * dropdown menu is currently active. This debounce is used to\r\n\t * handle delaying animation displays until it has confirmed\r\n\t * the event was not a click on the dropdown menu.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic activeChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the value used to specify whether the\r\n\t * dsiplayed operation menu should be reset.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic resetMenu: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the previous content width which is used when\r\n\t * calculating overlay locations.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic previousContentWidth: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the active menu item of this operation menu.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic activeMenuItem: MenuItem = null;\r\n\r\n\t/**\r\n\t * Gets or sets the displayed operation menu width. This is\r\n\t * used in display based calculations.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tprivate readonly overlayMenuWidth: number = 250;\r\n\r\n\t/**\r\n\t * Gets or sets the debounce delay used for checking\r\n\t * display values of the operation menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tprivate readonly debounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.setCalculatedOverlayLocation();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this list when an associated menu is\r\n\t * opened, such as a navigation menu.\r\n\t *\r\n\t * @param {string} controlIdentifier\r\n\t * The identifier of the control sending the close associated menus\r\n\t * event.\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (this.active === true\r\n\t\t\t&& controlIdentifer !== 'ellipsis-menu')\r\n\t\t{\r\n\t\t\tthis.closeList();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the onInit interface.\r\n\t * This method is used to set a debounce on the active\r\n\t * changed value.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.activeChanged.pipe(\r\n\t\t\tdebounceTime(this.debounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((newValue: boolean) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.active === true\r\n\t\t\t\t\t&& newValue === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.resetMenu = true;\r\n\r\n\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.resetMenu = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tthis.debounceDelay);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handleSmallEllipsisLogic(newValue);\r\n\t\t\t\tthis.active = newValue;\r\n\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles logic for displaying a small ellipsis.\r\n\t * This method is used to set the container to show at the top level\r\n\t * if required.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic handleSmallEllipsisLogic(\r\n\t\tactive: boolean): void\r\n\t{\r\n\t\tif (this.smallEllipsis === true)\r\n\t\t{\r\n\t\t\tlet parentElement: HTMLElement =\r\n\t\t\t\tthis.ellipsisButton.nativeElement.parentElement;\r\n\t\t\twhile (!AnyHelper.isNull(parentElement))\r\n\t\t\t{\r\n\t\t\t\tif (parentElement.classList.contains('action-column'))\r\n\t\t\t\t{\r\n\t\t\t\t\tparentElement.style.setProperty(\r\n\t\t\t\t\t\t'z-index',\r\n\t\t\t\t\t\tactive === true\r\n\t\t\t\t\t\t\t? '1'\r\n\t\t\t\t\t\t\t: '0',\r\n\t\t\t\t\t\t'important');\r\n\t\t\t\t\tparentElement = null;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tparentElement = parentElement.parentElement;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on destroy interface.\r\n\t * Completes any active subscriptions.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\t\tthis.activeChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the button click command which is sent when the\r\n\t * dropdown button is clicked directly.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that fired this.\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic buttonClick(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tthis.operationGroup.items.forEach(\r\n\t\t\titem => item.expanded = false);\r\n\r\n\t\tif (!AnyHelper.isNull(event)\r\n\t\t\t&& this.active === false)\r\n\t\t{\r\n\t\t\tthis.handleSmallEllipsisLogic(!this.active);\r\n\t\t}\r\n\r\n\t\tthis.setCalculatedOverlayLocation(!this.active);\r\n\t\tthis.activeChanged.next(!this.active);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the menu item clicked on the operation menu button. This event is\r\n\t * used to calculate the scroll panel height.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The clicked menu item on the operation menu button.\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic itemClicked(\r\n\t\tmenuItem: MenuItem): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.activeMenuItem)\r\n\t\t\t&& this.activeMenuItem.id !== menuItem.id)\r\n\t\t{\r\n\t\t\tthis.activeMenuItem.expanded = false;\r\n\t\t}\r\n\r\n\t\tthis.activeMenuItem = menuItem;\r\n\r\n\t\tthis.setOverlayScrollPanel();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close list event sent from the operation menu\r\n\t * component.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic closeList(): void\r\n\t{\r\n\t\tthis.activeChanged.next(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close overlay event sent from the operation menu\r\n\t * component. This is sent when an action item is clicked.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic closeOverlays(): void\r\n\t{\r\n\t\tthis.activeChanged.next(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the available screen space and defines the expected\r\n\t * overlay location wne a button menu is clicked.\r\n\t *\r\n\t * @param {boolean} forceCalculation\r\n\t * If sent and true, this will refresh and calculate a newly opened panel.\r\n\t * This value defaults to false.\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic setCalculatedOverlayLocation(\r\n\t\tforceCalculation: boolean = false): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.fixedOverlayLocation))\r\n\t\t{\r\n\t\t\tthis.calculatedOverlayLocation = this.fixedOverlayLocation;\r\n\t\t\tthis.setOverlayScrollPanel();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (forceCalculation === false\r\n\t\t\t&& (this.previousContentWidth ===\r\n\t\t\t\tthis.siteLayoutService.contentWidth\r\n\t\t\t\t|| AnyHelper.isNull(this.operationMenu)\r\n\t\t\t\t|| AnyHelper.isNull(this.operationMenu.nativeElement)))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet calculatedOverlayLocation: string;\r\n\t\tconst operationButtonClientContainer: DOMRect =\r\n\t\t\tthis.operationMenu.nativeElement.getBoundingClientRect();\r\n\r\n\t\tconst availableLeftDisplay: number =\r\n\t\t\toperationButtonClientContainer.right\r\n\t\t\t\t- AppConstants.staticLayoutSizes.standardPadding\r\n\t\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t&& this.siteLayoutService.contentCssClass\r\n\t\t\t\t\t\t!== AppConstants.responsiveClasses.smallPhoneContent\r\n\t\t\t\t\t? AppConstants.staticLayoutSizes.collapsedContextMenuWidth\r\n\t\t\t\t\t: AppConstants.staticLayoutSizes.expandedContextMenuWidth)\r\n\t\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t&& this.siteLayoutService.contentCssClass\r\n\t\t\t\t\t\t!== AppConstants.responsiveClasses.smallPhoneContent\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: AppConstants.staticLayoutSizes.slimMenuWidth);\r\n\t\tconst availableRightDisplay: number =\r\n\t\t\tthis.siteLayoutService.contentWidth\r\n\t\t\t\t- operationButtonClientContainer.left\r\n\t\t\t\t- AppConstants.staticLayoutSizes.nestedContentPadding\r\n\t\t\t\t- AppConstants.staticLayoutSizes.standardPadding\r\n\t\t\t\t- AppConstants.staticLayoutSizes.utilityMenuWidth;\r\n\t\tconst availableTopDisplay: number =\r\n\t\t\toperationButtonClientContainer.top\r\n\t\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t? AppConstants.staticLayoutSizes.mobileHeaderHeight\r\n\t\t\t\t\t: 0);\r\n\t\tconst availableBottomDisplay: number =\r\n\t\t\tthis.siteLayoutService.windowHeight\r\n\t\t\t\t- operationButtonClientContainer.bottom;\r\n\t\tconst useTopDisplay: boolean =\r\n\t\t\tavailableTopDisplay > availableBottomDisplay;\r\n\r\n\t\t// Prioritize right\r\n\t\tif (availableRightDisplay > this.overlayMenuWidth)\r\n\t\t{\r\n\t\t\tcalculatedOverlayLocation =\r\n\t\t\t\tuseTopDisplay === true\r\n\t\t\t\t\t? AppConstants.overlayLocations.topRight\r\n\t\t\t\t\t: AppConstants.overlayLocations.bottomRight;\r\n\t\t}\r\n\t\t// Fall back to left\r\n\t\telse if (availableLeftDisplay > this.overlayMenuWidth)\r\n\t\t{\r\n\t\t\tcalculatedOverlayLocation =\r\n\t\t\t\tuseTopDisplay === true\r\n\t\t\t\t\t? AppConstants.overlayLocations.topLeft\r\n\t\t\t\t\t: AppConstants.overlayLocations.bottomLeft;\r\n\t\t}\r\n\t\t// Force center\r\n\t\telse\r\n\t\t{\r\n\t\t\tcalculatedOverlayLocation =\r\n\t\t\t\tuseTopDisplay === true\r\n\t\t\t\t\t? AppConstants.overlayLocations.topCenter\r\n\t\t\t\t\t: AppConstants.overlayLocations.bottomCenter;\r\n\t\t}\r\n\r\n\t\tthis.calculatedOverlayLocation = calculatedOverlayLocation;\r\n\t\tthis.previousContentWidth = this.siteLayoutService.contentWidth;\r\n\t\tthis.setOverlayScrollPanel();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the display overlay scroll panel value of this component.\r\n\t *\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tpublic setOverlayScrollPanel(): void\r\n\t{\r\n\t\tconst additionalItems: number =\r\n\t\t\tthis.activeMenuItem?.expanded === true\r\n\t\t\t\t? this.activeMenuItem.items?.length ?? 0\r\n\t\t\t\t: 0;\r\n\r\n\t\tconst availableHeight: number =\r\n\t\t\tMath.floor(this.siteLayoutService.windowHeight\r\n\t\t\t\t* AppConstants.staticLayoutSizes\r\n\t\t\t\t\t.scrollPanelOverlayHeightPercent);\r\n\r\n\t\tconst visibleItemsLength: number =\r\n\t\t\tthis.operationGroup.items.filter((item: any) =>\r\n\t\t\t\titem.visible === undefined || item.visible).length;\r\n\r\n\t\tconst requiredHeight: number =\r\n\t\t\tMath.ceil(\r\n\t\t\t\t(visibleItemsLength\r\n\t\t\t\t\t+ (additionalItems ?? 0))\r\n\t\t\t\t\t* AppConstants.staticLayoutSizes.operationMenuItemHeight);\r\n\r\n\t\tif (!AnyHelper.isNull(this.scrollPanel) &&\r\n\t \t\tavailableHeight < requiredHeight)\r\n\t\t{\r\n\t\t\tconst dynamicHeightContainer: HTMLElement =\r\n\t\t\t\tthis.scrollPanel.el.nativeElement.querySelector(\r\n\t\t\t\t\t'.operation-button-menu-container');\r\n\r\n\t\t\tif (AnyHelper.isNull(dynamicHeightContainer))\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdynamicHeightContainer.style.setProperty(\r\n\t\t\t\t'height',\r\n\t\t\t\tavailableHeight < requiredHeight\r\n\t\t\t\t\t? availableHeight + 'px'\r\n\t\t\t\t\t: requiredHeight + 'px',\r\n\t\t\t\t'important');\r\n\t\t}\r\n\t}\r\n}","\r\n\t
  • \r\n\r\n\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{child.label}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    0\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{child.badge}}\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{child.label}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{child.badge}}\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t{{child.label}}\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
      \r\n\t\t\t
    \r\n\t\t
    \r\n\t
  • \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport {\r\n\tanimate,\r\n\tkeyframes,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger,\r\n} from '@angular/animations';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayAnimation,\r\n\tEaseAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: '[operation-subgroup]',\r\n\ttemplateUrl: './operation-menu-subgroup.component.html',\r\n\tstyleUrls: ['./operation-menu-subgroup.component.scss'],\r\n\tanimations: [\r\n\t\tDisplayAnimation,\r\n\t\tEaseAnimation,\r\n\t\ttrigger('children', [\r\n\t\t\tstate('hiddenAnimated', style({\r\n\t\t\t\theight: '0px'\r\n\t\t\t})),\r\n\t\t\tstate('visibleAnimated', style({\r\n\t\t\t\theight: '*'\r\n\t\t\t})),\r\n\t\t\tstate('visible', style({\r\n\t\t\t\tdisplay: 'block'\r\n\t\t\t})),\r\n\t\t\tstate('hidden', style({\r\n\t\t\t\tdisplay: 'none'\r\n\t\t\t})),\r\n\t\t\ttransition('visibleAnimated => hiddenAnimated',\r\n\t\t\t\tanimate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\r\n\t\t\ttransition('hiddenAnimated => visibleAnimated',\r\n\t\t\t\tanimate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\r\n\t\t]),\r\n\t\ttrigger('divState', [\r\n\t\t\tstate('in',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\tbackgroundColor: 'red',\r\n\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t\t})),\r\n\t\t\ttransition('void => *', [\r\n\t\t\t\tanimate(\r\n\t\t\t\t\t1000,\r\n\t\t\t\t\tkeyframes([\r\n\t\t\t\t\t\tstyle({\r\n\t\t\t\t\t\t\topacity: 0,\r\n\t\t\t\t\t\t\ttransform: 'translateX(-100%)',\r\n\t\t\t\t\t\t\toffset: 0\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tstyle({\r\n\t\t\t\t\t\t\tbackgroundColor: '#bee0ff',\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t\t.translateXZero,\r\n\t\t\t\t\t\t\toffset: 0.3\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tstyle({\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t\t.translateXZero,\r\n\t\t\t\t\t\t\toffset: 1.0\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]))\r\n\t\t\t]),\r\n\t\t\ttransition('* => void', [\r\n\t\t\t\tanimate(300, keyframes([\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero,\r\n\t\t\t\t\t\toffset: 0\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero,\r\n\t\t\t\t\t\toffset: 0.7\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 0,\r\n\t\t\t\t\t\ttransform: 'translateX(100%)',\r\n\t\t\t\t\t\toffset: 1.0\r\n\t\t\t\t\t})\r\n\t\t\t\t]))\r\n\t\t\t])\r\n\t\t])\r\n\t]\r\n})\r\n\r\n/**\r\n * A component used to handle nested operation sub groups.\r\n *\r\n * @export\r\n * @class OperationMenuSubGroupComponent\r\n */\r\nexport class OperationMenuSubGroupComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the current menu item.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public item: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the value of the current item\r\n\t * being a root menu item.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public root: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this menu\r\n\t * item is currently visible. This is calculated on each\r\n\t * list and passed to the child list.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public visible: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this menu item\r\n\t * needs reset. This is accessed in a custom\r\n\t * get/set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic _reset: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this menu item\r\n\t * needs reset.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public get reset(): boolean\r\n\t{\r\n\t\treturn this._reset;\r\n\t}\r\n\tpublic set reset(val: boolean)\r\n\t{\r\n\t\tthis._reset = val;\r\n\r\n\t\tif (this._reset)\r\n\t\t{\r\n\t\t\tthis.activeIndex = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this menu's\r\n\t * parent item is currently active. This is\r\n\t * accessed in a custom get/set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic _parentActive: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this menu's\r\n\t * parent item is currently active.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Input() public get parentActive(): boolean\r\n\t{\r\n\t\treturn this._parentActive;\r\n\t}\r\n\tpublic set parentActive(val: boolean)\r\n\t{\r\n\t\tthis._parentActive = val;\r\n\r\n\t\tif (!this._parentActive)\r\n\t\t{\r\n\t\t\tthis.activeIndex = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter for the menu item being clicked. This\r\n\t * event will be passed to the parent of this component if specified.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\t@Output() public menuItemClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or the sub menu's active index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic activeIndex: number;\r\n\r\n\t/**\r\n\t * Handles the click event attached to the menu item.\r\n\t *\r\n\t * @param {any} event\r\n\t * The click event.\r\n\t * @param {MenuItem} item\r\n\t * The menu item that sent this click event.\r\n\t * @param {number} index\r\n\t * The menu item's index.\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic async itemClick(\r\n\t\tevent: any,\r\n\t\titem: any,\r\n\t\tindex: number): Promise\r\n\t{\r\n\t\t// IOS requires a tap, so this handles our click event and keeps\r\n\t\t// our click outside interface.\r\n\t\tif (AnyHelper.isNull(event.srcEvent))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Avoid processing disabled items.\r\n\t\tif (item.disabled)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Perform item level commands.\r\n\t\tif (item.command)\r\n\t\t{\r\n\t\t\tif (item.useCommandPromise === true)\r\n\t\t\t{\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\titem.command,\r\n\t\t\t\t\t\tthis.context),\r\n\t\t\t\t\tthis.context);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\titem.command(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toriginalEvent: event,\r\n\t\t\t\t\t\titem: item\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Allow the selection.\r\n\t\tthis.activeIndex = (this.activeIndex === index)\r\n\t\t\t? null\r\n\t\t\t: index;\r\n\r\n\t\tthis.menuItemClicked.emit(item);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the item click event sent from operations in this menu.\r\n\t * This will bubble the item clicked action up the tree from\r\n\t * children components all the way to the top level operation menu\r\n\t * component.\r\n\t *\r\n\t * @param {MenuItem} item\r\n\t * The menu item that sent this click event.\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic itemClicked(\r\n\t\tmenuItem: MenuItem): void\r\n\t{\r\n\t\tthis.menuItemClicked.emit(menuItem);\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the tap mobile only event on the tooltip icon\r\n\t * and toggle the display of the tooltip.\r\n\t *\r\n\t * @param {any} element\r\n\t * The element that has captured a tooltip toggle event.\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic mobileTooltipToggle(\r\n\t\telement: any): void\r\n\t{\r\n\t\telement.dispatchEvent(\r\n\t\t\tnew Event(MouseEventConstants.mouseEnter));\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @param {string} tooltipMessage\r\n\t * If sent, this will be the tooltip message signifying that a tooltip\r\n\t * should be displayed. If this is null, the nested click command\r\n\t * will be ran.\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent,\r\n\t\ttooltipMessage: string): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(tooltipMessage))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether or not this menu item is active.\r\n\t *\r\n\t * @param {number} index\r\n\t * The menu item's index.\r\n\t * @memberof OperationMenuSubGroupComponent\r\n\t */\r\n\tpublic isActive(\r\n\t\tindex: number): boolean\r\n\t{\r\n\t\treturn this.activeIndex === index\r\n\t\t\t&& (this.parentActive === true\r\n\t\t\t\t|| this.root === true);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInject,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tBaseOperationGroupDirective\r\n} from '@operation/directives/base-operation-group.directive';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'operation-menu',\r\n\ttemplateUrl: './operation-menu.component.html'\r\n})\r\n\r\n/**\r\n * A component used to define menu based navigation.\r\n *\r\n * @export\r\n * @class OperationMenuComponent\r\n * @extends {BaseOperationGroupDirective}\r\n * @implements {OnDestroy}\r\n */\r\nexport class OperationMenuComponent\r\n\textends BaseOperationGroupDirective\r\n\timplements OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a news instance of the operation menu component class.\r\n\t * @note These injected services are used as abstract classes multiple\r\n\t * levels deep are unable to use the standard DI pattern. This will\r\n\t * be altered in Angular 9 and directive only support.\r\n\t *\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(LoggerService)\r\n\t\t\tloggerService: LoggerService,\r\n\t\t@Inject(OperationService)\r\n\t\t\toperationService: OperationService,\r\n\t\t@Inject(OperationExecutionService)\r\n\t\t\toperationExecutionService: OperationExecutionService,\r\n\t\t@Inject(SiteLayoutService)\r\n\t\t\tsiteLayoutService: SiteLayoutService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tloggerService,\r\n\t\t\toperationService,\r\n\t\t\toperationExecutionService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id for the operation group container.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Input() public id: string;\r\n\r\n\t/**\r\n\t * Gets or sets a class for the operation group container.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Input() public class: string;\r\n\r\n\t/**\r\n\t * Gets or sets the value used to reset the\r\n\t * operation menu items.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Input() public reset: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the value used to set the active parent\r\n\t * value of operation menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Input() public parentActive: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the event sent to listening components that\r\n\t * says that this operation menu should be closed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Output() public closeList: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event sent to listening components that the\r\n\t * overlay menu holding this menu should be closed. This is used\r\n\t * to hide and show the navigation menu when in overlay mode.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Output() public closeOverlays: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event sent to listening components that the\r\n\t * active menu item has been altered. This is used\r\n\t * to display the menu options on a scroll panel when needed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@Output() public activeMenuItemAlteredEvent: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the active menu item of this operation menu.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic activeMenuItem: MenuItem = null;\r\n\r\n\t/**\r\n\t * Gets or sets the subject changes observer for the active\r\n\t * menu item.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic activeMenuItemChanged: Subject =\r\n\t\tnew Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the delay to debounce active menu item changes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tprivate readonly operationMenuDebounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to ensure that only one operation overlay menu\r\n\t * is displayed at a time. This sets the active menu item as null\r\n\t * if the event was sent from a newly active operation menu.\r\n\t *\r\n\t * @param {string} controlIdentifer\r\n\t * The identifier of the control sending this message.\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.activeMenuItem)\r\n\t\t\t&& this.id !== controlIdentifer)\r\n\t\t{\r\n\t\t\tthis.activeMenuItemChanged.next(null);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy lifecycle event.\r\n\t * This will complete the active subscription.\r\n\t *\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.activeMenuItemChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the menu item click action sent from the menu\r\n\t * sub-group component. This will emit to listening components\r\n\t * that an action was clicked and close the list.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The menu item that was clicked.\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic itemClicked(\r\n\t\tmenuItem: MenuItem): void\r\n\t{\r\n\t\tconst previousActiveMenuItem = this.activeMenuItem;\r\n\r\n\t\t// If this is a command or link, send the close list and close\r\n\t\t// overlay commands.\r\n\t\tif (!(AnyHelper.isNullOrEmpty(menuItem.command)\r\n\t\t\t&& AnyHelper.isNullOrEmpty(menuItem.url)\r\n\t\t\t&& AnyHelper.isNullOrEmpty(menuItem.routerLink)))\r\n\t\t{\r\n\t\t\tthis.closeList.emit();\r\n\t\t\tthis.closeOverlays.emit();\r\n\t\t}\r\n\r\n\t\tconst primaryLevelItems: MenuItem[] =\r\n\t\t\tthis.model.filter((item: MenuItem) =>\r\n\t\t\t\tmenuItem === item);\r\n\r\n\t\tif (primaryLevelItems.length > 0\r\n\t\t\t&& previousActiveMenuItem == null)\r\n\t\t{\r\n\t\t\tthis.activeMenuItemChanged.next(menuItem);\r\n\t\t}\r\n\r\n\t\tmenuItem.expanded =\r\n\t\t\tmenuItem.items?.length > 0\r\n\t\t\t\t? !menuItem.expanded\r\n\t\t\t\t: false;\r\n\r\n\t\tthis.activeMenuItemAlteredEvent.emit(menuItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click outside action which occurs when a click\r\n\t * occurs outside of this displayed operation menu.\r\n\t * This sets the active menu item as null.\r\n\t *\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic clickedOutside(): void\r\n\t{\r\n\t\tthis.activeMenuItemChanged.next(null);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actions post operation group load.\r\n\t * This is used to enable the active changed subject and\r\n\t * handle business rules on change of this value.\r\n\t *\r\n\t * @memberof OperationMenuComponent\r\n\t */\r\n\tpublic performPostOperationLoadActions(): void\r\n\t{\r\n\t\tthis.activeMenuItemChanged.pipe(\r\n\t\t\tdebounceTime(this.operationMenuDebounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((newValue: MenuItem) =>\r\n\t\t\t{\r\n\t\t\t\tthis.activeMenuItem = newValue;\r\n\r\n\t\t\t\tif (this.activeMenuItem == null)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.closeList.emit();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\t\t\t\tthis.id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAddRelatedContextMenuAction\r\n} from '@operation/actions/add-related-context-menu-action';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tIOperationTypeParameter\r\n} from '@operation/interfaces/operation-type-parameter.interface';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A base class used to handle session based operation\r\n * group interaction.\r\n *\r\n * @export\r\n * @class BaseSessionUserDirective\r\n * @implements {OnInit}\r\n */\r\n@Directive()\r\nexport abstract class BaseOperationGroupDirective\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of a BaseOperationGroupDirective.\r\n\t *\r\n\t * @param {LoggerService} loggerService\r\n\t * The logger service to use for exception handling.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use for loading operation groups and\r\n\t * definitions.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service to use for executing operation\r\n\t * definitions.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used .\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic loggerService: LoggerService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation group name\r\n\t * to load and display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\t@Input() public operationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the operation group display name\r\n\t * to display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\t@Input() public displayName: string;\r\n\r\n\t/**\r\n\t * Gets or sets an initial set of Menu Items to\r\n\t * be displayed prior to loading.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\t@Input() public initialModel: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the page context which will be used in any related\r\n\t * component displays.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the base model used to display the group.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic model: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets the lookup value to use when looking up an associated entity\r\n\t * type in a related context menu configuration.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate readonly associatedEntityTypeIdentifier: string =\r\n\t\t'associatedEntityTypeGroup';\r\n\r\n\t/**\r\n\t * Gets the lookup value to use when looking up a visible parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate readonly visibleParameterName: string = 'visible';\r\n\r\n\t/**\r\n\t * Gets the lookup value to use when looking up an enabled parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate readonly enabledParameterName: string = 'enabled';\r\n\r\n\t/**\r\n\t * Gets the lookup value to use when looking up a disabled message\r\n\t * parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate readonly disabledMessageParameterName: string =\r\n\t\t'disabledMessagePromise';\r\n\r\n\t/**\r\n\t * Implements the onInit interface.\r\n\t * This method is used to populate the user actions\r\n\t * loaded from the primary navigation operation group.\r\n\t *\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.pageContext ??=\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.operationGroupName))\r\n\t\t{\r\n\t\t\tthis.model =\r\n\t\t\t\tthis.initialModel\r\n\t\t\t\t\t.concat(\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: `Loading ${this.displayName}`,\r\n\t\t\t\t\t\t\t\ticon: 'fa fa-fw fa-spin fa-spinner'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]);\r\n\r\n\t\t\tthis.operationService\r\n\t\t\t\t.populateOperationGroup(\r\n\t\t\t\t\tthis.operationGroupName)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tasync(operationGroup: IOperationGroup) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// handle ownership removed operation groups.\r\n\t\t\t\t\t\tif (AnyHelper.isNull(operationGroup))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.model = [];\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.model =\r\n\t\t\t\t\t\t\tthis.model\r\n\t\t\t\t\t\t\t\t.slice(0, this.model.length - 1)\r\n\t\t\t\t\t\t\t\t.concat(await this.mapChildRelationships(\r\n\t\t\t\t\t\t\t\t\toperationGroup.childRelationships));\r\n\t\t\t\t\t\tthis.performPostOperationLoadActions();\r\n\t\t\t\t\t})\r\n\t\t\t\t.catch(\r\n\t\t\t\t\t(exception: Error) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.model =\r\n\t\t\t\t\t\t\tthis.model\r\n\t\t\t\t\t\t\t\t.slice(0, this.model.length - 1);\r\n\r\n\t\t\t\t\t\tconst exceptionMessage: string =\r\n\t\t\t\t\t\t\t`There is a problem loading ${this.displayName}: `\r\n\t\t\t\t\t\t\t\t+ `${exception.message}.`;\r\n\r\n\t\t\t\t\t\tthis.loggerService.logError(\r\n\t\t\t\t\t\t\texceptionMessage);\r\n\r\n\t\t\t\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t\t\t\tAppConstants.messages.genericErrorMessage,\r\n\t\t\t\t\t\t\texceptionMessage,\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\t\texception);\r\n\t\t\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.model =\r\n\t\t\t\tthis.initialModel;\r\n\r\n\t\t\tthis.performPostOperationLoadActions();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the child relationships to be mapped for nested\r\n\t * operation groups.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} childRelationships\r\n\t * The child relationships to be mapped.\r\n\t * @memberof BaseOperationGroupDirective\r\n\t * @returns {MenuItem[]}\r\n\t * A decorated heirarchy menu representing the operation group.\r\n\t */\r\n\tpublic async mapChildRelationships(\r\n\t\tchildRelationships: IOperationGroupRelationship[]): Promise\r\n\t{\r\n\t\tconst definitions: MenuItem[] = [];\r\n\r\n\t\tfor (const relationship of childRelationships)\r\n\t\t{\r\n\t\t\tif (relationship.operationDefinition != null)\r\n\t\t\t{\r\n\t\t\t\tconst populatedOperationDefinition: IOperationDefinition =\r\n\t\t\t\t\tawait this.operationService\r\n\t\t\t\t\t\t.populateOperationDefinition(\r\n\t\t\t\t\t\t\trelationship.operationDefinition,\r\n\t\t\t\t\t\t\trelationship,\r\n\t\t\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\t\tconst visible: boolean =\r\n\t\t\t\t\tawait this.visible(\r\n\t\t\t\t\t\tpopulatedOperationDefinition,\r\n\t\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\t\tconst enabled: boolean = visible\r\n\t\t\t\t\t? await this.enabled(\r\n\t\t\t\t\t\tpopulatedOperationDefinition,\r\n\t\t\t\t\t\tthis.pageContext)\r\n\t\t\t\t\t: false;\r\n\r\n\t\t\t\tlet disabledMessage: string;\r\n\t\t\t\tif (enabled === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tdisabledMessage =\r\n\t\t\t\t\t\tawait this.resolveStringPromise(\r\n\t\t\t\t\t\t\tthis.disabledMessageParameterName,\r\n\t\t\t\t\t\t\tpopulatedOperationDefinition,\r\n\t\t\t\t\t\t\tthis.pageContext);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tpopulatedOperationDefinition.icon)\r\n\t\t\t\t\t&& populatedOperationDefinition.icon.indexOf(\r\n\t\t\t\t\t\tAppConstants.contextMenuIdentifiers\r\n\t\t\t\t\t\t\t.addRelatedContextMenuIdentifier) !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (visible === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst operationAction: AddRelatedContextMenuAction =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this.operationExecutionService\r\n\t\t\t\t\t\t\t\t.executeMappedOperation(\r\n\t\t\t\t\t\t\t\t\tpopulatedOperationDefinition);\r\n\r\n\t\t\t\t\tconst isNested: boolean =\r\n\t\t\t\t\t\toperationAction.singularEndpoints.indexOf(\r\n\t\t\t\t\t\t\toperationAction.endPoint) === -1;\r\n\r\n\t\t\t\t\tconst contextMenuRelationships: MenuItem[] =\r\n\t\t\t\t\t\tenabled === false && isNested === true\r\n\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t: await operationAction.execute();\r\n\r\n\t\t\t\t\tif (isNested === false\r\n\t\t\t\t\t\t&& !AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\tcontextMenuRelationships))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontextMenuRelationships[0].disabled = !enabled;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Do not display the relation if singular and no results.\r\n\t\t\t\t\tif (isNested === true\r\n\t\t\t\t\t\t|| contextMenuRelationships.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdefinitions.push(isNested === true\r\n\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: StringHelper.interpolate(\r\n\t\t\t\t\t\t\t\t\t\tpopulatedOperationDefinition.label,\r\n\t\t\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\t\t\ticon: enabled === false\r\n\t\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t\t: populatedOperationDefinition.icon,\r\n\t\t\t\t\t\t\t\t\tid: operationAction[\r\n\t\t\t\t\t\t\t\t\t\tthis.associatedEntityTypeIdentifier],\r\n\t\t\t\t\t\t\t\t\tdisabled: !enabled,\r\n\t\t\t\t\t\t\t\t\tvisible: visible,\r\n\t\t\t\t\t\t\t\t\ttooltipOptions: {\r\n\t\t\t\t\t\t\t\t\t\ttooltipLabel: disabledMessage\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\titems: contextMenuRelationships\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t: contextMenuRelationships[0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tconst currentMenuItem: MenuItem =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: StringHelper.interpolate(\r\n\t\t\t\t\t\t\t\trelationship.operationDefinition.label,\r\n\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\ticon: this.getIcon(\r\n\t\t\t\t\t\t\t\trelationship.operationDefinition.icon),\r\n\t\t\t\t\t\t\tid: relationship.operationDefinition\r\n\t\t\t\t\t\t\t\t.operationType.name\r\n\t\t\t\t\t\t\t\t+ AppConstants.characters.leftSquareBracket\r\n\t\t\t\t\t\t\t\t+ relationship.operationDefinition.name\r\n\t\t\t\t\t\t\t\t+ AppConstants.characters.rightSquareBracket,\r\n\t\t\t\t\t\t\tvisible: visible,\r\n\t\t\t\t\t\t\tdisabled: !enabled,\r\n\t\t\t\t\t\t\ttooltipOptions: {\r\n\t\t\t\t\t\t\t\ttooltipLabel: disabledMessage\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tcommand: async(_event: Event) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\tcurrentMenuItem.disabled = true;\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tawait this.operationExecutionService\r\n\t\t\t\t\t\t\t\t\t\t.executeMappedOperation(\r\n\t\t\t\t\t\t\t\t\t\t\tawait this.operationService\r\n\t\t\t\t\t\t\t\t\t\t\t\t.populateOperationDefinition(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trelationship\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operationDefinition,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trelationship,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pageContext));\r\n\r\n\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\t\tcurrentMenuItem.disabled = !enabled;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\t\tcurrentMenuItem.disabled = !enabled;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthrow exception;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tdefinitions\r\n\t\t\t\t\t\t.push(currentMenuItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst item: IOperationGroup =\r\n\t\t\t\t\trelationship.operationGroup;\r\n\r\n\t\t\t\t// Recursively populate each child.\r\n\t\t\t\tconst items: MenuItem[] =\r\n\t\t\t\t\tawait this.mapChildRelationships(\r\n\t\t\t\t\t\trelationship.operationGroup\r\n\t\t\t\t\t\t\t.childRelationships);\r\n\r\n\t\t\t\tif (items.filter(\r\n\t\t\t\t\t(groupItem: MenuItem) =>\r\n\t\t\t\t\t\tgroupItem.visible === true).length === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdefinitions\r\n\t\t\t\t\t.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: StringHelper.interpolate(\r\n\t\t\t\t\t\t\t\titem.label,\r\n\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\ticon: this.getIcon(item.icon),\r\n\t\t\t\t\t\t\tid: item.name,\r\n\t\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\t\titems: items\r\n\t\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn definitions;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the visible value of this operation definition.\r\n\t * If not set, this value defaults to true.\r\n\t *\r\n\t * @async\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to check for visibility.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The dynamic component context to run this visibility check against.\r\n\t * @returns {Promise}\r\n\t * An awaitable boolean signifying the visible value of this operation\r\n\t * definition. This value defaults to true if not set.\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic async visible(\r\n\t\toperationDefinition: IOperationDefinition,\r\n\t\tpageContext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\treturn this.resolveBooleanPromise(\r\n\t\t\tthis.visibleParameterName,\r\n\t\t\toperationDefinition,\r\n\t\t\tpageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the enabled value of this operation definition.\r\n\t * If not set, this value defaults to true.\r\n\t *\r\n\t * @async\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to check.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The dynamic component context to run this enabled check against.\r\n\t * @returns {Promise}\r\n\t * An awaitable boolean signifying the enabled value of this operation\r\n\t * definition. This value defaults to true if not set.\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic async enabled(\r\n\t\toperationDefinition: IOperationDefinition,\r\n\t\tpageContext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\treturn this.resolveBooleanPromise(\r\n\t\t\tthis.enabledParameterName,\r\n\t\t\toperationDefinition,\r\n\t\t\tpageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actions post operation group load.\r\n\t *\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tpublic abstract performPostOperationLoadActions(): void;\r\n\r\n\t/**\r\n\t * Calculates and returns the boolean value of this operation definition\r\n\t * based on a raw boolean promise valued parameter.\r\n\t *\r\n\t * @async\r\n\t * @param {string} promiseParameterName\r\n\t * The boolean valued promise parameter name to check.\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to check.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The dynamic component context to run this enabled check against.\r\n\t * @returns {Promise}\r\n\t * An awaitable boolean signifying the boolean value of this operation\r\n\t * definition parameter. This value defaults to true if not set.\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate async resolveBooleanPromise(\r\n\t\tpromiseParameterName: string,\r\n\t\toperationDefinition: IOperationDefinition,\r\n\t\tpageContext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\tconst booleanPromise: string =\r\n\t\t\toperationDefinition.operationTypeParameters?.find(\r\n\t\t\t\t(typeParameter: IOperationTypeParameter) =>\r\n\t\t\t\t\ttypeParameter.name ===\r\n\t\t\t\t\t\tpromiseParameterName)?.definitionParameterValue;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(booleanPromise))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.transformAndExecuteBooleanPromise(\r\n\t\t\tbooleanPromise,\r\n\t\t\tpageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a string value of this operation definition\r\n\t * based on a raw string promise valued parameter.\r\n\t *\r\n\t * @async\r\n\t * @param {string} promiseParameterName\r\n\t * The string valued promise parameter name to check.\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to check.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The dynamic component context to run this enabled check against.\r\n\t * @returns {Promise}\r\n\t * An awaitable string signifying the awaitable value of this operation\r\n\t * definition parameter. This value defaults to null if not set.\r\n\t * @memberof BaseOperationGroupDirective\r\n\t */\r\n\tprivate async resolveStringPromise(\r\n\t\tpromiseParameterName: string,\r\n\t\toperationDefinition: IOperationDefinition,\r\n\t\tpageContext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\tconst messagePromise: string =\r\n\t\t\toperationDefinition.operationTypeParameters?.find(\r\n\t\t\t\t(typeParameter: IOperationTypeParameter) =>\r\n\t\t\t\t\ttypeParameter.name ===\r\n\t\t\t\t\t\tpromiseParameterName)?.definitionParameterValue;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(messagePromise))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.transformToDataPromise(\r\n\t\t\tmessagePromise,\r\n\t\t\tpageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the decorated icon to be used in navigation\r\n\t * definitions.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationGroupDirective\r\n\t * @returns {string}\r\n\t * A decorated icon for navigation display.\r\n\t */\r\n\tprivate getIcon(icon: string): string\r\n\t{\r\n\t\treturn icon == null\r\n\t\t\t? ''\r\n\t\t\t: `fa fa-fw fa-${icon}`;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tDirective,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/**\r\n * A base class used to ensure the shared operation based\r\n * actions and child action contracts are met.\r\n *\r\n * @export\r\n * @class BaseOperationMenuDisplayDirective\r\n */\r\n@Directive()\r\nexport class BaseOperationMenuDisplayDirective\r\n{\r\n\t/**\r\n\t * Inherited constructor for initializing an implemented\r\n\t * base operation menu display component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @memberof BaseOperationMenuDisplayDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the value used to reset the\r\n\t * operation menu items.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationMenuDisplayDirective\r\n\t */\r\n\t@Input() public reset: boolean;\r\n\r\n\t/**\r\n\t * Gets the base model used to display the operation\r\n\t * group. This item will display prior to the data\r\n\t * load of the operation group.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BaseOperationMenuDisplayDirective\r\n\t */\r\n\tpublic initialModel: MenuItem[] = [];\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationAction\r\n} from '@operation/actions/interfaces/operation-action.interface';\r\nimport {\r\n\tIOperationTypeParameter\r\n} from '@operation/interfaces/operation-type-parameter.interface';\r\nimport {\r\n\tOperationTokenLookup\r\n} from '@operation/operation-token.lookup';\r\n\r\n/**\r\n * A class used to create operations based on the stored\r\n * operation type name.\r\n *\r\n * @export\r\n * @class OperationFactory\r\n */\r\n@Injectable()\r\nexport class OperationFactory\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationFactory.\r\n\t *\r\n\t * @param {Injector} injector\r\n\t * The injector used to instantiate dynamic operation\r\n\t * actions.\r\n\t * @memberof OperationFactory\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly injector: Injector)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the the defined operation type dynamically\r\n\t * and assigns the passed in parameters.\r\n\t *\r\n\t * @param {string} operationTypeName\r\n\t * The operation type to instantiate.\r\n\t * @param {IOperationTypeParameter[]} parameters\r\n\t * The operation type parameters to set for this operation\r\n\t * action.\r\n\t * @memberof OperationFactory\r\n\t */\r\n\tpublic create(\r\n\t\toperationTypeName: string,\r\n\t\tparameters: IOperationTypeParameter[]): IOperationAction\r\n\t{\r\n\t\tlet operationAction: IOperationAction;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\toperationAction =\r\n\t\t\t\tthis.injector.get(\r\n\t\t\t\t\tOperationTokenLookup.tokens[operationTypeName]);\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'The operation factory was unable to create the operation '\r\n\t\t\t\t\t+ `type: '${operationTypeName}' because the class does `\r\n\t\t\t\t\t+ 'not exist. Please see the OperationTokenLookup to '\r\n\t\t\t\t\t+ 'ensure this has been defined and ensure this is '\r\n\t\t\t\t\t+ 'provided in the OperationModule.');\r\n\t\t}\r\n\r\n\t\tparameters.forEach((operationTypeParameter) =>\r\n\t\t{\r\n\t\t\tif (operationTypeParameter.name in operationAction)\r\n\t\t\t{\r\n\t\t\t\toperationAction[operationTypeParameter.name] =\r\n\t\t\t\t\toperationTypeParameter.definitionParameterValue;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'The operation factory was unable to set the parameter '\r\n\t\t\t\t\t\t+ `'${operationTypeParameter.name}' because that `\r\n\t\t\t\t\t\t+ 'property does not exist in the defined operation '\r\n\t\t\t\t\t\t+ `type: ${operationTypeName}.`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn operationAction;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tAddDrawerAction\r\n} from '@operation/actions/add-drawer-action';\r\nimport {\r\n\tAddRelatedContextMenuAction\r\n} from '@operation/actions/add-related-context-menu-action';\r\nimport {\r\n\tChangeLayoutColorAction\r\n} from '@operation/actions/change-layout-color-action';\r\nimport {\r\n\tChangeThemeAction\r\n} from '@operation/actions/change-theme-action';\r\nimport {\r\n\tContextOperationAction\r\n} from '@operation/actions/context-operation-action';\r\nimport {\r\n\tDeleteEntityAction\r\n} from '@operation/actions/delete-entity-action';\r\nimport {\r\n\tEmitEventAction\r\n} from '@operation/actions/emit-event-action';\r\nimport {\r\n\tExecuteOperationPromiseAction\r\n} from '@operation/actions/execute-operation-promise-action';\r\nimport {\r\n\tExecuteWorkflowAction\r\n} from '@operation/actions/execute-workflow-action';\r\nimport {\r\n\tGenerateDocumentAction\r\n} from '@operation/actions/generate-document-action';\r\nimport {\r\n\tLogOutAction\r\n} from '@operation/actions/logout-action';\r\nimport {\r\n\tNavigationAction\r\n} from '@operation/actions/navigation-action';\r\nimport {\r\n\tPrintFileAction\r\n} from '@operation/actions/print-file-action';\r\nimport {\r\n\tSaveEntityAction\r\n} from '@operation/actions/save-entity-action';\r\nimport {\r\n\tGenerateFilesAction\r\n} from './actions/generate-files-action';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const AddDrawerActionToken =\r\n\tnew InjectionToken(\r\n\t\t'AddDrawer');\r\nexport const AddRelatedContextMenuActionToken =\r\n\tnew InjectionToken(\r\n\t\t'AddRelatedContextMenu');\r\nexport const ChangeLayoutColorActionToken =\r\n\tnew InjectionToken(\r\n\t\t'ChangeLayoutColor');\r\nexport const ChangeThemeActionToken =\r\n\tnew InjectionToken(\r\n\t\t'ChangeTheme');\r\nexport const ContextOperationActionToken =\r\n\tnew InjectionToken(\r\n\t\t'ContextOperation');\r\nexport const DeleteEntityActionToken =\r\n\tnew InjectionToken(\r\n\t\t'DeleteEntity');\r\nexport const EmitEventActionToken =\r\n\tnew InjectionToken(\r\n\t\t'EmitEvent');\r\nexport const ExecuteOperationPromiseActionToken =\r\n\tnew InjectionToken(\r\n\t\t'ExecuteOperationPromise');\r\nexport const ExecuteWorkflowActionToken =\r\n\tnew InjectionToken(\r\n\t\t'ExecuteWorkflow');\r\nexport const GenerateDocumentActionToken =\r\n\tnew InjectionToken(\r\n\t\t'GenerateDocument');\r\nexport const GenerateFilesActionToken =\r\n\tnew InjectionToken(\r\n\t\t'GenerateFiles');\r\nexport const LogOutActionToken =\r\n\tnew InjectionToken(\r\n\t\t'LogOut');\r\nexport const NavigationActionToken =\r\n\tnew InjectionToken(\r\n\t\t'Navigation');\r\nexport const PrintFileActionToken =\r\n\tnew InjectionToken(\r\n\t\t'PrintFile');\r\nexport const SaveEntityActionToken =\r\n\tnew InjectionToken(\r\n\t\t'SaveEntity');\r\n\r\n/**\r\n * A lookup to be shared accross the application used\r\n * for operation based dynamic injection.\r\n *\r\n * @export\r\n * @class OperationTokenLookup\r\n */\r\nexport class OperationTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof OperationTokenLookup\r\n\t */\r\n\tpublic static tokens =\r\n\t\t{\r\n\t\t\t'AddDrawer':\r\n\t\t\t\tAddDrawerActionToken,\r\n\t\t\t'AddRelatedContextMenu':\r\n\t\t\t\tAddRelatedContextMenuActionToken,\r\n\t\t\t'ChangeLayoutColor':\r\n\t\t\t\tChangeLayoutColorActionToken,\r\n\t\t\t'ChangeTheme':\r\n\t\t\t\tChangeThemeActionToken,\r\n\t\t\t'ContextOperation':\r\n\t\t\t\tContextOperationActionToken,\r\n\t\t\t'DeleteEntity':\r\n\t\t\t\tDeleteEntityActionToken,\r\n\t\t\t'EmitEvent':\r\n\t\t\t\tEmitEventActionToken,\r\n\t\t\t'ExecuteWorkflow':\r\n\t\t\t\tExecuteWorkflowActionToken,\r\n\t\t\t'ExecuteOperationPromise':\r\n\t\t\t\tExecuteOperationPromiseActionToken,\r\n\t\t\t'GenerateDocument':\r\n\t\t\t\tGenerateDocumentActionToken,\r\n\t\t\t'GenerateFiles':\r\n\t\t\t\tGenerateFilesActionToken,\r\n\t\t\t'LogOut':\r\n\t\t\t\tLogOutActionToken,\r\n\t\t\t'Navigation':\r\n\t\t\t\tNavigationActionToken,\r\n\t\t\t'PrintFile':\r\n\t\t\t\tPrintFileActionToken,\r\n\t\t\t'SaveEntity':\r\n\t\t\t\tSaveEntityActionToken\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tIOperationAction\r\n} from '@operation/actions/interfaces/operation-action.interface';\r\nimport {\r\n\tOperationFactory\r\n} from '@operation/factories/operation-factory';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class to handle executing all operation definition\r\n * based logic.\r\n *\r\n * @export\r\n * @class OperationExecutionService\r\n */\r\n@Injectable()\r\nexport class OperationExecutionService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationExecutionService.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The factivity service used to execute this operation.\r\n\t * @param {OperationFactory} operationFactory\r\n\t * The factory used to create operation actions dynamically.\r\n\t * @memberof OperationExecutionService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tprivate readonly operationFactory: OperationFactory)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a fully mapped operation definition populated via\r\n\t * the operation service.\r\n\t *\r\n\t * @async\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to execute.\r\n\t * @returns {Promise} The operation action\r\n\t * that was executed.\r\n\t * @memberof OperationExecutionService\r\n\t */\r\n\tpublic async executeMappedOperation(\r\n\t\toperationDefinition: IOperationDefinition): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst operationAction: IOperationAction =\r\n\t\t\t\tthis.operationFactory.create(\r\n\t\t\t\t\toperationDefinition.operationType.name,\r\n\t\t\t\t\toperationDefinition.operationTypeParameters);\r\n\r\n\t\t\toperationAction.label = operationDefinition.label;\r\n\t\t\toperationAction.icon = operationDefinition.icon;\r\n\t\t\toperationAction.order = operationDefinition.order;\r\n\t\t\toperationAction.pageContext = operationDefinition.pageContext;\r\n\t\t\tlet data: any = null;\r\n\r\n\t\t\tif (operationAction.canDeactivateOperation === false)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// block interface.\r\n\t\t\tif (!AnyHelper.isNullOrEmpty(operationAction.blockInterface))\r\n\t\t\t{\r\n\t\t\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\t\t\toperationAction.blockInterface);\r\n\t\t\t}\r\n\r\n\t\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\t\toperationAction.operationSuccessMessage))\r\n\t\t\t{\r\n\t\t\t\tawait operationAction.execute();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tdata = await this.activityService.handleActivity(\r\n\t\t\t\t\tnew Activity(\r\n\t\t\t\t\t\toperationAction.execute(),\r\n\t\t\t\t\t\t'Calling Action '\r\n\t\t\t\t\t\t\t+ operationAction.operationName,\r\n\t\t\t\t\t\t'Completed Action '\r\n\t\t\t\t\t\t\t+ operationAction.operationName,\r\n\t\t\t\t\t\toperationAction.operationSuccessMessage,\r\n\t\t\t\t\t\toperationAction.operationFailureMessage),\r\n\t\t\t\t\tAppConstants.activityStatus.info);\r\n\t\t\t}\r\n\r\n\t\t\t// Handle execute action errors.\r\n\t\t\tif (typeof data === AppConstants.variableTypes.string)\r\n\t\t\t{\r\n\t\t\t\tlet messages: IApplicationMessage[] = [];\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tconst jsonData = JSON.parse(data);\r\n\t\t\t\t\tmessages =\r\n\t\t\t\t\t\tAnyHelper.isNull(jsonData.messages)\r\n\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t: jsonData.messages;\r\n\t\t\t\t}\r\n\t\t\t\tcatch (exception)\r\n\t\t\t\t{\r\n\t\t\t\t\t// More cases may need handled here as they arise.\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (messages.length === 0\r\n\t\t\t\t\t|| messages.filter(\r\n\t\t\t\t\t\t(message: IApplicationMessage) =>\r\n\t\t\t\t\t\t\tmessage.status ===\r\n\t\t\t\t\t\t\t\tAppConstants.activityStatus.error).length === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tawait operationAction.executePostOperationActions();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tawait operationAction.executePostOperationActions();\r\n\t\t\t}\r\n\r\n\t\t\t// unblock interface.\r\n\t\t\tthis.handleUnblockingInterface(operationAction);\r\n\r\n\t\t\treturn operationAction;\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\tAppConstants.messages.genericErrorMessage,\r\n\t\t\t\terror.message,\r\n\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\terror);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles unblocking the interface after an operation action\r\n\t * has been executed.\r\n\t *\r\n\t * @param {IOperationAction} operationAction\r\n\t * The operation action to unblock the interface for.\r\n\t * @memberof OperationExecutionService\r\n\t */\r\n\tprivate handleUnblockingInterface(\r\n\t\toperationAction: IOperationAction): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(operationAction.unblockInterface))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst unblockInterface: boolean =\r\n\t\t\t!operationAction.unblockInterface;\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\tunblockInterface);\r\n\r\n\t\t// Refresh the history for an entity instance component.\r\n\t\tif (unblockInterface === true\r\n\t\t\t&& operationAction.pageContext.source\r\n\t\t\t\tinstanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tEventHelper.dispatchRefreshComponentEvent(\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.historyComponent,\r\n\t\t\t\t\t\tDynamicComponentLookup.targetComponents\r\n\t\t\t\t\t\t\t.utilityMenuComponent);\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.oneThirdSecond);\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIBaseEntity\r\n} from '@api/interfaces/base/base-entity.interface';\r\nimport {\r\n\tOperationDefinitionParameterApiService\r\n} from '@api/services/operations/operation-definition-parameter.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupHierarchyApiService\r\n} from '@api/services/operations/operation-group-hierarchy.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tOperationTypeParameterApiService\r\n} from '@api/services/operations/operation-type-parameter.api.service';\r\nimport {\r\n\tOperationTypeApiService\r\n} from '@api/services/operations/operation-type.api.service';\r\nimport {\r\n\tIOperationDefinitionParameter\r\n} from '@operation/interfaces/operation-definition-parameter.interface';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupHierarchy\r\n} from '@operation/interfaces/operation-group-hierarchy.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tIOperationTypeParameter\r\n} from '@operation/interfaces/operation-type-parameter.interface';\r\nimport {\r\n\tIOperationType\r\n} from '@operation/interfaces/operation-type.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIStoredVariableDefinition\r\n} from '@shared/interfaces/application-objects/stored-variable-definition';\r\nimport {\r\n\tBaseStoredVariableService\r\n} from '@shared/services/base/base-stored-variable.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing logic for handling common\r\n * operation based logic.\r\n *\r\n * @export\r\n * @class OperationService\r\n * @extends {BaseStoredVariableService}\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class OperationService\r\n\textends BaseStoredVariableService\r\n{\r\n\t/**\r\n\t * Creates an instance of an OperationService.\r\n\t *\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The service used for operation definitions.\r\n\t * @param {OperationDefinitionParameterApiService}\r\n\t * operationDefinitionParameterApiService\r\n\t * The service used for operation definitions.\r\n\t * @param {operationGroupApiService} operationGroupApiService\r\n\t * The service used for operation groups.\r\n\t * @param {OperationGroupHierarchyApiService}\r\n\t * operationGroupHierarchyApiService\r\n\t * The service used for operation group hierarchies.\r\n\t * @param {OperationTypeApiService} operationTypeApiService\r\n\t * The service used for operation types.\r\n\t * @param {OperationTypeParameterApiService}\r\n\t * operationTypeParameterApiService\r\n\t * The service used for operation type parameters.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The service used to execute fully populated operation definitions.\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly operationDefinitionApiService:\r\n\t\t\tOperationDefinitionApiService,\r\n\t\tprivate readonly operationDefinitionParameterApiService:\r\n\t\t\tOperationDefinitionParameterApiService,\r\n\t\tprivate readonly operationGroupApiService:\r\n\t\t\tOperationGroupApiService,\r\n\t\tprivate readonly operationGroupHierarchyApiService:\r\n\t\t\tOperationGroupHierarchyApiService,\r\n\t\tprivate readonly operationTypeApiService:\r\n\t\t\tOperationTypeApiService,\r\n\t\tprivate readonly operationTypeParameterApiService:\r\n\t\t\tOperationTypeParameterApiService)\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.storedVariables =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.operationDefinitions,\r\n\t\t\t\t\tapiService: this.operationDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers\r\n\t\t\t\t\t\t\t.operationDefinitionParameters,\r\n\t\t\t\t\tapiService: this.operationDefinitionParameterApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.operationGroups,\r\n\t\t\t\t\tapiService: this.operationGroupApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.operationGroupHierarchies,\r\n\t\t\t\t\tapiService: this.operationGroupHierarchyApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.operationTypes,\r\n\t\t\t\t\tapiService: this.operationTypeApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.operationTypeParameters,\r\n\t\t\t\t\tapiService: this.operationTypeParameterApiService\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.storedVariables.forEach(\r\n\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tstoredVariable.apiService.operationService = this;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation definitions.\r\n\t *\r\n\t * @type {IOperationDefinition[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationDefinitions: IOperationDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation definition parameters.\r\n\t *\r\n\t * @type {IOperationDefinitionParameter[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationDefinitionParameters: IOperationDefinitionParameter[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation groups.\r\n\t *\r\n\t * @type {IOperationGroup[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationGroups: IOperationGroup[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation group hierarchies.\r\n\t *\r\n\t * @type {IOperationGroupHierarchy[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationGroupHierarchies: IOperationGroupHierarchy[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation types.\r\n\t *\r\n\t * @type {IOperationType[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationTypes: IOperationType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation type parameters.\r\n\t *\r\n\t * @type {IOperationTypeParameter[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic operationTypeParameters: IOperationTypeParameter[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the storage variables that will be stored in this\r\n\t * singleton service.\r\n\t *\r\n\t * @type {IStoredVariableDefinition[]}\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic storedVariables: IStoredVariableDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets a populated operation group with the full child relationship\r\n\t * tree.\r\n\t *\r\n\t * @async\r\n\t * @param {string} name\r\n\t * The name of the operation group to be loaded.\r\n\t * @param {boolean} throwErrorIfNull\r\n\t * A value that signifies whether or not an error should be thrown if the\r\n\t * operation group is not shown.\r\n\t * @returns {Promise}\r\n\t * A populated operation group matching the id with the full child\r\n\t * relationship tree.\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic async populateOperationGroup(\r\n\t\tname: string,\r\n\t\tthrowErrorIfNull: boolean = false): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst operationGroups: IOperationGroup[] =\r\n\t\t\tthis.operationGroups.filter(\r\n\t\t\t\t(group: IOperationGroup) =>\r\n\t\t\t\t\tgroup.name === name);\r\n\r\n\t\tif (operationGroups == null\r\n\t\t\t|| operationGroups.length !== 1)\r\n\t\t{\r\n\t\t\tif (throwErrorIfNull === true)\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`The operation group: '${name}' can not be found `\r\n\t\t\t\t\t\t+ 'in the database. Please ensure this data exists.');\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst operationGroup: IOperationGroup = operationGroups[0];\r\n\r\n\t\toperationGroup.childRelationships =\r\n\t\t\tthis.populateChildRelationships(\r\n\t\t\t\toperationGroups[0].id);\r\n\r\n\t\toperationGroup.childRelationships =\r\n\t\t\tthis.cleanGroupsWithoutChildren(\r\n\t\t\t\toperationGroup.childRelationships);\r\n\r\n\t\treturn operationGroup;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a populated operation definition with the full\r\n\t * data set required to perform an operation.\r\n\t *\r\n\t * @async\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition to be populated.\r\n\t * @param {IOperationGroupRelationship} operationGroupRelationship\r\n\t * The operation group relationship holding this definition.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The page context to execute this operation against.\r\n\t * @returns {Promise}\r\n\t * A populated operation definition matching the id with\r\n\t * the full data set required to perform an operation.\r\n\t * @memberof OperationService\r\n\t */\r\n\tpublic async populateOperationDefinition(\r\n\t\toperationDefinition: IOperationDefinition,\r\n\t\toperationGroupRelationship: IOperationGroupRelationship,\r\n\t\tpageContext: IDynamicComponentContext<\r\n\t\t\tComponent, any>): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\toperationDefinition.operationType =\r\n\t\t\tthis.operationTypes.find(\r\n\t\t\t\t(type: IOperationType) =>\r\n\t\t\t\t\ttype.id === operationDefinition.typeId);\r\n\r\n\t\tconst parameters: IOperationTypeParameter[] =\r\n\t\t\tthis.operationTypeParameters.filter(\r\n\t\t\t\t(typeParameter: IOperationTypeParameter) =>\r\n\t\t\t\t\ttypeParameter.typeId === operationDefinition.typeId);\r\n\r\n\t\toperationDefinition.order =\r\n\t\t\toperationGroupRelationship.order;\r\n\t\toperationDefinition\r\n\t\t\t.operationTypeParameters = [];\r\n\r\n\t\tif (parameters.length > 0)\r\n\t\t{\r\n\t\t\toperationDefinition.operationTypeParameters = parameters;\r\n\r\n\t\t\tconst definitionTypeParameters: number[] =\r\n\t\t\t\toperationDefinition.operationTypeParameters.map(\r\n\t\t\t\t\t(item: IBaseEntity) =>\r\n\t\t\t\t\t\titem.id);\r\n\r\n\t\t\tconst operationDefinitionParameters:\r\n\t\t\t\tIOperationDefinitionParameter[] =\r\n\t\t\t\t\tthis.operationDefinitionParameters.filter(\r\n\t\t\t\t\t\t(definitionParameter: IOperationDefinitionParameter) =>\r\n\t\t\t\t\t\t\tdefinitionParameter.definitionId ===\r\n\t\t\t\t\t\t\t\toperationDefinition.id\r\n\t\t\t\t\t\t\t\t&& definitionTypeParameters.indexOf(\r\n\t\t\t\t\t\t\t\t\tdefinitionParameter\r\n\t\t\t\t\t\t\t\t\t\t.typeParameterId) !== -1);\r\n\r\n\t\t\toperationDefinition\r\n\t\t\t\t.operationTypeParameters\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(operationTypeParameter) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst operationParameter =\r\n\t\t\t\t\t\t\toperationDefinitionParameters.find(\r\n\t\t\t\t\t\t\t\t(parameterValue) =>\r\n\t\t\t\t\t\t\t\t\tparameterValue.typeParameterId ===\r\n\t\t\t\t\t\t\t\t\t\toperationTypeParameter.id);\r\n\r\n\t\t\t\t\t\toperationTypeParameter.definitionParameterValue =\r\n\t\t\t\t\t\t\toperationParameter\r\n\t\t\t\t\t\t\t\t? operationParameter.value\r\n\t\t\t\t\t\t\t\t: null;\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\toperationDefinition.pageContext = pageContext;\r\n\r\n\t\treturn operationDefinition;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a populated operation group with the full child relationship\r\n\t * tree given an existing operation group.\r\n\t *\r\n\t * @param {IOperationGroup} operationGroup\r\n\t * The existing operation group to be loaded.\r\n\t * @returns {IOperationGroup}\r\n\t * A populated operation group matching the id with the full child\r\n\t * relationship tree.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate populateChildOperationGroup(\r\n\t\toperationGroup: IOperationGroup): IOperationGroup\r\n\t{\r\n\t\toperationGroup.childRelationships =\r\n\t\t\tthis.populateChildRelationships(\r\n\t\t\t\toperationGroup.id);\r\n\r\n\t\treturn operationGroup;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an operation groups child relationships by id.\r\n\t *\r\n\t * @param {number} id\r\n\t * The id of the operation group to load the children of.\r\n\t * @returns {IOperationGroupRelationship[]}\r\n\t * A populated full child relationship tree of the operation\r\n\t * group matching the id.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate populateChildRelationships(\r\n\t\tid: number): IOperationGroupRelationship[]\r\n\t{\r\n\t\tconst childRelationships: IOperationGroupRelationship[] =\r\n\t\t\tthis.operationGroupHierarchies\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(hierarchy: IOperationGroupHierarchy) =>\r\n\t\t\t\t\t\thierarchy.parentGroupId === id\r\n\t\t\t\t\t\t\t&& (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\thierarchy.childGroupId)\r\n\t\t\t\t\t\t\t\t|| !AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\thierarchy.childDefinitionId)))\r\n\t\t\t\t.sort((itemOne: IOperationGroupHierarchy,\r\n\t\t\t\t\titemTwo: IOperationGroupHierarchy) =>\r\n\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\titemOne,\r\n\t\t\t\t\t\titemTwo,\r\n\t\t\t\t\t\tAppConstants.commonProperties.order))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(hierarchy: IOperationGroupHierarchy) =>\r\n\t\t\t\t\t\tAnyHelper.isNull(hierarchy.childDefinitionId)\r\n\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\toperationGroup:\r\n\t\t\t\t\t\t\t\t\t\tthis.operationGroups.find(\r\n\t\t\t\t\t\t\t\t\t\t\t(group: IOperationGroup) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tgroup.id ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thierarchy.childGroupId),\r\n\t\t\t\t\t\t\t\t\ttype: AppConstants.operationTypes\r\n\t\t\t\t\t\t\t\t\t\t.operationGroup,\r\n\t\t\t\t\t\t\t\t\torder: hierarchy.order\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\toperationDefinition:\r\n\t\t\t\t\t\t\t\t\t\tthis.operationDefinitions.find(\r\n\t\t\t\t\t\t\t\t\t\t\t(definition:\r\n\t\t\t\t\t\t\t\t\t\t\t\tIOperationDefinition) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tdefinition.id ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thierarchy\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.childDefinitionId),\r\n\t\t\t\t\t\t\t\t\ttype: AppConstants.operationTypes\r\n\t\t\t\t\t\t\t\t\t\t.operationDefinition,\r\n\t\t\t\t\t\t\t\t\torder: hierarchy.order\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\tthis.populateChildGroups(\r\n\t\t\tthis.getRelationshipsByType(\r\n\t\t\t\tchildRelationships,\r\n\t\t\t\tAppConstants.operationTypes.operationGroup));\r\n\r\n\t\tthis.populateChildDefinitions(\r\n\t\t\tthis.getRelationshipsByType(\r\n\t\t\t\tchildRelationships,\r\n\t\t\t\tAppConstants.operationTypes.operationDefinition));\r\n\r\n\t\treturn childRelationships;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a set of child definitions and populates this into\r\n\t * the matching supplied operation child relationships.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} childDefinitionRelationships\r\n\t * The set of child relationships of type 'OperationDefinition'\r\n\t * to be populated.\r\n\t * @returns {IOperationGroupRelationship[]}\r\n\t * A populated full set of child definition relationships.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate populateChildDefinitions(\r\n\t\tchildDefinitionRelationships:\r\n\t\t\tIOperationGroupRelationship[]): IOperationGroupRelationship[]\r\n\t{\r\n\t\tif (childDefinitionRelationships.length === 0)\r\n\t\t{\r\n\t\t\treturn childDefinitionRelationships;\r\n\t\t}\r\n\r\n\t\tconst childRelationshipIds: number[] =\r\n\t\t\tchildDefinitionRelationships\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t\t\t\t!AnyHelper.isNull(\r\n\t\t\t\t\t\t\trelationship.operationDefinition?.id))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t\t\t\trelationship.operationDefinition.id);\r\n\t\tconst operationDefinitions: IOperationDefinition[] =\r\n\t\t\tthis.operationDefinitions.filter(\r\n\t\t\t\t(definition: IOperationDefinition) =>\r\n\t\t\t\t\tchildRelationshipIds.indexOf(definition.id) !== -1);\r\n\r\n\t\tchildDefinitionRelationships.forEach(\r\n\t\t\t(relationship) =>\r\n\t\t\t{\r\n\t\t\t\trelationship.operationDefinition =\r\n\t\t\t\t\toperationDefinitions.find(\r\n\t\t\t\t\t\t(definition) =>\r\n\t\t\t\t\t\t\tdefinition.id ===\r\n\t\t\t\t\t\t\t\trelationship.operationDefinition?.id);\r\n\t\t\t});\r\n\r\n\t\treturn childDefinitionRelationships;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a set of child groups and populates this into\r\n\t * the matching supplied operation child relationships.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} childGroupRelationships\r\n\t * The set of child relationships of type 'OperationGroup'\r\n\t * to be populated.\r\n\t * @returns {IOperationGroupRelationship[]}\r\n\t * A populated full set of child group relationships as well as a\r\n\t * populated full child relationship tree for each child group.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate populateChildGroups(\r\n\t\tchildGroupRelationships:\r\n\t\t\tIOperationGroupRelationship[]): IOperationGroupRelationship[]\r\n\t{\r\n\t\tif (childGroupRelationships.length === 0)\r\n\t\t{\r\n\t\t\treturn childGroupRelationships;\r\n\t\t}\r\n\r\n\t\tconst childRelationshipIds: number[] =\r\n\t\t\tchildGroupRelationships.map(\r\n\t\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t\t\trelationship.operationGroup.id);\r\n\t\tconst operationGroups: IOperationGroup[] =\r\n\t\t\tthis.operationGroups.filter(\r\n\t\t\t\t(group: IOperationGroup) =>\r\n\t\t\t\t\tchildRelationshipIds.indexOf(group.id) !== -1);\r\n\r\n\t\tchildGroupRelationships.forEach(\r\n\t\t\t(relationship) =>\r\n\t\t\t{\r\n\t\t\t\trelationship.operationGroup =\r\n\t\t\t\t\toperationGroups.find(\r\n\t\t\t\t\t\t(group: IOperationGroup) =>\r\n\t\t\t\t\t\t\tgroup.id === relationship.operationGroup.id);\r\n\r\n\t\t\t\t// Recursively populate each child operation group.\r\n\t\t\t\tthis.populateChildOperationGroup(\r\n\t\t\t\t\trelationship.operationGroup);\r\n\t\t\t});\r\n\r\n\t\treturn childGroupRelationships;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a set of child groups that have an operation definition\r\n\t * defined at the lowest tree level and removes any groups\r\n\t * without a definition as its lowest leaf node.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} childGroupRelationships\r\n\t * The set of child relationships found via a populated\r\n\t * operation group.\r\n\t * @returns {IOperationGroupRelationship[]}\r\n\t * A populated full set of child relationships with the structure\r\n\t * cleaned of empty group into definition paths.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate cleanGroupsWithoutChildren(\r\n\t\tchildRelationships:\r\n\t\t\tIOperationGroupRelationship[]): IOperationGroupRelationship[]\r\n\t{\r\n\t\tchildRelationships.forEach(\r\n\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t{\r\n\t\t\t\tif (relationship.operationGroup != null\r\n\t\t\t\t\t&& relationship.operationGroup\r\n\t\t\t\t\t\t.childRelationships.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\trelationship.operationGroup.childRelationships =\r\n\t\t\t\t\t\t\tthis.cleanGroupsWithoutChildren(\r\n\t\t\t\t\t\t\t\trelationship.operationGroup.childRelationships);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn childRelationships.filter(\r\n\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t\trelationship.operationDefinition != null\r\n\t\t\t\t\t|| (relationship.operationGroup != null\r\n\t\t\t\t\t\t&& relationship.operationGroup\r\n\t\t\t\t\t\t\t.childRelationships.length > 0));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of child relationships that match the supplied\r\n\t * type.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} childRelationships\r\n\t * The set of child relationships to be filtered on type.\r\n\t * @returns {IOperationGroupRelationship[]}\r\n\t * A populated full set of child relationships of the matching type.\r\n\t * @memberof OperationService\r\n\t */\r\n\tprivate getRelationshipsByType(\r\n\t\tchildRelationships: IOperationGroupRelationship[],\r\n\t\ttype: string): IOperationGroupRelationship[]\r\n\t{\r\n\t\treturn childRelationships.filter(\r\n\t\t\t(relationship: IOperationGroupRelationship) =>\r\n\t\t\t\trelationship.type === type);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined the types of buttons used in\r\n * the operation button bar interface.\r\n *\r\n * @export\r\n * @const OperationButtonTypeConstants\r\n */\r\nexport const OperationButtonTypeConstants:\r\n{\r\n\tbutton: string;\r\n\tgroupButton: string;\r\n\tellipsisButton: string;\r\n\ticonActions: string;\r\n} = {\r\n\tbutton: 'BUTTON',\r\n\tgroupButton: 'GROUPBUTTON',\r\n\tellipsisButton: 'ELLIPSISBUTTON',\r\n\ticonActions: 'ICONACTIONS'\r\n};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tanimate,\r\n\tkeyframes,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\n\r\n/**\r\n * The base content animation display. This display performs a slide\r\n * in from the left side of 10%.\r\n * When using this animation, this will be used as\r\n * [@contentAnimation]=\"state\".\r\n */\r\nexport const ContentAnimation =\r\n\ttrigger('contentAnimation', [\r\n\t\tstate('in',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t})),\r\n\t\ttransition('void => *', [\r\n\t\t\tanimate(\r\n\t\t\t\t750,\r\n\t\t\t\tkeyframes([\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 0,\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXMinusFivePercent,\r\n\t\t\t\t\t\toffset: 0\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXMinusTwoPointFivePercent,\r\n\t\t\t\t\t\toffset: 0.3\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero,\r\n\t\t\t\t\t\toffset: 1.0\r\n\t\t\t\t\t})\r\n\t\t\t\t]))\r\n\t\t]),\r\n\t\ttransition('* => void', [\r\n\t\t\tanimate(\r\n\t\t\t\t0,\r\n\t\t\t\tkeyframes([\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero,\r\n\t\t\t\t\t\toffset: 0\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXHundredPercent,\r\n\t\t\t\t\t\toffset: 1.0,\r\n\t\t\t\t\t\topacity: 0\r\n\t\t\t\t\t})\r\n\t\t\t\t]))\r\n\t\t])\r\n\t]);\r\n\r\n/**\r\n * The base drawer animation display. This display performs a slide\r\n * in from the right side and immediately hides on close.\r\n * When using this animation, this will be used as\r\n * [@drawerAnimation]=\"state\" or [@drawerAnimation]=\"truthy\".\r\n *\r\n */\r\nexport const DrawerAnimation =\r\n\ttrigger('drawerAnimation', [\r\n\t\tstate('true',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: 'translateX(-360px)'\r\n\t\t\t})),\r\n\t\tstate('in',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t})),\r\n\t\tstate('false',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t})),\r\n\t\tstate('void',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t.translateXHundredPercent\r\n\t\t\t})),\r\n\t\tstate('*',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t})),\r\n\t\ttransition('false => true', [\r\n\t\t\tanimate('0.25s ease-in-out')\r\n\t\t]),\r\n\t\ttransition('true => false', [\r\n\t\t\tanimate(AppConstants.contentAnimation.zeroEaseInOut)\r\n\t\t]),\r\n\t\ttransition('* => void', [\r\n\t\t\tanimate(AppConstants.contentAnimation.zeroEaseInOut)\r\n\t\t]),\r\n\t\ttransition('void => *', [\r\n\t\t\tanimate('0.25s ease-in-out')\r\n\t\t])\r\n\t]);\r\n\r\n/**\r\n * The list drawer animation display. This display performs a slide\r\n * in from the right side and immediately hides on close but in this\r\n * case handles the container list of drawers.\r\n * When using this animation, this will be used as\r\n * [@listDrawerAnimation]=\"state\".\r\n *\r\n */\r\nexport const ListDrawerAnimation =\r\n\ttrigger('listDrawerAnimation', [\r\n\t\tstate('in',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t.translateXHundredPercent,\r\n\t\t\t})),\r\n\t\ttransition('* => void', [\r\n\t\t\tanimate(AppConstants.contentAnimation.zeroEaseInOut)\r\n\t\t]),\r\n\t\ttransition('void => *', [\r\n\t\t\tanimate(AppConstants.contentAnimation.zeroEaseInOut)\r\n\t\t])\r\n\t]);\r\n\r\n/**\r\n * The shake animation display. This display shakes the\r\n * selected element using animation when set to 0.\r\n * When using this animation, this will be used as\r\n * [@shakeAnimation]=\"{truthy component property}\".\r\n */\r\nexport const ShakeAnimation =\r\n\ttrigger('shakeAnimation', [\r\n\t\tstate('1',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero\r\n\t\t\t})),\r\n\t\tstate('0',\r\n\t\t\tstyle({\r\n\t\t\t\ttransform: AppConstants.contentAnimation.translateXZeroPercent\r\n\t\t\t})),\r\n\t\ttransition('0 => 1', [\r\n\t\t\tanimate(\r\n\t\t\t\t500,\r\n\t\t\t\tkeyframes([\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXZeroPercent,\r\n\t\t\t\t\t\toffset: 0\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXMinusTwoPointFivePercent,\r\n\t\t\t\t\t\toffset: .25\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXTwoPointFivePercent,\r\n\t\t\t\t\t\toffset: 0.5\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation\r\n\t\t\t\t\t\t\t.translateXMinusTwoPointFivePercent,\r\n\t\t\t\t\t\toffset: 0.75\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstyle({\r\n\t\t\t\t\t\ttransform: AppConstants.contentAnimation.translateXZero,\r\n\t\t\t\t\t\toffset: 1.0\r\n\t\t\t\t\t})\r\n\t\t\t\t]))\r\n\t\t])\r\n\t]);\r\n\r\n/**\r\n * The slide down animation display. This display will slide down to fit\r\n * the content available. When using this animation, this will be used as\r\n * [@slideDownAnimation]=\"{truthy component property} ? 'visible' : 'hidden'\">\r\n */\r\nexport const SlideDownAnimation =\r\n\ttrigger('slideDownAnimation', [\r\n\t\tstate('hidden',\r\n\t\t\tstyle({\r\n\t\t\t\theight: '0px'\r\n\t\t\t})),\r\n\t\tstate('visible',\r\n\t\t\tstyle({\r\n\t\t\t\theight: '*'\r\n\t\t\t})),\r\n\t\ttransition(AppConstants.contentAnimation.transitionVisibleHidden,\r\n\t\t\tanimate(AppConstants.contentAnimation.standardAnimation)),\r\n\t\ttransition(AppConstants.contentAnimation.transitionHiddenVisible,\r\n\t\t\tanimate(AppConstants.contentAnimation.standardAnimation))\r\n\t]);\r\n\r\n/**\r\n * The slide down animation display. This display will slide right to fit\r\n * the content available. When using this animation, this will be used as\r\n * [@slideRightAnimation]=\"{truthy component property} ? 'visible' : 'hidden'\">\r\n */\r\nexport const SlideRightAnimation =\r\n\ttrigger('slideRightAnimation', [\r\n\t\tstate('hidden',\r\n\t\t\tstyle({\r\n\t\t\t\twidth: '0px'\r\n\t\t\t})),\r\n\t\tstate('visible',\r\n\t\t\tstyle({\r\n\t\t\t\twidth: '*'\r\n\t\t\t})),\r\n\t\ttransition(AppConstants.contentAnimation.transitionVisibleHidden,\r\n\t\t\tanimate(AppConstants.contentAnimation.standardAnimation)),\r\n\t\ttransition(AppConstants.contentAnimation.transitionHiddenVisible,\r\n\t\t\tanimate(AppConstants.contentAnimation.standardAnimation))\r\n\t]);\r\n\r\n/**\r\n * The drop in animation display. This display will slide in from the top\r\n * and fade into view.\r\n * When using this animation, this will be used as\r\n * [@dropInAnimation]=\"'in'\"\r\n */\r\nexport const DropInAnimation =\r\n\ttrigger('dropInAnimation', [\r\n\t\tstate('in',\r\n\t\t\tstyle({\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ttop: '*'\r\n\t\t\t})),\r\n\t\ttransition('void => *', [\r\n\t\t\tstyle({\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttop: 0\r\n\t\t\t}),\r\n\t\t\tanimate(500)\r\n\t\t])\r\n\t]);\r\n\r\n/**\r\n * The boolean based fade animation display. This display will fade in when\r\n * true or out when set to false.\r\n * When using this animation, this will be used as\r\n * [@booleanFadeAnimation]=\"truthy\"\r\n */\r\nexport const BooleanFadeAnimation =\r\n\ttrigger('booleanFadeAnimation', [\r\n\t\tstate('true',\r\n\t\t\tstyle({\r\n\t\t\t\topacity: 1 })),\r\n\t\tstate('false',\r\n\t\t\tstyle({\r\n\t\t\t\topacity: 0 })),\r\n\t\ttransition('false <=> true',\r\n\t\t\tanimate(500))\r\n\t]);\r\n\r\n/**\r\n * The boolean based ease animation display. This display will fade in when\r\n * true or out when set to false. This should be used in tandem with the\r\n * display animation.\r\n * When using this animation, this will be used as\r\n * [@easeAnimation]=\"truthy\"\r\n */\r\nexport const EaseAnimation =\r\n\ttrigger('easeAnimation', [\r\n\t\tstate('hidden', style({\r\n\t\t\topacity: 0\r\n\t\t})),\r\n\t\tstate('visible', style({\r\n\t\t\topacity: 1\r\n\t\t})),\r\n\t\ttransition(AppConstants.contentAnimation.transitionVisibleHidden,\r\n\t\t\tanimate('195ms ease-out')),\r\n\t\ttransition(AppConstants.contentAnimation.transitionHiddenVisible,\r\n\t\t\tanimate('195ms ease-in'))\r\n\t]);\r\n\r\n/**\r\n * The boolean based display animation display. This display will handle\r\n * setting the display to none when the ease animation display completes.\r\n * This should be used in tandem with the ease animation.\r\n * When using this animation, this will be used as\r\n * [@displayAnimation]=\"truthy\"\r\n */\r\nexport const DisplayAnimation =\r\n\ttrigger('displayAnimation', [\r\n\t\tstate('hidden', style({\r\n\t\t\tvisibility: 'hidden'\r\n\t\t})),\r\n\t\tstate('visible', style({\r\n\t\t\tvisibility: 'visible'\r\n\t\t})),\r\n\t\ttransition(AppConstants.contentAnimation.transitionVisibleHidden,\r\n\t\t\tanimate('195ms')),\r\n\t\ttransition(AppConstants.contentAnimation.transitionHiddenVisible,\r\n\t\t\tanimate('0ms'))\r\n\t]);","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A representing a business logic entity\r\n *\r\n * @export\r\n * @class BusinessLogicEntity\r\n */\r\nexport class BusinessLogicEntity\r\nimplements IEntityInstance\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a BusinessLogicEntity\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The underlying EntityInstance.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic constructor(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\tresolverService: ResolverService)\r\n\t{\r\n\t\tthis.entityInstance = entityInstance;\r\n\t\tthis.resourceIdentifier = entityInstance.resourceIdentifier;\r\n\t\tthis.versionNumber = entityInstance.versionNumber;\r\n\t\tthis.entityType = entityInstance.entityType;\r\n\t\tthis.changedById = entityInstance.changedById;\r\n\t\tthis.changeDate = entityInstance.changeDate;\r\n\t\tthis.createDate = entityInstance.createDate;\r\n\t\tthis.id = entityInstance.id;\r\n\t\tthis.data = entityInstance.data;\r\n\r\n\t\tthis.displayName =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\tthis.entityType,\r\n\t\t\t\t\tAppConstants.characters.period));\r\n\r\n\t\tthis.entityInstanceApiService =\r\n\t\t\t\r\n\t\t\tresolverService.resolveApiService('EntityInstanceApiService');\r\n\r\n\t\tthis.entityTypeApiService =\r\n\t\t\t\r\n\t\t\tresolverService.resolveApiService('EntityTypeApiService');\r\n\r\n\t\tthis.activityService =\r\n\t\t\t\r\n\t\t\tresolverService.resolveShared('ActivityService');\r\n\r\n\t\tthis.sessionService =\r\n\t\t\t\r\n\t\t\tresolverService.resolveShared('SessionService');\r\n\r\n\t\tthis.entityService =\r\n\t\t\t\r\n\t\t\t\tresolverService.resolveShared('EntityService');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic id?: number;\r\n\r\n\t/**\r\n\t * Gets or sets the resourceIdentifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic resourceIdentifier?: string;\r\n\r\n\t/**\r\n\t * Gets or sets the versionNumber.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic versionNumber: number;\r\n\r\n\t/**\r\n\t * Gets or sets the data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic data: any;\r\n\r\n\t/**\r\n\t * Gets or sets the entityType.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic entityType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the changed by entity id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic changedById?: number;\r\n\r\n\t/**\r\n\t * Gets or sets the change date.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic changeDate?: string;\r\n\r\n\t/**\r\n\t * Gets or sets the create date.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic createDate?: string;\r\n\r\n\t/**\r\n\t * Gets or sets the mapped display name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic displayName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance api service.\r\n\t *\r\n\t * @type {EntityInstanceApiService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic readonly entityInstanceApiService: EntityInstanceApiService;\r\n\r\n\t/**\r\n\t * Gets or sets the entity typeapi service\r\n\t *\r\n\t * @type {EntityTypeApiService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic readonly entityTypeApiService: EntityTypeApiService;\r\n\r\n\t/**\r\n\t * Gets or sets the entity service\r\n\t *\r\n\t * @type {EntityService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic readonly entityService: EntityService;\r\n\r\n\t/**\r\n\t * Gets or sets the activity service.\r\n\t *\r\n\t * @type {ActivityService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic readonly activityService: ActivityService;\r\n\r\n\t/**\r\n\t * Gets or sets the backing entity instance.\r\n\t *\r\n\t * @type {EntityInstanceApiService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tprivate readonly entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the session service.\r\n\t *\r\n\t * @type {SessionService}\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tprivate readonly sessionService: SessionService;\r\n\r\n\t/**\r\n\t * Gets the entity type\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The entity type\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic getEntityTypeAsync(): Promise\r\n\t{\r\n\t\treturn this\r\n\t\t\t.entityTypeApiService\r\n\t\t\t.getSingleQueryResult(\r\n\t\t\t\t`Name.Equals(\"${this.entityType}\")`,\r\n\t\t\t\t'Id',\r\n\t\t\t\tfalse);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the underlying entity instance\r\n\t *\r\n\t * @returns {IEntityInstance}\r\n\t * The entity type.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic toEntityInstance(): IEntityInstance\r\n\t{\r\n\t\treturn this.entityInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Saves (updates) the entity instance\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The empty promise.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic async save(): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.getEntityTypeAsync();\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = entityType.group;\r\n\r\n\t\t// refresh cache\r\n\t\tawait this.entityInstanceApiService.get(this.id);\r\n\r\n\t\tconst updatePromise: Promise =\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.update(\r\n\t\t\t\t\tthis.id,\r\n\t\t\t\t\tthis.entityInstance);\r\n\r\n\t\tconst updateDisplayName: string =\r\n\t\t\tthis.displayName\r\n\t\t\t\t+ ' entity';\r\n\r\n\t\tawait this.activityService\r\n\t\t\t.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tupdatePromise,\r\n\t\t\t\t\t`Updating ${updateDisplayName}`,\r\n\t\t\t\t\t`Updated ${updateDisplayName}`,\r\n\t\t\t\t\t`${updateDisplayName} was updated.`,\r\n\t\t\t\t\t`${updateDisplayName} was not updated.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a workflow action.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The empty promise.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic async executeWorkflow(\r\n\t\tactionName: string): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.getEntityTypeAsync();\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = entityType.group;\r\n\r\n\t\t// refresh cache\r\n\t\tawait this.entityInstanceApiService.get(this.id);\r\n\r\n\t\tconst updatePromise: Promise =\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.executeAction(\r\n\t\t\t\t\tthis.id,\r\n\t\t\t\t\tactionName);\r\n\r\n\t\tawait this.activityService\r\n\t\t\t.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tupdatePromise,\r\n\t\t\t\t\t`Executing ${actionName} action`,\r\n\t\t\t\t\t`Executed ${actionName} action`,\r\n\t\t\t\t\t`${actionName} action was executed.`,\r\n\t\t\t\t\t`${actionName} was not executed.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current user of this entity.\r\n\t *\r\n\t * @returns {IUser}\r\n\t * The user.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic currentUser(): IUser\r\n\t{\r\n\t\treturn this\r\n\t\t\t.sessionService\r\n\t\t\t.user;\r\n\t}\r\n\r\n\t/**\r\n\t * Add or updates a property.\r\n\t *\r\n\t * @param {object} item\r\n\t * The object on which to add or update the property.\r\n\t * @param {object} key\r\n\t * The property key/name.\r\n\t * @param {object} value\r\n\t * The new property value.\r\n\t * @returns {BusinessLogicEntity}\r\n\t * This business logic entity with added or updated property.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic addOrUpdateProperty(\r\n\t\titem: object,\r\n\t\tkey: string,\r\n\t\tvalue: any): BusinessLogicEntity\r\n\t{\r\n\t\tObjectHelper.addOrUpdateProperty(\r\n\t\t\titem,\r\n\t\t\tkey,\r\n\t\t\tvalue);\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Add or updates a group of properties.\r\n\t *\r\n\t * @param {object} item\r\n\t * The object on which to add or update the propertie.\r\n\t * @param {object} properties\r\n\t * The properties and values to add or update.\r\n\t * @returns {BusinessLogicEntity}\r\n\t * This business logic entity with added or updated properties.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic addOrUpdateProperties(\r\n\t\titem: object,\r\n\t\tproperties: object): BusinessLogicEntity\r\n\t{\r\n\t\tObjectHelper\r\n\t\t\t.addOrUpdateProperties(\r\n\t\t\t\titem,\r\n\t\t\t\tproperties);\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gest parents of a certain type.\r\n\t *\r\n\t * @async\r\n\t * @param {string} parentType\r\n\t * The object on which to add or update the property.\r\n\t * @param {string[]} excludedParentTypes\r\n\t * The list of parent entity type groups to exclude from the query.\r\n\t * @returns {Promise}\r\n\t * This business logic entity of which to get the parents.\r\n\t * @memberof BusinessLogicEntity\r\n\t */\r\n\tpublic async getParents(\r\n\t\tparentType: string,\r\n\t\texcludedParentTypes: string[] = []): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t(await this.getEntityTypeAsync()).group;\r\n\r\n\t\tconst excludedParents: EntityType[] =\r\n\t\t\tawait this.entityService.getEntityTypesFromNameList(\r\n\t\t\t\texcludedParentTypes);\r\n\t\tconst filter: string =\r\n\t\t\tApiFilterHelper.getEntityTypeFilter(\r\n\t\t\t\texcludedParents,\r\n\t\t\t\ttrue);\r\n\r\n\t\treturn this.entityInstanceApiService.getParents(\r\n\t\t\tthis.id,\r\n\t\t\tfilter,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tparentType);\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t{{drawerDisplay === true ? 'No Access' : 'Summary'}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tDetails\r\n\t\t
    \r\n\t\t
    \r\n\t\t\tYou may not have sufficient privileges to access this {{drawerDisplay === true ? 'drawer' : 'page'}}. If the problem persists, please contact support.\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tSession\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t{{sessionIdentifier}}\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tUrl\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t{{accessDeniedUrl}}\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tResources\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
      \r\n\t\t\t\t
    • \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t{{resource}}\r\n\t\t\t\t\t
      \r\n\t\t\t\t
    • \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tMessage\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t{{clientMessage}}\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tILogEntry\r\n} from '@shared/interfaces/logs/log-entry.interface';\r\nimport {\r\n\tLogLevel,\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\n\r\n@Component({\r\n\tselector: 'app-access-denied-content',\r\n\ttemplateUrl: './access-denied-content.component.html',\r\n\tstyleUrls: [\r\n\t\t'./access-denied-content.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component that generates content for an access denied view in a drawer or\r\n * page.\r\n *\r\n * @export\r\n * @implements {OnInit}\r\n * @class AccessDeniedContentComponent\r\n */\r\nexport class AccessDeniedContentComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an AccessDeniedContentComponent.\r\n\t *\r\n\t * @param {LoggerService} logger\r\n\t * The logger service used to warn access denied events.\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic logger: LoggerService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public drawerDisplay: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public drawerName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public resources: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\t@Input() public clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the formatted message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\tpublic get formattedMessage(): string\r\n\t{\r\n\t\treturn 'Insufficient privileges to access the '\r\n\t\t\t+ `${this.drawerDisplay === true ? 'drawer' : 'page'}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Handles route parameters for display.\r\n\t *\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.logger.logWarning(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tmessage: this.formattedMessage,\r\n\t\t\t\texception: JSON.stringify(this.getAccessDeniedObject()),\r\n\t\t\t\tlevel: LogLevel[LogLevel.Warning]\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a common access denied object for logs and clipboard copies.\r\n\t *\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\tpublic getAccessDeniedObject(): void\r\n\t{\r\n\t\tconst accessDeniedObject: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\taccessDeniedUrl: this.accessDeniedUrl,\r\n\t\t\t\tsessionIdentifier: this.sessionIdentifier,\r\n\t\t\t\tresources: this.resources\r\n\t\t\t};\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.clientMessage))\r\n\t\t{\r\n\t\t\taccessDeniedObject.clientMessage = this.clientMessage;\r\n\t\t}\r\n\r\n\t\tif (this.drawerDisplay === true)\r\n\t\t{\r\n\t\t\taccessDeniedObject.drawerName = this.drawerName;\r\n\t\t}\r\n\r\n\t\treturn accessDeniedObject;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies information about this access denied issue to the clipboard.\r\n\t * This will be a json stringified object matching what we send to logs.\r\n\t *\r\n\t * @async\r\n\t * @memberof AccessDeniedContentComponent\r\n\t */\r\n\tpublic async copyAccessDeniedToClipboard(): Promise\r\n\t{\r\n\t\tconst accessDeniedObject: any = this.getAccessDeniedObject();\r\n\t\taccessDeniedObject.message = this.formattedMessage;\r\n\r\n\t\tawait StringHelper.copyToClipboard(\r\n\t\t\tJSON.stringify(accessDeniedObject));\r\n\r\n\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t'Data Copied',\r\n\t\t\t'Access denied data was copied to your clipboard.',\r\n\t\t\tAppConstants.activityStatus.info);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-color-swatch',\r\n\ttemplateUrl: './color-swatch.component.html',\r\n\tstyleUrls: [\r\n\t\t'./color-swatch.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a color swatch.\r\n * This is generated and hidden so that computed color styles\r\n * matching the theme can be used in code.\r\n *\r\n * @export\r\n * @class ColorSwatchComponent\r\n */\r\nexport class ColorSwatchComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n
    ","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDashboardParameterSet\r\n} from '@shared/interfaces/application-objects/dashboard-parameter-set';\r\nimport {\r\n\tIDashboardSection\r\n} from '@shared/interfaces/application-objects/dashboard-section.interface';\r\nimport {\r\n\tIDashboardWidget\r\n} from '@shared/interfaces/application-objects/dashboard-widget.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDisplayComponentContainer\r\n} from '@shared/interfaces/display-components/display-component-container.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-common-dashboard',\r\n\ttemplateUrl: './common-dashboard.component.html',\r\n\tstyleUrls: [\r\n\t\t'./common-dashboard.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the common dashboard\r\n * component.\r\n *\r\n * @export\r\n * @class CommonDashboardComponent\r\n * @extends {DisplayComponentParameterDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class CommonDashboardComponent\r\n\textends DisplayComponentParameterDirective\r\n\timplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CommonDashboardComponent.\r\n\t * This component is used to display dynamic content based\r\n\t * dashboard content.\r\n\t *\r\n\t * @param {Location} location\r\n\t * The Angular common location service used for url interaction.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @param {Router} router\r\n\t * The router service used for this component.\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic location: Location,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic router: Router,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the formly field.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public field: FormlyFieldConfig;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance name for\r\n\t * this dashboard.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public dashboardDisplayComponentInstanceName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the serialized route parameters for this dashboard.\r\n\t *\r\n\t * @type {IDashboardParameterSet}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public routeParameters: IDashboardParameterSet =\r\n\t\t{};\r\n\r\n\t/**\r\n\t * Gets or sets the entity context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public entityContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the use route url.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public useRouteUrl: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the full page dashboard setting.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Input() public fullPageDashboard: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets finished loading emitt event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Output() public finishedLoading: EventEmitter =\r\n\t\tnew EventEmitter;\r\n\r\n\t/**\r\n\t * Gets or sets header context content emitt event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Output() public headerContextContent: EventEmitter =\r\n\t\tnew EventEmitter;\r\n\r\n\t/**\r\n\t * Gets or sets update route data emitt event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@Output() public updateRouteData: EventEmitter =\r\n\t\tnew EventEmitter;\r\n\r\n\t/**\r\n\t * Gets or sets the number of authorized sections that this\r\n\t * dashboard is expected to display.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic authorizedSectionCount: number;\r\n\r\n\t/**\r\n\t * Gets or sets the value that signifies that all sections and\r\n\t * widgets have been displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic dashboardDisplayComplete: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets number of currently loaded and displayed sections.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic displayedSectionCount: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the array of dashboard sections to display.\r\n\t *\r\n\t * @type {IDashboardSection[]}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic dashboardSections: IDashboardSection[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the dashboard type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic dashboardType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance for this dashboard.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout schema for this dashboard.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic parameterLayoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout data for this dashboard.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic parameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the user type group to allow this to be available\r\n\t * in the page context source.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic sessionUserTypeGroup: string = 'Users';\r\n\r\n\t/**\r\n\t * Gets or sets the user associated with this dashboard to make\r\n\t * this available in the page context source.\r\n\t *\r\n\t * @type {IUser}\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic sessionUser: IUser;\r\n\r\n\t/**\r\n\t * Handles the redraw dashboard event sent from the event emitter\r\n\t * when a dashboard redraw is desired.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.redrawDashboardEvent)\r\n\tpublic async redrawDashboard(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.pageContext.data = {};\r\n\t\tthis.dashboardSections = [];\r\n\t\tthis.displayedSectionCount = 0;\r\n\t\tthis.authorizedSectionCount = 0;\r\n\t\tthis.dashboardDisplayComplete = false;\r\n\r\n\t\tawait this.setupDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set this component for route based\r\n\t * initialization.\r\n\t *\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.sessionUser = this.sessionService.user;\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.scrollHeightChangedSubject.pipe(\r\n\t\t\t\tdebounceTime(this.tabCalculationDebounceDelay),\r\n\t\t\t\tdistinctUntilChanged())\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t(scrollHeight: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.setTabHeights(scrollHeight);\r\n\t\t\t\t\t\tthis.emitHeaderContextContent();\r\n\t\t\t\t\t}));\r\n\r\n\t\tthis.pageContext =\r\n\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tsource: this,\r\n\t\t\t\t\tdata: {}\r\n\t\t\t\t};\r\n\r\n\t\tawait this.setupDashboard();\r\n\r\n\t\tthis.scroll();\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to reset the route strategy to it's original\r\n\t * implementation on destroy.\r\n\t *\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.scrollHeightChangedSubject.complete();\r\n\t\tthis.subscriptions.unsubscribe();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a full section widget display message sent from\r\n\t * the child section component. This will mark the dashboard\r\n\t * as fully displayed when all sections and widgets are\r\n\t * displayed.\r\n\t *\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic sectionComponentDisplayed(): void\r\n\t{\r\n\t\tif (++this.displayedSectionCount !== this.authorizedSectionCount)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.displayParameterFilter =\r\n\t\t\t\t!AnyHelper.isNull(this.parameterLayoutSchema);\r\n\t\t\t\tthis.dashboardDisplayComplete = true;\r\n\t\t\t\tthis.layoutChanged = true;\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.layoutChanged = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tthis.siteLayoutService.debounceDelay);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.activeSectionItem =\r\n\t\t\t\t\t\t\tthis.activeSectionItem || this.sectionItems[0];\r\n\t\t\t\t\t\tthis.siteLayoutChanged();\r\n\t\t\t\t\t\tthis.finishedLoading.emit();\r\n\t\t\t\t\t\tthis.emitHeaderContextContent();\r\n\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t(this.entityContext?.source)\r\n\t\t\t\t\t\t\t\t?.changeDetectorReference))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t(this.entityContext.source)\r\n\t\t\t\t\t\t\t\t.changeDetectorReference\r\n\t\t\t\t\t\t\t\t.detectChanges();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an array of dashboard sections to display in this\r\n\t * component.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic async setupDashboard(): Promise\r\n\t{\r\n\t\tconst displayComponentContainer: IDisplayComponentContainer =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentContainer(\r\n\t\t\t\t\tthis.dashboardDisplayComponentInstanceName,\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\tif (AnyHelper.isNull(displayComponentContainer))\r\n\t\t{\r\n\t\t\tthis.handleAccessDenied();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayComponentInstance =\r\n\t\t\tdisplayComponentContainer.container;\r\n\r\n\t\tif (this.displayComponentInstance.visible === false)\r\n\t\t{\r\n\t\t\tthis.handleAccessDenied();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.parameterLayoutData =\r\n\t\t\tthis.displayComponentFactory.getParameterData(\r\n\t\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\t\tthis.displayComponentInstance.jsonInitialParameters,\r\n\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\tthis.routeParameters.data));\r\n\r\n\t\tthis.parameterLayoutSchema =\r\n\t\t\tthis.displayComponentFactory\r\n\t\t\t\t.getParameterLayoutSchema(\r\n\t\t\t\t\tdisplayComponentContainer.container\r\n\t\t\t\t\t\t.jsonParameterDefinition,\r\n\t\t\t\t\tdisplayComponentContainer.container\r\n\t\t\t\t\t\t.jsonParameterLayout,\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\tthis.authorizedSectionCount =\r\n\t\t\tdisplayComponentContainer.container\r\n\t\t\t\t.displayComponentDefinition?.jsonDefinition\r\n\t\t\t\t.displayComponents?.length;\r\n\r\n\t\t// Empty but loaded and authorized dashboard.\r\n\t\tif (this.authorizedSectionCount === 0)\r\n\t\t{\r\n\t\t\tthis.displayParameterFilter =\r\n\t\t\t\t!AnyHelper.isNull(this.parameterLayoutSchema);\r\n\t\t\tthis.dashboardDisplayComplete = true;\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis.finishedLoading.emit();\r\n\t\t\tthis.emitHeaderContextContent();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tdisplayComponentContainer.components.subscribe({\r\n\t\t\t\tnext:\r\n\t\t\t\t\tasync(dashboardSectionPromise:\r\n\t\t\t\t\t\tPromise) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.setupDashboardSection(\r\n\t\t\t\t\t\t\tdashboardSectionPromise);\r\n\t\t\t\t\t},\r\n\t\t\t\terror:\r\n\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t},\r\n\t\t\t\tcomplete:\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (this.authorizedSectionCount === 0)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.handleAccessDenied(false);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t\t\t\t\t}\r\n\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up an individual dashboard section from a promised display\r\n\t * component instance of type dashboard section.\r\n\t *\r\n\t * @async\r\n\t * @param {Promise} dashboardSectionPromise\r\n\t * A promise representing a display component instance of the type\r\n\t * dashboard section.\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tpublic async setupDashboardSection(\r\n\t\tdashboardSectionPromise:\r\n\t\t\tPromise): Promise\r\n\t{\r\n\t\tconst dashboardSectionInstance: DisplayComponentInstance =\r\n\t\t\tawait dashboardSectionPromise;\r\n\r\n\t\tif (AnyHelper.isNull(dashboardSectionInstance)\r\n\t\t\t|| dashboardSectionInstance.visible === false)\r\n\t\t{\r\n\t\t\tthis.authorizedSectionCount--;\r\n\r\n\t\t\tif (++this.displayedSectionCount ===\r\n\t\t\t\tthis.authorizedSectionCount)\r\n\t\t\t{\r\n\t\t\t\tthis.sectionDisplayComplete();\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst associatedSection: IDashboardParameterSet =\r\n\t\t\tthis.routeParameters.children?.find(\r\n\t\t\t\t(sectionParameterSet: IDashboardParameterSet) =>\r\n\t\t\t\t\tsectionParameterSet.identifier ===\r\n\t\t\t\t\t\tdashboardSectionInstance.name);\r\n\r\n\t\tconst dashboardSection: IDashboardSection =\r\n\t\t\tthis.displayComponentFactory.dashboardSection(\r\n\t\t\t\tdashboardSectionInstance,\r\n\t\t\t\tthis.displayComponentFactory.getParameterData(\r\n\t\t\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\t\t\tdashboardSectionInstance?.jsonInitialParameters,\r\n\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t!AnyHelper.isNull(associatedSection?.data)\r\n\t\t\t\t\t\t\t\t? associatedSection.data\r\n\t\t\t\t\t\t\t\t: {})));\r\n\r\n\t\tconst dashboardSectionSubscription: IDisplayComponentContainer =\r\n\t\t\tthis.displayComponentService\r\n\t\t\t\t.subscribeToDisplayComponentContainer(\r\n\t\t\t\t\tdashboardSectionInstance,\r\n\t\t\t\t\tdashboardSectionInstance.jsonInterpolationData?.widgets,\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\tif (AnyHelper.isNull(dashboardSectionSubscription?.container)\r\n\t\t\t|| AnyHelper.isNull(dashboardSectionSubscription?.components))\r\n\t\t{\r\n\t\t\tthis.authorizedSectionCount--;\r\n\r\n\t\t\tif (++this.displayedSectionCount ===\r\n\t\t\t\tthis.authorizedSectionCount)\r\n\t\t\t{\r\n\t\t\t\tthis.sectionDisplayComplete();\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet widgetCount: number = 0;\r\n\t\tconst availableWidgetsCount: number =\r\n\t\t\tdashboardSectionInstance\r\n\t\t\t\t.displayComponentDefinition?.jsonDefinition\r\n\t\t\t\t?.widgets?.length;\r\n\t\tdashboardSection.authorizedWidgetCount =\r\n\t\t\tavailableWidgetsCount;\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.subscriptions.add(\r\n\t\t\t\t\tdashboardSectionSubscription.components.subscribe({\r\n\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\tasync(dashboardWidgetPromise:\r\n\t\t\t\t\t\t\t\tPromise) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\twidgetCount++;\r\n\t\t\t\t\t\t\t\tawait this.setupDashboardWidget(\r\n\t\t\t\t\t\t\t\t\tdashboardSection,\r\n\t\t\t\t\t\t\t\t\tdashboardWidgetPromise,\r\n\t\t\t\t\t\t\t\t\tassociatedSection);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror:\r\n\t\t\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcomplete:\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (widgetCount === availableWidgetsCount)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (++this.displayedSectionCount ===\r\n\t\t\t\t\t\t\t\t\t\tthis.authorizedSectionCount)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.sectionDisplayComplete();\r\n\t\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up an individual dashboard widget from a promised display component\r\n\t * instance of type dashboard widget.\r\n\t *\r\n\t * @async\r\n\t * @param {IDashboardSection} dashboardSection\r\n\t * The containing dashboard section of this widget.\r\n\t * @param {Promise} dashboardWidgetPromise\r\n\t * A promise representing a display component instance of the type\r\n\t * dashboard widget.\r\n\t * @param {IDashboardParameterSet} dashboardSectionParameterSet\r\n\t * A the set of parameters for the section containing this widget.\r\n\t * @memberof commonDashboardComponent\r\n\t */\r\n\tprivate async setupDashboardWidget(\r\n\t\tdashboardSection: IDashboardSection,\r\n\t\tdashboardWidgetPromise: Promise,\r\n\t\tdashboardSectionParameterSet: IDashboardParameterSet): Promise\r\n\t{\r\n\t\tconst dashboardWidgetInstance: DisplayComponentInstance =\r\n\t\t\tawait dashboardWidgetPromise;\r\n\r\n\t\tif (AnyHelper.isNull(dashboardWidgetInstance))\r\n\t\t{\r\n\t\t\tthis.handleRemovedWidget(dashboardSection);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst associatedWidget: IDashboardParameterSet =\r\n\t\t\tdashboardSectionParameterSet?.children?.find(\r\n\t\t\t\t(sectionParameterSet: IDashboardParameterSet) =>\r\n\t\t\t\t\tsectionParameterSet.identifier ===\r\n\t\t\t\t\t\tdashboardWidgetInstance.name);\r\n\r\n\t\tconst translatedData: any =\r\n\t\t\tthis.displayComponentFactory.getParameterData(\r\n\t\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\t\tdashboardWidgetInstance.jsonInitialParameters,\r\n\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t!AnyHelper.isNull(associatedWidget?.data)\r\n\t\t\t\t\t\t\t? associatedWidget.data\r\n\t\t\t\t\t\t\t: {}));\r\n\r\n\t\tconst dashboardWidget: IDashboardWidget =\r\n\t\t\tawait this.displayComponentFactory.dashboardWidget(\r\n\t\t\t\tdashboardWidgetInstance,\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tsource: this.pageContext.source,\r\n\t\t\t\t\tdata: translatedData?.data\r\n\t\t\t\t});\r\n\r\n\t\tif (!AnyHelper.isNull(dashboardWidget))\r\n\t\t{\r\n\t\t\tdashboardWidget.parameterLayoutData = translatedData;\r\n\r\n\t\t\tconst sectionExists: boolean =\r\n\t\t\t\tthis.dashboardSections.filter(\r\n\t\t\t\t\t(filterSection: IDashboardSection) =>\r\n\t\t\t\t\t\tfilterSection.order ===\r\n\t\t\t\t\t\t\tdashboardSection.order).length > 0;\r\n\r\n\t\t\t// Only add the section when we have a widget to display\r\n\t\t\tif (sectionExists === false)\r\n\t\t\t{\r\n\t\t\t\tthis.dashboardSections =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...this.dashboardSections,\r\n\t\t\t\t\t\tdashboardSection\r\n\t\t\t\t\t].sort(\r\n\t\t\t\t\t\t(dashboardSectionOne: IDashboardSection,\r\n\t\t\t\t\t\t\tdashboardSectionTwo: IDashboardSection) =>\r\n\t\t\t\t\t\t\tdashboardSectionOne.order\r\n\t\t\t\t\t\t\t\t- dashboardSectionTwo.order);\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(dashboardSection.label))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.sectionItems =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...this.sectionItems,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: dashboardSection.label,\r\n\t\t\t\t\t\t\tid: StringHelper.getCleanedValue(\r\n\t\t\t\t\t\t\t\tdashboardSection.label,\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\tAppConstants.characters.space\r\n\t\t\t\t\t\t\t\t]),\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\torder: dashboardSection.order\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t].sort(\r\n\t\t\t\t\t\t(dashboardTabOne: MenuItem,\r\n\t\t\t\t\t\t\tdashboardTabTwo: MenuItem) =>\r\n\t\t\t\t\t\t\tdashboardTabOne.queryParams.order\r\n\t\t\t\t\t\t\t\t- dashboardTabTwo.queryParams.order);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdashboardWidget.order =\r\n\t\t\t\tdashboardWidgetInstance.order;\r\n\r\n\t\t\tdashboardSection.widgets =\r\n\t\t\t\t[\r\n\t\t\t\t\t...dashboardSection.widgets,\r\n\t\t\t\t\tdashboardWidget\r\n\t\t\t\t].sort(\r\n\t\t\t\t\t(dashboardWidgetOne: IDashboardWidget,\r\n\t\t\t\t\t\tdashboardWidgetTwo: IDashboardWidget) =>\r\n\t\t\t\t\t\tdashboardWidgetOne.order -\r\n\t\t\t\t\t\t\tdashboardWidgetTwo.order);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.handleRemovedWidget(dashboardSection);\r\n\t\t}\r\n\r\n\t\tthis.finishedLoading.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handle shared logic for removal of a widget from a section based\r\n\t * on ownership, security, or invalid naming.\r\n\t *\r\n\t * @param {IDashboardSection} dashboardSection\r\n\t * The dashboard section to handle the removed widget event for.\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tprivate handleRemovedWidget(\r\n\t\tdashboardSection: IDashboardSection): void\r\n\t{\r\n\t\tdashboardSection.authorizedWidgetCount--;\r\n\r\n\t\tif (dashboardSection.authorizedWidgetCount === 0)\r\n\t\t{\r\n\t\t\tthis.authorizedSectionCount--;\r\n\r\n\t\t\tif (this.authorizedSectionCount === 0)\r\n\t\t\t{\r\n\t\t\t\tthis.handleAccessDenied();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the completion of the section display process when all authorized\r\n\t * sections have been displayed.\r\n\t *\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tprivate sectionDisplayComplete(): void\r\n\t{\r\n\t\tthis.finishedLoading.emit();\r\n\t\tthis.emitHeaderContextContent();\r\n\t\tthis.displayedSectionCount = 0;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t},\r\n\t\t\tAppConstants\r\n\t\t\t\t.time\r\n\t\t\t\t.oneHundredMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Handle access denied logic which will complete the load of the dasboard\r\n\t * or navigate to the access denied page if this is a full page dashboard.\r\n\t *\r\n\t * @param {boolean} showAccessDenied\r\n\t * An optional value indicating if the access denied page should show.\r\n\t * The default is true.\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tprivate handleAccessDenied(\r\n\t\tshowAccessDenied: boolean = true): void\r\n\t{\r\n\t\tif (this.fullPageDashboard === true\r\n\t\t\t&& showAccessDenied)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\tthis.getDashboardResources());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayParameterFilter =\r\n\t\t\t!AnyHelper.isNull(this.parameterLayoutSchema);\r\n\t\tthis.dashboardDisplayComplete = true;\r\n\t\tthis.loading = false;\r\n\t\tthis.finishedLoading.emit();\r\n\t\tthis.emitHeaderContextContent();\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers available dashboard resources based on the loaded and allowed\r\n\t * set of data. This is used to populate the access denied resources\r\n\t * parameter.\r\n\t *\r\n\t * @returns {string[]}\r\n\t * The list of possible resources that are required to display this page.\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tprivate getDashboardResources(): string[]\r\n\t{\r\n\t\tconst resources: string[] = [];\r\n\r\n\t\tresources.push(this.dashboardDisplayComponentInstanceName);\r\n\r\n\t\tconst pageSections: any =\r\n\t\t\tthis.displayComponentInstance\r\n\t\t\t\t?.displayComponentDefinition\r\n\t\t\t\t?.jsonDefinition\r\n\t\t\t\t?.displayComponents;\r\n\r\n\t\tif (!AnyHelper.isNull(pageSections)\r\n\t\t\t&& this.dashboardSections.length === 0)\r\n\t\t{\r\n\t\t\tresources.push(\r\n\t\t\t\t...pageSections.flatMap(\r\n\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\titem.displayComponent));\r\n\t\t}\r\n\r\n\t\tif (this.dashboardSections.length > 0)\r\n\t\t{\r\n\t\t\tthis.dashboardSections.forEach(\r\n\t\t\t\t(dashboardSection: IDashboardSection) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tresources.push(\r\n\t\t\t\t\t\tdashboardSection.displayComponentInstance.name);\r\n\t\t\t\t\tdashboardSection\r\n\t\t\t\t\t\t.displayComponentInstance\r\n\t\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition\r\n\t\t\t\t\t\t.widgets.forEach(\r\n\t\t\t\t\t\t\t(widget: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresources.push(\r\n\t\t\t\t\t\t\t\t\twidget.displayComponent);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn resources;\r\n\t}\r\n\r\n\t/**\r\n\t * Emits the header context content.\r\n\t *\r\n\t * @memberof CommonDashboardComponent\r\n\t */\r\n\tprivate emitHeaderContextContent()\r\n\t{\r\n\t\tthis.headerContextContent.emit(\r\n\t\t\t{\r\n\t\t\t\tloading: this.loading,\r\n\t\t\t\tsectionItems: this.sectionItems,\r\n\t\t\t\ttabItems: this.tabItems,\r\n\t\t\t\tdisplayNavigationDropdown: this.displayNavigationDropdown,\r\n\t\t\t\tdisplayParameterFilter: this.displayParameterFilter,\r\n\t\t\t\tactiveSectionItem: this.activeSectionItem,\r\n\t\t\t\tactiveTabItem: this.activeTabItem,\r\n\t\t\t\tparameterLayoutData: this.parameterLayoutData,\r\n\t\t\t\tparameterLayoutSchema: this.parameterLayoutSchema,\r\n\t\t\t\tdashboardDisplayComplete: this.dashboardDisplayComplete,\r\n\t\t\t\tsettingsActive: this.settingsActive,\r\n\t\t\t\tdisplayComponentInstance: this.displayComponentInstance,\r\n\t\t\t\tbuttonMenuNavigationGroup: this.buttonMenuNavigationGroup,\r\n\t\t\t\tdashboardSections: this.dashboardSections\r\n\t\t\t});\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnChanges,\r\n\tOutput,\r\n\tSimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tIDashboardSection\r\n} from '@shared/interfaces/application-objects/dashboard-section.interface';\r\nimport {\r\n\tIDashboardWidget\r\n} from '@shared/interfaces/application-objects/dashboard-widget.interface';\r\n\r\n@Component({\r\n\tselector: 'app-dashboard-section',\r\n\ttemplateUrl: './dashboard-section.component.html',\r\n\tstyleUrls: [\r\n\t\t'./dashboard-section.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a dashboard section.\r\n *\r\n * @export\r\n * @class DashboardSectionComponent\r\n * @extends {DisplayComponentParameterDirective}\r\n */\r\nexport class DashboardSectionComponent\r\n\textends DisplayComponentParameterDirective\r\n\timplements OnChanges\r\n{\r\n\t/**\r\n\t * Gets or sets the input value sent from the dashboard\r\n\t * that all sections and widgets have been displayed.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\t@Input() public dashboardDisplayCompleted: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the configuration for this dashboard section.\r\n\t *\r\n\t * @type {IDashboardSection}\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\t@Input() public section: IDashboardSection;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will bubble up to listening\r\n\t * components the applied parameters event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\t@Output() public sectionParametersApplied: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will bubble up to listening\r\n\t * components that all widgets in this section have been displayed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\t@Output() public sectionFullyDisplayed: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the count of currently displayed widgets in this\r\n\t * section.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tprivate displayedWidgetCount: number = 0;\r\n\r\n\t/**\r\n\t * Handles the on changes event.\r\n\t * This event will watch for changes to the authorized widget count of this\r\n\t * section and check if all widgets are displayed with the new value.\r\n\t *\r\n\t *\r\n\t * @param {SimpleChanges} changes\r\n\t * The change event sent to this on changes handler.\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tchanges: SimpleChanges): void\r\n\t{\r\n\t\tif (changes.section?.previousValue?.authorizedWidgetCount\r\n\t\t\t!== changes.section?.currentValue?.authorizedWidgetCount)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.widgetComponentDisplayed();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click from the section parameter component.\r\n\t *\r\n\t * @override\r\n\t * @async\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tpublic async applyParameters(): Promise\r\n\t{\r\n\t\tthis.handleChildParameterData(\r\n\t\t\tthis.section.widgets,\r\n\t\t\tthis.section.parameterLayoutSchema,\r\n\t\t\tthis.section.parameterLayoutData);\r\n\r\n\t\tthis.bubbleAppliedWidgetParameters();\r\n\t}\r\n\r\n\t/**\r\n\t * Emits the section parameters applied event to the listening\r\n\t * dashboard component.\r\n\t *\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tpublic bubbleAppliedWidgetParameters(): void\r\n\t{\r\n\t\tthis.sectionParametersApplied.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the widget component's displayed message and when\r\n\t * all widgets of this section are displayed this will emit\r\n\t * to the listening component that the section has been\r\n\t * displayed.\r\n\t *\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tpublic widgetComponentDisplayed(): void\r\n\t{\r\n\t\tif (++this.displayedWidgetCount ===\r\n\t\t\tthis.section.authorizedWidgetCount)\r\n\t\t{\r\n\t\t\tthis.sectionFullyDisplayed.emit();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a change in a section widget by updating the existing array\r\n\t * to point to this new value.\r\n\t *\r\n\t * @param {IDashboardWidget} dashboardWidget\r\n\t * The altered dashboard widget.\r\n\t * @memberof DashboardSectionComponent\r\n\t */\r\n\tpublic widgetChanged(\r\n\t\tdashboardWidget: IDashboardWidget): void\r\n\t{\r\n\t\tconst existingIndex: number =\r\n\t\t\tthis.section.widgets.findIndex(\r\n\t\t\t\t(sectionWidget: IDashboardWidget) =>\r\n\t\t\t\t\tsectionWidget.displayComponentInstance.id ===\r\n\t\t\t\t\t\tdashboardWidget.displayComponentInstance.id);\r\n\r\n\t\tthis.section.widgets[existingIndex] =\r\n\t\t\t{...dashboardWidget};\r\n\t}\r\n}","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tTooltip\r\n} from 'primeng/tooltip';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tstartWith\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-common-icon-tooltip',\r\n\ttemplateUrl: './common-icon-tooltip.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the object list component.\r\n *\r\n * @export\r\n * @class CommonIconTooltipComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class CommonIconTooltipComponent\r\nimplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the object list component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * Service utilized to catch any site layout change and\r\n\t * site layout information\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service.\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions data required to\r\n\t * generate the table display within it's own functionality.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public content: string;\r\n\r\n\t/**\r\n\t * Gets or sets the field context.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public field?: FormlyFieldConfig;\r\n\r\n\t/**\r\n\t * Gets or sets the external link.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public externalLink?: string;\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip escape.\r\n\t * Defaults to true.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public escape?: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip icon class.\r\n\t * Defaults to 'fa fa-info-circle theme-color label-info-icon text-link'.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public iconClass?: string =\r\n\t\t'fa fa-info-circle theme-color label-info-icon text-link';\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip position.\r\n\t * Defaults to 'top'.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public position?: string = 'top';\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip style class.\r\n\t * Defaults to 'label-tooltip'.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public styleClass?: string = 'label-tooltip';\r\n\r\n\t/**\r\n\t * Gets or sets the thruthy that allows tooltip activation.\r\n\t * Defaults to true.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Input() public allowTooltipActivation?: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the event emitter for the icon click.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@Output() public iconClick?: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {Tooltip}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@ViewChild(Tooltip)\r\n\tpublic tooltip: Tooltip;\r\n\r\n\t/**\r\n\t * Gets or sets if the tooltip Id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic tooltipId: number;\r\n\r\n\t/**\r\n\t * Gets or sets if the tooltip is active state.\r\n\t * Defaults to false.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic activeTooltip: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets when the tooltip redraws.\r\n\t * Defaults to false.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic tooltipRedraw: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the observer tooltip view changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic tooltipViewChangedSubject:\r\n\t\tSubject = new Subject();\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables\r\n\t * or loading has completed.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.deactivateTooltip();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the scroll event sent from the window.\r\n\t * This will hide any currently displayed tooltips.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.scrollEvent)\r\n\tpublic scroll(): void\r\n\t{\r\n\t\tthis.deactivateTooltip();\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Checks for the existence of a required rule validator on this field if\r\n\t * it is set via rules.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setTooltipId();\r\n\t\tthis.tooltipViewChangedSubject.pipe(\r\n\t\t\tstartWith(null),\r\n\t\t\tdebounceTime(AppConstants.time.twentyFiveMilliseconds),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\t(changedTooltip: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (!AnyHelper.isNull(changedTooltip)\r\n\t\t\t\t\t&& (changedTooltip.deactivateTooltip === true\r\n\t\t\t\t\t\t|| (!AnyHelper.isNull(this.tooltip)\r\n\t\t\t\t\t\t\t&& this.tooltip.el.nativeElement.id\r\n\t\t\t\t\t\t\t\t=== changedTooltip.id)))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.activeTooltip === false\r\n\t\t\t\t\t\t\t&& this.allowTooltipActivation === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (this.tooltip.active === false)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.tooltip.activate();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.tooltip.unbindEvents();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.redrawTooltip();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.activeTooltip = !this.activeTooltip;\r\n\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(this.iconClick)\r\n\t\t\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\tchangedTooltip.clickEvent))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.iconClick.next(changedTooltip.clickEvent);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\t\t\tthis.updateFieldValueAndValidity();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will complete any current observables.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.tooltipViewChangedSubject.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * This method will deactivate the tooltip when is active.\r\n\t * This is used by the clickOutside directive and\r\n\t * the HostListener siteLayoutChangedEvent.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic deactivateTooltip(): void\r\n\t{\r\n\t\tif (this.activeTooltip === false\r\n\t\t\t|| this.allowTooltipActivation !== true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.tooltipViewChangedSubject.next(\r\n\t\t\t{\r\n\t\t\t\tid: null,\r\n\t\t\t\tdeactivateTooltip: true\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips, and handle the click event toogling.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic handleTooltipClickEvent(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tthis.toogleTooltipDisplay(event);\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the toogle tooltip event.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic toogleTooltipDisplay(event: MouseEvent): void\r\n\t{\r\n\t\tthis.tooltipViewChangedSubject.next(\r\n\t\t\t{\r\n\t\t\t\tid: (event.target).id,\r\n\t\t\t\tdeactivateTooltip: false,\r\n\t\t\t\tclickEvent: event\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will redirect and load in a new tab the external\r\n\t * link specified on the template options externalLink property.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tpublic accessExternalLink(): void\r\n\t{\r\n\t\tconst externalLink =\r\n\t\t\twindow.open(\r\n\t\t\t\tthis.externalLink,\r\n\t\t\t\tAppConstants.windowTargets.blank);\r\n\t\texternalLink?.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * This method will handle the tooltip redraw action.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tprivate redrawTooltip(): void\r\n\t{\r\n\t\tthis.tooltipRedraw = true;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t\tthis.updateFieldValueAndValidity();\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.tooltipRedraw = false;\r\n\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\tthis.updateFieldValueAndValidity();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Updates form control field value and validity\r\n\t * when field form control is defined.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tprivate updateFieldValueAndValidity(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.field?.formControl))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.field.formControl.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the tooltip id.\r\n\t *\r\n\t * @memberof CommonIconTooltipComponent\r\n\t */\r\n\tprivate setTooltipId(): void\r\n\t{\r\n\t\tthis.tooltipId = !AnyHelper.isNullOrEmpty(this.field?.id)\r\n\t\t\t? parseInt(\r\n\t\t\t\tthis.field.id,\r\n\t\t\t\tAppConstants.parseRadix)\r\n\t\t\t: 0;\r\n\t}\r\n}","/**\n * @implements {IHooks}\n */\nclass Hooks {\n /**\n * @callback HookCallback\n * @this {*|Jsep} this\n * @param {Jsep} env\n * @returns: void\n */\n /**\n * Adds the given callback to the list of callbacks for the given hook.\n *\n * The callback will be invoked when the hook it is registered for is run.\n *\n * One callback function can be registered to multiple hooks and the same hook multiple times.\n *\n * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n * @public\n */\n add(name, callback, first) {\n if (typeof arguments[0] != 'string') {\n // Multiple hook callbacks, keyed by name\n for (let name in arguments[0]) {\n this.add(name, arguments[0][name], arguments[1]);\n }\n } else {\n (Array.isArray(name) ? name : [name]).forEach(function (name) {\n this[name] = this[name] || [];\n if (callback) {\n this[name][first ? 'unshift' : 'push'](callback);\n }\n }, this);\n }\n }\n\n /**\n * Runs a hook invoking all registered callbacks with the given environment variables.\n *\n * Callbacks will be invoked synchronously and in the order in which they were registered.\n *\n * @param {string} name The name of the hook.\n * @param {Object} env The environment variables of the hook passed to all callbacks registered.\n * @public\n */\n run(name, env) {\n this[name] = this[name] || [];\n this[name].forEach(function (callback) {\n callback.call(env && env.context ? env.context : env, env);\n });\n }\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n constructor(jsep) {\n this.jsep = jsep;\n this.registered = {};\n }\n\n /**\n * @callback PluginSetup\n * @this {Jsep} jsep\n * @returns: void\n */\n /**\n * Adds the given plugin(s) to the registry\n *\n * @param {object} plugins\n * @param {string} plugins.name The name of the plugin\n * @param {PluginSetup} plugins.init The init function\n * @public\n */\n register() {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n plugins.forEach(plugin => {\n if (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n throw new Error('Invalid JSEP plugin format');\n }\n if (this.registered[plugin.name]) {\n // already registered. Ignore.\n return;\n }\n plugin.init(this.jsep);\n this.registered[plugin.name] = plugin;\n });\n }\n}\n\n// JavaScript Expression Parser (JSEP) 1.4.0\n\nclass Jsep {\n /**\n * @returns {string}\n */\n static get version() {\n // To be filled in by the template\n return '1.4.0';\n }\n\n /**\n * @returns {string}\n */\n static toString() {\n return 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n }\n // ==================== CONFIG ================================\n /**\n * @method addUnaryOp\n * @param {string} op_name The name of the unary op to add\n * @returns {Jsep}\n */\n static addUnaryOp(op_name) {\n Jsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n Jsep.unary_ops[op_name] = 1;\n return Jsep;\n }\n\n /**\n * @method jsep.addBinaryOp\n * @param {string} op_name The name of the binary op to add\n * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n * @param {boolean} [isRightAssociative=false] whether operator is right-associative\n * @returns {Jsep}\n */\n static addBinaryOp(op_name, precedence, isRightAssociative) {\n Jsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n Jsep.binary_ops[op_name] = precedence;\n if (isRightAssociative) {\n Jsep.right_associative.add(op_name);\n } else {\n Jsep.right_associative.delete(op_name);\n }\n return Jsep;\n }\n\n /**\n * @method addIdentifierChar\n * @param {string} char The additional character to treat as a valid part of an identifier\n * @returns {Jsep}\n */\n static addIdentifierChar(char) {\n Jsep.additional_identifier_chars.add(char);\n return Jsep;\n }\n\n /**\n * @method addLiteral\n * @param {string} literal_name The name of the literal to add\n * @param {*} literal_value The value of the literal\n * @returns {Jsep}\n */\n static addLiteral(literal_name, literal_value) {\n Jsep.literals[literal_name] = literal_value;\n return Jsep;\n }\n\n /**\n * @method removeUnaryOp\n * @param {string} op_name The name of the unary op to remove\n * @returns {Jsep}\n */\n static removeUnaryOp(op_name) {\n delete Jsep.unary_ops[op_name];\n if (op_name.length === Jsep.max_unop_len) {\n Jsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n }\n return Jsep;\n }\n\n /**\n * @method removeAllUnaryOps\n * @returns {Jsep}\n */\n static removeAllUnaryOps() {\n Jsep.unary_ops = {};\n Jsep.max_unop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeIdentifierChar\n * @param {string} char The additional character to stop treating as a valid part of an identifier\n * @returns {Jsep}\n */\n static removeIdentifierChar(char) {\n Jsep.additional_identifier_chars.delete(char);\n return Jsep;\n }\n\n /**\n * @method removeBinaryOp\n * @param {string} op_name The name of the binary op to remove\n * @returns {Jsep}\n */\n static removeBinaryOp(op_name) {\n delete Jsep.binary_ops[op_name];\n if (op_name.length === Jsep.max_binop_len) {\n Jsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n }\n Jsep.right_associative.delete(op_name);\n return Jsep;\n }\n\n /**\n * @method removeAllBinaryOps\n * @returns {Jsep}\n */\n static removeAllBinaryOps() {\n Jsep.binary_ops = {};\n Jsep.max_binop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeLiteral\n * @param {string} literal_name The name of the literal to remove\n * @returns {Jsep}\n */\n static removeLiteral(literal_name) {\n delete Jsep.literals[literal_name];\n return Jsep;\n }\n\n /**\n * @method removeAllLiterals\n * @returns {Jsep}\n */\n static removeAllLiterals() {\n Jsep.literals = {};\n return Jsep;\n }\n // ==================== END CONFIG ============================\n\n /**\n * @returns {string}\n */\n get char() {\n return this.expr.charAt(this.index);\n }\n\n /**\n * @returns {number}\n */\n get code() {\n return this.expr.charCodeAt(this.index);\n }\n /**\n * @param {string} expr a string with the passed in express\n * @returns Jsep\n */\n constructor(expr) {\n // `index` stores the character number we are currently at\n // All of the gobbles below will modify `index` as we move along\n this.expr = expr;\n this.index = 0;\n }\n\n /**\n * static top-level parser\n * @returns {jsep.Expression}\n */\n static parse(expr) {\n return new Jsep(expr).parse();\n }\n\n /**\n * Get the longest key length of any object\n * @param {object} obj\n * @returns {number}\n */\n static getMaxKeyLen(obj) {\n return Math.max(0, ...Object.keys(obj).map(k => k.length));\n }\n\n /**\n * `ch` is a character code in the next three functions\n * @param {number} ch\n * @returns {boolean}\n */\n static isDecimalDigit(ch) {\n return ch >= 48 && ch <= 57; // 0...9\n }\n\n /**\n * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n * @param {string} op_val\n * @returns {number}\n */\n static binaryPrecedence(op_val) {\n return Jsep.binary_ops[op_val] || 0;\n }\n\n /**\n * Looks for start of identifier\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierStart(ch) {\n return ch >= 65 && ch <= 90 ||\n // A...Z\n ch >= 97 && ch <= 122 ||\n // a...z\n ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)] ||\n // any non-ASCII that is not an operator\n Jsep.additional_identifier_chars.has(String.fromCharCode(ch)); // additional characters\n }\n\n /**\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierPart(ch) {\n return Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n }\n\n /**\n * throw error at index of the expression\n * @param {string} message\n * @throws\n */\n throwError(message) {\n const error = new Error(message + ' at character ' + this.index);\n error.index = this.index;\n error.description = message;\n throw error;\n }\n\n /**\n * Run a given hook\n * @param {string} name\n * @param {jsep.Expression|false} [node]\n * @returns {?jsep.Expression}\n */\n runHook(name, node) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this,\n node\n };\n Jsep.hooks.run(name, env);\n return env.node;\n }\n return node;\n }\n\n /**\n * Runs a given hook until one returns a node\n * @param {string} name\n * @returns {?jsep.Expression}\n */\n searchHook(name) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this\n };\n Jsep.hooks[name].find(function (callback) {\n callback.call(env.context, env);\n return env.node;\n });\n return env.node;\n }\n }\n\n /**\n * Push `index` up to the next non-space character\n */\n gobbleSpaces() {\n let ch = this.code;\n // Whitespace\n while (ch === Jsep.SPACE_CODE || ch === Jsep.TAB_CODE || ch === Jsep.LF_CODE || ch === Jsep.CR_CODE) {\n ch = this.expr.charCodeAt(++this.index);\n }\n this.runHook('gobble-spaces');\n }\n\n /**\n * Top-level method to parse all expressions and returns compound or single node\n * @returns {jsep.Expression}\n */\n parse() {\n this.runHook('before-all');\n const nodes = this.gobbleExpressions();\n\n // If there's only one expression just try returning the expression\n const node = nodes.length === 1 ? nodes[0] : {\n type: Jsep.COMPOUND,\n body: nodes\n };\n return this.runHook('after-all', node);\n }\n\n /**\n * top-level parser (but can be reused within as well)\n * @param {number} [untilICode]\n * @returns {jsep.Expression[]}\n */\n gobbleExpressions(untilICode) {\n let nodes = [],\n ch_i,\n node;\n while (this.index < this.expr.length) {\n ch_i = this.code;\n\n // Expressions can be separated by semicolons, commas, or just inferred without any\n // separators\n if (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n this.index++; // ignore separators\n } else {\n // Try to gobble each expression individually\n if (node = this.gobbleExpression()) {\n nodes.push(node);\n // If we weren't able to find a binary expression and are out of room, then\n // the expression passed in probably has too much\n } else if (this.index < this.expr.length) {\n if (ch_i === untilICode) {\n break;\n }\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n }\n }\n return nodes;\n }\n\n /**\n * The main parsing function.\n * @returns {?jsep.Expression}\n */\n gobbleExpression() {\n const node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n this.gobbleSpaces();\n return this.runHook('after-expression', node);\n }\n\n /**\n * Search for the operation portion of the string (e.g. `+`, `===`)\n * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n * and move down from 3 to 2 to 1 character until a matching binary operation is found\n * then, return that binary operation\n * @returns {string|boolean}\n */\n gobbleBinaryOp() {\n this.gobbleSpaces();\n let to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n let tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept a binary op when it is an identifier.\n // Binary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.binary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n return to_check;\n }\n to_check = to_check.substr(0, --tc_len);\n }\n return false;\n }\n\n /**\n * This function is responsible for gobbling an individual expression,\n * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n * @returns {?jsep.BinaryExpression}\n */\n gobbleBinaryExpression() {\n let node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n // First, try to get the leftmost thing\n // Then, check to see if there's a binary operator operating on that leftmost thing\n // Don't gobbleBinaryOp without a left-hand-side\n left = this.gobbleToken();\n if (!left) {\n return left;\n }\n biop = this.gobbleBinaryOp();\n\n // If there wasn't a binary operator, just return the leftmost node\n if (!biop) {\n return left;\n }\n\n // Otherwise, we need to start a stack to properly place the binary operations in their\n // precedence structure\n biop_info = {\n value: biop,\n prec: Jsep.binaryPrecedence(biop),\n right_a: Jsep.right_associative.has(biop)\n };\n right = this.gobbleToken();\n if (!right) {\n this.throwError(\"Expected expression after \" + biop);\n }\n stack = [left, biop_info, right];\n\n // Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n while (biop = this.gobbleBinaryOp()) {\n prec = Jsep.binaryPrecedence(biop);\n if (prec === 0) {\n this.index -= biop.length;\n break;\n }\n biop_info = {\n value: biop,\n prec,\n right_a: Jsep.right_associative.has(biop)\n };\n cur_biop = biop;\n\n // Reduce: make a binary expression from the three topmost entries.\n const comparePrev = prev => biop_info.right_a && prev.right_a ? prec > prev.prec : prec <= prev.prec;\n while (stack.length > 2 && comparePrev(stack[stack.length - 2])) {\n right = stack.pop();\n biop = stack.pop().value;\n left = stack.pop();\n node = {\n type: Jsep.BINARY_EXP,\n operator: biop,\n left,\n right\n };\n stack.push(node);\n }\n node = this.gobbleToken();\n if (!node) {\n this.throwError(\"Expected expression after \" + cur_biop);\n }\n stack.push(biop_info, node);\n }\n i = stack.length - 1;\n node = stack[i];\n while (i > 1) {\n node = {\n type: Jsep.BINARY_EXP,\n operator: stack[i - 1].value,\n left: stack[i - 2],\n right: node\n };\n i -= 2;\n }\n return node;\n }\n\n /**\n * An individual part of a binary expression:\n * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n * @returns {boolean|jsep.Expression}\n */\n gobbleToken() {\n let ch, to_check, tc_len, node;\n this.gobbleSpaces();\n node = this.searchHook('gobble-token');\n if (node) {\n return this.runHook('after-token', node);\n }\n ch = this.code;\n if (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n // Char code 46 is a dot `.` which can start off a numeric literal\n return this.gobbleNumericLiteral();\n }\n if (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n // Single or double quotes\n node = this.gobbleStringLiteral();\n } else if (ch === Jsep.OBRACK_CODE) {\n node = this.gobbleArray();\n } else {\n to_check = this.expr.substr(this.index, Jsep.max_unop_len);\n tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept an unary op when it is an identifier.\n // Unary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.unary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n const argument = this.gobbleToken();\n if (!argument) {\n this.throwError('missing unaryOp argument');\n }\n return this.runHook('after-token', {\n type: Jsep.UNARY_EXP,\n operator: to_check,\n argument,\n prefix: true\n });\n }\n to_check = to_check.substr(0, --tc_len);\n }\n if (Jsep.isIdentifierStart(ch)) {\n node = this.gobbleIdentifier();\n if (Jsep.literals.hasOwnProperty(node.name)) {\n node = {\n type: Jsep.LITERAL,\n value: Jsep.literals[node.name],\n raw: node.name\n };\n } else if (node.name === Jsep.this_str) {\n node = {\n type: Jsep.THIS_EXP\n };\n }\n } else if (ch === Jsep.OPAREN_CODE) {\n // open parenthesis\n node = this.gobbleGroup();\n }\n }\n if (!node) {\n return this.runHook('after-token', false);\n }\n node = this.gobbleTokenProperty(node);\n return this.runHook('after-token', node);\n }\n\n /**\n * Gobble properties of of identifiers/strings/arrays/groups.\n * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n * It also gobbles function calls:\n * e.g. `Math.acos(obj.angle)`\n * @param {jsep.Expression} node\n * @returns {jsep.Expression}\n */\n gobbleTokenProperty(node) {\n this.gobbleSpaces();\n let ch = this.code;\n while (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE || ch === Jsep.QUMARK_CODE) {\n let optional;\n if (ch === Jsep.QUMARK_CODE) {\n if (this.expr.charCodeAt(this.index + 1) !== Jsep.PERIOD_CODE) {\n break;\n }\n optional = true;\n this.index += 2;\n this.gobbleSpaces();\n ch = this.code;\n }\n this.index++;\n if (ch === Jsep.OBRACK_CODE) {\n node = {\n type: Jsep.MEMBER_EXP,\n computed: true,\n object: node,\n property: this.gobbleExpression()\n };\n if (!node.property) {\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n this.gobbleSpaces();\n ch = this.code;\n if (ch !== Jsep.CBRACK_CODE) {\n this.throwError('Unclosed [');\n }\n this.index++;\n } else if (ch === Jsep.OPAREN_CODE) {\n // A function call is being made; gobble all the arguments\n node = {\n type: Jsep.CALL_EXP,\n 'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n callee: node\n };\n } else if (ch === Jsep.PERIOD_CODE || optional) {\n if (optional) {\n this.index--;\n }\n this.gobbleSpaces();\n node = {\n type: Jsep.MEMBER_EXP,\n computed: false,\n object: node,\n property: this.gobbleIdentifier()\n };\n }\n if (optional) {\n node.optional = true;\n } // else leave undefined for compatibility with esprima\n\n this.gobbleSpaces();\n ch = this.code;\n }\n return node;\n }\n\n /**\n * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n * @returns {jsep.Literal}\n */\n gobbleNumericLiteral() {\n let number = '',\n ch,\n chCode;\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n if (this.code === Jsep.PERIOD_CODE) {\n // can start with a decimal marker\n number += this.expr.charAt(this.index++);\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n }\n ch = this.char;\n if (ch === 'e' || ch === 'E') {\n // exponent marker\n number += this.expr.charAt(this.index++);\n ch = this.char;\n if (ch === '+' || ch === '-') {\n // exponent sign\n number += this.expr.charAt(this.index++);\n }\n while (Jsep.isDecimalDigit(this.code)) {\n // exponent itself\n number += this.expr.charAt(this.index++);\n }\n if (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1))) {\n this.throwError('Expected exponent (' + number + this.char + ')');\n }\n }\n chCode = this.code;\n\n // Check to make sure this isn't a variable name that start with a number (123abc)\n if (Jsep.isIdentifierStart(chCode)) {\n this.throwError('Variable names cannot start with a number (' + number + this.char + ')');\n } else if (chCode === Jsep.PERIOD_CODE || number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE) {\n this.throwError('Unexpected period');\n }\n return {\n type: Jsep.LITERAL,\n value: parseFloat(number),\n raw: number\n };\n }\n\n /**\n * Parses a string literal, staring with single or double quotes with basic support for escape codes\n * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n * @returns {jsep.Literal}\n */\n gobbleStringLiteral() {\n let str = '';\n const startIndex = this.index;\n const quote = this.expr.charAt(this.index++);\n let closed = false;\n while (this.index < this.expr.length) {\n let ch = this.expr.charAt(this.index++);\n if (ch === quote) {\n closed = true;\n break;\n } else if (ch === '\\\\') {\n // Check for all of the common escape codes\n ch = this.expr.charAt(this.index++);\n switch (ch) {\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n str += ch;\n }\n } else {\n str += ch;\n }\n }\n if (!closed) {\n this.throwError('Unclosed quote after \"' + str + '\"');\n }\n return {\n type: Jsep.LITERAL,\n value: str,\n raw: this.expr.substring(startIndex, this.index)\n };\n }\n\n /**\n * Gobbles only identifiers\n * e.g.: `foo`, `_value`, `$x1`\n * Also, this function checks if that identifier is a literal:\n * (e.g. `true`, `false`, `null`) or `this`\n * @returns {jsep.Identifier}\n */\n gobbleIdentifier() {\n let ch = this.code,\n start = this.index;\n if (Jsep.isIdentifierStart(ch)) {\n this.index++;\n } else {\n this.throwError('Unexpected ' + this.char);\n }\n while (this.index < this.expr.length) {\n ch = this.code;\n if (Jsep.isIdentifierPart(ch)) {\n this.index++;\n } else {\n break;\n }\n }\n return {\n type: Jsep.IDENTIFIER,\n name: this.expr.slice(start, this.index)\n };\n }\n\n /**\n * Gobbles a list of arguments within the context of a function call\n * or array literal. This function also assumes that the opening character\n * `(` or `[` has already been gobbled, and gobbles expressions and commas\n * until the terminator character `)` or `]` is encountered.\n * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n * @param {number} termination\n * @returns {jsep.Expression[]}\n */\n gobbleArguments(termination) {\n const args = [];\n let closed = false;\n let separator_count = 0;\n while (this.index < this.expr.length) {\n this.gobbleSpaces();\n let ch_i = this.code;\n if (ch_i === termination) {\n // done parsing\n closed = true;\n this.index++;\n if (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length) {\n this.throwError('Unexpected token ' + String.fromCharCode(termination));\n }\n break;\n } else if (ch_i === Jsep.COMMA_CODE) {\n // between expressions\n this.index++;\n separator_count++;\n if (separator_count !== args.length) {\n // missing argument\n if (termination === Jsep.CPAREN_CODE) {\n this.throwError('Unexpected token ,');\n } else if (termination === Jsep.CBRACK_CODE) {\n for (let arg = args.length; arg < separator_count; arg++) {\n args.push(null);\n }\n }\n }\n } else if (args.length !== separator_count && separator_count !== 0) {\n // NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n this.throwError('Expected comma');\n } else {\n const node = this.gobbleExpression();\n if (!node || node.type === Jsep.COMPOUND) {\n this.throwError('Expected comma');\n }\n args.push(node);\n }\n }\n if (!closed) {\n this.throwError('Expected ' + String.fromCharCode(termination));\n }\n return args;\n }\n\n /**\n * Responsible for parsing a group of things within parentheses `()`\n * that have no identifier in front (so not a function call)\n * This function assumes that it needs to gobble the opening parenthesis\n * and then tries to gobble everything within that parenthesis, assuming\n * that the next thing it should see is the close parenthesis. If not,\n * then the expression probably doesn't have a `)`\n * @returns {boolean|jsep.Expression}\n */\n gobbleGroup() {\n this.index++;\n let nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n if (this.code === Jsep.CPAREN_CODE) {\n this.index++;\n if (nodes.length === 1) {\n return nodes[0];\n } else if (!nodes.length) {\n return false;\n } else {\n return {\n type: Jsep.SEQUENCE_EXP,\n expressions: nodes\n };\n }\n } else {\n this.throwError('Unclosed (');\n }\n }\n\n /**\n * Responsible for parsing Array literals `[1, 2, 3]`\n * This function assumes that it needs to gobble the opening bracket\n * and then tries to gobble the expressions as arguments.\n * @returns {jsep.ArrayExpression}\n */\n gobbleArray() {\n this.index++;\n return {\n type: Jsep.ARRAY_EXP,\n elements: this.gobbleArguments(Jsep.CBRACK_CODE)\n };\n }\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n hooks,\n plugins: new Plugins(Jsep),\n // Node Types\n // ----------\n // This is the full set of types that any JSEP node can be.\n // Store them here to save space when minified\n COMPOUND: 'Compound',\n SEQUENCE_EXP: 'SequenceExpression',\n IDENTIFIER: 'Identifier',\n MEMBER_EXP: 'MemberExpression',\n LITERAL: 'Literal',\n THIS_EXP: 'ThisExpression',\n CALL_EXP: 'CallExpression',\n UNARY_EXP: 'UnaryExpression',\n BINARY_EXP: 'BinaryExpression',\n ARRAY_EXP: 'ArrayExpression',\n TAB_CODE: 9,\n LF_CODE: 10,\n CR_CODE: 13,\n SPACE_CODE: 32,\n PERIOD_CODE: 46,\n // '.'\n COMMA_CODE: 44,\n // ','\n SQUOTE_CODE: 39,\n // single quote\n DQUOTE_CODE: 34,\n // double quotes\n OPAREN_CODE: 40,\n // (\n CPAREN_CODE: 41,\n // )\n OBRACK_CODE: 91,\n // [\n CBRACK_CODE: 93,\n // ]\n QUMARK_CODE: 63,\n // ?\n SEMCOL_CODE: 59,\n // ;\n COLON_CODE: 58,\n // :\n\n // Operations\n // ----------\n // Use a quickly-accessible map to store all of the unary operators\n // Values are set to `1` (it really doesn't matter)\n unary_ops: {\n '-': 1,\n '!': 1,\n '~': 1,\n '+': 1\n },\n // Also use a map for the binary operations but set their values to their\n // binary precedence for quick reference (higher number = higher precedence)\n // see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n binary_ops: {\n '||': 1,\n '??': 1,\n '&&': 2,\n '|': 3,\n '^': 4,\n '&': 5,\n '==': 6,\n '!=': 6,\n '===': 6,\n '!==': 6,\n '<': 7,\n '>': 7,\n '<=': 7,\n '>=': 7,\n '<<': 8,\n '>>': 8,\n '>>>': 8,\n '+': 9,\n '-': 9,\n '*': 10,\n '/': 10,\n '%': 10,\n '**': 11\n },\n // sets specific binary_ops as right-associative\n right_associative: new Set(['**']),\n // Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n additional_identifier_chars: new Set(['$', '_']),\n // Literals\n // ----------\n // Store the values to return for the various literals we may encounter\n literals: {\n 'true': true,\n 'false': false,\n 'null': null\n },\n // Except for `this`, which is special. This could be changed to something like `'self'` as well\n this_str: 'this'\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => new Jsep(expr).parse();\nconst stdClassProps = Object.getOwnPropertyNames(class Test {});\nObject.getOwnPropertyNames(Jsep).filter(prop => !stdClassProps.includes(prop) && jsep[prop] === undefined).forEach(m => {\n jsep[m] = Jsep[m];\n});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\nvar ternary = {\n name: 'ternary',\n init(jsep) {\n // Ternary expression: test ? consequent : alternate\n jsep.hooks.add('after-expression', function gobbleTernary(env) {\n if (env.node && this.code === jsep.QUMARK_CODE) {\n this.index++;\n const test = env.node;\n const consequent = this.gobbleExpression();\n if (!consequent) {\n this.throwError('Expected expression');\n }\n this.gobbleSpaces();\n if (this.code === jsep.COLON_CODE) {\n this.index++;\n const alternate = this.gobbleExpression();\n if (!alternate) {\n this.throwError('Expected expression');\n }\n env.node = {\n type: CONDITIONAL_EXP,\n test,\n consequent,\n alternate\n };\n\n // check for operators of higher priority than ternary (i.e. assignment)\n // jsep sets || at 1, and assignment at 0.9, and conditional should be between them\n if (test.operator && jsep.binary_ops[test.operator] <= 0.9) {\n let newTest = test;\n while (newTest.right.operator && jsep.binary_ops[newTest.right.operator] <= 0.9) {\n newTest = newTest.right;\n }\n env.node.test = newTest.right;\n newTest.right = env.node;\n env.node = test;\n }\n } else {\n this.throwError('Expected :');\n }\n }\n });\n }\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nconst FSLASH_CODE = 47; // '/'\nconst BSLASH_CODE = 92; // '\\\\'\n\nvar index = {\n name: 'regex',\n init(jsep) {\n // Regex literal: /abc123/ig\n jsep.hooks.add('gobble-token', function gobbleRegexLiteral(env) {\n if (this.code === FSLASH_CODE) {\n const patternIndex = ++this.index;\n let inCharSet = false;\n while (this.index < this.expr.length) {\n if (this.code === FSLASH_CODE && !inCharSet) {\n const pattern = this.expr.slice(patternIndex, this.index);\n let flags = '';\n while (++this.index < this.expr.length) {\n const code = this.code;\n if (code >= 97 && code <= 122 // a...z\n || code >= 65 && code <= 90 // A...Z\n || code >= 48 && code <= 57) {\n // 0-9\n flags += this.char;\n } else {\n break;\n }\n }\n let value;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n this.throwError(e.message);\n }\n env.node = {\n type: jsep.LITERAL,\n value,\n raw: this.expr.slice(patternIndex - 1, this.index)\n };\n\n // allow . [] and () after regex: /regex/.test(a)\n env.node = this.gobbleTokenProperty(env.node);\n return env.node;\n }\n if (this.code === jsep.OBRACK_CODE) {\n inCharSet = true;\n } else if (inCharSet && this.code === jsep.CBRACK_CODE) {\n inCharSet = false;\n }\n this.index += this.code === BSLASH_CODE ? 2 : 1;\n }\n this.throwError('Unclosed Regex');\n }\n });\n }\n};\n\nconst PLUS_CODE = 43; // +\nconst MINUS_CODE = 45; // -\n\nconst plugin = {\n name: 'assignment',\n assignmentOperators: new Set(['=', '*=', '**=', '/=', '%=', '+=', '-=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '||=', '&&=', '??=']),\n updateOperators: [PLUS_CODE, MINUS_CODE],\n assignmentPrecedence: 0.9,\n init(jsep) {\n const updateNodeTypes = [jsep.IDENTIFIER, jsep.MEMBER_EXP];\n plugin.assignmentOperators.forEach(op => jsep.addBinaryOp(op, plugin.assignmentPrecedence, true));\n jsep.hooks.add('gobble-token', function gobbleUpdatePrefix(env) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: this.gobbleTokenProperty(this.gobbleIdentifier()),\n prefix: true\n };\n if (!env.node.argument || !updateNodeTypes.includes(env.node.argument.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n }\n });\n jsep.hooks.add('after-token', function gobbleUpdatePostfix(env) {\n if (env.node) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n if (!updateNodeTypes.includes(env.node.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: env.node,\n prefix: false\n };\n }\n }\n });\n jsep.hooks.add('after-expression', function gobbleAssignment(env) {\n if (env.node) {\n // Note: Binaries can be chained in a single expression to respect\n // operator precedence (i.e. a = b = 1 + 2 + 3)\n // Update all binary assignment nodes in the tree\n updateBinariesToAssignments(env.node);\n }\n });\n function updateBinariesToAssignments(node) {\n if (plugin.assignmentOperators.has(node.operator)) {\n node.type = 'AssignmentExpression';\n updateBinariesToAssignments(node.left);\n updateBinariesToAssignments(node.right);\n } else if (!node.operator) {\n Object.values(node).forEach(val => {\n if (val && typeof val === 'object') {\n updateBinariesToAssignments(val);\n }\n });\n }\n }\n }\n};\n\n/* eslint-disable no-bitwise -- Convenient */\n\n// register plugins\njsep.plugins.register(index, plugin);\njsep.addUnaryOp('typeof');\njsep.addLiteral('null', null);\njsep.addLiteral('undefined', undefined);\nconst BLOCKED_PROTO_PROPERTIES = new Set(['constructor', '__proto__', '__defineGetter__', '__defineSetter__']);\nconst SafeEval = {\n /**\n * @param {jsep.Expression} ast\n * @param {Record} subs\n */\n evalAst(ast, subs) {\n switch (ast.type) {\n case 'BinaryExpression':\n case 'LogicalExpression':\n return SafeEval.evalBinaryExpression(ast, subs);\n case 'Compound':\n return SafeEval.evalCompound(ast, subs);\n case 'ConditionalExpression':\n return SafeEval.evalConditionalExpression(ast, subs);\n case 'Identifier':\n return SafeEval.evalIdentifier(ast, subs);\n case 'Literal':\n return SafeEval.evalLiteral(ast, subs);\n case 'MemberExpression':\n return SafeEval.evalMemberExpression(ast, subs);\n case 'UnaryExpression':\n return SafeEval.evalUnaryExpression(ast, subs);\n case 'ArrayExpression':\n return SafeEval.evalArrayExpression(ast, subs);\n case 'CallExpression':\n return SafeEval.evalCallExpression(ast, subs);\n case 'AssignmentExpression':\n return SafeEval.evalAssignmentExpression(ast, subs);\n default:\n throw SyntaxError('Unexpected expression', ast);\n }\n },\n evalBinaryExpression(ast, subs) {\n const result = {\n '||': (a, b) => a || b(),\n '&&': (a, b) => a && b(),\n '|': (a, b) => a | b(),\n '^': (a, b) => a ^ b(),\n '&': (a, b) => a & b(),\n // eslint-disable-next-line eqeqeq -- API\n '==': (a, b) => a == b(),\n // eslint-disable-next-line eqeqeq -- API\n '!=': (a, b) => a != b(),\n '===': (a, b) => a === b(),\n '!==': (a, b) => a !== b(),\n '<': (a, b) => a < b(),\n '>': (a, b) => a > b(),\n '<=': (a, b) => a <= b(),\n '>=': (a, b) => a >= b(),\n '<<': (a, b) => a << b(),\n '>>': (a, b) => a >> b(),\n '>>>': (a, b) => a >>> b(),\n '+': (a, b) => a + b(),\n '-': (a, b) => a - b(),\n '*': (a, b) => a * b(),\n '/': (a, b) => a / b(),\n '%': (a, b) => a % b()\n }[ast.operator](SafeEval.evalAst(ast.left, subs), () => SafeEval.evalAst(ast.right, subs));\n return result;\n },\n evalCompound(ast, subs) {\n let last;\n for (let i = 0; i < ast.body.length; i++) {\n if (ast.body[i].type === 'Identifier' && ['var', 'let', 'const'].includes(ast.body[i].name) && ast.body[i + 1] && ast.body[i + 1].type === 'AssignmentExpression') {\n // var x=2; is detected as\n // [{Identifier var}, {AssignmentExpression x=2}]\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n i += 1;\n }\n const expr = ast.body[i];\n last = SafeEval.evalAst(expr, subs);\n }\n return last;\n },\n evalConditionalExpression(ast, subs) {\n if (SafeEval.evalAst(ast.test, subs)) {\n return SafeEval.evalAst(ast.consequent, subs);\n }\n return SafeEval.evalAst(ast.alternate, subs);\n },\n evalIdentifier(ast, subs) {\n if (Object.hasOwn(subs, ast.name)) {\n return subs[ast.name];\n }\n throw ReferenceError(`${ast.name} is not defined`);\n },\n evalLiteral(ast) {\n return ast.value;\n },\n evalMemberExpression(ast, subs) {\n const prop = ast.computed ? SafeEval.evalAst(ast.property) // `object[property]`\n : ast.property.name; // `object.property` property is Identifier\n const obj = SafeEval.evalAst(ast.object, subs);\n if (obj === undefined || obj === null) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n if (!Object.hasOwn(obj, prop) && BLOCKED_PROTO_PROPERTIES.has(prop)) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n const result = obj[prop];\n if (typeof result === 'function') {\n return result.bind(obj); // arrow functions aren't affected by bind.\n }\n return result;\n },\n evalUnaryExpression(ast, subs) {\n const result = {\n '-': a => -SafeEval.evalAst(a, subs),\n '!': a => !SafeEval.evalAst(a, subs),\n '~': a => ~SafeEval.evalAst(a, subs),\n // eslint-disable-next-line no-implicit-coercion -- API\n '+': a => +SafeEval.evalAst(a, subs),\n typeof: a => typeof SafeEval.evalAst(a, subs)\n }[ast.operator](ast.argument);\n return result;\n },\n evalArrayExpression(ast, subs) {\n return ast.elements.map(el => SafeEval.evalAst(el, subs));\n },\n evalCallExpression(ast, subs) {\n const args = ast.arguments.map(arg => SafeEval.evalAst(arg, subs));\n const func = SafeEval.evalAst(ast.callee, subs);\n // if (func === Function) {\n // throw new Error('Function constructor is disabled');\n // }\n return func(...args);\n },\n evalAssignmentExpression(ast, subs) {\n if (ast.left.type !== 'Identifier') {\n throw SyntaxError('Invalid left-hand side in assignment');\n }\n const id = ast.left.name;\n const value = SafeEval.evalAst(ast.right, subs);\n subs[id] = value;\n return subs[id];\n }\n};\n\n/**\n * A replacement for NodeJS' VM.Script which is also {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | Content Security Policy} friendly.\n */\nclass SafeScript {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n this.ast = jsep(this.code);\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n // `Object.create(null)` creates a prototypeless object\n const keyMap = Object.assign(Object.create(null), context);\n return SafeEval.evalAst(this.ast, keyMap);\n }\n}\n\n/* eslint-disable camelcase -- Convenient for escaping */\n\n\n/**\n * @typedef {null|boolean|number|string|object|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\nclass NewError extends Error {\n /**\n * @param {AnyResult} value The evaluated scalar value\n */\n constructor(value) {\n super('JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n this.avoidNew = true;\n this.value = value;\n this.name = 'NewError';\n }\n}\n\n/**\n* @typedef {object} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {object|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|object} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {object|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n* @callback EvalCallback\n* @param {string} code\n* @param {ContextItem} context\n* @returns {EvaluatedResult}\n*/\n\n/**\n * @typedef {typeof SafeScript} EvalClass\n */\n\n/**\n * @typedef {object} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\n * \"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {object} [sandbox={}]\n * @property {EvalCallback|EvalClass|'safe'|'native'|\n * boolean} [eval = 'safe']\n * @property {object|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax -- Allow for pseudo-class\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n return e.value;\n }\n }\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n const optObj = opts && typeof opts === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = Object.hasOwn(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.eval = opts.eval === undefined ? 'safe' : opts.eval;\n this.ignoreEvalErrors = typeof opts.ignoreEvalErrors === 'undefined' ? false : opts.ignoreEvalErrors;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n if (opts.autostart !== false) {\n const args = {\n path: optObj ? opts.path : expr\n };\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n const ret = this.evaluate(args);\n if (!ret || typeof ret !== 'object') {\n throw new NewError(ret);\n }\n return ret;\n }\n}\n\n// PUBLIC METHODS\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n let currParent = this.parent,\n currParentProperty = this.parentProperty;\n let {\n flatten,\n wrap\n } = this;\n this.currResultType = this.resultType;\n this.currEval = this.eval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n if (expr && typeof expr === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n if (!Object.hasOwn(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n ({\n json\n } = expr);\n flatten = Object.hasOwn(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = Object.hasOwn(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = Object.hasOwn(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = Object.hasOwn(expr, 'wrap') ? expr.wrap : wrap;\n this.currEval = Object.hasOwn(expr, 'eval') ? expr.eval : this.currEval;\n callback = Object.hasOwn(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = Object.hasOwn(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = Object.hasOwn(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = Object.hasOwn(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n const exprList = JSONPath.toPathArray(expr);\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n this._hasParentSelector = null;\n const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n return result.reduce((rslt, ea) => {\n const valOrPath = this._getPreferredOutput(ea);\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n return rslt;\n }, []);\n};\n\n// PRIVATE METHODS\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n const resultType = this.currResultType;\n switch (resultType) {\n case 'all':\n {\n const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n default:\n throw new TypeError('Unknown result type');\n }\n};\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n const preferredOutput = this._getPreferredOutput(fullRetObj);\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path);\n // eslint-disable-next-line n/callback-return -- No need to return\n callback(preferredOutput, type, fullRetObj);\n }\n};\n\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {object|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n // No expr to follow? return path and value as the result of\n // this trace branch\n let retObj;\n if (!expr.length) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName,\n hasArrExpr\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n const loc = expr[0],\n x = expr.slice(1);\n\n // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n const ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(t => {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n if ((typeof loc !== 'string' || literalPriority) && val && Object.hasOwn(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr));\n // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(val, m => {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n this._walk(val, m => {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (typeof val[m] === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));\n }\n });\n // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent,\n parentProperty: null\n };\n this._handleCallback(retObj, callback, 'property');\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(-?\\d*):(-?\\d*):?(\\d*)$/u.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currEval === false) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n const safeLoc = loc.replace(/^\\?\\((.*?)\\)$/u, '$1');\n // check for a nested filter expression\n const nested = /@.?([^?]*)[['](\\??\\(.*?\\))(?!.\\)\\])[\\]']/gu.exec(safeLoc);\n if (nested) {\n // find if there are matches in the nested expression\n // add them to the result set if there is at least one match\n this._walk(val, m => {\n const npath = [nested[2]];\n const nvalue = nested[1] ? val[m][nested[1]] : val[m];\n const filterResults = this._trace(npath, nvalue, path, parent, parentPropName, callback, true);\n if (filterResults.length > 0) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n } else {\n this._walk(val, m => {\n if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n }\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currEval === false) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n }\n // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n addRet(this._trace(unshift(this._eval(loc, val, path.at(-1), path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n let addType = false;\n const valueType = loc.slice(1, -2);\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(typeof val)) {\n addType = true;\n }\n break;\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n if (typeof val === valueType) {\n addType = true;\n }\n break;\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n break;\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'object':\n if (val && typeof val === valueType) {\n addType = true;\n }\n break;\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n break;\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n case 'null':\n if (val === null) {\n addType = true;\n }\n break;\n /* c8 ignore next 2 */\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n if (addType) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n // `-escaped property\n } else if (loc[0] === '`' && val && Object.hasOwn(val, loc.slice(1))) {\n const locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n const parts = loc.split(',');\n for (const part of parts) {\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n }\n // simple case--directly follow property\n } else if (!literalPriority && val && Object.hasOwn(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n }\n\n // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n if (this._hasParentSelector) {\n for (let t = 0; t < ret.length; t++) {\n const rett = ret[t];\n if (rett && rett.isParentSelector) {\n const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n const tl = tmp.length;\n for (let tt = 1; tt < tl; tt++) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n return ret;\n};\nJSONPath.prototype._walk = function (val, f) {\n if (Array.isArray(val)) {\n const n = val.length;\n for (let i = 0; i < n; i++) {\n f(i);\n }\n } else if (val && typeof val === 'object') {\n Object.keys(val).forEach(m => {\n f(m);\n });\n }\n};\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n const len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n let start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n const ret = [];\n for (let i = start; i < end; i += step) {\n const tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true);\n // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n tmp.forEach(t => {\n ret.push(t);\n });\n }\n return ret;\n};\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n this.currSandbox._$_parentProperty = parentPropName;\n this.currSandbox._$_parent = parent;\n this.currSandbox._$_property = _vname;\n this.currSandbox._$_root = this.json;\n this.currSandbox._$_v = _v;\n const containsPath = code.includes('@path');\n if (containsPath) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n }\n const scriptCacheKey = this.currEval + 'Script:' + code;\n if (!JSONPath.cache[scriptCacheKey]) {\n let script = code.replaceAll('@parentProperty', '_$_parentProperty').replaceAll('@parent', '_$_parent').replaceAll('@property', '_$_property').replaceAll('@root', '_$_root').replaceAll(/@([.\\s)[])/gu, '_$_v$1');\n if (containsPath) {\n script = script.replaceAll('@path', '_$_path');\n }\n if (this.currEval === 'safe' || this.currEval === true || this.currEval === undefined) {\n JSONPath.cache[scriptCacheKey] = new this.safeVm.Script(script);\n } else if (this.currEval === 'native') {\n JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n } else if (typeof this.currEval === 'function' && this.currEval.prototype && Object.hasOwn(this.currEval.prototype, 'runInNewContext')) {\n const CurrEval = this.currEval;\n JSONPath.cache[scriptCacheKey] = new CurrEval(script);\n } else if (typeof this.currEval === 'function') {\n JSONPath.cache[scriptCacheKey] = {\n runInNewContext: context => this.currEval(script, context)\n };\n } else {\n throw new TypeError(`Unknown \"eval\" property \"${this.currEval}\"`);\n }\n }\n try {\n return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n } catch (e) {\n if (this.ignoreEvalErrors) {\n return false;\n }\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n};\n\n// PUBLIC CLASS PROPERTIES AND METHODS\n\n// Could store the cache object itself\nJSONPath.cache = {};\n\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\nJSONPath.toPathString = function (pathArr) {\n const x = pathArr,\n n = x.length;\n let p = '$';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n return p;\n};\n\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\nJSONPath.toPointer = function (pointer) {\n const x = pointer,\n n = x.length;\n let p = '';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += '/' + x[i].toString().replaceAll('~', '~0').replaceAll('/', '~1');\n }\n }\n return p;\n};\n\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\nJSONPath.toPathArray = function (expr) {\n const {\n cache\n } = JSONPath;\n if (cache[expr]) {\n return cache[expr].concat();\n }\n const subx = [];\n const normalized = expr\n // Properties\n .replaceAll(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/gu, ';$&;')\n // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replaceAll(/[['](\\??\\(.*?\\))[\\]'](?!.\\])/gu, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n })\n // Escape periods and tildes within properties\n .replaceAll(/\\[['\"]([^'\\]]*)['\"]\\]/gu, function ($0, prop) {\n return \"['\" + prop.replaceAll('.', '%@%').replaceAll('~', '%%@@%%') + \"']\";\n })\n // Properties operator\n .replaceAll('~', ';~;')\n // Split by property boundaries\n .replaceAll(/['\"]?\\.['\"]?(?![^[]*\\])|\\[['\"]?/gu, ';')\n // Reinsert periods within properties\n .replaceAll('%@%', '.')\n // Reinsert tildes within properties\n .replaceAll('%%@@%%', '~')\n // Parent\n .replaceAll(/(?:;)?(\\^+)(?:;)?/gu, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n })\n // Descendents\n .replaceAll(/;;;|;;/gu, ';..;')\n // Remove trailing\n .replaceAll(/;$|'?\\]|'$/gu, '');\n const exprList = normalized.split(';').map(function (exp) {\n const match = exp.match(/#(\\d+)/u);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\nJSONPath.prototype.safeVm = {\n Script: SafeScript\n};\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n * @callback ConditionCallback\n * @param {ContextItem} item\n * @returns {boolean}\n */\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\nconst moveToAnotherArray = function (source, target, conditionCb) {\n const il = source.length;\n for (let i = 0; i < il; i++) {\n const item = source[i];\n if (conditionCb(item)) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n\n/**\n * In-browser replacement for NodeJS' VM.Script.\n */\nclass Script {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n let expr = this.code;\n const keys = Object.keys(context);\n const funcs = [];\n moveToAnotherArray(keys, funcs, key => {\n return typeof context[key] === 'function';\n });\n const values = keys.map(vr => {\n return context[vr];\n });\n const funcString = funcs.reduce((s, func) => {\n let fString = context[func].toString();\n if (!/function/u.test(fString)) {\n fString = 'function ' + fString;\n }\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr;\n\n // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n if (!/(['\"])use strict\\1/u.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n }\n\n // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n expr = expr.replace(/;\\s*$/u, '');\n\n // Insert `return`\n const lastStatementEnd = expr.lastIndexOf(';');\n const code = lastStatementEnd !== -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr;\n\n // eslint-disable-next-line no-new-func -- User's choice\n return new Function(...keys, code)(...values);\n }\n}\nJSONPath.prototype.vm = {\n Script\n};\n\nexport { JSONPath };\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","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\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 * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
    \").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
    ') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
    ',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
    ': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
    \" + t + \"
    \");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
    \");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
    \" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tCurrencyPipe,\r\n\tDecimalPipe,\r\n\tPercentPipe\r\n} from '@angular/common';\r\nimport {\r\n\tInject,\r\n\tInjectable,\r\n\tLOCALE_ID\r\n} from '@angular/core';\r\nimport {\r\n\tIEntitySearch\r\n} from '@entity/interfaces/entity-search.interface';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tsaveAs\r\n} from 'file-saver';\r\nimport {\r\n\tJSONPath\r\n} from 'jsonpath-plus';\r\nimport {\r\n\tcloneDeep,\r\n\tset\r\n} from 'lodash-es';\r\nimport * as XLSX from 'xlsx';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton class representing a data export service.\r\n *\r\n * @export\r\n * @class DataExportService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class DataExportService\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the DataExportService class.\r\n\t *\r\n\t * @param {string} locale\r\n\t * The locale as set by the application.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(LOCALE_ID) private readonly locale: string)\r\n\t{\r\n\t\tthis.currencyPipe =\r\n\t\t\tnew CurrencyPipe(this.locale);\r\n\t\tthis.decimalPipe =\r\n\t\t\tnew DecimalPipe(this.locale);\r\n\t\tthis.percentPipe =\r\n\t\t\tnew PercentPipe(this.locale);\r\n\t}\r\n\r\n\t/**\r\n\t * The currency pipe.\r\n\t *\r\n\t * @type {CurrencyPipe}\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate readonly currencyPipe: CurrencyPipe;\r\n\r\n\t/**\r\n\t * The decimal pipe.\r\n\t *\r\n\t * @type {DecimalPipe}\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate readonly decimalPipe: DecimalPipe;\r\n\r\n\t/**\r\n\t * The percent pipe.\r\n\t *\r\n\t * @type {PercentPipe}\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate readonly percentPipe: PercentPipe;\r\n\r\n\t/**\r\n\t * Exports data as a comma separated values .csv file.\r\n\t *\r\n\t * @param {string} fileName\r\n\t * The file name. IE: `${fileName}.csv`.\r\n\t * @param {any[]} data\r\n\t * The data to export.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tpublic exportDataAsCommaSeparatedValues(\r\n\t\tfileName: string,\r\n\t\tdata: any[]): void\r\n\t{\r\n\t\tconst commaSeparatedValues: string =\r\n\t\t\tthis.transformToCommaSeparatedValues(\r\n\t\t\t\tdata);\r\n\r\n\t\tconst byteOrderMark = '\\uFEFF';\r\n\t\tconst blob: Blob =\r\n\t\t \tnew Blob(\r\n\t\t \t\t[\r\n\t\t \t\t\tbyteOrderMark,\r\n\t\t \t\t\tcommaSeparatedValues\r\n\t\t \t\t],\r\n\t\t \t\t{\r\n\t\t \t\t\ttype: 'text/csv;charset=utf-8'\r\n\t\t \t\t});\r\n\r\n\t\tsaveAs(\r\n\t\t\tblob,\r\n\t\t\t`${fileName}.csv`);\r\n\t}\r\n\r\n\t/**\r\n\t * Exports data as an Excel Workboook .xslx file.\r\n\t *\r\n\t * @param {string} fileName\r\n\t * The file name. IE: `${fileName}.xslx`.\r\n\t * @param {any[]} data\r\n\t * The data to export.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tpublic exportDataAsExcel(\r\n\t\tfileName: string,\r\n\t\tdata: any[]): void\r\n\t{\r\n\t\tconst worksheet: XLSX.WorkSheet =\r\n\t\t\tXLSX.utils.json_to_sheet(\r\n\t\t\t\tdata);\r\n\t\tconst workbook: XLSX.WorkBook =\r\n\t\t\tXLSX.utils.book_new();\r\n\r\n\t\tXLSX.utils.book_append_sheet(\r\n\t\t\tworkbook,\r\n\t\t\tworksheet,\r\n\t\t\t'Exported Data');\r\n\r\n\t\tconst excelBuffer: any =\r\n\t\t\tXLSX.write(\r\n\t\t\t\tworkbook,\r\n\t\t\t\t{\r\n\t\t\t\t\tbookType: 'xlsx',\r\n\t\t\t\t\ttype: 'array'\r\n\t\t\t\t});\r\n\t\tconst blob: Blob =\r\n\t\t\tnew Blob(\r\n\t\t\t\t[\r\n\t\t\t\t\texcelBuffer\r\n\t\t\t\t],\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: 'application/octet-stream'\r\n\t\t\t\t});\r\n\r\n\t\tsaveAs(\r\n\t\t\tblob,\r\n\t\t\t`${fileName}.xlsx`);\r\n\t}\r\n\r\n\t/**\r\n\t * Exports table data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} fileName\r\n\t * The file name. IE: `${fileName}.${exportType}`.\r\n\t * @param {string} exportType\r\n\t * The export type.\r\n\t * @param {any[]} data\r\n\t * The data to export.\r\n\t * @param {ICommonTableColumn[]} columns\r\n\t * The columns selected for exports.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The table page context.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tpublic async exportTableData(\r\n\t\tfileName: string,\r\n\t\texportType: string,\r\n\t\tdata: any[],\r\n\t\tcolumns: ICommonTableColumn[],\r\n\t\tpageContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tconst filteredData: any[] =\r\n\t\t\tthis.filterAndTransformTableData(\r\n\t\t\t\tdata,\r\n\t\t\t\tcolumns,\r\n\t\t\t\tpageContext);\r\n\r\n\t\tswitch (exportType)\r\n\t\t{\r\n\t\t\tcase AppConstants.exportTypes.excel:\r\n\t\t\t\tthis.exportDataAsExcel(\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\tfilteredData);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.exportTypes.commaSeparatedValues:\r\n\t\t\tdefault:\r\n\t\t\t\tthis.exportDataAsCommaSeparatedValues(\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\tfilteredData);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Exports all table data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} fileName The file name.\r\n\t * The file name. IE: `${fileName}.${exportType}`.\r\n\t * @param {string} exportType\r\n\t * The export type.\r\n\t * @param {\r\n\t * \t(objectSearch?: IObjectSearch | IEntitySearch) => Promise\r\n\t * } dataPromise\r\n\t * The data promise used to load all table data.\r\n\t * @param {(IObjectSearch | IEntitySearch)} searchObject\r\n\t * The search object.\r\n\t * @param {ICommonTableColumn[]} columns\r\n\t * The columns selected for exports.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The table page context.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tpublic async exportAllTableData(\r\n\t\tfileName: string,\r\n\t\texportType: string,\r\n\t\tdataPromise:\r\n\t\t\t(objectSearch?: IObjectSearch | IEntitySearch)\r\n\t\t\t\t=> Promise,\r\n\t\tsearchObject: IObjectSearch | IEntitySearch,\r\n\t\tcolumns: ICommonTableColumn[],\r\n\t\tpageContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tlet data: any[] =\r\n\t\t\tawait dataPromise(\r\n\t\t\t\tsearchObject);\r\n\r\n\t\tif (data.length < searchObject.limit)\r\n\t\t{\r\n\t\t\tawait this.exportTableData(\r\n\t\t\t\tfileName,\r\n\t\t\t\texportType,\r\n\t\t\t\tdata,\r\n\t\t\t\tcolumns,\r\n\t\t\t\tpageContext);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst searchObjectClone: IObjectSearch | IEntitySearch =\r\n\t\t\tcloneDeep(searchObject);\r\n\r\n\t\tlet offset: number =\r\n\t\t\tsearchObjectClone.limit;\r\n\t\tlet fullDataset: any[] = data;\r\n\t\tlet fullDatasetGathered: boolean = false;\r\n\r\n\t\twhile (fullDatasetGathered === false)\r\n\t\t{\r\n\t\t\tsearchObjectClone.offset = offset;\r\n\r\n\t\t\tdata =\r\n\t\t\t\tawait dataPromise(\r\n\t\t\t\t\tsearchObjectClone);\r\n\r\n\t\t\tfullDataset =\r\n\t\t\t\tfullDataset.concat(\r\n\t\t\t\t\tdata);\r\n\r\n\t\t\tif (data.length < searchObjectClone.limit)\r\n\t\t\t{\r\n\t\t\t\tfullDatasetGathered = true;\r\n\t\t\t}\r\n\r\n\t\t\toffset += searchObjectClone.limit;\r\n\t\t}\r\n\r\n\t\tawait this.exportTableData(\r\n\t\t\tfileName,\r\n\t\t\texportType,\r\n\t\t\tfullDataset,\r\n\t\t\tcolumns,\r\n\t\t\tpageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Filters and transforms table data.\r\n\t *\r\n\t * @param {any[]} data\r\n\t * The data to filter and transform.\r\n\t * @param {ICommonTableColumn[]} columns\r\n\t * The column definitions to filter to.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The table page context.\r\n\t * @returns {any[]}\r\n\t * The filtered and transformed data.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate filterAndTransformTableData(\r\n\t\tdata: any[],\r\n\t\tcolumns: ICommonTableColumn[],\r\n\t\tpageContext: IDynamicComponentContext): any[]\r\n\t{\r\n\t\tcolumns\r\n\t\t\t.filter(\r\n\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\tcolumn.dataFormatType !== AppConstants.dataFormatTypes.icon\r\n\t\t\t\t\t\t&& column.displayOrder !== AppConstants\r\n\t\t\t\t\t\t\t.reservedTableDisplayOrders.actionColumn)\r\n\t\t\t.sort(\r\n\t\t\t\t(columnOne: ICommonTableColumn,\r\n\t\t\t\t\tcolumnTwo: ICommonTableColumn) =>\r\n\t\t\t\t\tcolumnOne.displayOrder - columnTwo.displayOrder);\r\n\r\n\t\treturn data.map(\r\n\t\t\t(item: any) =>\r\n\t\t\t\tcolumns.reduce(\r\n\t\t\t\t\t(accumulator: any,\r\n\t\t\t\t\t\ttableColumn: ICommonTableColumn) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tset(\r\n\t\t\t\t\t\t\taccumulator,\r\n\t\t\t\t\t\t\ttableColumn.columnHeader,\r\n\t\t\t\t\t\t\tthis.formatColumn(\r\n\t\t\t\t\t\t\t\titem,\r\n\t\t\t\t\t\t\t\ttableColumn,\r\n\t\t\t\t\t\t\t\tpageContext));\r\n\r\n\t\t\t\t\t\treturn accumulator;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{}));\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a column value.\r\n\t *\r\n\t * @param {any} item\r\n\t * The item to format.\r\n\t * @param {ICommonTableColumn} tableColumn\r\n\t * The table column to format.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The table page context.\r\n\t * @returns {any}\r\n\t * The formatted column value.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate formatColumn(\r\n\t\titem: any,\r\n\t\ttableColumn: ICommonTableColumn,\r\n\t\tpageContext: IDynamicComponentContext): any\r\n\t{\r\n\t\tconst columnValue: any =\r\n\t\t\tJSONPath(\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: tableColumn.dataKey,\r\n\t\t\t\t\tjson: item\r\n\t\t\t\t})[0];\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(tableColumn.dataFunction))\r\n\t\t{\r\n\t\t\treturn StringHelper.transformToFunction(\r\n\t\t\t\ttableColumn.dataFunction,\r\n\t\t\t\tpageContext)(columnValue);\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(columnValue))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\treturn this.getFormattedColumn(\r\n\t\t\tcolumnValue,\r\n\t\t\ttableColumn);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a formatted column.\r\n\t *\r\n\t * @param {any} columnValue\r\n\t * The column value to format.\r\n\t * @param {ICommonTableColumn} tableColumn\r\n\t * The table column to format.\r\n\t * @returns {any}\r\n\t * The formatted column output.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate getFormattedColumn(\r\n\t\tcolumnValue: any,\r\n\t\ttableColumn: ICommonTableColumn): any\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(tableColumn.dataFormatType))\r\n\t\t{\r\n\t\t\treturn columnValue;\r\n\t\t}\r\n\r\n\t\tswitch(tableColumn.dataFormatType)\r\n\t\t{\r\n\t\t\tcase AppConstants.dataFormatTypes.date:\r\n\t\t\tcase AppConstants.dataFormatTypes.shortDate:\r\n\t\t\t\treturn StringHelper.format(\r\n\t\t\t\t\tcolumnValue,\r\n\t\t\t\t\tAppConstants.formatTypes.shortDate);\r\n\r\n\t\t\tcase AppConstants.dataFormatTypes.dateTime:\r\n\t\t\tcase AppConstants.dataFormatTypes.longDate:\r\n\t\t\t\treturn StringHelper.format(\r\n\t\t\t\t\tcolumnValue,\r\n\t\t\t\t\tAppConstants.formatTypes.longDate);\r\n\r\n\t\t\tcase AppConstants.dataFormatTypes.currency:\r\n\t\t\t\treturn this.currencyPipe\r\n\t\t\t\t\t.transform(\r\n\t\t\t\t\t\tcolumnValue,\r\n\t\t\t\t\t\tAppConstants.localeDefinitions.unitedStatesDollars,\r\n\t\t\t\t\t\tAppConstants.localeDefinitions.symbol,\r\n\t\t\t\t\t\ttableColumn.formattedRoundingPrecision);\r\n\r\n\t\t\tcase AppConstants.dataFormatTypes.decimal:\r\n\t\t\t\treturn this.decimalPipe\r\n\t\t\t\t\t.transform(\r\n\t\t\t\t\t\tcolumnValue,\r\n\t\t\t\t\t\ttableColumn.formattedRoundingPrecision);\r\n\r\n\t\t\tcase AppConstants.dataFormatTypes.percent:\r\n\t\t\t\treturn this.percentPipe\r\n\t\t\t\t\t.transform(\r\n\t\t\t\t\t\tcolumnValue,\r\n\t\t\t\t\t\ttableColumn.formattedRoundingPrecision);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn columnValue;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Transforms data to a collection of comma separated values ready for\r\n\t * display in a .csv file.\r\n\t *\r\n\t * @param {any[]} data\r\n\t * The data to transform.\r\n\t * @returns {string}\r\n\t * The comma separated values array.\r\n\t * @memberof DataExportService\r\n\t */\r\n\tprivate transformToCommaSeparatedValues(\r\n\t\tdata: any[]): string\r\n\t{\r\n\t\tif (data.length === 0)\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst headers: string[] =\r\n\t\t\tObject.keys(data[0]);\r\n\r\n\t\tconst csvRows: string[] =\r\n\t\t\tdata.map(\r\n\t\t\t\t(row: any) =>\r\n\t\t\t\t\theaders.map(\r\n\t\t\t\t\t\t(header: string) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst cell: any =\r\n\t\t\t\t\t\t\t\trow[header];\r\n\t\t\t\t\t\t\tconst stringData: boolean =\r\n\t\t\t\t\t\t\t\ttypeof cell ===\r\n\t\t\t\t\t\t\t\t\tAppConstants.propertyTypes.string;\r\n\r\n\t\t\t\t\t\t\treturn stringData === true\r\n\t\t\t\t\t\t\t\t? `\"${cell.replace(/\"/g, '\"\"')}\"`\r\n\t\t\t\t\t\t\t\t: cell;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.join(\r\n\t\t\t\t\t\t\tAppConstants.characters.comma));\r\n\r\n\t\tconst csvString: string =\r\n\t\t\t[headers.join(\r\n\t\t\t\tAppConstants.characters.comma),\r\n\t\t\t...csvRows]\r\n\t\t\t\t.join(\r\n\t\t\t\t\t`${AppConstants.characters.carriageReturn}`\r\n\t\t\t\t\t\t+ `${AppConstants.characters.lineFeed}`);\r\n\r\n\t\treturn csvString;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t{{tableDefinitions.tableTitle}}\r\n\t\t
    \r\n\t\t
    0,\r\n\t\t\t}\">\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t 0\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t'active-icon-color': filterVisible === true,\r\n\t\t\t\t\t'disabled-link': initialLoadComplete === false\r\n\t\t\t\t}\">\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{{expandTitle}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\tA set of table headers displaying {{tableDefinitions.tableTitle}} data.\r\n\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{{column.columnHeader}}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tA table displaying {{tableDefinitions.tableTitle}} row data.\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{{column.columnHeader}}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey) | dateTimeFromIso | dateTimeToLocal | dateTimeToFormat:'D'}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey) | dateTimeFromIso | dateTimeToLocal | dateTimeToFormat:'D h:mm a'}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey) | currency : unitedStatesDollars: currencySymbol : column.formattedRoundingPrecision}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey) | number : column.formattedRoundingPrecision}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey) | percent : column.formattedRoundingPrecision}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey)}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{getTableColumnData(item, column.dataKey, column.dataFunction)}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tThis entity type is not searchable, please add summary data to the definition.\r\n\t\t\t\t
    \r\n\t\t\t\t
    0\">\r\n\t\t\t\t\tDisplaying {{tableData.length > 1 ? 'all' : ''}} {{tableData.length}} {{tableData.length > 1 ? 'results' : 'result'}}.\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tNo query results found.\r\n\t\t\t\t
    \r\n\t\t\t\t
    0\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tDisplaying top {{tableData.length}} {{tableData.length > 1 ? 'results' : 'result'}}.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tPlease scroll or click here for additional results.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tWe have found more than {{filterResultsSuggestionCount}} results.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tConsider filtering your search.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tLoading query results\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tCdkVirtualScrollViewport\r\n} from '@angular/cdk/scrolling';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tType,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIFormlyDefinitionsNew\r\n} from '@shared/interfaces/application-objects/formly-definitions.interface';\r\nimport {\r\n\tITableExpandDefinition\r\n} from '@shared/interfaces/application-objects/table-expand-definition.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDataExportService\r\n} from '@shared/services/data-export.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tJSONPath\r\n} from 'jsonpath-plus';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\nimport {\r\n\tLazyLoadEvent,\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tSubscription,\r\n\tdebounceTime,\r\n\tfrom\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component(\r\n\t{\r\n\t\tselector: 'app-common-table',\r\n\t\ttemplateUrl: './common-table.component.html',\r\n\t\tstyleUrl: './common-table.component.scss',\r\n\t\tanimations: [\r\n\t\t\tContentAnimation\r\n\t\t]\r\n\t})\r\n\r\n/**\r\n * A component representing an instance of the common table component.\r\n *\r\n * @export\r\n * @class CommonTableComponent\r\n * @implements {OnInit}\r\n * @implements {OnChanges}\r\n */\r\nexport class CommonTableComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common table component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used for table action authorization checks.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * Service utilized to catch any site layout change and\r\n\t * site layout information.\r\n\t * @param {DataExportService} dataExportService\r\n\t * The data export service to use for exporting table data.\r\n\t * @param {ActtivityService} activityService\r\n\t * The activity service to use for communicating events to the user.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this component.\r\n\t * @param {Location} resolver\r\n\t * The resolver object.\r\n\t * @param {Router} router\r\n\t * The router object.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic dataExportService: DataExportService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the formly field.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@Input() public field!: FormlyFieldConfig;\r\n\r\n\t/**\r\n\t * Gets or sets the field context.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t @Input() public fieldContext?: any = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions data required to\r\n\t * generate the table display within it's own functionality.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@Input() public tableDefinitions!: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the unique identifier of each row, this value defaults\r\n\t * to 'id'.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@Input() public rowIdentifier: string = 'id';\r\n\r\n\t/**\r\n\t * Gets or sets the selected rows ids.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Input() public selectedItems?: object[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a value signifying whether or not the keyword based messsage\r\n\t * should be displayed if zero keywords are found.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@Input() public displayKeywordMessage: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the finished loading event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Output() public fireFormlyChangeDetection: EventEmitter =\r\n\t\tnew EventEmitter;\r\n\r\n\t/**\r\n\t * Gets or sets the row selected event.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EntitySelectComponent\r\n\t */\r\n\t@Output() public itemSelected: EventEmitter = new EventEmitter;\r\n\r\n\t/**\r\n\t * Gets or sets the virtual scroll viewport.\r\n\t *\r\n\t * @type {CdkVirtualScrollViewport}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@ViewChild(CdkVirtualScrollViewport)\r\n\tpublic viewport!: CdkVirtualScrollViewport;\r\n\r\n\t/**\r\n\t * Gets or sets the overall page container.\r\n\t *\r\n\t * @type {HTMLDivElement}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@ViewChild('TableContainer')\r\n\tpublic tableContainer!: HTMLDivElement;\r\n\r\n\t/**\r\n\t * Gets or sets the table title element.\r\n\t *\r\n\t * @type {HTMLDivElement}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@ViewChild('TableTitle')\r\n\tpublic tableTitle!: HTMLDivElement;\r\n\r\n\t/**\r\n\t * Gets or sets the table summary element.\r\n\t *\r\n\t * @type {HTMLDivElement}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@ViewChild('TableSummary')\r\n\tpublic tableSummary!: HTMLDivElement;\r\n\r\n\t/**\r\n\t * Gets or sets the layout changed subject which is called\r\n\t * when the site layout sizes are changed in this component.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic layoutChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the common table based page context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic pageContext!:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the parent component context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic customContext!:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the initial load complete flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic initialLoadComplete: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the table fully loaded data flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic tableFullyLoaded: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table data flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic loadingTableData: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading additional data flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic loadingNextDataset: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the table data.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic tableData: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the virtual data displayed in the viewport.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic virtualData: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the tables current index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic currentIndex: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic table height based on virtual page size,\r\n\t * explicit table height, or viewport height.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic tableHeight: string = '0px';\r\n\r\n\t/**\r\n\t * Gets or sets the number of rows to reserve when displaying a drawer. If\r\n\t * fewer rows than this are shown, the table will match the required height\r\n\t * while displaying the sidebar.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic minimumDrawerItemHeight: number = 5;\r\n\r\n\t/**\r\n\t * Gets or sets the explicit height of each table row. This value also\r\n\t * exists in the scss file and should be kept in sync.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic rowHeight: number = 50;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic selectedItem: any;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value of the sidebar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic sidebarVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value of the settings sidebar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic settingsVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value of the export sidebar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic exportVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the allowed view value of the export sidebar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic exportAllowed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value of the create sidebar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic createVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value of the filter panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic filterVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the expand title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic expandTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets the expand actions.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic expandActions: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the primary layout validity.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic layoutIsValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the additional layout validity.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic additionalLayoutIsValid: boolean = null;\r\n\r\n\t/**\r\n\t * Gets or sets the value signifying whether expand actions are displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic displayingExpandActions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining whether or not row actions exists in this\r\n\t * table.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic rowActionsExist: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining whether or not\r\n\t * the user is allowed navigation\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic navigationHighlighting: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the sidebar display mode when displaying a selected item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic displayMode: string = 'View';\r\n\r\n\t/**\r\n\t * Gets or sets the definitions used when displaying dynamic formly\r\n\t * layouts in the sidebar.\r\n\t *\r\n\t * @type {IFormlyDefinitionsNew}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic formlyDefinitions: IFormlyDefinitionsNew;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component view in the sidebar when pointing\r\n\t * to a specific component sidebar display.\r\n\t *\r\n\t * @type {Type}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic dynamicComponent: Type;\r\n\r\n\t/**\r\n\t * Gets or sets the columns to display.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic visibleColumns: ICommonTableColumn[];\r\n\r\n\t/**\r\n\t * Gets or sets the value that signifies whether or not the settings\r\n\t * have altered the row count in this table instance.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic selectedPageSizeChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the number of items to display in this list before\r\n\t * suggesting the user filters their search.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic filterResultsSuggestionCount: number = 500;\r\n\r\n\t/**\r\n\t * Gets or sets the locale for currency displays.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic readonly unitedStatesDollars: string =\r\n\t\tAppConstants.localeDefinitions.unitedStatesDollars;\r\n\r\n\t/**\r\n\t * Gets or sets the symbol flag for currency displays.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic readonly currencySymbol: string =\r\n\t\tAppConstants.localeDefinitions.symbol;\r\n\r\n\t/**\r\n\t * Gets or sets the settings applied value, which signifies that\r\n\t * selected settings should override dynamic height and width\r\n\t * displays.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate settingsApplied: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the table data api promise.\r\n\t *\r\n\t * @type {(objectSearch: IObjectSearch | IEntitySearch) => Promise}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate apiPromise!: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate dataSubscription!: Subscription;\r\n\r\n\t/**\r\n\t * Gets the string used to identify or display the 'px' value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly pixelIdentifier: string = 'px';\r\n\r\n\t/**\r\n\t * Gets the string used to identify the sidebar element displayed in this\r\n\t * table.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly sidebarClassIdentifier: string = '.p-sidebar';\r\n\r\n\t/**\r\n\t * Gets the width required to begin including additional\r\n\t * columns in the display. This uses math.ceiling() so a target size\r\n\t * of 360 (Our minimum target size) will display two columns.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly additionalColumnRequiredWidth: number = 225;\r\n\r\n\t/**\r\n\t * Gets the minimum column display width in characters.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly minimumColumnCharacterWidth: number = 15;\r\n\r\n\t/**\r\n\t * Gets the maximum column display width in characters.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly maximumColumnCharacterWidth: number = 45;\r\n\r\n\t/**\r\n\t * Gets the reserved action item display width in characters.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly actionItemWidth: number = 2.25;\r\n\r\n\t/**\r\n\t * Gets the table height when displaying a table without data.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly headerOnlyHeight: number = 52.5;\r\n\r\n\t/**\r\n\t * Gets the display order used for the action column.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly actionColumnDisplayOrder: number =\r\n\t\tAppConstants.reservedTableDisplayOrders.actionColumn;\r\n\r\n\t/**\r\n\t * Gets the delay used before updating the sidebar position and style\r\n\t * following the sidebar open action.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly sidebarUpdateDelay: number =\r\n\t\tAppConstants.time.oneHundredMilliseconds;\r\n\r\n\t/**\r\n\t * Gets the number of rows to display when a second scrollbar is required\r\n\t * for a full screen table using dynamic table heights. This will ensure\r\n\t * the header row and up to 3 rows are displayed.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly minimumDynamicTableHeightRows: number =\r\n\t\t6;\r\n\r\n\t/**\r\n\t * Gets the number data format types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate readonly numberDataFormatTypes: string[] =\r\n\t\t[\r\n\t\t\tAppConstants.dataFormatTypes.currency,\r\n\t\t\tAppConstants.dataFormatTypes.decimal,\r\n\t\t\tAppConstants.dataFormatTypes.percent\r\n\t\t];\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables\r\n\t * or loading has completed.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.layoutChanged.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close settings displayed drawe\r\n\t * when another overlay is displayed.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(): void\r\n\t{\r\n\t\tif (this.settingsVisible === true)\r\n\t\t{\r\n\t\t\tthis.toggleSettingsDisplay();\r\n\t\t}\r\n\r\n\t\tif (this.exportVisible === true)\r\n\t\t{\r\n\t\t\tthis.toggleExportDisplay();\r\n\t\t}\r\n\r\n\t\tif (this.createVisible === true)\r\n\t\t{\r\n\t\t\tthis.toggleCreateDisplay();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Sets the table and column and settings definitions\r\n\t * for this object list view, as well as loading the data\r\n\t * from the server to be displayed within the table.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.resetTableData();\r\n\r\n\t\tthis.pageContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this,\r\n\t\t\t\tdata: {}\r\n\t\t\t};\r\n\r\n\t\tthis.setTableItemIdentifier();\r\n\t\tthis.setMinimumDrawerItemHeight();\r\n\t\tthis.decorateTableColumns();\r\n\t\tthis.setSelectedColumns();\r\n\t\tthis.setCommonTableContext();\r\n\t\tthis.setRowActionsExist();\r\n\t\tthis.setNavigationHighlighting();\r\n\t\tawait this.setExportAllowed();\r\n\r\n\t\tthis.layoutChanged.pipe(\r\n\t\t\tdebounceTime(this.siteLayoutService.debounceDelay))\r\n\t\t\t.subscribe(() =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(this.tableDefinitions))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.displayTable();\r\n\t\t\t\tthis.setSelectedColumns();\r\n\t\t\t});\r\n\r\n\t\tawait this.loadTableData(\r\n\t\t\t{\r\n\t\t\t\tfirst: 0,\r\n\t\t\t\trows: this.tableDefinitions.objectSearch.virtualPageSize\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy interface.\r\n\t * This completes any watched subjects to free memory.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.layoutChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Refreshes the expand actions display when the set of actions are\r\n\t * altered outside of this component.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic updateExpandActions(): void\r\n\t{\r\n\t\tthis.displayingExpandActions = false;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.displayingExpandActions = true;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the table column data based on the provided item and data key.\r\n\t *\r\n\t * @param {any} item\r\n\t * The item to retrieve the data from.\r\n\t * @param {string} dataKey\r\n\t * The data key used to retrieve the data from the item.\r\n\t * @param {string} dataFunction\r\n\t * The data function used to transform the data retrieved from the item.\r\n\t * this value defaults to null.\r\n\t * @returns {string}\r\n\t * The table column data.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic getTableColumnData(\r\n\t\titem: any,\r\n\t\tdataKey: string,\r\n\t\tdataFunction: string = null): string\r\n\t{\r\n\t\tlet dataValue: string =\r\n\t\t\tJSONPath(\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: dataKey,\r\n\t\t\t\t\tjson: item\r\n\t\t\t\t})[0];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(dataFunction))\r\n\t\t{\r\n\t\t\tdataValue =\r\n\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\tdataFunction,\r\n\t\t\t\t\tthis.pageContext)(dataValue);\r\n\t\t}\r\n\r\n\t\treturn dataValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Provides the pipe format for rounding number, currency\r\n\t * and percent.\r\n\t *\r\n\t * @param {string} dataFormatType\r\n\t * The data format type that is being rounded.\r\n\t * @param {number} roundingPrecision\r\n\t * The number of decimal points to round the value at.\r\n\t * @returns {string}\r\n\t * The pipe format for rounding the value of a specific type.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic getRoundingPipeFormat(\r\n\t\tdataFormatType: string,\r\n\t\troundingPrecision: number = null): string\r\n\t{\r\n\t\tconst roundPrecisionIsDefined: boolean =\r\n\t\t\t!AnyHelper.isNullOrEmpty(roundingPrecision);\r\n\r\n\t\tswitch(dataFormatType)\r\n\t\t{\r\n\t\t\tcase AppConstants.dataFormatTypes.decimal:\r\n\t\t\t\treturn roundPrecisionIsDefined\r\n\t\t\t\t\t? `1.0-${roundingPrecision}`\r\n\t\t\t\t\t: '1.0-2';\r\n\t\t\tcase AppConstants.dataFormatTypes.percent:\r\n\t\t\t\treturn roundPrecisionIsDefined\r\n\t\t\t\t\t? `1.0-${roundingPrecision}`\r\n\t\t\t\t\t: '1.0-0';\r\n\t\t\tcase AppConstants.dataFormatTypes.currency:\r\n\t\t\t\treturn roundPrecisionIsDefined\r\n\t\t\t\t\t? `1.0-${roundingPrecision}`\r\n\t\t\t\t\t: '1.2-2';\r\n\t\t\tdefault:\r\n\t\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the link route data for the provided column.\r\n\t *\r\n\t * @param {any} context\r\n\t * The context data.\r\n\t * @param {ICommonTableColumn} column\r\n\t * The table column.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic getLinkRouteData(\r\n\t\tcontext: any,\r\n\t\tcolumn: ICommonTableColumn): string\r\n\t{\r\n\t\tif (column.dataFormatType === AppConstants.dataFormatTypes.link)\r\n\t\t{\r\n\t\t\tconst linkRouteData: string =\r\n\t\t\t\tAnyHelper.isNullOrEmpty(column.linkFunction)\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\tcolumn.linkFunction,\r\n\t\t\t\t\t\t\tcontext),\r\n\t\t\t\t\t\tcontext)();\r\n\r\n\t\t\treturn linkRouteData;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the row selected value of the current item.\r\n\t *\r\n\t * @param {any} item\r\n\t * The item to check row selection for.\r\n\t * @returns {boolean}\r\n\t * The selected value of the table item.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic isItemSelected(item: any): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.tableDefinitions.itemSelection))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.tableDefinitions.itemSelection.selectionMode ===\r\n\t\t\tAppConstants.itemSelectionMode.single\r\n\t\t\t? !AnyHelper.isNull(this.selectedItem)\r\n\t\t\t\t&& this.selectedItem[this.rowIdentifier] ===\r\n\t\t\t\t\titem[this.rowIdentifier]\r\n\t\t\t: !AnyHelper.isNull(\r\n\t\t\t\tthis.selectedItems.find(\r\n\t\t\t\t\t(selectedRow: any) =>\r\n\t\t\t\t\t\tselectedRow[this.rowIdentifier] ===\r\n\t\t\t\t\t\t\titem[this.rowIdentifier]));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the selection of an item within the table.\r\n\t *\r\n\t * @async\r\n\t * @param {any} item\r\n\t * The item to select.\r\n\t * @param {string} action\r\n\t * The action to take when selecting the item. This value defaults\r\n\t * to view mode.\r\n\t * @param {any} event\r\n\t * The event that triggered the selection.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async selectItem(\r\n\t\titem: any = null,\r\n\t\taction: string = AppConstants.displayMode.view,\r\n\t\tevent: any = null): Promise\r\n\t{\r\n\t\tevent?.stopImmediatePropagation();\r\n\t\tevent?.preventDefault();\r\n\t\tthis.displayTable();\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(item))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.shouldToggleSelectedItem(item))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedItem =\r\n\t\t\t{\r\n\t\t\t\t...item\r\n\t\t\t};\r\n\r\n\t\tthis.displayMode = action;\r\n\r\n\t\tthis.itemSelected.emit(\r\n\t\t\tthis.tableDefinitions\r\n\t\t\t\t.itemSelection\r\n\t\t\t\t?.capturedSelectedItemEventPromise);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.tableDefinitions\r\n\t\t\t\t.itemSelection\r\n\t\t\t\t?.capturedSelectedItemEventPromise))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.shouldHandleItemSelection())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(this.tableDefinitions.actions))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (await this.shouldHandleItemDrillInAction())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (await this.shouldHandleItemCreationCommandString())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (await this.shouldRunViewOrUpdateCommands())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.configureSelectedItemDisplayMode();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the update index action if set in table definitions.\r\n\t *\r\n\t * @async\r\n\t * @param {any} item\r\n\t * The item to update the index of.\r\n\t * @param {string} updateDirection\r\n\t * The update direction ('Up' or 'Down').\r\n\t * @param {any} event\r\n\t * The event that triggered the index update.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic updateIndex(\r\n\t\titem: any,\r\n\t\tupdateDirection: string,\r\n\t\tevent: any): void\r\n\t{\r\n\t\tevent?.stopImmediatePropagation();\r\n\t\tevent?.preventDefault();\r\n\r\n\t\tif (updateDirection === 'Up')\r\n\t\t{\r\n\t\t\tthis.tableDefinitions.actions.updateIndex[0]\r\n\t\t\t\t.command(item);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.tableDefinitions.actions.updateIndex[1]\r\n\t\t\t.command(item);\r\n\t}\r\n\r\n\t/**\r\n\t * If additional selected item data is set in the table expand definition,\r\n\t * this will run the datapromise or function to populate that addition\r\n\t * data needed at the expand level. This will be added directly to the\r\n\t * data object.\r\n\t *\r\n\t * @param {ITableExpandDefinition} tableExpandDefinition\r\n\t * The table expand definition currently being shown.\r\n\t * @returns {Promise}\r\n\t * A set of additional data to be added to the selected item.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async setAdditionalSelectedItemData(\r\n\t\ttableExpandDefinition: ITableExpandDefinition): Promise\r\n\t{\r\n\t\tconst additionalSelectedItemDataPromise: any =\r\n\t\t\ttableExpandDefinition.setAdditionalSelectedItemData;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(additionalSelectedItemDataPromise))\r\n\t\t{\r\n\t\t\tif(tableExpandDefinition.useAdditionalSelectedItemDataPromise\r\n\t\t\t\t=== true)\r\n\t\t\t{\r\n\t\t\t\tawait StringHelper\r\n\t\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\tadditionalSelectedItemDataPromise,\r\n\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\tthis.field);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tawait additionalSelectedItemDataPromise();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the closing of the sidebar action and displays the table.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic displayTable(): void\r\n\t{\r\n\t\tthis.sidebarVisible = false;\r\n\t\tthis.settingsVisible = false;\r\n\t\tthis.exportVisible = false;\r\n\t\tthis.createVisible = false;\r\n\t\tthis.filterVisible = false;\r\n\r\n\t\tthis.displayMode = AppConstants.displayMode.view;\r\n\t\tthis.expandActions = [];\r\n\t\tthis.dynamicComponent = null;\r\n\r\n\t\tthis.setTableDimensions();\r\n\t\tthis.fireChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a selected item recently created to the table data. This method\r\n\t * will handle custom view model decorations and scroll to the\r\n\t * newly created item.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async addSelectedItem(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isFunction(this.tableDefinitions.decorateViewModel))\r\n\t\t{\r\n\t\t\tthis.selectedItem =\r\n\t\t\t\tawait this.tableDefinitions.decorateViewModel(\r\n\t\t\t\t\tthis.selectedItem);\r\n\t\t}\r\n\r\n\t\tthis.tableData =\r\n\t\t\t[\r\n\t\t\t\tthis.selectedItem,\r\n\t\t\t\t...this.tableData\r\n\t\t\t];\r\n\t\tthis.virtualData =\r\n\t\t\t[\r\n\t\t\t\tthis.selectedItem,\r\n\t\t\t\t...this.virtualData.slice(\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tthis.tableDefinitions.objectSearch.limit - 1)\r\n\t\t\t];\r\n\r\n\t\tthis.viewport.scrollToIndex(0);\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the selected item within the table data. This method will\r\n\t * handle custom view model decorations and update the table display.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async updateSelectedItem(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isFunction(this.tableDefinitions.decorateViewModel))\r\n\t\t{\r\n\t\t\tthis.selectedItem =\r\n\t\t\t\tawait this.tableDefinitions.decorateViewModel(\r\n\t\t\t\t\tthis.selectedItem);\r\n\t\t}\r\n\r\n\t\tthis.tableData =\r\n\t\t\tthis.tableData.map(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (get(item, this.rowIdentifier) ===\r\n\t\t\t\t\t\tget(this.selectedItem, this.rowIdentifier))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.selectedItem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\r\n\t\tthis.virtualData =\r\n\t\t\tthis.virtualData.map(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (get(item, this.rowIdentifier) ===\r\n\t\t\t\t\t\tget(this.selectedItem, this.rowIdentifier))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn this.selectedItem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes the selected item from the table data. This method will\r\n\t * update the table display.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic deleteSelectedItem(): void\r\n\t{\r\n\t\tthis.tableData =\r\n\t\t\tthis.tableData.filter(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t\tget(item, this.rowIdentifier) !==\r\n\t\t\t\t\t\tget(this.selectedItem, this.rowIdentifier));\r\n\r\n\t\tthis.virtualData =\r\n\t\t\tthis.virtualData.filter(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t\tget(item, this.rowIdentifier) !==\r\n\t\t\t\t\t\tget(this.selectedItem, this.rowIdentifier));\r\n\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the display of the create item sidebar.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic toggleCreateDisplay(): void\r\n\t{\r\n\t\tif (this.createVisible === true)\r\n\t\t{\r\n\t\t\tthis.displayTable();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayTable();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t\tthis.selectItem(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\tAppConstants.displayMode.create),\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the display of the settings sidebar.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic toggleSettingsDisplay(): void\r\n\t{\r\n\t\tif (this.settingsVisible === true)\r\n\t\t{\r\n\t\t\tthis.displayTable();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayTable();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.initializeSettingsDisplay();\r\n\r\n\t\t\t\tthis.sidebarVisible = true;\r\n\t\t\t\tthis.settingsVisible = true;\r\n\t\t\t\tthis.expandTitle = 'Settings';\r\n\r\n\t\t\t\tthis.setTableDimensions();\r\n\t\t\t\tthis.fireChanges();\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => this.updateSidebarLocation(),\r\n\t\t\t\t\tthis.sidebarUpdateDelay);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the display of the export sidebar.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic toggleExportDisplay(): void\r\n\t{\r\n\t\tif (this.exportVisible === true)\r\n\t\t{\r\n\t\t\tthis.displayTable();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayTable();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.initializeExportDisplay();\r\n\r\n\t\t\t\tthis.sidebarVisible = true;\r\n\t\t\t\tthis.exportVisible = true;\r\n\t\t\t\tthis.expandTitle = 'Export Data';\r\n\r\n\t\t\t\tthis.setTableDimensions();\r\n\t\t\t\tthis.fireChanges();\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => this.updateSidebarLocation(),\r\n\t\t\t\t\tthis.sidebarUpdateDelay);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the settings selections to the table display.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async applySettings(): Promise\r\n\t{\r\n\t\tthis.selectedPageSizeChanged =\r\n\t\t\tthis.selectedPageSizeChanged === true\r\n\t\t\t\t|| this.tableDefinitions.objectSearch.virtualPageSize !==\r\n\t\t\t\t\tthis.selectedItem.virtualPageSize;\r\n\r\n\t\tthis.tableDefinitions.objectSearch.virtualPageSize =\r\n\t\t\tthis.selectedItem.virtualPageSize;\r\n\t\tthis.tableDefinitions.selectedColumns =\r\n\t\t\tthis.tableDefinitions.availableColumns\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\tthis.selectedItem.visibleColumns\r\n\t\t\t\t\t\t\t.includes(column.dataKey));\r\n\t\tthis.settingsApplied = true;\r\n\r\n\t\tawait this.ngOnInit();\r\n\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Exports the table data with the selections made in the export\r\n\t * table drawer component.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async exportData(): Promise\r\n\t{\r\n\t\tconst fileName: string =\r\n\t\t\tthis.selectedItem.fileName;\r\n\t\tconst selectedColumns: ICommonTableColumn[] =\r\n\t\t\tthis.tableDefinitions.availableColumns\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\tthis.selectedItem.exportColumns\r\n\t\t\t\t\t\t\t.includes(column.dataKey));\r\n\t\tconst exportType: string =\r\n\t\t\tthis.selectedItem.exportType;\r\n\t\tconst exportAll: boolean =\r\n\t\t\tthis.tableDefinitions.enableFullDatasetExport === false\r\n\t\t\t\t? false\r\n\t\t\t\t: this.selectedItem.exportAll;\r\n\r\n\t\tlet dataPromise: Promise;\r\n\t\tif (exportAll === false\r\n\t\t\t|| this.tableFullyLoaded === true)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNull(this.tableDefinitions\r\n\t\t\t\t.exportMappingDataPromise))\r\n\t\t\t{\r\n\t\t\t\tthis.tableData =\r\n\t\t\t\t\ttypeof this.tableDefinitions.exportMappingDataPromise ===\r\n\t\t\t\t\t\tAppConstants.propertyTypes.string\r\n\t\t\t\t\t\t? await StringHelper.transformToValueDataPromise(\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tthis.tableDefinitions\r\n\t\t\t\t\t\t\t\t\t.exportMappingDataPromise as string,\r\n\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\tselectedColumns)\r\n\t\t\t\t\t\t: await (this.tableDefinitions\r\n\t\t\t\t\t\t\t.exportMappingDataPromise as\r\n\t\t\t\t\t\t\t\t(selectedColumns: ICommonTableColumn[]) =>\r\n\t\t\t\t\t\t\t\t\tPromise)(selectedColumns);\r\n\t\t\t}\r\n\r\n\t\t\tdataPromise =\r\n\t\t\t\tthis.dataExportService.exportTableData(\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\texportType,\r\n\t\t\t\t\tthis.tableData,\r\n\t\t\t\t\tselectedColumns,\r\n\t\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdataPromise =\r\n\t\t\t\tthis.dataExportService.exportAllTableData(\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\texportType,\r\n\t\t\t\t\tthis.tableDefinitions.apiPromise,\r\n\t\t\t\t\tthis.tableDefinitions.objectSearch,\r\n\t\t\t\t\tselectedColumns,\r\n\t\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\r\n\t\t// Run this activity in the background.\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdataPromise,\r\n\t\t\t\t'Exporting Table Data',\r\n\t\t\t\t'Exported Table Data',\r\n\t\t\t\t'Data exported to ' + fileName,\r\n\t\t\t\t'Failed to export data.'),\r\n\t\t\tAppConstants.activityStatus.complete);\r\n\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the quick filter displayed event to set the flag for this\r\n\t * being currently visible.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic quickFilterDisplayed(\r\n\t\tdisplayed: boolean): void\r\n\t{\r\n\t\tif (this.filterVisible === true)\r\n\t\t{\r\n\t\t\tthis.displayTable();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayTable();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.filterVisible = displayed;\r\n\t\t\t\tthis.fireChanges();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the filter criteria event to the table display. This will set\r\n\t * the object search filter to the provided filter value.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * The filter event sent from a table quick filter or formatted in a\r\n\t * component.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async filterCriteriaChanged(\r\n\t\tfilter: string): Promise\r\n\t{\r\n\t\tthis.tableDefinitions.objectSearch.filter = filter;\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tthis.tableDefinitions.actions.filter?.quickFilters))\r\n\t\t{\r\n\t\t\tthis.tableDefinitions.actions.filter.selectedFilterValue = filter;\r\n\t\t}\r\n\r\n\t\tawait this.ngOnInit();\r\n\r\n\t\tthis.displayTable();\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the table to the bottom of the viewport.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic scrollTableToTop(): void\r\n\t{\r\n\t\tthis.viewport.scrollToIndex(0);\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the table to the bottom of the viewport.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic scrollTableToBottom(): void\r\n\t{\r\n\t\tthis.viewport.scrollToIndex(\r\n\t\t\tthis.virtualData.length);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles scroll events sent from the viewport to check if the last item\r\n\t * is currently displayed and additional data loads should occur.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic async checkIfLastItem(\r\n\t\tindex: number): Promise\r\n\t{\r\n\t\tthis.currentIndex = index;\r\n\r\n\t\tconst additionalItemsExist: boolean =\r\n\t\t\t(this.virtualData.length /\r\n\t\t\t\tthis.tableDefinitions.objectSearch.limit) % 1 === 0;\r\n\r\n\t\tif (additionalItemsExist\r\n\t\t\t&& this.loadingTableData === false\r\n\t\t\t&& this.loadingNextDataset === false\r\n\t\t\t&& (index + this.tableDefinitions.objectSearch.virtualPageSize)\r\n\t\t\t\t>= this.virtualData.length - 1)\r\n\t\t{\r\n\t\t\tthis.loadingNextDataset = true;\r\n\r\n\t\t\tthis.tableDefinitions.objectSearch.offset +=\r\n\t\t\t\tthis.tableDefinitions.objectSearch.limit;\r\n\r\n\t\t\tawait this.loadTableData(\r\n\t\t\t\t{\r\n\t\t\t\t\tfirst: this.tableDefinitions.objectSearch.offset,\r\n\t\t\t\t\trows: this.tableDefinitions.objectSearch.virtualPageSize\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.loadingNextDataset = false;\r\n\r\n\t\t\tthis.viewport.scrollToIndex(\r\n\t\t\t\tthis.currentIndex);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the primary layout changes on the expand component.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * Determines when a expan component change is valid.\r\n\t * @memberof CommonTableComponent\r\n\t*/\r\n\tpublic async validExpandComponentChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.layoutIsValid = isValid;\r\n\r\n\t\treturn this.handleValidity(\r\n\t\t\tthis.layoutIsValid\r\n\t\t\t\t&& (this.additionalLayoutIsValid ?? true));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the additional layout changes on the expand component.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * Determines when a expan component change is valid.\r\n\t * @memberof CommonTableComponent\r\n\t*/\r\n\tpublic async validAdditionalLayoutExpandComponentChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.additionalLayoutIsValid = isValid;\r\n\r\n\t\treturn this.handleValidity(\r\n\t\t\tthis.layoutIsValid\r\n\t\t\t\t&& this.additionalLayoutIsValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles expand action based on the primary and additional layout\r\n\t * validity.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * Determines when a expan component change is valid.\r\n\t * @memberof CommonTableComponent\r\n\t*/\r\n\tpublic async handleValidity(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.expandActions?.forEach(\r\n\t\t\t(action: MenuItem) =>\r\n\t\t\t{\r\n\t\t\t\taction.disabled = !isValid;\r\n\t\t\t});\r\n\r\n\t\t// Allow delete statement logic to handle secondary disables.\r\n\t\tif (this.displayMode === AppConstants.displayMode.delete\r\n\t\t\t&& ((!AnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions?.delete?.deleteStatement)\r\n\t\t\t\t&& AnyHelper.isFunction(\r\n\t\t\t\t\tthis.tableDefinitions.actions?.delete?.deleteStatement))\r\n\t\t\t\t|| !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tthis.tableDefinitions.actions?.delete\r\n\t\t\t\t\t\t?.deleteStatementPromise)))\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.tableDefinitions.actions?.delete\r\n\t\t\t\t\t?.deleteStatementPromise))\r\n\t\t\t{\r\n\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t.delete.deleteStatement =\r\n\t\t\t\t\t\tawait StringHelper\r\n\t\t\t\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t\t\t\t\t.delete.deleteStatementPromise,\r\n\t\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t\tthis.field);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tawait this.tableDefinitions.actions\r\n\t\t\t\t.delete.deleteStatement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Fires the change detection for the formly form to update the view.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic fireChanges(): void\r\n\t{\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t\tthis.fireFormlyChangeDetection.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the provided column has link route data.\r\n\t *\r\n\t * @returns {string}\r\n\t * Returns true if the provided column has link route data, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic hasLinkRouteData(\r\n\t\titem: any,\r\n\t\tcolumn: ICommonTableColumn): boolean\r\n\t{\r\n\t\tconst link: string =\r\n\t\t\tthis.getLinkRouteData(\r\n\t\t\t\titem,\r\n\t\t\t\tcolumn);\r\n\r\n\t\treturn !AnyHelper.isNullOrEmpty(link);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles click event and calls the navigate to the link column.\r\n\t *\r\n\t * @param {ICommonTableColumn} column\r\n\t * The column containing click information.\r\n\t * @param {any} item\r\n\t * The table item containing the route information.\r\n\t * @param {MouseEvent} event\r\n\t * The mouse event used to capture click information.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tpublic handleClick(\r\n\t\tcolumn: ICommonTableColumn,\r\n\t\titem: any,\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tconst target = event.target as HTMLElement;\r\n\r\n\t\tconst link: string =\r\n\t\t\tthis.getLinkRouteData(\r\n\t\t\t\titem,\r\n\t\t\t\tcolumn);\r\n\r\n\t\tif (target.classList.contains('banner-text-link'))\r\n\t\t{\r\n\t\t\tthis.navigateTo(link);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the navigation to the link url.\r\n\t *\r\n\t * @param {any} linkRouteData\r\n\t * The link route data.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate navigateTo(\r\n\t\tlinkRouteData: any): void\r\n\t{\r\n\t\tif(!AnyHelper.isNull(linkRouteData))\r\n\t\t{\r\n\t\t\tthis.router.navigate(\r\n\t\t\t\t[\r\n\t\t\t\t\tlinkRouteData.url\r\n\t\t\t\t],\r\n\t\t\t\t{\r\n\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlayoutType: linkRouteData.layoutType\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table context in the parent component's table\r\n\t * definition.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setCommonTableContext(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.tableDefinitions.commonTableContext))\r\n\t\t{\r\n\t\t\tthis.tableDefinitions.commonTableContext(this.pageContext);\r\n\t\t}\r\n\r\n\t\t// This value is used as a fallback when no common table context\r\n\t\t// method exists.\r\n\t\tthis.tableDefinitions.getCommonTableContext =\r\n\t\t\t() => this.pageContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table identifier if this is different than the\r\n\t * default of id.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setTableItemIdentifier(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.tableDefinitions.dataKey))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.rowIdentifier = this.tableDefinitions.dataKey;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table minimum drawer item height.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setMinimumDrawerItemHeight(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.tableDefinitions.tableHeight?.minimumDrawerItemHeight))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.minimumDrawerItemHeight =\r\n\t\t\tthis.tableDefinitions.tableHeight.minimumDrawerItemHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the row actions exist flag that signifies whether the row should\r\n\t * be selectable.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setRowActionsExist(): void\r\n\t{\r\n\t\tthis.rowActionsExist =\r\n\t\t\tthis.tableDefinitions.actions?.view != null\r\n\t\t\t\t|| this.tableDefinitions.itemSelection != null\r\n\t\t\t\t|| this.tableDefinitions.actions?.drillIn != null;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the allowed navigation flag that signifies whether the row should\r\n\t * be selectable.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setNavigationHighlighting(): void\r\n\t{\r\n\t\tconst currentUser: IUser =\r\n\t\t\tthis.resolver.resolveCurrentUser();\r\n\r\n\t\tthis.navigationHighlighting =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.tableDefinitions.navigationAccess)\r\n\t\t\t\t? SecurityHelper\r\n\t\t\t\t\t.membershipExists(\r\n\t\t\t\t\t\tthis.tableDefinitions.navigationAccess,\r\n\t\t\t\t\t\tcurrentUser)\r\n\t\t\t\t: true;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the export allowed value based on the export allowed promise. If\r\n\t * the table is exportable and the export allowed promise is not set,\r\n\t * this will default to true.\r\n\t * If the export allowed promise is set, this will evaluate the promise\r\n\t * whether this is a string a boolean returning promise.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async setExportAllowed(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.tableDefinitions.exportAllowedPromise))\r\n\t\t{\r\n\t\t\tthis.exportAllowed = this.tableDefinitions.exportable ?? false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.exportAllowed =\r\n\t\t\ttypeof this.tableDefinitions.exportAllowedPromise ===\r\n\t\t\t\tAppConstants.propertyTypes.string\r\n\t\t\t\t? await StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tthis.tableDefinitions.exportAllowedPromise as string,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext)\r\n\t\t\t\t: await (this.tableDefinitions\r\n\t\t\t\t\t.exportAllowedPromise as () => Promise)();\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the settings layout and actions for the settings sidebar.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate initializeSettingsDisplay(): void\r\n\t{\r\n\t\tthis.selectedItem =\r\n\t\t\t{\r\n\t\t\t\tvisibleColumns:\r\n\t\t\t\t\tthis.visibleColumns\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\tcolumn.displayOrder <\r\n\t\t\t\t\t\t\t\t\tthis.actionColumnDisplayOrder)\r\n\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\tcolumn.dataKey),\r\n\t\t\t\tvirtualPageSize:\r\n\t\t\t\t\tthis.tableDefinitions.objectSearch.virtualPageSize\r\n\t\t\t};\r\n\r\n\t\tconst settingsLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'visibleColumns',\r\n\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Selected Columns',\r\n\t\t\t\t\t\tplaceholder: 'Choose Columns',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.tableDefinitions.availableColumns.map(\r\n\t\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: column.columnHeader,\r\n\t\t\t\t\t\t\t\t\t\tvalue: column.dataKey\r\n\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'virtualPageSize',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Results Set Count',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmultipleOf: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidPageSize: {\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\tcontrol.value <=\r\n\t\t\t\t\t\t\t\t\t\tthis.tableDefinitions\r\n\t\t\t\t\t\t\t\t\t\t\t.objectSearch.limit,\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'A maximum of '\r\n\t\t\t\t\t\t\t\t\t+ this.tableDefinitions.objectSearch.limit\r\n\t\t\t\t\t\t\t\t\t+ ' items can be displayed.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.formlyDefinitions =\r\n\t\t\t{\r\n\t\t\t\tdefinition: {},\r\n\t\t\t\tlayout: settingsLayout\r\n\t\t\t};\r\n\r\n\t\tthis.expandActions =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Apply',\r\n\t\t\t\t\tid: 'ApplySettings',\r\n\t\t\t\t\tstyleClass: 'ui-button-primary',\r\n\t\t\t\t\tcommand: this.applySettings.bind(this)\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the export layout and actions for the export data sidebar.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate initializeExportDisplay(): void\r\n\t{\r\n\t\tthis.selectedItem =\r\n\t\t\t{\r\n\t\t\t\texportColumns:\r\n\t\t\t\t\tthis.tableDefinitions.availableColumns\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\tcolumn.displayOrder <\r\n\t\t\t\t\t\t\t\t\tthis.actionColumnDisplayOrder)\r\n\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\tcolumn.dataKey),\r\n\t\t\t\texportAll: true\r\n\t\t\t};\r\n\r\n\t\tconst exportLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'fileName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'File Name',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: this.tableDefinitions.tableTitle + ' Export'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'exportColumns',\r\n\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Export Columns',\r\n\t\t\t\t\t\tplaceholder: 'Choose Columns',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.tableDefinitions.availableColumns.map(\r\n\t\t\t\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: column.columnHeader,\r\n\t\t\t\t\t\t\t\t\t\tvalue: column.dataKey\r\n\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'exportType',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Export Type',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: AppConstants.exportTypes.excel,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Excel Workbook',\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.exportTypes.excel\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'CSV File',\r\n\t\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.exportTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.commaSeparatedValues\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'exportAll',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Export All Data',\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'Use this to define exporting all table data or '\r\n\t\t\t\t\t\t\t\t+ 'only the current table data.'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tif (this.tableDefinitions.enableFullDatasetExport === false)\r\n\t\t{\r\n\t\t\texportLayout.pop();\r\n\t\t}\r\n\r\n\t\tthis.formlyDefinitions =\r\n\t\t\t{\r\n\t\t\t\tdefinition: {},\r\n\t\t\t\tlayout: exportLayout\r\n\t\t\t};\r\n\r\n\t\tthis.expandActions =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Export',\r\n\t\t\t\t\tid: 'ApplyExport',\r\n\t\t\t\t\tstyleClass: 'ui-button-primary',\r\n\t\t\t\t\tcommand: this.exportData.bind(this)\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the initial set of table data based on the provided lazy load\r\n\t * event. This method when complete will set initialLoadComplete to true.\r\n\t *\r\n\t * @async\r\n\t * @param {LazyLoadEvent} lazyLoadEvent\r\n\t * The lazy load event used to load the table data.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async loadTableData(\r\n\t\tlazyLoadEvent: LazyLoadEvent): Promise\r\n\t{\r\n\t\tthis.loadingTableData = true;\r\n\r\n\t\tif (this.dataSubscription != null)\r\n\t\t{\r\n\t\t\tthis.dataSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.displayKeywordMessage === true)\r\n\t\t{\r\n\t\t\tthis.initialLoadComplete = true;\r\n\t\t\tthis.tableFullyLoaded = true;\r\n\t\t\tthis.loadingTableData = false;\r\n\t\t\tthis.tableData = [];\r\n\t\t\tthis.virtualData = [];\r\n\r\n\t\t\treturn new Promise(\r\n\t\t\t\t(resolve) => resolve());\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.tableDefinitions.objectSearch.offset =\r\n\t\t\t\t\tlazyLoadEvent.first;\r\n\r\n\t\t\t\tthis.apiPromise =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(this.tableDefinitions.apiPromise)\r\n\t\t\t\t\t\t? this.tableDefinitions.apiPromise(\r\n\t\t\t\t\t\t\tthis.tableDefinitions.objectSearch)\r\n\t\t\t\t\t\t: StringHelper\r\n\t\t\t\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\t\tthis.tableDefinitions.apiPromiseString,\r\n\t\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t\tthis.field);\r\n\r\n\t\t\t\tthis.dataSubscription =\r\n\t\t\t\t\tfrom(this.apiPromise)\r\n\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t(data: any[]) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (data.length <\r\n\t\t\t\t\t\t\t\t\tthis.tableDefinitions\r\n\t\t\t\t\t\t\t\t\t\t.objectSearch.limit)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.tableFullyLoaded = true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.tableData =\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t...this.tableData,\r\n\t\t\t\t\t\t\t\t\t\t...data\r\n\t\t\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\t\t\tthis.virtualData =\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t...this.virtualData,\r\n\t\t\t\t\t\t\t\t\t\t...data\r\n\t\t\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\t\t\tif (this.initialLoadComplete === false)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.initialLoadComplete = true;\r\n\t\t\t\t\t\t\t\t\tthis.fireChanges();\r\n\r\n\t\t\t\t\t\t\t\t\tthis.setTableDimensions();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.loadingTableData = false;\r\n\t\t\t\t\t\t\t\tthis.fireChanges();\r\n\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the table dimensions based on the current site layout and\r\n\t * table definitions.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setTableDimensions(): void\r\n\t{\r\n\t\tthis.calculateTableHeight();\r\n\t\tthis.calculateColumnWidths();\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the table and virtual data and sets this as a not loaded table.\r\n\t * Note: This is called in NgOnInit for when the table data is reloaded\r\n\t * by a filter change or table settings are applied.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate resetTableData(): void\r\n\t{\r\n\t\tthis.tableData = [];\r\n\t\tthis.virtualData = [];\r\n\t\tthis.loadingTableData = true;\r\n\t\tthis.tableFullyLoaded = false;\r\n\t\tthis.loadingNextDataset = false;\r\n\t\tthis.initialLoadComplete = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the table height based on the current site layout and\r\n\t * table definitions.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate calculateTableHeight(): void\r\n\t{\r\n\t\t// Include the header row.\r\n\t\tlet calculatedItemCount: number =\r\n\t\t\tthis.virtualData.length + 1;\r\n\r\n\t\t// Handle dynamic height calculations if stand alone.\r\n\t\tif (this.tableDefinitions.nestedTable !== true)\r\n\t\t{\r\n\t\t\tconst pageTitleHeight: number =\r\n\t\t\t\tDocumentHelper.getPageHeaderHeight() ?? 0;\r\n\r\n\t\t\tconst reservedSpace: number =\r\n\t\t\t\tpageTitleHeight\r\n\t\t\t\t\t+ ((this.tableTitle)?.nativeElement\r\n\t\t\t\t\t\t.getBoundingClientRect()\r\n\t\t\t\t\t\t.height ?? 0)\r\n\t\t\t\t\t+ ((this.tableSummary)?.nativeElement\r\n\t\t\t\t\t\t.getBoundingClientRect()\r\n\t\t\t\t\t\t.height ?? 0)\r\n\t\t\t\t\t+ (AppConstants.staticLayoutSizes.nestedContentPadding * 2)\r\n\t\t\t\t\t+ (this.tableDefinitions.fullPageReservedHeight ?? 0);\r\n\r\n\t\t\tcalculatedItemCount =\r\n\t\t\t\tMath.max(\r\n\t\t\t\t\tthis.minimumDynamicTableHeightRows,\r\n\t\t\t\t\tMath.floor(\r\n\t\t\t\t\t\t(this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t\t\t? this.siteLayoutService.windowHeight\r\n\t\t\t\t\t\t\t\t- AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t\t\t.mobileHeaderHeight\r\n\t\t\t\t\t\t\t\t- reservedSpace\r\n\t\t\t\t\t\t\t: this.siteLayoutService.windowHeight\r\n\t\t\t\t\t\t\t\t- reservedSpace)\r\n\t\t\t\t\t\t\t\t/ this.rowHeight));\r\n\t\t}\r\n\r\n\t\t// Override height calculations if settings are applied.\r\n\t\t// Include the table header in the height calculation.\r\n\t\tconst displayableTableItems: number =\r\n\t\t\tthis.settingsApplied === true\r\n\t\t\t\t&& this.selectedPageSizeChanged === true\r\n\t\t\t\t? this.tableDefinitions.objectSearch.virtualPageSize + 1\r\n\t\t\t\t: calculatedItemCount;\r\n\r\n\t\tif (this.sidebarVisible === true\r\n\t\t\t&& this.isBelowMinimumSidebarHeight(\r\n\t\t\t\tdisplayableTableItems))\r\n\t\t{\r\n\t\t\tthis.tableHeight =\r\n\t\t\t\t`${this.rowHeight\r\n\t\t\t\t\t* (this.minimumDrawerItemHeight\r\n\t\t\t\t\t\t+ 1)}${this.pixelIdentifier}`;\r\n\t\t}\r\n\t\telse if (this.tableDefinitions.tableHeight\r\n\t\t\t?.virtualPageSizeBased !== false\r\n\t\t\t&& this.virtualData.length <=\r\n\t\t\t\tthis.tableDefinitions.objectSearch\r\n\t\t\t\t\t.virtualPageSize)\r\n\t\t{\r\n\t\t\tthis.tableHeight =\r\n\t\t\t\tthis.virtualData.length > 0\r\n\t\t\t\t\t? `${this.rowHeight *\r\n\t\t\t\t\t\t(Math.min(\r\n\t\t\t\t\t\t\tthis.virtualData.length + 1,\r\n\t\t\t\t\t\t\tdisplayableTableItems))}`\r\n\t\t\t\t\t\t+ `${this.pixelIdentifier}`\r\n\t\t\t\t\t: this.headerOnlyHeight + this.pixelIdentifier;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.setTableHeight(\r\n\t\t\t\tMath.min(\r\n\t\t\t\t\tthis.tableDefinitions.objectSearch\r\n\t\t\t\t\t\t.virtualPageSize + 1,\r\n\t\t\t\t\tdisplayableTableItems));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the height of the table for display to equal the row height times\r\n\t * the provided virtualPageSize or as the explicit table height if set.\r\n\t *\r\n\t * @param {number} itemCount\r\n\t * The item count used to calculate the table height\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setTableHeight(\r\n\t\titemCount: number): void\r\n\t{\r\n\t\tconst calculatedTableHeight: number =\r\n\t\t\titemCount === 0\r\n\t\t\t\t? this.headerOnlyHeight\r\n\t\t\t\t: this.rowHeight * itemCount;\r\n\r\n\t\tthis.tableHeight =\r\n\t\t\t(this.tableDefinitions.tableHeight?.virtualPageSizeBased !== false)\r\n\t\t\t\t? `${calculatedTableHeight}px`\r\n\t\t\t\t: `${this.tableDefinitions.tableHeight.explicitHeight}px`;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the column widths based on the current site layout and\r\n\t * table definitions.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate calculateColumnWidths(): void\r\n\t{\r\n\t\tconst visibleColumns: ICommonTableColumn[] =\r\n\t\t\t[\r\n\t\t\t\t...this.visibleColumns.filter(\r\n\t\t\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t\t\t\tcolumn.displayOrder < this.actionColumnDisplayOrder)\r\n\t\t\t];\r\n\r\n\t\tconst dataLengthArray: number[] =\r\n\t\t\tthis.getDataLengthArray(visibleColumns);\r\n\r\n\t\tconst actionItemCount: number =\r\n\t\t\tthis.getActionItemCount();\r\n\t\tconst displayActionColumn: boolean =\r\n\t\t\tthis.tableData.length > 0\r\n\t\t\t\t&& actionItemCount > 0;\r\n\t\tconst nestedTableWeight: number =\r\n\t\t\t(this.tableDefinitions.nestedTable === true\r\n\t\t\t\t? 3 * (1/actionItemCount)\r\n\t\t\t\t: 1);\r\n\t\tconst standardColumnWidth: number =\r\n\t\t\t(actionItemCount * this.actionItemWidth)\r\n\t\t\t\t* nestedTableWeight;\r\n\r\n\t\tconst reservedColumnWidth: number =\r\n\t\t\tthis.getReservedColumnWidth(\r\n\t\t\t\tstandardColumnWidth);\r\n\r\n\t\tconst sum: number =\r\n\t\t\tdataLengthArray.reduce(\r\n\t\t\t\t(accumulator, currentValue) =>\r\n\t\t\t\t\taccumulator + currentValue,\r\n\t\t\t\t0);\r\n\t\tconst proportionalActionColumnWidth: number =\r\n\t\t\tMath.min(\r\n\t\t\t\t(displayActionColumn\r\n\t\t\t\t\t? reservedColumnWidth\r\n\t\t\t\t\t: 0),\r\n\t\t\t\tsum / (this.siteLayoutService.contentWidth\r\n\t\t\t\t\t< AppConstants.layoutBreakpoints.smallPhone\r\n\t\t\t\t\t? 3\r\n\t\t\t\t\t: 4));\r\n\t\tconst weight: number =\r\n\t\t\t100 / (sum + proportionalActionColumnWidth);\r\n\t\tlet totalWidth: number = 0;\r\n\r\n\t\tfor (const column of visibleColumns)\r\n\t\t{\r\n\t\t\tconst widthPercent: number =\r\n\t\t\t\tMath.floor(\r\n\t\t\t\t\tdataLengthArray[visibleColumns.indexOf(column)]\r\n\t\t\t\t\t\t* weight);\r\n\r\n\t\t\tcolumn.width =\r\n\t\t\t\t`${widthPercent}%`;\r\n\t\t\ttotalWidth += widthPercent;\r\n\t\t}\r\n\r\n\t\tif (displayActionColumn === true)\r\n\t\t{\r\n\t\t\tvisibleColumns.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayOrder: this.actionColumnDisplayOrder,\r\n\t\t\t\t\twidth: `${100 - totalWidth}%`\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.visibleColumns =\r\n\t\t\t[\r\n\t\t\t\t...visibleColumns\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Determines the action item count for table row actions.\r\n\t *\r\n\t * @returns {number}\r\n\t * The number of action items to display.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate getActionItemCount(): number\r\n\t{\r\n\t\tconst displayEdit: number =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t?.update)\r\n\t\t\t\t? 0\r\n\t\t\t\t: 1;\r\n\t\tconst displayDelete: number =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t?.delete)\r\n\t\t\t\t? 0\r\n\t\t\t\t: 1;\r\n\t\tconst displayEllipsis: number =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t?.rowLevelEllipsis)\r\n\t\t\t\t? 0\r\n\t\t\t\t: 1;\r\n\t\tconst displayUpdateIndex: number =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t?.updateIndex)\r\n\t\t\t\t? 0\r\n\t\t\t\t: 1;\r\n\r\n\t\treturn displayEdit\r\n\t\t\t+ displayDelete\r\n\t\t\t+ displayEllipsis\r\n\t\t\t+ displayUpdateIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the reserved action column width based on the current site layout\r\n\t * and standard column width.\r\n\t *\r\n\t * @param {number} standardColumnWidth\r\n\t * The standard column width used to calculate the reserved column width.\r\n\t * @returns {number}\r\n\t * The reserved column width.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate getReservedColumnWidth(\r\n\t\tstandardColumnWidth: number): number\r\n\t{\r\n\t\tlet reservedColumnWidth: number;\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase this.siteLayoutService.contentWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.smallPhone:\r\n\t\t\t\treservedColumnWidth =\r\n\t\t\t\t\t6 * standardColumnWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.siteLayoutService.contentWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.tablet:\r\n\t\t\t\treservedColumnWidth =\r\n\t\t\t\t\t3.75 * standardColumnWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.siteLayoutService.contentWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.desktop:\r\n\t\t\t\treservedColumnWidth =\r\n\t\t\t\t\t3 * standardColumnWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tcase this.siteLayoutService.contentWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.largeDesktop:\r\n\t\t\t\treservedColumnWidth =\r\n\t\t\t\t\t2.25 * standardColumnWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treservedColumnWidth =\r\n\t\t\t\t\t1.5 * standardColumnWidth;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn reservedColumnWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the data length array based on the provided visible columns.\r\n\t *\r\n\t * @param {ICommonTableColumn[]} visibleColumns\r\n\t * The visible columns used to calculate the data length array.\r\n\t * @returns {number[]}\r\n\t * The data length array.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate getDataLengthArray(\r\n\t\tvisibleColumns: ICommonTableColumn[]): number[]\r\n\t{\r\n\t\tconst dataLengthArray: number[] = [];\r\n\t\tfor (const column of visibleColumns)\r\n\t\t{\r\n\t\t\tif (this.tableData.length === 0)\r\n\t\t\t{\r\n\t\t\t\tdataLengthArray.push(\r\n\t\t\t\t\tcolumn.columnHeader?.toString().length ?? 0);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst columnHeaderLength: number =\r\n\t\t\t\t\tcolumn.columnHeader\r\n\t\t\t\t\t\t?.toString().length\r\n\t\t\t\t\t\t?? 0;\r\n\t\t\t\tdataLengthArray.push(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\t...this.tableData.map(\r\n\t\t\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Handle shortened dates from ISO date strings\r\n\t\t\t\t\t\t\t\t// and icon based displays.\r\n\t\t\t\t\t\t\t\tconst columnDataLength: number =\r\n\t\t\t\t\t\t\t\t\tcolumn.dataFormatType ===\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.dataFormatTypes.date\r\n\t\t\t\t\t\t\t\t\t\t|| column.dataFormatType ===\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.dataFormatTypes.icon\r\n\t\t\t\t\t\t\t\t\t\t? this.minimumColumnCharacterWidth\r\n\t\t\t\t\t\t\t\t\t\t: item[column.dataKey]\r\n\t\t\t\t\t\t\t\t\t\t\t?.toString().length\r\n\t\t\t\t\t\t\t\t\t\t\t?? 0;\r\n\r\n\t\t\t\t\t\t\t\treturn Math.min(\r\n\t\t\t\t\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\t\t\t\t\t\tcolumnDataLength,\r\n\t\t\t\t\t\t\t\t\t\t\tcolumnHeaderLength),\r\n\t\t\t\t\t\t\t\t\t\tthis.minimumColumnCharacterWidth),\r\n\t\t\t\t\t\t\t\t\tthis.maximumColumnCharacterWidth);\r\n\t\t\t\t\t\t\t})));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn dataLengthArray;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the table is below the minimum sidebar height.\r\n\t *\r\n\t * @param {number} displayableTableItemCount\r\n\t * The number of displayable table items, which is used to determine\r\n\t * if this table is showing in a full page display with less than\r\n\t * the desired virtual page size due to height constraints.\r\n\t * @returns {boolean}\r\n\t * True if the table is below the minimum sidebar height, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate isBelowMinimumSidebarHeight(\r\n\t\tdisplayableTableItemCount: number): boolean\r\n\t{\r\n\t\tconst belowMinimumVirtualHeight: boolean =\r\n\t\t\tthis.tableDefinitions.tableHeight?.virtualPageSizeBased !== false\r\n\t\t\t\t&& (displayableTableItemCount < this.minimumDrawerItemHeight\r\n\t\t\t\t\t|| this.virtualData.length < this.minimumDrawerItemHeight);\r\n\t\tconst belowMinimumExplicitHeight: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.tableDefinitions.tableHeight?.explicitHeight)\r\n\t\t\t\t&& parseFloat(\r\n\t\t\t\t\tthis.tableHeight.replace(\r\n\t\t\t\t\t\tthis.pixelIdentifier,\r\n\t\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t\t\t< (this.minimumDrawerItemHeight * this.rowHeight);\r\n\r\n\t\treturn belowMinimumVirtualHeight || belowMinimumExplicitHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of columns defined and sets up the columns\r\n\t * that will be displayed currently in this object list table.\r\n\t * Note: If this is set via settings, the selected columns will\r\n\t * not reset until the user changes the settings.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate setSelectedColumns(): void\r\n\t{\r\n\t\tconst columnDisplayCount: number =\r\n\t\t\tMath.ceil(\r\n\t\t\t\tthis.siteLayoutService.contentWidth\r\n\t\t\t\t\t/ this.additionalColumnRequiredWidth);\r\n\r\n\t\tif (this.settingsApplied === false)\r\n\t\t{\r\n\t\t\tthis.visibleColumns =\r\n\t\t\t\tthis.tableDefinitions.availableColumns\r\n\t\t\t\t\t.slice(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tcolumnDisplayCount);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.visibleColumns =\r\n\t\t\t\tthis.tableDefinitions.selectedColumns;\r\n\t\t}\r\n\r\n\t\tthis.setTableDimensions();\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the available table columns.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate decorateTableColumns(): void\r\n\t{\r\n\t\tthis.tableDefinitions.availableColumns.forEach(\r\n\t\t\t(column: ICommonTableColumn) =>\r\n\t\t\t{\r\n\t\t\t\tcolumn.formattedRoundingPrecision =\r\n\t\t\t\t\tAppConstants.empty;\r\n\r\n\t\t\t\tif (this.numberDataFormatTypes\r\n\t\t\t\t\t.includes(column?.dataFormatType))\r\n\t\t\t\t{\r\n\t\t\t\t\tcolumn.formattedRoundingPrecision =\r\n\t\t\t\t\t\tthis.getRoundingPipeFormat(\r\n\t\t\t\t\t\t\tcolumn.dataFormatType,\r\n\t\t\t\t\t\t\tcolumn?.roundingPrecision);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn column.formattedRoundingPrecision;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the sidebar location and style based on the current\r\n\t * table title rectangle and site layout.\r\n\t *\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate updateSidebarLocation(): void\r\n\t{\r\n\t\tconst drawerElement: HTMLElement =\r\n\t\t\t(this.tableContainer).nativeElement\r\n\t\t\t\t.querySelector(this.sidebarClassIdentifier);\r\n\r\n\t\tconst displayFullScreenView: boolean =\r\n\t\t\tthis.siteLayoutService.displayTabletView === true\r\n\t\t\t\t|| this.tableDefinitions.nestedTable === true;\r\n\r\n\t\tif (displayFullScreenView === true)\r\n\t\t{\r\n\t\t\tdrawerElement.style.borderTopLeftRadius = '0px';\r\n\t\t\tdrawerElement.style.borderBottomLeftRadius = '0px';\r\n\t\t}\r\n\r\n\t\tconst tableTitleHeight: number = 38.5;\r\n\t\tconst drawerWidthPercentage: number =\r\n\t\t\tdisplayFullScreenView === true\r\n\t\t\t\t? 100\r\n\t\t\t\t: 90;\r\n\r\n\t\tdrawerElement.style.top =\r\n\t\t\ttableTitleHeight\r\n\t\t\t\t+ this.pixelIdentifier;\r\n\t\tdrawerElement.style.right =\r\n\t\t\t0\r\n\t\t\t\t+ this.pixelIdentifier;\r\n\t\tdrawerElement.style.width =\r\n\t\t\t`calc(${drawerWidthPercentage}%`;\r\n\t\tdrawerElement.style.height =\r\n\t\t\t`calc(100% - ${tableTitleHeight}px)`;\r\n\t}\r\n\r\n\t/**\r\n\t * Configures the selected item display mode based on the current\r\n\t * display mode.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async configureSelectedItemDisplayMode(): Promise\r\n\t{\r\n\t\tlet expandDefinition: ITableExpandDefinition;\r\n\r\n\t\tswitch(this.displayMode)\r\n\t\t{\r\n\t\t\tcase AppConstants.displayMode.create:\r\n\t\t\t\texpandDefinition = this.tableDefinitions.actions.create;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.displayMode.update:\r\n\t\t\t\texpandDefinition = this.tableDefinitions.actions.update;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.displayMode.delete:\r\n\t\t\t\texpandDefinition = this.tableDefinitions.actions.delete;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\texpandDefinition = this.tableDefinitions.actions.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(expandDefinition))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.formlyDefinitions =\r\n\t\t\t{\r\n\t\t\t\tdefinition:\r\n\t\t\t\t\texpandDefinition.definition,\r\n\t\t\t\tlayout:\r\n\t\t\t\t\t!AnyHelper.isNull(expandDefinition.layout)\r\n\t\t\t\t\t\t? FormlyHelper.getFormlyLayout(\r\n\t\t\t\t\t\t\texpandDefinition.layout,\r\n\t\t\t\t\t\t\tthis.pageContext)\r\n\t\t\t\t\t\t: [],\r\n\t\t\t\tadditionalLayout:\r\n\t\t\t\t\t!AnyHelper.isNull(expandDefinition.additionalLayout)\r\n\t\t\t\t\t\t? FormlyHelper.getFormlyLayout(\r\n\t\t\t\t\t\t\texpandDefinition.additionalLayout,\r\n\t\t\t\t\t\t\tthis.pageContext)\r\n\t\t\t\t\t\t: []\r\n\t\t\t};\r\n\t\tthis.dynamicComponent =\r\n\t\t\texpandDefinition.component;\r\n\t\tthis.expandActions =\r\n\t\t\texpandDefinition.items;\r\n\t\tthis.customContext =\r\n\t\t\texpandDefinition.customContext;\r\n\r\n\t\tif (this.displayMode !== AppConstants.displayMode.delete)\r\n\t\t{\r\n\t\t\tawait this.setAdditionalSelectedItemData(\r\n\t\t\t\texpandDefinition);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.formlyDefinitions.layout =\r\n\t\t\t\t\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customMessage,\r\n\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\tthis.tableDefinitions.actions?.delete\r\n\t\t\t\t\t\t\t\t\t\t?.deleteStatementPromise)\r\n\t\t\t\t\t\t\t\t\t? await this.tableDefinitions.actions\r\n\t\t\t\t\t\t\t\t\t\t.delete.deleteStatement()\r\n\t\t\t\t\t\t\t\t\t: await StringHelper\r\n\t\t\t\t\t\t\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t\t\t\t\t\t\t\t.delete.deleteStatementPromise,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.field)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\tthis.expandTitle =\r\n\t\t\t(AnyHelper.isFunction(this.tableDefinitions.expandTitle))\r\n\t\t\t\t? (this.tableDefinitions.expandTitle)()\r\n\t\t\t\t: this.tableDefinitions.expandTitle;\r\n\r\n\t\tthis.sidebarVisible = true;\r\n\t\tthis.createVisible =\r\n\t\t\tthis.displayMode === AppConstants.displayMode.create;\r\n\t\tthis.setTableDimensions();\r\n\t\tthis.fireChanges();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() => this.updateSidebarLocation(),\r\n\t\t\tthis.sidebarUpdateDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the view or update commands should be run based on the\r\n\t * current table definitions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * True if the view or update commands should be run, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async shouldRunViewOrUpdateCommands(): Promise\r\n\t{\r\n\t\tif (this.displayMode === AppConstants.displayMode.view\r\n\t\t\t&& this.tableDefinitions.actions?.view\r\n\t\t\t\t?.disabledExpandItem === true)\r\n\t\t{\r\n\t\t\tawait this.tableDefinitions.actions\r\n\t\t\t\t.view.items[0].command();\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.displayMode === AppConstants.displayMode.update\r\n\t\t\t&& this.tableDefinitions.actions?.update\r\n\t\t\t\t?.disabledExpandItem === true)\r\n\t\t{\r\n\t\t\tawait this.tableDefinitions.actions\r\n\t\t\t\t.update.items[0].command();\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the item creation command string should be run based on\r\n\t * the current table definitions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * True if the item creation command string should be run, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async shouldHandleItemCreationCommandString(): Promise\r\n\t{\r\n\t\tif (this.displayMode === AppConstants.displayMode.create\r\n\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.tableDefinitions.actions?.create?.commandString))\r\n\t\t{\r\n\t\t\tawait StringHelper\r\n\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t\t\t.create.commandString,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tthis.field);\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the item drill in action should be run based on the\r\n\t * current table definitions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * True if the item drill in action should be run, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate async shouldHandleItemDrillInAction(): Promise\r\n\t{\r\n\t\tif (this.displayMode === AppConstants.displayMode.view\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\tthis.tableDefinitions.actions?.drillIn))\r\n\t\t{\r\n\t\t\tconst drillInCommand: void | Promise =\r\n\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tthis.tableDefinitions.actions.drillIn.command)\r\n\t\t\t\t\t? this.tableDefinitions.actions.drillIn.command({})\r\n\t\t\t\t\t: StringHelper\r\n\t\t\t\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tthis.tableDefinitions.actions\r\n\t\t\t\t\t\t\t\t\t.drillIn.commandString,\r\n\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\tthis.field);\r\n\r\n\t\t\tawait drillInCommand;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the item selection should be handled based on the\r\n\t * current table definitions.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * True if the item selection should be handled, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate shouldHandleItemSelection(): boolean\r\n\t{\r\n\t\tif (this.displayMode === AppConstants.displayMode.view\r\n\t\t\t&& AnyHelper.isFunction(\r\n\t\t\t\tthis.tableDefinitions.itemSelection?.selectedItemEvent))\r\n\t\t{\r\n\t\t\tif (this.tableDefinitions.itemSelection.selectionMode ===\r\n\t\t\t\tAppConstants.itemSelectionMode.single)\r\n\t\t\t{\r\n\t\t\t\tthis.tableDefinitions.itemSelection.selectedItemEvent(\r\n\t\t\t\t\tthis.selectedItem,\r\n\t\t\t\t\tfalse);\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableDefinitions.itemSelection.selectedItemEvent(\r\n\t\t\t\tthis.selectedItem,\r\n\t\t\t\ttrue);\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the selected item should be toggled based on the\r\n\t * current table definitions.\r\n\t *\r\n\t * @param {any} item\r\n\t * The item to toggle the selected item for.\r\n\t * @returns {boolean}\r\n\t * True if the selected item should be toggled, otherwise false.\r\n\t * @memberof CommonTableComponent\r\n\t */\r\n\tprivate shouldToggleSelectedItem(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tthis.tableDefinitions.itemSelection)\r\n\t\t\t&& this.tableDefinitions.itemSelection.selectionMode ===\r\n\t\t\t\tAppConstants.itemSelectionMode.single\r\n\t\t\t&& !AnyHelper.isNull(this.selectedItem)\r\n\t\t\t&& item[this.rowIdentifier] ===\r\n\t\t\t\tthis.selectedItem[this.rowIdentifier])\r\n\t\t{\r\n\t\t\tthis.selectedItem = null;\r\n\r\n\t\t\tthis.itemSelected.emit(\r\n\t\t\t\tthis.tableDefinitions\r\n\t\t\t\t\t.itemSelection\r\n\t\t\t\t\t?.capturedSelectedItemEventPromise);\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\r\n\t\t
    1),\r\n\t\t\t\t'first-level-item': (dataLevel <= 4)\r\n\t\t\t}\"\r\n\t\t\t*ngIf=\"isNumericKey === true\">\r\n\r\n\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t 2 && dataLevel <= 4),\r\n\t\t\t\t\t\t\t'panel-title': (dataLevel <= 2)\r\n\t\t\t\t\t\t}\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{getObjectDisplayType()}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t 2),\r\n\t\t\t\t\t\t'panel-title': (dataLevel <= 2)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t[pTooltip]=\"objectDifferenceDescription\"\r\n\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\tmobileTooltip\r\n\t\t\t\t\t#tooltipDirective=\"mobileTooltip\"\r\n\t\t\t\t\t(tap)=\"tooltipDirective.mobileTooltipToggle()\"\r\n\t\t\t\t\t(click)=\"tooltipDirective.preventDefault($event)\"\r\n\t\t\t\t\t*ngIf=\"objectDifferenceDescription !== ''\">\r\n\t\t\t\t\t{{objectDifferenceDescription}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    2)\r\n\t\t\t}\">\r\n\r\n\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t 2 && dataLevel <= 4),\r\n\t\t\t\t\t\t'panel-title': (dataLevel <= 2)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t[pTooltip]=\"getLabelValue(mappedDifference.key)\"\r\n\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\tmobileTooltip\r\n\t\t\t\t\t#tooltipDirective=\"mobileTooltip\"\r\n\t\t\t\t\t(tap)=\"tooltipDirective.mobileTooltipToggle()\"\r\n\t\t\t\t\t(click)=\"tooltipDirective.preventDefault($event)\">\r\n\t\t\t\t\t{{getLabelValue(mappedDifference.key)}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t 1 && dataLevel <= 3),\r\n\t\t\t\t\t\t\t\t\t\t\t'panel-title': (dataLevel <= 1)\r\n\t\t\t\t\t\t\t\t\t\t}\">\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{getObjectDisplayType(itemValue)}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t 1),\r\n\t\t\t\t\t\t\t\t\t'panel-title': (dataLevel <= 1)\r\n\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"itemValue.objectDifferenceDescription\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\tmobileTooltip\r\n\t\t\t\t\t\t\t\t#tooltipDirective=\"mobileTooltip\"\r\n\t\t\t\t\t\t\t\t(tap)=\"tooltipDirective.mobileTooltipToggle()\"\r\n\t\t\t\t\t\t\t\t(click)=\"tooltipDirective.preventDefault($event)\"\r\n\t\t\t\t\t\t\t\t*ngIf=\"itemValue.objectDifferenceDescription !== ''\">\r\n\t\t\t\t\t\t\t\t{{itemValue.objectDifferenceDescription}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    0\">\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t 1 && dataLevel <= 3),\r\n\t\t\t\t\t\t\t\t\t\t\t'panel-title': (dataLevel <= 1)\r\n\t\t\t\t\t\t\t\t\t\t}\">\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{{getObjectDisplayType(itemValue)}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t 1),\r\n\t\t\t\t\t\t\t\t\t'panel-title': (dataLevel <= 1)\r\n\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"itemValue.objectDifferenceDescription\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\tmobileTooltip\r\n\t\t\t\t\t\t\t\t#tooltipDirective=\"mobileTooltip\"\r\n\t\t\t\t\t\t\t\t(tap)=\"tooltipDirective.mobileTooltipToggle()\"\r\n\t\t\t\t\t\t\t\t(click)=\"tooltipDirective.preventDefault($event)\"\r\n\t\t\t\t\t\t\t\t*ngIf=\"itemValue.objectDifferenceDescription !== ''\">\r\n\t\t\t\t\t\t\t\t{{itemValue.objectDifferenceDescription}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    2 || mappedDifference.difference != null)\r\n\t\t\t\t}\">\r\n\t\t\t\t 2 && dataLevel <= 4),\r\n\t\t\t\t\t\t'panel-title': (mappedDifference.difference == null && dataLevel <= 2),\r\n\t\t\t\t\t\t'column-label': (mappedDifference.difference != null)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t[pTooltip]=\"getLabelValue(mappedDifference.key)\"\r\n\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\tmobileTooltip\r\n\t\t\t\t\t#tooltipDirective=\"mobileTooltip\"\r\n\t\t\t\t\t(tap)=\"tooltipDirective.mobileTooltipToggle()\"\r\n\t\t\t\t\t(click)=\"tooltipDirective.preventDefault($event)\">\r\n\t\t\t\t\t{{getLabelValue(mappedDifference.key)}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{originalValue}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{updatedValue}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\r\n\t\t
    2)\r\n\t\t\t}\">\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tJsonSchemaHelper\r\n} from '@shared/helpers/json-schema.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDescriptionDisplayDefinition\r\n} from '@shared/interfaces/application-objects/description-display-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tIMappedDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/mapped-difference-display-definition.interface';\r\nimport {\r\n\tIModelDisplayDefinition\r\n} from '@shared/interfaces/application-objects/model-display-definition.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tisArray,\r\n\tisObject\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-difference-display',\r\n\ttemplateUrl: './difference-display.component.html',\r\n\tstyleUrls: [\r\n\t\t'./difference-display.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the difference display component.\r\n *\r\n * @export\r\n * @class DifferenceDisplayComponent\r\n */\r\nexport class DifferenceDisplayComponent implements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the difference display component.\r\n\t *\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service which is used to define module specific business\r\n\t * logic for display.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic moduleService: ModuleService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the mapped difference to be displayed in this component.\r\n\t *\r\n\t * @type {IMappedDifferenceDefinition}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t@Input() public mappedDifference: IMappedDifferenceDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the previous sibling to this mapped difference definition.\r\n\t *\r\n\t * @type {IMappedDifferenceDefinition}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t@Input() public previousSibling: IMappedDifferenceDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the current data level being displayed in this component.\r\n\t * This value is used for business logic and display definitions based\r\n\t * on data levels.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t@Input() public dataLevel: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets an event emitter that will be used to detect changes\r\n\t * in the component and trigger change detection.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t@Output() public readonly detectChanges: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not this component is\r\n\t * currently loading data. This value is used to display a loading\r\n\t * spinner while data is being loaded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not this difference is\r\n\t * based on an array index item. This value is used when nested array\r\n\t * level items are altered and signifies an updated nested value in this\r\n\t * array item.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic isNumericKey: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets a mapped parent value for this mapped difference.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic parentValue: any;\r\n\r\n\t/**\r\n\t * Gets or sets the model display specific to this difference display\r\n\t * based on a key value.\r\n\t *\r\n\t * @type {IModelDisplayDefinition}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic modelDisplayDefinition: IModelDisplayDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the object description for this difference. This is used\r\n\t * to display a friendly description of the object based on the schema\r\n\t * definition of the object.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic objectDifferenceDescription: string;\r\n\r\n\t/**\r\n\t * Gets or sets a value signifying whether or not the object level\r\n\t * name should be displayed. This is hidden when there are no differences\r\n\t * at the base level.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic displayObjectName: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the original value of the difference to be displayed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic originalValue: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the updated value of the difference to be displayed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic updatedValue: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the set of difference types that should display a nested label\r\n\t * display.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tprivate readonly labelledDifferenceTypes: string[] =\r\n\t\t[\r\n\t\t\tAppConstants.differenceTypes.date,\r\n\t\t\tAppConstants.differenceTypes.property\r\n\t\t];\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method will set values explicit to this implementation of the\r\n\t * difference display component at this level, for this difference.\r\n\t *\r\n\t * @async\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.parentValue =\r\n\t\t\tthis.mappedDifference.updatedParentValue;\r\n\t\tthis.modelDisplayDefinition =\r\n\t\t\tthis.mapModelDisplay();\r\n\t\tthis.isNumericKey =\r\n\t\t\t!isNaN(parseInt(\r\n\t\t\t\tthis.mappedDifference.key,\r\n\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\tif (this.isNumericKey === true\r\n\t\t\t&& this.mappedDifference.schemaDefinition.type\r\n\t\t\t\t!== AppConstants.propertyTypes.object)\r\n\t\t{\r\n\t\t\tthis.displayObjectName = false;\r\n\t\t\tthis.isNumericKey = false;\r\n\t\t\tthis.dataLevel++;\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis.detectChanges.emit();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.originalValue =\r\n\t\t\tawait this.getFormattedValue(\r\n\t\t\t\tthis.mappedDifference.difference?.originalValue);\r\n\t\tthis.updatedValue =\r\n\t\t\tawait this.getFormattedValue(\r\n\t\t\t\tthis.mappedDifference.difference?.updatedValue);\r\n\r\n\t\tthis.displayObjectName =\r\n\t\t\tthis.dataLevel !== 0\r\n\t\t\t\t|| (!AnyHelper.isNullOrWhitespace(this.originalValue)\r\n\t\t\t\t\t|| !AnyHelper.isNullOrWhitespace(this.updatedValue))\r\n\t\t\t\t|| this.mappedDifference.nestedDifferences.some(\r\n\t\t\t\t\t(mappedDifference: IMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t!AnyHelper.isNull(mappedDifference.difference)\r\n\t\t\t\t\t\t\t&& (this.labelledDifferenceTypes.includes(\r\n\t\t\t\t\t\t\t\tmappedDifference.difference.differenceType)\r\n\t\t\t\t\t\t\t\t|| this.isPrimitiveArrayDifference(\r\n\t\t\t\t\t\t\t\t\tmappedDifference)));\r\n\r\n\t\tawait this.handleArrayObjectDescriptions();\r\n\r\n\t\tthis.dataLevel++;\r\n\t\tthis.loading = false;\r\n\t\tthis.detectChanges.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a page context for this difference display component. This\r\n\t * context is used to pass data to dynamic components that are created\r\n\t * in this component.\r\n\t *\r\n\t * @param {any} itemValue\r\n\t * The item value that should be passed to the dynamic component.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * The page context that contains the source and data values for the\r\n\t * dynamic component.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic getPageContext(\r\n\t\titemValue: any):\r\n\t\tIDynamicComponentContext\r\n\t{\r\n\t\tconst pageContext: IDynamicComponentContext =\r\n\t\t\t{\r\n\t\t\t\tsource: this.context.source,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...this.context.data,\r\n\t\t\t\t\titem: itemValue\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn pageContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the array object descriptions for this difference display.\r\n\t * This method will set the object description for each item in the array\r\n\t * if the difference type is an array.\r\n\t *\r\n\t * @async\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic async handleArrayObjectDescriptions(): Promise\r\n\t{\r\n\t\tif (this.isNumericKey === true)\r\n\t\t{\r\n\t\t\tthis.objectDifferenceDescription =\r\n\t\t\t\tawait this.getObjectDescription();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.mappedDifference.difference\r\n\t\t\t?.differenceType !== AppConstants.differenceTypes.array)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle arrays of objects.\r\n\t\tif (isObject(this.mappedDifference.difference.originalValue[0])\r\n\t\t\t|| isObject(this.mappedDifference.difference.updatedValue[0]))\r\n\t\t{\r\n\t\t\tfor (const arrayItem of\r\n\t\t\t\tthis.mappedDifference.difference.originalValue)\r\n\t\t\t{\r\n\t\t\t\tarrayItem.objectDifferenceDescription =\r\n\t\t\t\t\tawait this.getObjectDescription(arrayItem);\r\n\t\t\t}\r\n\r\n\t\t\tfor (const arrayItem of\r\n\t\t\t\tthis.mappedDifference.difference.updatedValue)\r\n\t\t\t{\r\n\t\t\t\tarrayItem.objectDifferenceDescription =\r\n\t\t\t\t\tawait this.getObjectDescription(arrayItem);\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle arrays of primitive values.\r\n\t\tthis.mappedDifference.difference.differenceType =\r\n\t\t\tAppConstants.differenceTypes.property;\r\n\r\n\t\tthis.originalValue =\r\n\t\t\tawait this.getPrimitiveArrayValue(\r\n\t\t\t\tthis.mappedDifference.difference.originalValue);\r\n\t\tthis.updatedValue =\r\n\t\t\tawait this.getPrimitiveArrayValue(\r\n\t\t\t\tthis.mappedDifference.difference.updatedValue);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display valu from the description property of the schema\r\n\t * definition. If no value is found this will use the property name\r\n\t * and add spaces before all capital letters and convert the value to\r\n\t * proper case.\r\n\t *\r\n\t * @param {string} value\r\n\t * The camel case value that should be displayed as a friendly named\r\n\t * value if no label value is defined in the model display definition.\r\n\t * @returns {string}\r\n\t * The display value signifying the friendly name of the sent camelcase\r\n\t * value or label value if set.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic getLabelValue(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.modelDisplayDefinition?.label))\r\n\t\t{\r\n\t\t\treturn this.modelDisplayDefinition.label;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.toProperCase(value));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display value for a property value to display to the user.\r\n\t * This method will format based on the property schema definition of\r\n\t * output format.\r\n\t *\r\n\t * @async\r\n\t * @param {any} itemValue\r\n\t * The item value that should be cast into a formatted string.\r\n\t * @returns {Promise}\r\n\t * The formatted display value of the sent property value if set, or the\r\n\t * value unaltered if undefined.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic async getFormattedValue(\r\n\t\titemValue: any): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(itemValue))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.modelDisplayDefinition?.format))\r\n\t\t{\r\n\t\t\treturn this.mappedDifference.difference\r\n\t\t\t\t?.differenceType === AppConstants.differenceTypes.array\r\n\t\t\t\t? this.getPrimitiveArrayValue(\r\n\t\t\t\t\titemValue)\r\n\t\t\t\t: StringHelper.format(\r\n\t\t\t\t\titemValue,\r\n\t\t\t\t\tthis.modelDisplayDefinition.format);\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.modelDisplayDefinition?.formatPromise))\r\n\t\t{\r\n\t\t\treturn StringHelper.transformToDataPromise(\r\n\t\t\t\tthis.modelDisplayDefinition?.formatPromise,\r\n\t\t\t\tthis.getPageContext(itemValue));\r\n\t\t}\r\n\r\n\t\treturn itemValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display value for an object based on it's type and subType if\r\n\t * these values exist.\r\n\t *\r\n\t * @param {any} itemValue\r\n\t * The item that will be checked for a type and subType based definition.\r\n\t * @returns {string}\r\n\t * If the item holds a type or subtype, this will return the string\r\n\t * value containing those two combined values. If no type value exists\r\n\t * this will return as an empty string.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t public getObjectDisplayType(\r\n\t\titemValue: any): string\r\n\t{\r\n\t\tconst item: any =\r\n\t\t\titemValue || this.parentValue;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(item?.type))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\treturn this.getLabelValue(\r\n\t\t\titem.type\r\n\t\t\t\t+ (AnyHelper.isNullOrWhitespace(item.subType)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: ` - ${item.subType}`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an icon display for an item type from the model display\r\n\t * definition or schema definition.\r\n\t *\r\n\t * @param {any} itemValue\r\n\t * The item that will be checked for a type based icon value.\r\n\t * @returns {string}\r\n\t * If the item holds a type and is defined in the difference display\r\n\t * definition, this will return the mapped icon value.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\t public getObjectDisplayIcon(\r\n\t\titemValue: any): string\r\n\t{\r\n\t\tconst iconPrefix: string = 'fa fa-fw fa-';\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.modelDisplayDefinition?.icon))\r\n\t\t{\r\n\t\t\treturn `${iconPrefix}${this.modelDisplayDefinition?.icon}`;\r\n\t\t}\r\n\r\n\t\tconst item: any =\r\n\t\t\titemValue || this.parentValue;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.modelDisplayDefinition?.iconFunction))\r\n\t\t{\r\n\t\t\treturn iconPrefix\r\n\t\t\t\t+ StringHelper.transformToFunction(\r\n\t\t\t\t\tthis.modelDisplayDefinition.iconFunction,\r\n\t\t\t\t\tthis.getPageContext(item))(item);\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(item?.type))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst itemDefinition: any =\r\n\t\t\tJsonSchemaHelper.getArrayItemDefinition(\r\n\t\t\t\tthis.modelDisplayDefinition.schemaDefinition,\r\n\t\t\t\titem?.type);\r\n\r\n\t\treturn AnyHelper.isNull(itemDefinition?.icon)\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: `${iconPrefix}${itemDefinition.icon}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display value for an array of primitive values based on the\r\n\t * schema definition of the array item.\r\n\t *\r\n\t * @async\r\n\t * @param {any[]} arrayValue\r\n\t * The array value that should be cast into a formatted string.\r\n\t * @returns {Promise}\r\n\t * The formatted display value of the sent array value if set, or the\r\n\t * value unaltered if there is no description promise.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic async getPrimitiveArrayValue(\r\n\t\tarrayValue: any[]): Promise\r\n\t{\r\n\t\tconst descriptionPromise: string =\r\n\t\t\tthis.mappedDifference\r\n\t\t\t\t.schemaDefinition\r\n\t\t\t\t?.descriptionPromise;\r\n\r\n\t\tconst values: string[] = [];\r\n\t\tfor (const arrayItem of arrayValue)\r\n\t\t{\r\n\t\t\tconst primitiveValue: string =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(descriptionPromise)\r\n\t\t\t\t\t? StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\t\tarrayItem.toString()))\r\n\t\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\tdescriptionPromise,\r\n\t\t\t\t\t\tthis.getPageContext(\r\n\t\t\t\t\t\t\tarrayItem));\r\n\r\n\t\t\tvalues.push(primitiveValue);\r\n\t\t}\r\n\r\n\t\treturn values.join(\r\n\t\t\tAppConstants.characters.comma\r\n\t\t\t\t+ AppConstants.characters.space);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display value for an object based on the entity definition\r\n\t * schema properties for this object type. If no description property keys\r\n\t * are found or any value in the key is not set this will not display\r\n\t * the item level description. The description property type will always\r\n\t * display if set.\r\n\t *\r\n\t * @async\r\n\t * @param {any} itemValue\r\n\t * The item that should be cast into a friendly description in this view.\r\n\t * @returns {Promise}\r\n\t * The display value of the sent item as mapped in the module\r\n\t * level configurations. If any value of a description is null or empty,\r\n\t * this will return as an empty string.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tpublic async getObjectDescription(\r\n\t\titemValue: any = null): Promise\r\n\t{\r\n\t\tconst item: any =\r\n\t\t\titemValue || this.parentValue;\r\n\r\n\t\tlet descriptionType: string;\r\n\t\tlet descriptionPromise: string;\r\n\t\tlet propertyKeys:\r\n\t\t\tIDescriptionDisplayDefinition[];\r\n\t\tlet schemaDefinition: any =\r\n\t\t\tthis.modelDisplayDefinition.schemaDefinition;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.modelDisplayDefinition?.descriptionPropertyType)\r\n\t\t\t|| AnyHelper.isNull(schemaDefinition.items))\r\n\t\t{\r\n\t\t\tdescriptionType =\r\n\t\t\t\tthis.modelDisplayDefinition.descriptionPropertyType;\r\n\t\t\tpropertyKeys =\r\n\t\t\t\tthis.modelDisplayDefinition.descriptionPropertyKeys;\r\n\t\t\tdescriptionPromise =\r\n\t\t\t\tthis.modelDisplayDefinition.descriptionPromise;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tschemaDefinition =\r\n\t\t\t\tJsonSchemaHelper.getArrayItemDefinition(\r\n\t\t\t\t\tschemaDefinition,\r\n\t\t\t\t\titem?.type);\r\n\r\n\t\t\tdescriptionType =\r\n\t\t\t\tschemaDefinition.descriptionPropertyType;\r\n\t\t\tpropertyKeys =\r\n\t\t\t\tschemaDefinition.descriptionPropertyKeys;\r\n\t\t\tdescriptionPromise =\r\n\t\t\t\tschemaDefinition.descriptionPromise;\r\n\t\t}\r\n\r\n\t\tpropertyKeys = propertyKeys || [];\r\n\t\tconst schemaProperties: IKeyValuePair[] =\r\n\t\t\tJsonSchemaHelper.getSchemaProperties(\r\n\t\t\t\tschemaDefinition.properties);\r\n\r\n\t\tfor (const propertyKey of\r\n\t\t\tpropertyKeys.filter(\r\n\t\t\t\t(propertyData: IDescriptionDisplayDefinition) =>\r\n\t\t\t\t\tAnyHelper.isNull(propertyData.outputFormat)))\r\n\t\t{\r\n\t\t\tconst schemaProperty: IKeyValuePair =\r\n\t\t\t\tschemaProperties.find(\r\n\t\t\t\t\t(schema: any) =>\r\n\t\t\t\t\t\tschema.key.replace(\r\n\t\t\t\t\t\t\t'[]',\r\n\t\t\t\t\t\t\tAppConstants.empty) === propertyKey.key);\r\n\r\n\t\t\tpropertyKey.outputFormat =\r\n\t\t\t\tschemaProperty?.value.outputFormat\r\n\t\t\t\t\t|| AppConstants.formatTypes.none;\r\n\t\t}\r\n\r\n\t\tconst description: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(descriptionPromise)\r\n\t\t\t\t? ObjectHelper.getObjectDescription(\r\n\t\t\t\t\titem,\r\n\t\t\t\t\tpropertyKeys)\r\n\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\tdescriptionPromise,\r\n\t\t\t\t\tthis.getPageContext(item));\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(descriptionType)\r\n\t\t\t&& AnyHelper.isNullOrWhitespace(description))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\treturn (AnyHelper.isNullOrWhitespace(descriptionType)\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: `${descriptionType}:`)\r\n\t\t\t+ (AnyHelper.isNullOrWhitespace(description)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: ` ${description}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a difference definition, this will determine if this is a\r\n\t * primitive array difference.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} mappedDifference\r\n\t * The difference definition to check if this is a primitive array\r\n\t * difference.\r\n\t * @returns {boolean}\r\n\t * A value indicating if this is a primitive array difference.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tprivate isPrimitiveArrayDifference(\r\n\t\tmappedDifference: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\tif (mappedDifference.difference?.differenceType !==\r\n\t\t\tAppConstants.differenceTypes.array\r\n\t\t\t|| (!isArray(mappedDifference.difference?.originalValue)\r\n\t\t\t\t&& !isArray(mappedDifference.difference?.updatedValue)))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn !isObject(mappedDifference.difference?.originalValue[0])\r\n\t\t\t&& !isObject(mappedDifference.difference?.updatedValue[0]);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a mapped model display definition from the existing mapped\r\n\t * difference level schema definition. These values are used\r\n\t * to fine tune outputs displayed in this component.\r\n\t *\r\n\t * @returns {IModelDisplayDefinition}\r\n\t * The model display definition that represents this current mapped\r\n\t * difference schema definition.\r\n\t * @memberof DifferenceDisplayComponent\r\n\t */\r\n\tprivate mapModelDisplay(): IModelDisplayDefinition\r\n\t{\r\n\t\tconst schemaDefinition: any =\r\n\t\t\tthis.mappedDifference.schemaDefinition;\r\n\t\tconst label: string =\r\n\t\t\tschemaDefinition.description\r\n\t\t\t\t?? schemaDefinition.items?.description;\r\n\r\n\t\tconst modelDisplayDefinition: IModelDisplayDefinition =\r\n\t\t\t \r\n\t\t\t{\r\n\t\t\t\tschemaDefinition:\r\n\t\t\t\t\tschemaDefinition,\r\n\t\t\t\tlabel:\r\n\t\t\t\t\ttypeof label === AppConstants.propertyTypes.string\r\n\t\t\t\t\t\t? label\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\tformat:\r\n\t\t\t\t\tschemaDefinition.outputFormat\r\n\t\t\t\t\t\t?? schemaDefinition.items?.outputFormat,\r\n\t\t\t\tformatPromise:\r\n\t\t\t\t\tschemaDefinition.outputPromise\r\n\t\t\t\t\t\t?? schemaDefinition.items?.outputPromise,\r\n\t\t\t\ticon:\r\n\t\t\t\t\tschemaDefinition.icon\r\n\t\t\t\t\t\t?? schemaDefinition.items?.icon,\r\n\t\t\t\ticonFunction:\r\n\t\t\t\t\tschemaDefinition.iconFunction\r\n\t\t\t\t\t\t?? schemaDefinition.items?.iconFunction,\r\n\t\t\t\tdescriptionPropertyType:\r\n\t\t\t\t\tschemaDefinition.descriptionPropertyType\r\n\t\t\t\t\t\t?? schemaDefinition.items?.descriptionPropertyType,\r\n\t\t\t\tdescriptionPromise:\r\n\t\t\t\t\tschemaDefinition.descriptionPromise\r\n\t\t\t\t\t\t?? schemaDefinition.items?.descriptionPromise,\r\n\t\t\t\tdescriptionPropertyKeys:\r\n\t\t\t\t\tschemaDefinition.descriptionPropertyKeys\r\n\t\t\t\t\t\t?? schemaDefinition.items?.descriptionPropertyKeys\r\n\t\t\t};\r\n\r\n\t\treturn modelDisplayDefinition;\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tPrevious\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tNew\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\r\n\t
    \r\n\r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tJsonSchemaHelper\r\n} from '@shared/helpers/json-schema.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/difference-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIMappedDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/mapped-difference-display-definition.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tget,\r\n\thas,\r\n\tisArray,\r\n\tisObject\r\n} from 'lodash-es';\r\nimport {\r\n\tScrollPanel\r\n} from 'primeng/scrollpanel';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-differences-display',\r\n\ttemplateUrl: './differences-display.component.html',\r\n\tstyleUrls: [\r\n\t\t'./differences-display.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the differences display component.\r\n *\r\n * @export\r\n * @class DifferencesDisplayComponent\r\n * @implements {OnInit}\r\n */\r\nexport class DifferencesDisplayComponent implements OnInit\r\n{\r\n\t/** Creates a new instance of the differences display component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * Gets or sets the site layout service used for layout based displays\r\n\t * in this component.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not this should display\r\n\t * in the minimum width view regardless of the page content size.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public useMinimumWidth: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the friendly object name that will be defined as the first\r\n\t * level data item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public objectName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the initial object used to check for differences.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public initialObject: any;\r\n\r\n\t/**\r\n\t * Gets or sets the comparison object used to check for differences.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public comparisonObject: any;\r\n\r\n\t/**\r\n\t * Gets or sets the excluded difference properties. If sent as a partial\r\n\t * all instances that contain this will be removed otherwise exact\r\n\t * property location matches will be excluded.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public excludedDifferenceProperties: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of differences to be displayed in this component,\r\n\t * if this value is not sent the differences will be looked up and set\r\n\t * during component initialization based on the sent objects. The allows\r\n\t * for overrides on what the base difference logic will find.\r\n\t *\r\n\t * @type {IDifferenceDefinition[]}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public differences: IDifferenceDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition that is used for schema based display\r\n\t * definitions.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the detect changes event emitter that will be used to\r\n\t * signal that changes have been made and the parent component should\r\n\t * detect these changes.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@Output() public readonly detectChanges: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the layout menu scroller element reference\r\n\t * from the dom.\r\n\t *\r\n\t * @type {ScrollPanel}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t@ViewChild('DifferencesDisplayScroller')\r\n\tpublic differencesDisplayScrollPanel: ScrollPanel;\r\n\r\n\t/**\r\n\t * Gets or sets the set of mapped differences to be displayed in this\r\n\t * component. This value is built from the set of differences and used\r\n\t * as a view model in this component.\r\n\t *\r\n\t * @type {IMappedDifferenceDefinition[]}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic mappedDifferences: IMappedDifferenceDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not the scroll panel\r\n\t * is displayed in this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic scrollPanelDisplayed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not the component is\r\n\t * loading. This will be set to false after the component has been\r\n\t * initialized.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method will create differences if not sent and create the view\r\n\t * model of mapped differences.\r\n\t *\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.differences))\r\n\t\t{\r\n\t\t\tthis.differences =\r\n\t\t\t\tObjectHelper.getBusinessLogicDifferences(\r\n\t\t\t\t\tthis.objectName,\r\n\t\t\t\t\tthis.initialObject,\r\n\t\t\t\t\tthis.comparisonObject,\r\n\t\t\t\t\tthis.excludedDifferenceProperties);\r\n\t\t}\r\n\r\n\t\tthis.mapDifferences();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.scrollPanelDisplayed =\r\n\t\t\t\t\tthis.useMinimumWidth === false\r\n\t\t\t\t\t\t|| (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\tthis.differencesDisplayScrollPanel)\r\n\t\t\t\t\t\t\t&& this.differencesDisplayScrollPanel\r\n\t\t\t\t\t\t\t\t.scrollYRatio !== 1);\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\tthis.detectChanges.emit();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of changes, this will handle the changes and emit a\r\n\t * detect changes event.\r\n\t *\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic handleChanges(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.detectChanges.emit();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of difference definitions, this will split this into a\r\n\t * tree structure that allows display of these differences in this\r\n\t * component.\r\n\t *\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic mapDifferences(): void\r\n\t{\r\n\t\tconst mappedDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\tthis.differences.map(\r\n\t\t\t\t(difference: IDifferenceDefinition) =>\r\n\t\t\t\t\tthis.getMappedDifference(\r\n\t\t\t\t\t\tdifference));\r\n\r\n\t\tthis.mappedDifferences =\r\n\t\t\tthis.mapDifferenceLevel(\r\n\t\t\t\tmappedDifferences,\r\n\t\t\t\tthis.initialObject,\r\n\t\t\t\tthis.comparisonObject,\r\n\t\t\t\tthis.entityDefinition.dereferencedDataProperties);\r\n\r\n\t\tthis.mappedDifferences[0].nestedDifferences =\r\n\t\t\t[\r\n\t\t\t\t...this.sortDifferences(\r\n\t\t\t\t\tthis.mappedDifferences[0].nestedDifferences)\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Given an object and a set of mapped differences, this will split\r\n\t * the mapped differences into a by level tree structure for display\r\n\t * in this component.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition[]} mappedDifferenceDefinitions\r\n\t * The set of difference definitions that should be mapped at this level.\r\n\t * @param {any} initialObject\r\n\t * The initial object for comparison at this level.\r\n\t * @param {any} comparisonObject\r\n\t * The comparison object for comparison at this level.\r\n\t * @param {any} schemaDefinition\r\n\t * The schema definition that exists for this difference level.\r\n\t * @returns {IMappedDifferenceDefinition[]}\r\n\t * A full set of hierarchy based differences for this mapped difference\r\n\t * level.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tpublic mapDifferenceLevel(\r\n\t\tmappedDifferenceDefinitions: IMappedDifferenceDefinition[],\r\n\t\tinitialObject: any,\r\n\t\tcomparisonObject: any,\r\n\t\tschemaDefinition: any = null):\r\n\t\tIMappedDifferenceDefinition[]\r\n\t{\r\n\t\tconst rootLevelDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\tmappedDifferenceDefinitions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(mappedDifference: IMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\tmappedDifference.length === 1\r\n\t\t\t\t\t\t\t&& mappedDifferenceDefinitions.filter(\r\n\t\t\t\t\t\t\t\t(nestedDifference:\r\n\t\t\t\t\t\t\t\t\tIMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t\t\t\tnestedDifference.parts[0] ===\r\n\t\t\t\t\t\t\t\t\t\tmappedDifference.parts[0])\r\n\t\t\t\t\t\t\t\t.length === 1);\r\n\t\tconst mappedDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\tmappedDifferenceDefinitions\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(mappedDifference: IMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t!rootLevelDifferences.includes(mappedDifference));\r\n\r\n\t\tconst firstLevelParts: string[] =\r\n\t\t\t[\r\n\t\t\t\t...new Set(\r\n\t\t\t\t\tmappedDifferences\r\n\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t(mappedDifference: IMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t\t\tmappedDifference.parts[0]))\r\n\t\t\t];\r\n\t\tconst finalDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\trootLevelDifferences;\r\n\r\n\t\tfor (const firstLevelPart of firstLevelParts)\r\n\t\t{\r\n\t\t\tconst firstLevelDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\t\tmappedDifferences\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(mappedDifference: IMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t\tmappedDifference.length === 1\r\n\t\t\t\t\t\t\t\t&& mappedDifference.parts[0] ===\r\n\t\t\t\t\t\t\t\t\tfirstLevelPart);\r\n\t\t\tconst firstLevelDifference: IMappedDifferenceDefinition =\r\n\t\t\t\tfirstLevelDifferences.length > 0\r\n\t\t\t\t\t? firstLevelDifferences[0]\r\n\t\t\t\t\t: null;\r\n\t\t\tconst nestedDifferences: IMappedDifferenceDefinition[] =\r\n\t\t\t\tmappedDifferences\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(mappedDifference:\r\n\t\t\t\t\t\t\tIMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t\tmappedDifference.parts.length > 1\r\n\t\t\t\t\t\t\t\t&& mappedDifference.parts[0] ===\r\n\t\t\t\t\t\t\t\t\tfirstLevelPart);\r\n\r\n\t\t\tconst mappedValues: {\r\n\t\t\t\tinitialLevelValue: any;\r\n\t\t\t\tcomparisonLevelValue: any;\r\n\t\t\t} = this.mapParentValues(\r\n\t\t\t\tinitialObject,\r\n\t\t\t\tcomparisonObject,\r\n\t\t\t\tfirstLevelPart);\r\n\r\n\t\t\tlet newModelDisplayDefinition: any = schemaDefinition;\r\n\t\t\tif (firstLevelPart !== this.objectName)\r\n\t\t\t{\r\n\t\t\t\tnewModelDisplayDefinition =\r\n\t\t\t\t\tthis.getSchemaDefinition(\r\n\t\t\t\t\t\tfirstLevelPart,\r\n\t\t\t\t\t\tschemaDefinition,\r\n\t\t\t\t\t\tmappedValues.comparisonLevelValue);\r\n\t\t\t}\r\n\r\n\t\t\tfinalDifferences.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: firstLevelPart,\r\n\t\t\t\t\tlength: 1,\r\n\t\t\t\t\tparts: [firstLevelPart],\r\n\t\t\t\t\tdifference:\r\n\t\t\t\t\t\tfirstLevelDifference?.difference,\r\n\t\t\t\t\toriginalParentValue:\r\n\t\t\t\t\t\tmappedValues.initialLevelValue,\r\n\t\t\t\t\tupdatedParentValue:\r\n\t\t\t\t\t\tmappedValues.comparisonLevelValue,\r\n\t\t\t\t\tschemaDefinition:\r\n\t\t\t\t\t\tnewModelDisplayDefinition,\r\n\t\t\t\t\tnestedDifferences:\r\n\t\t\t\t\t\tthis.mapDifferenceLevel(\r\n\t\t\t\t\t\t\tnestedDifferences\r\n\t\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t\t(mappedDifference:\r\n\t\t\t\t\t\t\t\t\t\tIMappedDifferenceDefinition) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tmappedDifference.difference.key =\r\n\t\t\t\t\t\t\t\t\t\t\tmappedDifference.key.replace(\r\n\t\t\t\t\t\t\t\t\t\t\t\t`${firstLevelPart}.`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst childDifference:\r\n\t\t\t\t\t\t\t\t\t\t\tIMappedDifferenceDefinition =\r\n\t\t\t\t\t\t\t\t\t\t\tthis.getMappedDifference(\r\n\t\t\t\t\t\t\t\t\t\t\t\tmappedDifference.difference,\r\n\t\t\t\t\t\t\t\t\t\t\t\tmappedDifference);\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst newKey: string =\r\n\t\t\t\t\t\t\t\t\t\t\tchildDifference.difference.key;\r\n\t\t\t\t\t\t\t\t\t\tif (newKey.split(\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.characters.period)\r\n\t\t\t\t\t\t\t\t\t\t\t.length === 1)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tchildDifference\r\n\t\t\t\t\t\t\t\t\t\t\t\t.schemaDefinition =\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.getSchemaDefinition(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnewKey,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnewModelDisplayDefinition,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmappedValues\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.comparisonLevelValue);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn childDifference;\r\n\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\tmappedValues.initialLevelValue,\r\n\t\t\t\t\t\t\tmappedValues.comparisonLevelValue,\r\n\t\t\t\t\t\t\tnewModelDisplayDefinition)\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn finalDifferences;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a difference definition and if this is a remap, an initial\r\n\t * mapped difference definition, this will create and return a mapped\r\n\t * difference definition to be used for display in this component.\r\n\t *\r\n\t * @param {IDifferenceDefinition} difference\r\n\t * The difference definition to be converted into a mapped difference\r\n\t * definition.\r\n\t * @param {IMappedDifferenceDefinition} initialMappedDifference\r\n\t * If sent this will be the current mapped difference for this difference\r\n\t * definition. This value defaults to null for use in the initial mapped\r\n\t * difference definition creation.\r\n\t * @returns {IMappedDifferenceDefinition}\r\n\t * A mapped difference definition defining the difference definition or\r\n\t * the property level of the differences nested below it.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\t private getMappedDifference(\r\n\t\tdifference: IDifferenceDefinition,\r\n\t\tinitialMappedDifference: IMappedDifferenceDefinition = null):\r\n\t\tIMappedDifferenceDefinition\r\n\t{\r\n\t\tconst splitKeys: string[] =\r\n\t\t\tdifference.key.split(\r\n\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\t// If this is the initial difference creation,\r\n\t\t// Remove structural properties that the user does not see.\r\n\t\tif (AnyHelper.isNull(initialMappedDifference))\r\n\t\t{\r\n\t\t\tdifference.key =\r\n\t\t\t\tdifference.key\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t`${this.objectName}.`,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.characteristics}.`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\t\t}\r\n\r\n\t\t const mappedDifference: IMappedDifferenceDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tkey: difference.key,\r\n\t\t\t\tlength: splitKeys.length,\r\n\t\t\t\tparts: splitKeys,\r\n\t\t\t\tdifference: difference,\r\n\t\t\t\tnestedDifferences: []\r\n\t\t\t};\r\n\r\n\t\treturn mappedDifference;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a key and current schema definition value, this will find the\r\n\t * schema definition associated to this item. If this is an item type\r\n\t * based definition such as from an any of, this will get the schema\r\n\t * definition matching the sent difference object type.\r\n\t *\r\n\t * @param {string} nestedSchemaKey\r\n\t * The key to find in this sent schema definition.\r\n\t * @param {any} currentSchemaDefinition\r\n\t * The current schema definition to be searched.\r\n\t * @param {any} differenceObject\r\n\t * The current object value that holds this schema key.\r\n\t * @returns {any}\r\n\t * The schema definition matching found via the nested schema key.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate getSchemaDefinition(\r\n\t\tnestedSchemaKey: string,\r\n\t\tcurrentSchemaDefinition: any,\r\n\t\tdifferenceObject: any): any\r\n\t{\r\n\t\t// Handle indexed by type lookups.\r\n\t\tif (!isNaN(parseInt(nestedSchemaKey, AppConstants.parseRadix)))\r\n\t\t{\r\n\t\t\tconst matchingArrayItem: any =\r\n\t\t\t\tJsonSchemaHelper.getArrayItemDefinition(\r\n\t\t\t\t\tcurrentSchemaDefinition,\r\n\t\t\t\t\tdifferenceObject?.type);\r\n\r\n\t\t\treturn matchingArrayItem;\r\n\t\t}\r\n\r\n\t\t// Catch natural level definitions.\r\n\t\tconst propertyValue: any =\r\n\t\t\tJsonSchemaHelper.getSchemaDefinition(\r\n\t\t\t\tcurrentSchemaDefinition,\r\n\t\t\t\tnestedSchemaKey);\r\n\r\n\t\treturn propertyValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a key that has been cleaned for display, ensure we can find\r\n\t * the value and return the mapped property.\r\n\t *\r\n\t * @param {any} objectValue\r\n\t * The object value to get a decorated property for.\r\n\t * @param {string} key\r\n\t * The key to get a property value for.\r\n\t * @returns {any}\r\n\t * The matching property value regardles of cleaned key values.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate getCleanedProperty(\r\n\t\tobjectValue: any,\r\n\t\tkey: string): any\r\n\t{\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase has(\r\n\t\t\t\tobjectValue,\r\n\t\t\t\t`${AppConstants.commonProperties.characteristics}.${key}`):\r\n\t\t\t\treturn get(\r\n\t\t\t\t\tobjectValue,\r\n\t\t\t\t\t`${AppConstants.commonProperties.characteristics}.${key}`);\r\n\t\t\tcase has(\r\n\t\t\t\tobjectValue,\r\n\t\t\t\t`${AppConstants.nestedDataIdentifier}${key}`):\r\n\t\t\t\treturn get(\r\n\t\t\t\t\tobjectValue,\r\n\t\t\t\t\t`${AppConstants.nestedDataIdentifier}${key}`);\r\n\t\t\tdefault:\r\n\t\t\t\treturn get(objectValue, key);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial and comparison object, this will map and return the\r\n\t * parent values based on the sent key part.\r\n\t *\r\n\t * @param {any} initialObject\r\n\t * The initial object to search for a matching key property.\r\n\t * @param {any} comparisonObject\r\n\t * The comparison object to search for a matching key property.\r\n\t * @param {string} keyPart\r\n\t * The key part to map from the initial and comparison objects.\r\n\t * @returns { initialLevelValue: any; comparisonLevelValue: any }\r\n\t * A mapped object holding the initial and comparison level values for the\r\n\t * sent key part.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate mapParentValues(\r\n\t\tinitialObject: any,\r\n\t\tcomparisonObject: any,\r\n\t\tkeyPart: string): { initialLevelValue: any; comparisonLevelValue: any }\r\n\t{\r\n\t\tlet initialLevelValue: any = initialObject;\r\n\t\tlet comparisonLevelValue: any = comparisonObject;\r\n\t\tif (keyPart !== this.objectName)\r\n\t\t{\r\n\t\t\tlet updatedArrayItem: any;\r\n\t\t\tif (isArray(comparisonLevelValue))\r\n\t\t\t{\r\n\t\t\t\t// Duplicate the key map logic in the object helper which\r\n\t\t\t\t// is based on a side by side array comparisons.\r\n\t\t\t\tconst sortedComparisonArray: any[] =\r\n\t\t\t\t\tObjectHelper.sortBusinessLogicArray(\r\n\t\t\t\t\t\tcomparisonLevelValue,\r\n\t\t\t\t\t\tObjectHelper.sortBusinessLogicArray(\r\n\t\t\t\t\t\t\tinitialLevelValue));\r\n\r\n\t\t\t\tupdatedArrayItem =\r\n\t\t\t\t\tthis.getCleanedProperty(\r\n\t\t\t\t\t\tsortedComparisonArray, keyPart);\r\n\t\t\t}\r\n\r\n\t\t\tif (isNaN(\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tkeyPart,\r\n\t\t\t\t\tAppConstants.parseRadix))\r\n\t\t\t\t|| AnyHelper.isNull(\r\n\t\t\t\t\tupdatedArrayItem?.resourceIdentifier))\r\n\t\t\t{\r\n\t\t\t\tinitialLevelValue =\r\n\t\t\t\t\tthis.getCleanedProperty(\r\n\t\t\t\t\t\tinitialLevelValue, keyPart);\r\n\t\t\t\tcomparisonLevelValue =\r\n\t\t\t\t\tthis.getCleanedProperty(\r\n\t\t\t\t\t\tcomparisonLevelValue, keyPart);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst updatedResourceIdentifier =\r\n\t\t\t\t\tupdatedArrayItem[\r\n\t\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier];\r\n\r\n\t\t\t\tinitialLevelValue =\r\n\t\t\t\t\tinitialLevelValue.find(\r\n\t\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\t\titem.resourceIdentifier ===\r\n\t\t\t\t\t\t\t\tupdatedResourceIdentifier);\r\n\t\t\t\tcomparisonLevelValue =\r\n\t\t\t\t\tcomparisonLevelValue.find(\r\n\t\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\t\titem.resourceIdentifier ===\r\n\t\t\t\t\t\t\t\tupdatedResourceIdentifier);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tinitialLevelValue: initialLevelValue,\r\n\t\t\tcomparisonLevelValue: comparisonLevelValue\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of mapped differences, this will sort these differences\r\n\t * based on the type of difference and the number of nested differences\r\n\t * that exist.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition[]} mappedDifferenceDefinitions\r\n\t * The set of mapped differences to sort based on the type of difference\r\n\t * and the number of nested differences.\r\n\t * @returns {IMappedDifferenceDefinition[]}\r\n\t * A sorted set of mapped differences based on the type of difference and\r\n\t * the number of nested differences.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate sortDifferences(\r\n\t\tmappedDifferenceDefinitions: IMappedDifferenceDefinition[]):\r\n\t\tIMappedDifferenceDefinition[]\r\n\t{\r\n\t\tif (AnyHelper.isNull(mappedDifferenceDefinitions)\r\n\t\t\t|| mappedDifferenceDefinitions.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tmappedDifferenceDefinitions.sort(\r\n\t\t\t(itemOne: IMappedDifferenceDefinition,\r\n\t\t\t\titemTwo: IMappedDifferenceDefinition) =>\r\n\t\t\t{\r\n\t\t\t\t// Order by direct differences.\r\n\t\t\t\tif (this.directDifference(\r\n\t\t\t\t\titemOne,\r\n\t\t\t\t\titemTwo))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.directDifference(\r\n\t\t\t\t\titemTwo,\r\n\t\t\t\t\titemOne))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Order by difference level.\r\n\t\t\t\tif (this.levelDifference(\r\n\t\t\t\t\titemOne,\r\n\t\t\t\t\titemTwo))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.levelDifference(\r\n\t\t\t\t\titemTwo,\r\n\t\t\t\t\titemOne))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Place primitive arrays at the start always.\r\n\t\t\t\tif (this.primitiveArrayDifference(\r\n\t\t\t\t\titemOne,\r\n\t\t\t\t\titemTwo))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.primitiveArrayDifference(\r\n\t\t\t\t\titemTwo,\r\n\t\t\t\t\titemOne))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Place object arrays at the end always.\r\n\t\t\t\tif (this.objectArrayDifference(\r\n\t\t\t\t\titemOne,\r\n\t\t\t\t\titemTwo))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.objectArrayDifference(\r\n\t\t\t\t\titemTwo,\r\n\t\t\t\t\titemOne))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Place objects before arrays.\r\n\t\t\t\tif (itemOne.schemaDefinition?.type ===\r\n\t\t\t\t\tAppConstants.differenceTypes.object.toLowerCase()\r\n\t\t\t\t\t&& itemTwo.schemaDefinition?.type ===\r\n\t\t\t\t\t\tAppConstants.differenceTypes.array.toLowerCase())\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (itemTwo.schemaDefinition?.type ===\r\n\t\t\t\t\tAppConstants.differenceTypes.object.toLowerCase()\r\n\t\t\t\t\t&& itemOne.schemaDefinition?.type ===\r\n\t\t\t\t\t\tAppConstants.differenceTypes.array.toLowerCase())\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\r\n\t\tfor (const mappedDifferenceDefinition of mappedDifferenceDefinitions)\r\n\t\t{\r\n\t\t\tmappedDifferenceDefinition.nestedDifferences =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.sortDifferences(\r\n\t\t\t\t\t\tmappedDifferenceDefinition.nestedDifferences)\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn mappedDifferenceDefinitions;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a difference definition, this will determine if this is an\r\n\t * object array difference.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} mappedDifference\r\n\t * The difference definition to check if this is an object array\r\n\t * difference.\r\n\t * @returns {boolean}\r\n\t * A value indicating if this is an object array difference.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate isObjectArrayDifference(\r\n\t\tmappedDifference: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\tif (mappedDifference.difference?.differenceType !==\r\n\t\t\tAppConstants.differenceTypes.array\r\n\t\t\t|| (!isArray(mappedDifference.difference?.originalValue)\r\n\t\t\t\t&& !isArray(mappedDifference.difference?.updatedValue)))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn isObject(mappedDifference.difference?.originalValue[0])\r\n\t\t\t|| isObject(mappedDifference.difference?.updatedValue[0]);\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial item and comparison item, this will return true if\r\n\t * the item is larger in sort order than the comparison item due to\r\n\t * the comparison item being a direct property difference.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} item\r\n\t * The initial item to compare.\r\n\t * @param {IMappedDifferenceDefinition} comparisonItem\r\n\t * The comparison item.\r\n\t * @returns {boolean}\r\n\t * A value indicating if the item is larger than the comparison item\r\n\t * due to being a direct property difference.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate directDifference(\r\n\t\titem: IMappedDifferenceDefinition,\r\n\t\tcomparisonItem: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\treturn AnyHelper.isNull(item.difference)\r\n\t\t\t&& !AnyHelper.isNull(comparisonItem.difference)\r\n\t\t\t&& comparisonItem.difference.differenceType !==\r\n\t\t\t\tAppConstants.differenceTypes.array;\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial item and comparison item, this will return true if\r\n\t * the item is larger in sort order than the comparison item.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} item\r\n\t * The initial item to compare.\r\n\t * @param {IMappedDifferenceDefinition} comparisonItem\r\n\t * The comparison item.\r\n\t * @returns {boolean}\r\n\t * A value indicating if the item is larger than the comparison item\r\n\t * due to being a level difference.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate levelDifference(\r\n\t\titem: IMappedDifferenceDefinition,\r\n\t\tcomparisonItem: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\treturn (comparisonItem.nestedDifferences?.length ?? 0) > 0\r\n\t\t\t&& (item.nestedDifferences?.length ?? 0) === 0\r\n\t\t\t&& comparisonItem.schemaDefinition?.type !==\r\n\t\t\t\tAppConstants.differenceTypes.array.toLowerCase()\r\n\t\t\t&& AnyHelper.isNull(item.difference);\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial item and comparison item, this will return true if\r\n\t * the item is larger in sort order than the comparison item due to\r\n\t * the comparison item being an object array difference.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} item\r\n\t * The initial item to compare.\r\n\t * @param {IMappedDifferenceDefinition} comparisonItem\r\n\t * The comparison item.\r\n\t * @returns {boolean}\r\n\t * A value indicating if the item is larger than the comparison item\r\n\t * due to being an object array difference.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate objectArrayDifference(\r\n\t\titem: IMappedDifferenceDefinition,\r\n\t\tcomparisonItem: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\treturn this.isObjectArrayDifference(\r\n\t\t\titem)\r\n\t\t\t&& !this.isObjectArrayDifference(\r\n\t\t\t\tcomparisonItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial item and comparison item, this will return true if\r\n\t * the item is larger in sort order than the comparison item due to\r\n\t * the comparison item being a primitive array difference.\r\n\t *\r\n\t * @param {IMappedDifferenceDefinition} item\r\n\t * The initial item to compare.\r\n\t * @param {IMappedDifferenceDefinition} comparisonItem\r\n\t * The comparison item.\r\n\t * @returns {boolean}\r\n\t * A value indicating if the item is larger than the comparison item\r\n\t * due to being a primitive array difference.\r\n\t * @memberof DifferencesDisplayComponent\r\n\t */\r\n\tprivate primitiveArrayDifference(\r\n\t\titem: IMappedDifferenceDefinition,\r\n\t\tcomparisonItem: IMappedDifferenceDefinition): boolean\r\n\t{\r\n\t\tconst itemOneIsPrimitiveArray: boolean =\r\n\t\t\titem.difference?.differenceType ===\r\n\t\t\t\tAppConstants.differenceTypes.array\r\n\t\t\t\t&& !(isObject(item.difference?.originalValue[0])\r\n\t\t\t\t\t|| isObject(item.difference?.updatedValue[0]));\r\n\t\tconst itemTwoIsAPrimitiveArray: boolean =\r\n\t\t\tcomparisonItem.difference?.differenceType ===\r\n\t\t\t\tAppConstants.differenceTypes.array\r\n\t\t\t\t&& !(isObject(comparisonItem.difference?.originalValue[0])\r\n\t\t\t\t\t|| isObject(comparisonItem.difference?.updatedValue[0]));\r\n\r\n\t\treturn !itemOneIsPrimitiveArray\r\n\t\t\t&& itemTwoIsAPrimitiveArray;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tFormlyFieldConfig,\r\n\tFormlyFormOptions\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tstartWith\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-formly',\r\n\ttemplateUrl: './dynamic-formly.component.html',\r\n\tstyleUrls: [\r\n\t\t'./dynamic-formly.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component that generates a formly field view.\r\n *\r\n * @export\r\n * @class DynamicFormlyComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class DynamicFormlyComponent implements OnInit, OnDestroy,\r\n\tIDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the object containing the data for this formly display.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Input() public dataSet: any;\r\n\r\n\t/**\r\n\t * Gets or sets the initial data values sent to this component.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Input() public initialData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the object containing the layout schema for this formly\r\n\t * display.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Input() public layoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic formly component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicFormlyComponent,\r\n\t\tany>;\r\n\r\n\t/**\r\n\t * Gets or sets the validity changed event emitter. This will notify\r\n\t * listening components of a change in the display form validity.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Output() public validityChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the values changed event emitter. This will notify\r\n\t * listening components of a change in input data values.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\t@Output() public valuesChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the form group to be displayed in this component.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n\r\n\t/**\r\n\t * Gets or sets the formly options to be provided to formly field.\r\n\t *\r\n\t * @type {FormlyFormOptions}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic formlyOptions: FormlyFormOptions = {};\r\n\r\n\t/**\r\n\t * Gets or sets the observer of form validation changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic formValidityChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the observer of form value changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic formValueChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the delay for a debounced subject change.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tprivate readonly debounceDelay: number = 50;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method is used to watch for changes to the overall form validity.\r\n\t *\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.formValidityChanged.pipe(\r\n\t\t\tstartWith(false),\r\n\t\t\tdebounceTime(this.debounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\t(isValid: boolean) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.validityChanged.emit(isValid);\r\n\t\t\t\t});\r\n\r\n\t\tthis.formGroup.statusChanges.subscribe(\r\n\t\t\t(status: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.formValidityChanged.next(\r\n\t\t\t\t\tstatus === AppConstants.formControlStatus.valid\r\n\t\t\t\t\t\t|| status === AppConstants.formControlStatus.disabled);\r\n\t\t\t});\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.initialData?.data))\r\n\t\t{\r\n\t\t\tthis.valuesChanged.emit(\r\n\t\t\t\t!ObjectHelper.checkBusinessLogicEquality(\r\n\t\t\t\t\tthis.initialData.data,\r\n\t\t\t\t\tthis.dataSet.data));\r\n\r\n\t\t\tthis.formValueChanged.pipe(\r\n\t\t\t\tdebounceTime(this.debounceDelay))\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.valuesChanged.emit(\r\n\t\t\t\t\t\t\t!ObjectHelper.checkBusinessLogicEquality(\r\n\t\t\t\t\t\t\t\tthis.initialData.data,\r\n\t\t\t\t\t\t\t\tthis.dataSet.data));\r\n\t\t\t\t\t});\r\n\r\n\t\t\tthis.formGroup.valueChanges.subscribe(\r\n\t\t\t\t(_newData: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.formValueChanged.next();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.initializeCustomDataControls();\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.formGroup.markAllAsTouched();\r\n\t\t\tthis.formGroup.updateValueAndValidity();\r\n\t\t\tFormlyHelper.fireViewCheck(\r\n\t\t\t\tthis.layoutSchema);\r\n\t\t},\r\n\t\tthis.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy interface.\r\n\t * This completes any watched subjects to free memory.\r\n\t *\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.formValidityChanged.complete();\r\n\t\tthis.formValueChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent formly layout this will set the context in all fields\r\n\t * and nested fields found in this layout.\r\n\t *\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tpublic initializeCustomDataControls(): void\r\n\t{\r\n\t\tthis.layoutSchema.forEach(\r\n\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tfield.props =\r\n\t\t\t\t\tfield.props || {};\r\n\r\n\t\t\t\tfield.props.context = this.context;\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(field.asyncValidators))\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const asyncValidator\r\n\t\t\t\t\t\tof Object.keys(field.asyncValidators))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!AnyHelper.isFunction(\r\n\t\t\t\t\t\t\tfield.asyncValidators[asyncValidator]\r\n\t\t\t\t\t\t\t\t.expression))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst asyncValidationPromise =\r\n\t\t\t\t\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\t\t\t\t\tfield.asyncValidators[\r\n\t\t\t\t\t\t\t\t\t\tasyncValidator].expression,\r\n\t\t\t\t\t\t\t\t\tthis.context);\r\n\r\n\t\t\t\t\t\t\tfield.asyncValidators[asyncValidator]\r\n\t\t\t\t\t\t\t\t.expression =\r\n\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tasyncValidationPromise(control, field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setContextInChildren(\r\n\t\t\t\t\tfield);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent formly layout this will set the context of all fields and\r\n\t * nested fields found in this layout. This set context will be called\r\n\t * recursively for each child of the sent field.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be set the context for along with all children.\r\n\t * @memberof DynamicFormlyComponent\r\n\t */\r\n\tprivate setContextInChildren(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\tfield.fieldGroup?.forEach(\r\n\t\t\t(fieldConfig: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tfieldConfig.props =\r\n\t\t\t\t\tfieldConfig.props || {};\r\n\r\n\t\t\t\tfieldConfig.props.context = this.context;\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(fieldConfig.asyncValidators))\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const asyncValidator\r\n\t\t\t\t\t\tof Object.keys(fieldConfig.asyncValidators))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!AnyHelper.isFunction(\r\n\t\t\t\t\t\t\tfieldConfig.asyncValidators[asyncValidator]\r\n\t\t\t\t\t\t\t\t.expression))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst asyncValidationPromise =\r\n\t\t\t\t\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\t\t\t\t\tfieldConfig.asyncValidators[\r\n\t\t\t\t\t\t\t\t\t\tasyncValidator].expression,\r\n\t\t\t\t\t\t\t\t\tthis.context);\r\n\r\n\t\t\t\t\t\t\tfieldConfig.asyncValidators[asyncValidator]\r\n\t\t\t\t\t\t\t\t.expression =\r\n\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tasyncValidationPromise(control, field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setContextInChildren(\r\n\t\t\t\t\tfieldConfig);\r\n\t\t\t});\r\n\t}\r\n}","\r\n","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tComponentRef,\r\n\tInput,\r\n\tOnChanges,\r\n\tSimpleChanges,\r\n\tViewContainerRef\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@shared/dynamic-components/dynamic-component.lookup';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-component',\r\n\ttemplateUrl: './dynamic.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the dynamic component.\r\n *\r\n * @export\r\n * @implements {OnChanges}\r\n * @implements {AfterViewInit}\r\n * @class DynamicComponent\r\n */\r\nexport class DynamicComponent\r\nimplements OnChanges, AfterViewInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the DynamicComponent class.\r\n\t *\r\n\t * @param {ViewContainerRef} viewContainerReference\r\n\t * The injected view container reference.\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic readonly viewContainerReference: ViewContainerRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component context of the current dynamically\r\n\t * displayed component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component to be displayed at runtime.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\t@Input() public displayComponent: any;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value for external inputs.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\t@Input() public loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the overload that will display a loader in this component.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\t@Input() public showLoader: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the reference to the component that will be displayed\r\n\t * in this dynamic component.\r\n\t *\r\n\t * @type {ComponentRef}\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\tpublic componentReference: ComponentRef;\r\n\r\n\t/**\r\n\t * Implements the after view initialization interface.\r\n\t * This method is used to load and set context data for the selected\r\n\t * display component into the selected dynamic element.\r\n\t *\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\tpublic async ngAfterViewInit(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.displayComponent))\r\n\t\t{\r\n\t\t\tthis.viewContainerReference?.clear();\r\n\t\t\tthis.componentReference = null;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tif (typeof(this.displayComponent) ===\r\n\t\t\t\t\tAppConstants.variableTypes.string)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.componentReference =\r\n\t\t\t\t\t\tthis.viewContainerReference.createComponent(\r\n\t\t\t\t\t\t\tawait DynamicComponentLookup\r\n\t\t\t\t\t\t\t\t.components[this.displayComponent]());\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.componentReference =\r\n\t\t\t\t\t\tthis.viewContainerReference.createComponent(\r\n\t\t\t\t\t\t\tthis.displayComponent);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t(>\r\n\t\t\t\t\tthis.componentReference.instance).context = this.context;\r\n\r\n\t\t\t\tthis.componentReference.changeDetectorRef.detectChanges();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/* *\r\n\t * Implements the on changes interface.\r\n\t * This method is used to clear any currently displayed component and\r\n\t * refresh this view when the component display changes at runtime.\r\n\t *\r\n\t * @memberof DynamicComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tchanges: SimpleChanges): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(changes.displayComponent?.previousValue)\r\n\t\t\t&& changes.displayComponent?.previousValue\r\n\t\t\t\t!== changes.displayComponent?.currentValue)\r\n\t\t{\r\n\t\t\tthis.viewContainerReference?.clear();\r\n\t\t\tthis.ngAfterViewInit();\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tDynamicFormlyComponent\r\n} from '@shared/components/dynamic-formly/dynamic-formly.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-search-filter',\r\n\ttemplateUrl: './search-filter.component.html',\r\n\tstyleUrls: ['./search-filter.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the session component.\r\n *\r\n * @export\r\n * @class SearchFilterComponent\r\n * @implements {OnInit}\r\n */\r\nexport class SearchFilterComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the search filter component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic formly component.\r\n\t *\r\n\t * @type {DynamicFormlyComponent}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@ViewChild('DynamicFormlyComponent')\r\n\tpublic dynamicFormlyComponent: DynamicFormlyComponent;\r\n\r\n\t/**\r\n\t * Gets or sets the search available options.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Input() public searchOptions: object[];\r\n\r\n\t/**\r\n\t * Gets or sets the loaded category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Input() public loadedCategoryOption: string;\r\n\r\n\t/**\r\n\t * Gets or sets the loaded filter criteria.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Input() public loadedFilterCriteria: string;\r\n\r\n\t/**\r\n\t * Whether to cented the search filter container or not.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Input() public alignCentered?: boolean = false;\r\n\r\n\t/**\r\n\t * Filter with no category.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Input() public noCategoryFilter?: boolean = false;\r\n\r\n\t/**\r\n\t * Emits an event with the updated filter criteria.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Output() public filterCriteriaChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Emits an event with the updated category value.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@Output() public categoryChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\t@ViewChild('Tooltip')\r\n\tpublic tooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the filter value used when filtering the data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\tpublic filter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the data schema object to be used in the\r\n\t * dynamic formly form fields.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\tpublic dataSet: object;\r\n\r\n\t/**\r\n\t * Gets or sets the layout schema object to be used in the\r\n\t * dynamic formly form fields.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\tpublic layoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets the keyword tooltip from the constants file.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\tpublic readonly keywordTooltip: string = AppConstants.keywordTooltip;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This will lset the layout schema definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof SearchFilterComponent\r\n\t*/\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.filter = this.loadedFilterCriteria;\r\n\t\tthis.setDynamicFormlyDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the search options alphabetically\r\n\t * based on the label value.\r\n\t *\r\n\t * @memberof SearchFilterComponent\r\n\t */\r\n\tpublic sortSearchOptions(): void\r\n\t{\r\n\t\tthis.searchOptions.sort((\r\n\t\t\tsearchOptionOne: any,\r\n\t\t\tsearchOptionTwo: any) =>\r\n\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\tsearchOptionOne,\r\n\t\t\t\tsearchOptionTwo,\r\n\t\t\t\tAppConstants.commonProperties.label));\r\n\t}\r\n\r\n\t/**\r\n\t * Searches for the input criteria value from the\r\n\t * dynamic form search field.\r\n\t *\r\n\t * @param {any} event\r\n\t * The search event.\r\n\t * @memberof SearchFilterComponent\r\n\t*/\r\n\tpublic searchCriteria(event: any): void\r\n\t{\r\n\t\tconst searchValue: string =\r\n\t\t\tthis.dynamicFormlyComponent.layoutSchema.find(\r\n\t\t\t\t(layoutField: FormlyFieldConfig) =>\r\n\t\t\t\t\tlayoutField.type === FormlyConstants.customControls.input)\r\n\t\t\t\t.formControl\r\n\t\t\t\t.value;\r\n\r\n\t\tif (!AnyHelper.isNull(event.key)\r\n\t\t\t&& event.key !== AppConstants.keyBoardKeyConstants.enter\r\n\t\t\t&& event.key !== AppConstants.keyBoardKeyConstants.backspace\r\n\t\t\t|| (event.key === AppConstants.keyBoardKeyConstants.backspace\r\n\t\t\t\t&& !AnyHelper.isNullOrEmpty(searchValue)))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.filter = searchValue;\r\n\t\tthis.loadedFilterCriteria = searchValue;\r\n\t\tthis.filterCriteriaChanged.emit(searchValue);\r\n\t}\r\n\r\n\t/**\r\n\t * Defines the dynamic formly properties.\r\n\t *\r\n\t * @memberof SearchFilterComponent\r\n\t*/\r\n\tprivate setDynamicFormlyDefinitions(): void\r\n\t{\r\n\t\tthis.layoutSchema =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.filter',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\tid: AppConstants.commonTableActions.filterInput,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tdisabled: AnyHelper\r\n\t\t\t\t\t\t\t.isNullOrEmpty(this.loadedCategoryOption)\r\n\t\t\t\t\t\t\t&& this.noCategoryFilter === false,\r\n\t\t\t\t\t\tplaceholder: 'Filter',\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\ttitle: AppConstants.commonTableActions.filterInput\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tkeydown:\r\n\t\t\t\t\t\t\t(_field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\tevent: KeyboardEvent) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.searchCriteria(event);\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.dataSet = {\r\n\t\t\tdata: {\r\n\t\t\t\tfilter: this.loadedFilterCriteria\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.searchOptions)\r\n\t\t\t&& this.noCategoryFilter === false)\r\n\t\t{\r\n\t\t\tthis.sortSearchOptions();\r\n\r\n\t\t\tthis.layoutSchema.unshift(\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.search',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tplaceholder: 'Select a Category',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdisabled: this.searchOptions.length < 2,\r\n\t\t\t\t\t\toptions: this.searchOptions,\r\n\t\t\t\t\t\tchange: (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (field.formControl.value !==\r\n\t\t\t\t\t\t\t\tAppConstants.undefined\r\n\t\t\t\t\t\t\t\t&& field.formControl.value !==\r\n\t\t\t\t\t\t\t\t\tthis.loadedCategoryOption)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.categoryChanged.emit(\r\n\t\t\t\t\t\t\t\t\tfield.formControl.value);\r\n\t\t\t\t\t\t\t\tthis.layoutSchema[1]\r\n\t\t\t\t\t\t\t\t\t.props.disabled = false;\r\n\r\n\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdocument.getElementById(\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.commonTableActions\r\n\t\t\t\t\t\t\t\t\t\t\t\t.filterInput)\r\n\t\t\t\t\t\t\t\t\t\t\t.focus();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (AnyHelper.isNull(field.formControl.value))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.layoutSchema[1]\r\n\t\t\t\t\t\t\t\t\t.props.disabled = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\tlabel: 'searchCategories'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t(this.dataSet).data.search = this.loadedCategoryOption;\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t\r\n\t
    0}\">\r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","
    \r\n\r\n\t
    \r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    0 || data != null),\r\n\t\t\t\t\t\t'no-data-information-card-radial-gauge': chartDefinition?.chartRadialGaugeChart === true && (data == null || data?.length === 0)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t*ngIf=\"chartDefinition == null || chartDefinition?.chartRadialGaugeChart\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    0 || data != null)\r\n\t\t\t}\">\r\n\t\t\t{{titleDisplay}}\r\n\t\t
    \r\n\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnInit,\r\n\tOutput,\r\n\tSimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-summary-card',\r\n\ttemplateUrl: './summary-card.component.html',\r\n\tstyleUrls: [\r\n\t\t'./summary-card.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the summary card\r\n * component.\r\n *\r\n * @export\r\n * @class SummaryCardComponent\r\n * @implements {OnInit}\r\n * @implements {OnChanges}\r\n * @typeparam TDataType\r\n * The data type returned in the data promise.\r\n */\r\nexport class SummaryCardComponent\r\nimplements OnInit, OnChanges\r\n{\r\n\t/** Initializes a new instance of the ExtendedCustomControlDirective.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the overlay dynamic component to display\r\n\t * if a popout is desired.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public overlayDynamicComponent: string;\r\n\r\n\t/**\r\n\t * Gets or sets the data promise of the overlay's component\r\n\t * data context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public overlayDynamicContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the summary template.\r\n\t * This is used for a single value display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public summaryTemplate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the summary function.\r\n\t * This is used for a single value display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public summaryFunction: string;\r\n\r\n\t/**\r\n\t * Gets or sets the summary promise.\r\n\t * This is used for a single value display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public summaryPromise: string;\r\n\r\n\t/**\r\n\t * Gets or sets the summary template.\r\n\t * This is used for a single value display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public summaryCardDisplay: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the square card template.\r\n\t * This is used for a single value display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public squareCardDisplay: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the chart defintion. This is used to\r\n\t * display a summary based chart if set.\r\n\t *\r\n\t * @type {IChartDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the group by count value.\r\n\t * This will alter how the data is interpolated in charts\r\n\t * via a count of data entries as opposed to a value\r\n\t * lookup.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public groupByCount: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the title template.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public titleTemplate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the title promise.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public titlePromise: string;\r\n\r\n\t/**\r\n\t * Gets or sets the data promise.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public dataPromise: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the event to emit when a summary card is clicked.\r\n\t *\r\n\t * @type {{\r\n\t\t\tdynamicComponent: string,\r\n\t\t\tsummaryCardComponent: HTMLDivElement\r\n\t\t}}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Output() public summaryCardClick:\r\n\t\tEventEmitter<{\r\n\t\t\tdynamicComponent: string;\r\n\t\t\tsummaryCardElement: HTMLDivElement;\r\n\t\t\tdynamicComponentContext: any;\r\n\t\t}> = new EventEmitter<{\r\n\t\t\tdynamicComponent: string;\r\n\t\t\tsummaryCardElement: HTMLDivElement;\r\n\t\t\tdynamicComponentContext: any;\r\n\t\t}>();\r\n\r\n\t/**\r\n\t * Gets or sets the active value of this summary card.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic active: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data returned from the data promise.\r\n\t *\r\n\t * @type {IAggregate[]}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic data: IAggregate[];\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating if the\r\n\t * data is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic summaryCardLoading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the main display line.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic summaryDisplay: string;\r\n\r\n\t/**\r\n\t * Gets or sets the title display line.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic titleDisplay: string;\r\n\r\n\t/**\r\n\t * Gets or sets the large description.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic largeSummary: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if the overlay\r\n\t * menu is currently active for this component.\r\n\t * When set as false in the parent component,\r\n\t * this will reset all cards to a non-active value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\t@Input() public get overlayMenuActive(): boolean\r\n\t{\r\n\t\treturn this._overlayMenuActive;\r\n\t}\r\n\tpublic set overlayMenuActive(\r\n\t\toverlayMenuActive: boolean)\r\n\t{\r\n\t\tif (overlayMenuActive === false)\r\n\t\t{\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\r\n\t\tthis._overlayMenuActive = overlayMenuActive;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the local overlay menu active value.\r\n\t * This can only be interacted with via the getter/setter.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tprivate _overlayMenuActive: boolean;\r\n\r\n\t/**\r\n\t * Gets the debounce delay to use after emitting an event\r\n\t * to set the card as active.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tprivate readonly eventEmitDebounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Handles the on initilazation event.\r\n\t * This calls any data promises and populates the summary\r\n\t * card.\r\n\t *\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.populateCard();\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Fires when there are changes and looks to see if\r\n\t * those changes require a refreshing of the card.\r\n\t *\r\n\t * @param {SimpleChanges} changes\r\n\t * The simple change value to check for business logic.\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic ngOnChanges(changes: SimpleChanges): void\r\n\t{\r\n\t\tif (changes.dataPromise?.currentValue !==\r\n\t\t\t\tchanges.dataPromise?.previousValue\r\n\t\t\t|| (changes.summaryTemplate?.currentValue !==\r\n\t\t\t\tchanges.summaryTemplate?.previousValue)\r\n\t\t\t|| changes.titleTemplate?.currentValue !==\r\n\t\t\t\tchanges.titleTemplate?.previousValue\r\n\t\t\t|| changes.titlePromise?.currentValue !==\r\n\t\t\t\tchanges.titlePromise?.previousValue)\r\n\t\t{\r\n\t\t\tthis.populateCard();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Parses the data and populates the card.\r\n\t *\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic populateCard(): void\r\n\t{\r\n\t\tthis.summaryCardLoading = true;\r\n\r\n\t\tthis.dataPromise\r\n\t\t\t.then(async data =>\r\n\t\t\t{\r\n\t\t\t\tif ((!AnyHelper.isNull(this.summaryTemplate)\r\n\t\t\t\t\t|| ((!AnyHelper.isNull(this.summaryFunction)\r\n\t\t\t\t\t\t\t|| !AnyHelper.isNull(this.summaryPromise))\r\n\t\t\t\t\t\t&& AnyHelper.isNull(this.chartDefinition)))\r\n\t\t\t\t\t&& this.groupByCount !== true)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(this.summaryTemplate))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.summaryDisplay = this.interpolate(\r\n\t\t\t\t\t\t\tthis.summaryTemplate,\r\n\t\t\t\t\t\t\tdata);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (!AnyHelper.isNullOrEmpty(this.summaryFunction))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.summaryDisplay = StringHelper.transformToFunction(\r\n\t\t\t\t\t\t\tthis.summaryFunction,\r\n\t\t\t\t\t\t\tdata)();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (!AnyHelper.isNullOrEmpty(this.summaryPromise))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.summaryDisplay =\r\n\t\t\t\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\t\t\tthis.summaryPromise,\r\n\t\t\t\t\t\t\t\tdata);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(this.summaryDisplay)\r\n\t\t\t\t\t\t|| this.summaryDisplay === '0')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.overlayDynamicComponent = null;\r\n\t\t\t\t\t\tthis.summaryDisplay =\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(this.summaryDisplay)\r\n\t\t\t\t\t\t\t\t? 'No Data'\r\n\t\t\t\t\t\t\t\t: this.summaryDisplay;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (!AnyHelper.isNull(this.chartDefinition)\r\n\t\t\t\t\t|| this.groupByCount === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.data =\r\n\t\t\t\t\t\tdata as unknown as [];\r\n\r\n\t\t\t\t\tthis.summaryDisplay = !AnyHelper.isNull(\r\n\t\t\t\t\t\tthis.summaryFunction)\r\n\t\t\t\t\t\t? StringHelper\r\n\t\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\t\tthis.summaryFunction,\r\n\t\t\t\t\t\t\t\tdata)()\r\n\t\t\t\t\t\t: `${this.data.length}`;\r\n\r\n\t\t\t\t\tif ((this.data.length === 0\r\n\t\t\t\t\t\t|| AnyHelper.isNullOrEmpty(this.data))\r\n\t\t\t\t\t\t|| (AnyHelper.isNullOrWhitespace(this.summaryDisplay)\r\n\t\t\t\t\t\t\t|| this.summaryDisplay === '0'\r\n\t\t\t\t\t\t\t|| this.summaryDisplay === 'No Data'))\r\n\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.data = null;\r\n\t\t\t\t\t\tthis.summaryDisplay = 'No Data';\r\n\t\t\t\t\t\tthis.overlayDynamicComponent = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.summaryDisplay === '$0')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.data = null;\r\n\t\t\t\t\t\tthis.overlayDynamicComponent = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(this.titleTemplate))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.titleDisplay =\r\n\t\t\t\t\t\tthis.interpolate(\r\n\t\t\t\t\t\t\tthis.titleTemplate,\r\n\t\t\t\t\t\t\tdata);\r\n\t\t\t\t}\r\n\t\t\t\telse if (!AnyHelper.isNullOrEmpty(this.titlePromise))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.titleDisplay =\r\n\t\t\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\t\tthis.titlePromise,\r\n\t\t\t\t\t\t\tdata);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.summaryCardLoading = false;\r\n\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tthis.summaryDisplay = '!';\r\n\t\t\t\tthrow error;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the summary card click event.\r\n\t * This will emit the click event to the parent component\r\n\t * and set this card as active or not based on existing\r\n\t * conditions.\r\n\t *\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic summaryCardClicked(\r\n\t\tsummaryCardElement: HTMLDivElement): void\r\n\t{\r\n\t\tconst currentlyActive: boolean = this.active;\r\n\t\tthis.active =\r\n\t\t\t!AnyHelper.isNull(this.overlayDynamicComponent)\r\n\t\t\t\t&& !this.active;\r\n\r\n\t\tthis.summaryCardClick\r\n\t\t\t.emit({\r\n\t\t\t\tdynamicComponent:\r\n\t\t\t\t\tcurrentlyActive\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: this.overlayDynamicComponent,\r\n\t\t\t\tdynamicComponentContext:\r\n\t\t\t\t\tthis.overlayDynamicContext,\r\n\t\t\t\tsummaryCardElement:\r\n\t\t\t\t\tsummaryCardElement\r\n\t\t\t});\r\n\r\n\t\tif (this.active === true)\r\n\t\t{\r\n\t\t\tthis.setActiveCard();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Maps data to a string template\r\n\t * that uses interpolation syntax.\r\n\t *\r\n\t * @param template\r\n\t * the template.\r\n\t * @param data\r\n\t * the data to map to the template.\r\n\t * @returns {string}\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tpublic interpolate(\r\n\t\ttemplate: string,\r\n\t\tdata: any): string\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.interpolate(\r\n\t\t\t\ttemplate,\r\n\t\t\t\tdata);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles seetting the active card value with a small debounce\r\n\t * delay to handle a parent component reset.\r\n\t *\r\n\t * @memberof SummaryCardComponent\r\n\t */\r\n\tprivate setActiveCard(): void\r\n\t{\r\n\t\tthis.active = false;\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.active = true;\r\n\t\t},\r\n\t\tthis.eventEmitDebounceDelay);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined available application level\r\n * emitted events that can be consumed in listening components\r\n * via the host listener.\r\n *\r\n * @export\r\n * @const AppEventConstants\r\n */\r\nexport const AppEventConstants:\r\n{\r\n\taddBanner: string;\r\n\taddBannerEvent: string;\r\n\taddDrawer: string;\r\n\taddDrawerEvent: string;\r\n\taddFullScreenBanner: string;\r\n\taddFullScreenBannerEvent: string;\r\n\taddLoginMessage: string;\r\n\taddLoginMessageEvent: string;\r\n\talterUtilityTitle: string;\r\n\talterUtilityTitleEvent: string;\r\n\tchatModalDisplayed: string;\r\n\tchatModalDisplayedEvent: string;\r\n\tcontextMenuActive: string;\r\n\tcontextMenuActiveEvent: string;\r\n\tdisplayContextOverlay: string;\r\n\tdisplayContextOverlayEvent: string;\r\n\tdisplayDrawerOverlay: string;\r\n\tdisplayDrawerOverlayEvent: string;\r\n\thideAssociatedMenus: string;\r\n\thideAssociatedMenusEvent: string;\r\n\tnavigateToAccessDenied: string;\r\n\tnavigateToAccessDeniedEvent: string;\r\n\tredrawDashboard: string;\r\n\tredrawDashboardEvent: string;\r\n\trefreshBadgePromise: string;\r\n\trefreshBadgePromiseEvent: string;\r\n\trefreshComponent: string;\r\n\trefreshComponentEvent: string;\r\n\treloadProductSettings: string;\r\n\treloadProductSettingsEvent: string;\r\n\trepeaterItemAltered: string;\r\n\trepeaterItemAlteredEvent: string;\r\n\trepeaterCleanModel: string;\r\n\trepeaterCleanModelEvent: string;\r\n\truleOverride: string;\r\n\truleOverrideEvent: string;\r\n\tsetBadgePromise: string;\r\n\tsetBadgePromiseEvent: string;\r\n\tsetContentContext: string;\r\n\tsetContentContextEvent: string;\r\n\tsetUtilityMenu: string;\r\n\tsetUtilityMenuEvent: string;\r\n\tsiteLayoutChanged: string;\r\n\tsiteLayoutChangedEvent: string;\r\n\ttableExpansionPanelLoaded: string;\r\n\ttableExpansionPanelLoadedEvent: string;\r\n\tthemeChanged: string;\r\n\tthemeChangedEvent: string;\r\n\twalkthroughEnd: string;\r\n\twalkthroughEndEvent: string;\r\n\twalkthroughStart: string;\r\n\twalkthroughStartEvent: string;\r\n} = {\r\n\taddBanner: 'add-banner-event',\r\n\taddBannerEvent: 'window:add-banner-event',\r\n\taddDrawer: 'add-drawer-event',\r\n\taddDrawerEvent: 'window:add-drawer-event',\r\n\taddFullScreenBanner: 'add-full-screen-banner-event',\r\n\taddFullScreenBannerEvent: 'window:add-full-screen-banner-event',\r\n\taddLoginMessage: 'add-login-message-event',\r\n\taddLoginMessageEvent: 'window:add-login-message-event',\r\n\talterUtilityTitle: 'alter-utility-title-event',\r\n\talterUtilityTitleEvent: 'window:alter-utility-title-event',\r\n\tchatModalDisplayed: 'chat-modal-displayed-event',\r\n\tchatModalDisplayedEvent: 'window:chat-modal-displayed-event',\r\n\tcontextMenuActive: 'context-menu-active-event',\r\n\tcontextMenuActiveEvent: 'window:context-menu-active-event',\r\n\tdisplayContextOverlay: 'display-context-overlay-event',\r\n\tdisplayContextOverlayEvent: 'window:display-context-overlay-event',\r\n\tdisplayDrawerOverlay: 'display-drawer-overlay-event',\r\n\tdisplayDrawerOverlayEvent: 'window:display-drawer-overlay-event',\r\n\thideAssociatedMenus: 'hide-associated-menus-event',\r\n\thideAssociatedMenusEvent: 'window:hide-associated-menus-event',\r\n\tnavigateToAccessDenied: 'navigate-to-access-denied-event',\r\n\tnavigateToAccessDeniedEvent: 'window:navigate-to-access-denied-event',\r\n\tredrawDashboard: 'redraw-dashboard-event',\r\n\tredrawDashboardEvent: 'window:redraw-dashboard-event',\r\n\trefreshBadgePromise: 'refresh-badge-promise-event',\r\n\trefreshBadgePromiseEvent: 'window:refresh-badge-promise-event',\r\n\trefreshComponent: 'refresh-component-event',\r\n\trefreshComponentEvent: 'window:refresh-component-event',\r\n\treloadProductSettings: 'reload-product-settings',\r\n\treloadProductSettingsEvent: 'window:reload-product-settings',\r\n\trepeaterItemAltered: 'repeater-item-altered-event',\r\n\trepeaterItemAlteredEvent: 'window:repeater-item-altered-event',\r\n\trepeaterCleanModel: 'repeater-clean-model-event',\r\n\trepeaterCleanModelEvent: 'window:repeater-clean-model-event',\r\n\truleOverride: 'rule-override-event',\r\n\truleOverrideEvent: 'window:rule-override-event',\r\n\tsetBadgePromise: 'set-badge-promise-event',\r\n\tsetBadgePromiseEvent: 'window:set-badge-promise-event',\r\n\tsetContentContext: 'set-content-context-event',\r\n\tsetContentContextEvent: 'window:set-content-context-event',\r\n\tsetUtilityMenu: 'set-utility-menu-event',\r\n\tsetUtilityMenuEvent: 'window:set-utility-menu-event',\r\n\tsiteLayoutChanged: 'site-layout-changed-event',\r\n\tsiteLayoutChangedEvent: 'window:site-layout-changed-event',\r\n\ttableExpansionPanelLoaded: 'table-expansion-panel-loaded-event',\r\n\ttableExpansionPanelLoadedEvent: 'window:table-expansion-panel-loaded-event',\r\n\tthemeChanged: 'theme-changed-event',\r\n\tthemeChangedEvent: 'window:theme-changed-event',\r\n\twalkthroughEnd: 'walkthrough-end-event',\r\n\twalkthroughEndEvent: 'window:walkthrough-end-event',\r\n\twalkthroughStart: 'walkthrough-start-event',\r\n\twalkthroughStartEvent: 'window:walkthrough-start-event'\r\n};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\n\r\n/**\r\n * A class representing static constant and read only values.\r\n *\r\n * @export\r\n * @class AppConstants\r\n */\r\nexport class AppConstants\r\n{\r\n\tpublic static readonly activityStatus:\r\n\t{\r\n\t\tcomplete: string;\r\n\t\terror: string;\r\n\t\tinfo: string;\r\n\t\tpending: string;\r\n\t} = {\r\n\t\t\tcomplete: 'Complete',\r\n\t\t\terror: 'Error',\r\n\t\t\tinfo: 'Info',\r\n\t\t\tpending: 'Pending'\r\n\t\t};\r\n\r\n\tpublic static readonly any: string = 'Any';\r\n\r\n\tpublic static readonly apiControllers:\r\n\t{\r\n\t\tauthenticate: string;\r\n\t\tdisplayComponentDefinitions: string;\r\n\t\tdisplayComponentInstances: string;\r\n\t\tdisplayComponentTypes: string;\r\n\t\tentityDefinitions: string;\r\n\t\tentityInstances: string;\r\n\t\tentityInstanceRuleViolations: string;\r\n\t\tentityInstanceRuleViolationOverrides: string;\r\n\t\tentityLayouts: string;\r\n\t\tentityLayoutTypes: string;\r\n\t\tentityTypes: string;\r\n\t\tentityVersions: string;\r\n\t\tlogs: string;\r\n\t\toperationDefinitions: string;\r\n\t\toperationDefinitionParameters: string;\r\n\t\toperationGroups: string;\r\n\t\toperationGroupHierarchies: string;\r\n\t\toperationTypes: string;\r\n\t\toperationTypeParameters: string;\r\n\t\truleDefinitions: string;\r\n\t\trulePresentationDefinitions: string;\r\n\t\trulePresentationLogicDefinitions: string;\r\n\t\truleValidationDefinitions: string;\r\n\t\truleValidatorDefinitions: string;\r\n\t\truleViolationWorkflowActionDefinitions: string;\r\n\t\tsecurityGroups: string;\r\n\t\tsecurityAccessPolicies: string;\r\n\t\tsecurityAccessPolicyDefinitions: string;\r\n\t\tsecurityAccessPolicyMappings: string;\r\n\t\tsecurityApplications: string;\r\n\t\tsecurityGroupRuleDefinitionViolationOverrides: string;\r\n\t\tsecuritySessions: string;\r\n\t\tworkflowActionDefinitions: string;\r\n\t\tworkflowActionInstances: string;\r\n\t\tworkflowActionRequisites: string;\r\n\t\tworkflowFailureActions: string;\r\n\t\tworkflowRequisiteTypes: string;\r\n\t} = {\r\n\t\t\tauthenticate: 'authenticate',\r\n\t\t\tdisplayComponentDefinitions: 'displayComponentDefinitions',\r\n\t\t\tdisplayComponentInstances: 'displayComponentInstances',\r\n\t\t\tdisplayComponentTypes: 'displayComponentTypes',\r\n\t\t\tentityDefinitions: 'entityDefinitions',\r\n\t\t\tentityInstances: 'entityInstances',\r\n\t\t\tentityInstanceRuleViolations: 'entityInstanceRuleViolations',\r\n\t\t\tentityInstanceRuleViolationOverrides:\r\n\t\t\t'entityInstanceRuleViolationOverrides',\r\n\t\t\tentityLayouts: 'entityLayouts',\r\n\t\t\tentityLayoutTypes: 'entityLayoutTypes',\r\n\t\t\tentityTypes: 'entityTypes',\r\n\t\t\tentityVersions: 'entityVersions',\r\n\t\t\tlogs: 'logs',\r\n\t\t\toperationDefinitions: 'operationDefinitions',\r\n\t\t\toperationDefinitionParameters: 'operationDefinitionParameters',\r\n\t\t\toperationGroups: 'operationGroups',\r\n\t\t\toperationGroupHierarchies: 'operationGroupHierarchies',\r\n\t\t\toperationTypes: 'operationTypes',\r\n\t\t\toperationTypeParameters: 'operationTypeParameters',\r\n\t\t\truleDefinitions: 'ruleDefinitions',\r\n\t\t\trulePresentationDefinitions: 'rulePresentationDefinitions',\r\n\t\t\trulePresentationLogicDefinitions:\r\n\t\t\t\t'rulePresentationLogicDefinitions',\r\n\t\t\truleValidationDefinitions: 'ruleValidationDefinitions',\r\n\t\t\truleValidatorDefinitions: 'ruleValidatorDefinitions',\r\n\t\t\truleViolationWorkflowActionDefinitions:\r\n\t\t\t'ruleViolationWorkflowActionDefinitions',\r\n\t\t\tsecurityGroups: 'securityGroups',\r\n\t\t\tsecurityAccessPolicies: 'securityAccessPolicies',\r\n\t\t\tsecurityAccessPolicyDefinitions: 'securityAccessPolicyDefinitions',\r\n\t\t\tsecurityAccessPolicyMappings: 'securityAccessPolicyMappings',\r\n\t\t\tsecurityApplications: 'securityApplications',\r\n\t\t\tsecurityGroupRuleDefinitionViolationOverrides:\r\n\t\t\t'securityGroupRuleDefinitionViolationOverrides',\r\n\t\t\tsecuritySessions: 'securitySessions',\r\n\t\t\tworkflowActionDefinitions: 'workflowActionDefinitions',\r\n\t\t\tworkflowActionInstances: 'workflowActionInstances',\r\n\t\t\tworkflowActionRequisites: 'workflowActionRequisites',\r\n\t\t\tworkflowFailureActions: 'workflowFailureActions',\r\n\t\t\tworkflowRequisiteTypes: 'workflowRequisiteTypes'\r\n\t\t};\r\n\r\n\tpublic static readonly apiMethods:\r\n\t{\r\n\t\tget: string;\r\n\t\tgetChildren: string;\r\n\t\tgetParents: string;\r\n\t\tquery: string;\r\n\t\tcreate: string;\r\n\t\tcreateChild: string;\r\n\t\tcreateEntityInstance: string;\r\n\t\tupdate: string;\r\n\t\tupdateChild: string;\r\n\t\tdelete: string;\r\n\t\tdeleteChild: string;\r\n\t\taggregate: string;\r\n\t\tput: string;\r\n\t\tpost: string;\r\n\t} = {\r\n\t\t\tget: 'Get',\r\n\t\t\tgetChildren: 'GetChildren',\r\n\t\t\tgetParents: 'GetParents',\r\n\t\t\tquery: 'Query',\r\n\t\t\tcreate: 'Create',\r\n\t\t\tcreateChild: 'CreateChild',\r\n\t\t\tcreateEntityInstance: 'createEntityInstance',\r\n\t\t\tupdate: 'Update',\r\n\t\t\tupdateChild: 'UpdateChild',\r\n\t\t\tdelete: 'Delete',\r\n\t\t\tdeleteChild: 'DeleteChild',\r\n\t\t\taggregate: 'Aggregate',\r\n\t\t\tput: 'Put',\r\n\t\t\tpost: 'Post'\r\n\t\t};\r\n\r\n\tpublic static readonly aggregateMethods:\r\n\t{\r\n\t\tcount: string;\r\n\t\tsum: string;\r\n\t\taverage: string;\r\n\t\tmin: string;\r\n\t\tmax: string;\r\n\t} = {\r\n\t\t\tcount: 'Count',\r\n\t\t\tsum: 'Sum',\r\n\t\t\taverage: 'Average',\r\n\t\t\tmin: 'Min',\r\n\t\t\tmax: 'Max'\r\n\t\t};\r\n\r\n\tpublic static readonly basePageSections:\r\n\t{\r\n\t\theaderIdentifier: string;\r\n\t\ttopIdentifier: string;\r\n\t} = {\r\n\t\t\theaderIdentifier: 'base-page-header',\r\n\t\t\ttopIdentifier: 'Top'\r\n\t\t};\r\n\r\n\tpublic static readonly characters:\r\n\t{\r\n\t\tand: string;\r\n\t\tasterisk: string;\r\n\t\tat: string;\r\n\t\tcarriageReturn: string;\r\n\t\tcolon: string;\r\n\t\tcomma: string;\r\n\t\tdollarSign: string;\r\n\t\tdoubleQuote: string;\r\n\t\tforwardSlash: string;\r\n\t\tleftBracket: string;\r\n\t\tleftParantheses: string;\r\n\t\tlineFeed: string;\r\n\t\thyphen: string;\r\n\t\tleftSquareBracket: string;\r\n\t\tperiod: string;\r\n\t\tpercent: string;\r\n\t\tpound: string;\r\n\t\trightParantheses: string;\r\n\t\trightSquareBracket: string;\r\n\t\tspace: string;\r\n\t\tunderscore: string;\r\n\t\tquestionMark: string;\r\n\t} = {\r\n\t\t\tand: '&',\r\n\t\t\tasterisk: '*',\r\n\t\t\tat: '@',\r\n\t\t\tcarriageReturn: '\\r',\r\n\t\t\tcolon: ':',\r\n\t\t\tcomma: ',',\r\n\t\t\tdollarSign: '$',\r\n\t\t\tdoubleQuote: '\"',\r\n\t\t\tforwardSlash: '/',\r\n\t\t\tleftBracket: '[',\r\n\t\t\tleftParantheses: '(',\r\n\t\t\tlineFeed: '\\n',\r\n\t\t\thyphen: '-',\r\n\t\t\tleftSquareBracket: '[',\r\n\t\t\tperiod: '.',\r\n\t\t\tpercent: '%',\r\n\t\t\tpound: '#',\r\n\t\t\trightParantheses: ')',\r\n\t\t\trightSquareBracket: ']',\r\n\t\t\tspace: ' ',\r\n\t\t\tunderscore: '_',\r\n\t\t\tquestionMark: '?'\r\n\t\t};\r\n\r\n\tpublic static readonly commonProperties: {\r\n\t\taccessPolicyId: string;\r\n\t\tactionId: string;\r\n\t\tassignedTo: string;\r\n\t\tchangeDate: string;\r\n\t\tchangedById: string;\r\n\t\tcharacteristics: string;\r\n\t\tcreateDate: string;\r\n\t\tcreatedBy: string;\r\n\t\tcreatedById: string;\r\n\t\tdatasetId: string;\r\n\t\tdoneDate: string;\r\n\t\teffectiveDate: string;\r\n\t\tentityType: string;\r\n\t\tfirstName: string;\r\n\t\tgroup: string;\r\n\t\tid: string;\r\n\t\tjsonData: string;\r\n\t\tkeywords: string;\r\n\t\tlabel: string;\r\n\t\tlayoutId: string;\r\n\t\tlayoutTypeId: string;\r\n\t\tlastName: string;\r\n\t\tname: string;\r\n\t\tnumber: string;\r\n\t\torder: string;\r\n\t\townershipSecurityGroupId: string;\r\n\t\tpostalCode: string;\r\n\t\truleDefinitionId: string;\r\n\t\trulePresentationDefinitionId: string;\r\n\t\truleValidationDefinitionId: string;\r\n\t\truleWorkflowDefinitionId: string;\r\n\t\tresourceIdentifier: string;\r\n\t\tstartDate: string;\r\n\t\tstatus: string;\r\n\t\tsubtype: string;\r\n\t\tsubType: string;\r\n\t\ttype: string;\r\n\t\ttypeId: string;\r\n\t\tuserName: string;\r\n\t\tversionId: string;\r\n\t\tversionNumber: string;\r\n\t} = {\r\n\t\t\taccessPolicyId: 'accessPolicyId',\r\n\t\t\tactionId: 'actionId',\r\n\t\t\tassignedTo: 'assignedTo',\r\n\t\t\tchangeDate: 'changeDate',\r\n\t\t\tcreatedBy: 'createdBy',\r\n\t\t\tcreatedById: 'createdById',\r\n\t\t\tchangedById: 'changedById',\r\n\t\t\tcharacteristics: 'characteristics',\r\n\t\t\tcreateDate: 'createDate',\r\n\t\t\tdatasetId: 'datasetId',\r\n\t\t\tdoneDate: 'keyDates.doneDate',\r\n\t\t\teffectiveDate: 'effectiveDate',\r\n\t\t\tentityType: 'entityType',\r\n\t\t\tfirstName: 'firstName',\r\n\t\t\tgroup: 'group',\r\n\t\t\tid: 'id',\r\n\t\t\tjsonData: 'jsonData',\r\n\t\t\tkeywords: 'keywords',\r\n\t\t\tlabel: 'label',\r\n\t\t\tlayoutId: 'layoutId',\r\n\t\t\tlayoutTypeId: 'layoutTypeId',\r\n\t\t\tlastName: 'lastName',\r\n\t\t\tname: 'name',\r\n\t\t\tnumber: 'number',\r\n\t\t\torder: 'order',\r\n\t\t\townershipSecurityGroupId: 'ownershipSecurityGroupId',\r\n\t\t\tpostalCode: 'postalCode',\r\n\t\t\truleDefinitionId: 'ruleDefinitionId',\r\n\t\t\trulePresentationDefinitionId: 'rulePresentationDefinitionId',\r\n\t\t\truleValidationDefinitionId: 'ruleValidationDefinitionId',\r\n\t\t\truleWorkflowDefinitionId: 'ruleWorkflowDefinitionId',\r\n\t\t\tresourceIdentifier: 'resourceIdentifier',\r\n\t\t\tstartDate: 'startDate',\r\n\t\t\tstatus: 'status',\r\n\t\t\tsubtype: 'subtype',\r\n\t\t\tsubType: 'subType',\r\n\t\t\ttype: 'type',\r\n\t\t\ttypeId: 'typeId',\r\n\t\t\tuserName: 'userName',\r\n\t\t\tversionId: 'versionId',\r\n\t\t\tversionNumber: 'versionNumber'\r\n\t\t};\r\n\r\n\tpublic static readonly commonTableActions:\r\n\t{\r\n\t\tcreate: string;\r\n\t\tdelete: string;\r\n\t\tfilter: string;\r\n\t\tfilterInput: string;\r\n\t\ttableLevelEllipsis: string;\r\n\t\tupdate: string;\r\n\t\tview: string;\r\n\t} = {\r\n\t\t\tcreate: 'create',\r\n\t\t\tdelete: 'delete',\r\n\t\t\tfilter: 'filter',\r\n\t\t\tfilterInput: 'filterInput',\r\n\t\t\ttableLevelEllipsis: 'tableLevelEllipsis',\r\n\t\t\tupdate: 'update',\r\n\t\t\tview: 'view'\r\n\t\t};\r\n\r\n\tpublic static readonly securityRightTypes:\r\n\t{\r\n\t\tcreate: string;\r\n\t\tread: string;\r\n\t\tupdate: string;\r\n\t\tdelete: string;\r\n\t\texecute: string;\r\n\t} = {\r\n\t\t\tcreate: SecurityRightType.create,\r\n\t\t\tread: SecurityRightType.read,\r\n\t\t\tupdate: SecurityRightType.update,\r\n\t\t\tdelete: SecurityRightType.delete,\r\n\t\t\texecute: SecurityRightType.execute\r\n\t\t};\r\n\r\n\tpublic static readonly commonTableAttributes:\r\n\t{\r\n\t\tstandardWidgetTableHeight: string;\r\n\t} = {\r\n\t\t\tstandardWidgetTableHeight: 'standardWidgetTableHeight'\r\n\t\t};\r\n\r\n\tpublic static readonly commonRegex:\r\n\t{\r\n\t\talphaNumericOnly: string;\r\n\t} = {\r\n\t\t\talphaNumericOnly: '[^a-zA-Z0-9]'\r\n\t\t};\r\n\r\n\tpublic static readonly contentAnimation:\r\n\t{\r\n\t\tstandardAnimation: string;\r\n\t\ttranslateXZero: string;\r\n\t\ttranslateXZeroPercent: string;\r\n\t\ttranslateXHundredPercent: string;\r\n\t\ttranslateXMinusThreeSixtyPx: string;\r\n\t\ttranslateXTwoPointFivePercent: string;\r\n\t\ttranslateXMinusTwoPointFivePercent: string;\r\n\t\ttranslateXMinusFivePercent: string;\r\n\t\ttransitionVisibleHidden: string;\r\n\t\ttransitionHiddenVisible: string;\r\n\t\tzeroEaseInOut: string;\r\n\t} = {\r\n\t\t\tstandardAnimation: '400ms cubic-bezier(0.86, 0, 0.07, 1)',\r\n\t\t\ttranslateXZero: 'translateX(0)',\r\n\t\t\ttranslateXZeroPercent: 'translateX(0%)',\r\n\t\t\ttranslateXHundredPercent: 'translateX(100%)',\r\n\t\t\ttranslateXMinusThreeSixtyPx: 'translateX(-360px)',\r\n\t\t\ttranslateXTwoPointFivePercent: 'translateX(2.5%)',\r\n\t\t\ttranslateXMinusTwoPointFivePercent: 'translateX(-2.5%)',\r\n\t\t\ttranslateXMinusFivePercent: 'translateX(-5%)',\r\n\t\t\ttransitionVisibleHidden: 'visible => hidden',\r\n\t\t\ttransitionHiddenVisible: 'hidden => visible',\r\n\t\t\tzeroEaseInOut: '0s ease-in-out'\r\n\t\t};\r\n\r\n\tpublic static readonly cssIcons:\r\n\t{\r\n\t\tellipsis: string;\r\n\t\texclamation: string;\r\n\t\tflag: string;\r\n\t\thandDown: string;\r\n\t\thandUp: string;\r\n\t\thistory: string;\r\n\t\tinfo: string;\r\n\t\tinfoCircle: string;\r\n\t\tstar: string;\r\n\t\tstarOpen: string;\r\n\t\tvisa: string;\r\n\t\tmasterCard: string;\r\n\t\tamericanExpress: string;\r\n\t\tdiscover: string;\r\n\t\tdinersClub: string;\r\n\t\tpayPal: string;\r\n\t\tcreditCard: string;\r\n\t\tmoney: string;\r\n\t\tbank: string;\r\n\t} = {\r\n\t\t\tellipsis: 'fa fa-ellipsis-v',\r\n\t\t\texclamation: 'exclamation',\r\n\t\t\tflag: 'flag',\r\n\t\t\thandDown: 'hand-o-down',\r\n\t\t\thandUp: 'hand-o-up',\r\n\t\t\thistory: 'history',\r\n\t\t\tinfo: 'info',\r\n\t\t\tinfoCircle: 'info-circle',\r\n\t\t\tstar: 'star',\r\n\t\t\tstarOpen: 'star-o',\r\n\t\t\tvisa: 'cc-visa',\r\n\t\t\tmasterCard: 'cc-mastercard',\r\n\t\t\tamericanExpress: 'cc-amex',\r\n\t\t\tdiscover: 'cc-discover',\r\n\t\t\tdinersClub: 'cc-diners-club',\r\n\t\t\tpayPal: 'cc-paypal',\r\n\t\t\tcreditCard: 'credit-card',\r\n\t\t\tmoney: 'money',\r\n\t\t\tbank: 'bank'\r\n\t\t};\r\n\r\n\tpublic static readonly cssClasses:\r\n\t{\r\n\t\tactive: string;\r\n\t\tcustomTooltip: string;\r\n\t\tdisplayNone: string;\r\n\t\tdrawer: string;\r\n\t\tentityLayoutMask: string;\r\n\t\texclamationCircle: string;\r\n\t\tfontAwesomeBell: string;\r\n\t\tfontAwesomeCalendarCheckMark: string;\r\n\t\tfontAwesomeComments: string;\r\n\t\tfontAwesomeFullWidth: string;\r\n\t\tfontAwesomePrefix: string;\r\n\t\tfontAwesomeCalendar: string;\r\n\t\tfontAwesomeEdit: string;\r\n\t\tfontAwesomeInfoCircle: string;\r\n\t\tfontAwesomeHistory: string;\r\n\t\tfontAwesomeHourglass: string;\r\n\t\tfontAwesomeKey: string;\r\n\t\tfontAwesomePencil: string;\r\n\t\tfontAwesomeHouse: string;\r\n\t\tfontAwesomeCar: string;\r\n\t\tfontAwesomeQuestion: string;\r\n\t\thidden: string;\r\n\t\tinvalid: string;\r\n\t\tlineOne: string;\r\n\t\toverlayDrawer: string;\r\n\t\tpAccordionHeaderText: string;\r\n\t\tpButtonOutlined: string;\r\n\t\tpButtonPrimary: string;\r\n\t\tpButtonSecondary: string;\r\n\t\tpButtonDanger: string;\r\n\t\tpContentSmallPhone: string;\r\n\t\tpDropDownLabel: string;\r\n\t\tpinned: string;\r\n\t\tpinnedDrawerOverlay: string;\r\n\t\tproductSettingsOverlay: string;\r\n\t\tscrollPanelContent: string;\r\n\t\tscrollPanelHidden: string;\r\n\t\tscrollPanelVerticalScrollBar: string;\r\n\t\tscrollPanelWrapper: string;\r\n\t\tsectionTitle: string;\r\n\t\tsectionTitleText: string;\r\n\t\tselected: string;\r\n\t\tselectedErrorContainerBorder: string;\r\n\t\tsortAscending: string;\r\n\t\tsortDescending: string;\r\n\t\tstonlyWidget: string;\r\n\t\ttabViewTitle: string;\r\n\t\ttextSecondaryColor: string;\r\n\t\ttextErrorColor: string;\r\n\t\ttextWarningColor: string;\r\n\t\ttextSuccessColor: string;\r\n\t\ttextInfoColor: string;\r\n\t\tvisible: string;\r\n\t\tvisuallyHidden: string;\r\n\t\twarningColor: string;\r\n\t\tlargeFont: string;\r\n\t} = {\r\n\t\t\tactive: 'active',\r\n\t\t\tcustomTooltip: 'custom-tooltip',\r\n\t\t\tdisplayNone: 'display-none',\r\n\t\t\tdrawer: 'drawer',\r\n\t\t\tentityLayoutMask: '.entity-layout-mask',\r\n\t\t\texclamationCircle: 'exclamation-circle',\r\n\t\t\tfontAwesomeBell: 'fa fa-bell',\r\n\t\t\tfontAwesomeCalendarCheckMark: 'fa fa-calendar-check-o',\r\n\t\t\tfontAwesomeComments: 'fa fa-comments-o',\r\n\t\t\tfontAwesomeFullWidth: 'fa fa-fw ',\r\n\t\t\tfontAwesomePrefix: 'fa fa-fw fa-',\r\n\t\t\tfontAwesomeCalendar: 'fa fa-calendar',\r\n\t\t\tfontAwesomeEdit: 'fa fa-edit',\r\n\t\t\tfontAwesomeInfoCircle: 'fa fa-info-circle',\r\n\t\t\tfontAwesomeHistory: 'fa fa-history',\r\n\t\t\tfontAwesomeHourglass: 'fa fa-hourglass-half',\r\n\t\t\tfontAwesomeKey: 'fa fa-key',\r\n\t\t\tfontAwesomePencil: 'fa fa-pencil',\r\n\t\t\tfontAwesomeHouse: 'fa fa-home',\r\n\t\t\tfontAwesomeCar: 'fa fa-car',\r\n\t\t\tfontAwesomeQuestion: 'fa fa-question',\r\n\t\t\thidden: 'hidden',\r\n\t\t\tinvalid: 'p-invalid',\r\n\t\t\tlineOne: 'line1',\r\n\t\t\toverlayDrawer: 'overlay-drawer',\r\n\t\t\tpAccordionHeaderText: 'p-accordion-header-text',\r\n\t\t\tpButtonOutlined: 'p-button-outlined',\r\n\t\t\tpButtonPrimary: 'p-button-primary',\r\n\t\t\tpButtonSecondary: 'p-button-secondary',\r\n\t\t\tpButtonDanger: 'p-button-danger',\r\n\t\t\tpContentSmallPhone: 'p-content-small-phone',\r\n\t\t\tpDropDownLabel: 'p-dropdown-label',\r\n\t\t\tpinned: 'pinned',\r\n\t\t\tpinnedDrawerOverlay: '.pinned-drawer-overlay',\r\n\t\t\tproductSettingsOverlay: '.product-settings-overlay',\r\n\t\t\tscrollPanelContent: 'p-scrollpanel-content',\r\n\t\t\tscrollPanelHidden: 'p-scrollpanel-hidden',\r\n\t\t\tscrollPanelVerticalScrollBar: 'p-scrollpanel-bar-y',\r\n\t\t\tscrollPanelWrapper: 'p-scrollpanel-wrapper',\r\n\t\t\tsectionTitle: 'section-title',\r\n\t\t\tsectionTitleText: 'section-title-text',\r\n\t\t\tselected: 'selected',\r\n\t\t\tselectedErrorContainerBorder: 'selected-error-container-border',\r\n\t\t\tsortAscending: 'fa fa-sort-amount-asc',\r\n\t\t\tsortDescending: 'fa fa-sort-amount-desc',\r\n\t\t\tstonlyWidget: 'stn-wdgt',\r\n\t\t\ttabViewTitle: 'p-tabview-title',\r\n\t\t\ttextSecondaryColor: 'text-secondary-color',\r\n\t\t\ttextErrorColor: 'text-color-error',\r\n\t\t\ttextWarningColor: 'text-color-warning',\r\n\t\t\ttextSuccessColor: 'text-color-success',\r\n\t\t\ttextInfoColor: 'text-color-info',\r\n\t\t\tvisible: 'visible',\r\n\t\t\tvisuallyHidden: 'visually-hidden',\r\n\t\t\twarningColor: 'warning-color',\r\n\t\t\tlargeFont: 'font-larger'\r\n\t\t};\r\n\r\n\tpublic static readonly cssStyles:\r\n\t{\r\n\t\tfitContent: string;\r\n\t\tmaxContent: string;\r\n\t} = {\r\n\t\t\tfitContent: 'fit-content',\r\n\t\t\tmaxContent: 'max-content'\r\n\t\t};\r\n\r\n\tpublic static readonly cssValues:\r\n\t{\r\n\t\tfontFamily: string;\r\n\t} = {\r\n\t\t\tfontFamily: '-apple-system, BlinkMacSystemFont, '\r\n\t\t\t\t+ '\"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, '\r\n\t\t\t\t+ '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"'\r\n\t\t};\r\n\r\n\tpublic static readonly contextMenuIdentifiers:\r\n\t{\r\n\t\taddRelatedContextMenuIdentifier: string;\r\n\t\taddCreateActionIdentifier: string;\r\n\t} = {\r\n\t\t\taddRelatedContextMenuIdentifier: 'CONTEXTMENU',\r\n\t\t\taddCreateActionIdentifier: '|CREATE'\r\n\t\t};\r\n\r\n\tpublic static readonly dataFormatTypes:\r\n\t{\r\n\t\tcurrency: string;\r\n\t\tdecimal: string;\r\n\t\tdate: string;\r\n\t\tdateTime: string;\r\n\t\ticon: string;\r\n\t\tlink: string;\r\n\t\tlongDate: string;\r\n\t\tpercent: string;\r\n\t\tshortDate: string;\r\n\t} = {\r\n\t\t\tcurrency: 'Currency',\r\n\t\t\tdecimal: 'Decimal',\r\n\t\t\tdate: 'Date',\r\n\t\t\tdateTime: 'DateTime',\r\n\t\t\ticon: 'Icon',\r\n\t\t\tlink: 'Link',\r\n\t\t\tlongDate: 'LongDate',\r\n\t\t\tpercent: 'Percent',\r\n\t\t\tshortDate: 'ShortDate'\r\n\t\t};\r\n\r\n\tpublic static readonly dataLimits:\r\n\t{\r\n\t\tsmall: number;\r\n\t\tmedium: number;\r\n\t\tlarge: number;\r\n\t\textraLarge: number;\r\n\t\tmaxResultSet: number;\r\n\t} = {\r\n\t\t\tsmall: 20,\r\n\t\t\tmedium: 50,\r\n\t\t\tlarge: 100,\r\n\t\t\textraLarge: 1000,\r\n\t\t\tmaxResultSet: 10000\r\n\t\t};\r\n\r\n\tpublic static readonly maxRouteDataSize: number = 15000;\r\n\r\n\tpublic static readonly dataUrlPrefixes:\r\n\t{\r\n\t\tpngImage: string;\r\n\t} = {\r\n\t\t\tpngImage: 'data:image/png;base64,'\r\n\t\t};\r\n\r\n\tpublic static readonly dateLimits:\r\n\t{\r\n\t\tpastThirtyDays: string;\r\n\t\tpastNinetyDays: string;\r\n\t\tpastOneHundredAndEightyDays: string;\r\n\t} = {\r\n\t\t\tpastThirtyDays: 'Past 30 Days',\r\n\t\t\tpastNinetyDays: 'Past 90 Days',\r\n\t\t\tpastOneHundredAndEightyDays: 'Past 180 Days'\r\n\t\t};\r\n\r\n\tpublic static readonly differenceTypes:\r\n\t{\r\n\t\tarray: string;\r\n\t\tdate: string;\r\n\t\tobject: string;\r\n\t\tproperty: string;\r\n\t} = {\r\n\t\t\tarray: 'Array',\r\n\t\t\tdate: 'Date',\r\n\t\t\tobject: 'Object',\r\n\t\t\tproperty: 'Property'\r\n\t\t};\r\n\r\n\tpublic static readonly displayComponentTypes:\r\n\t{\r\n\t\tbasePage: string;\r\n\t\tbasePageEntityCreate: string;\r\n\t\treportPowerBiCustom: string;\r\n\t\treportPowerBiStandard: string;\r\n\t} = {\r\n\t\t\tbasePage: 'BasePage',\r\n\t\t\tbasePageEntityCreate: 'BasePage.Wizard.Entity.Create',\r\n\t\t\treportPowerBiCustom: 'Report.PowerBi.Custom',\r\n\t\t\treportPowerBiStandard: 'Report.PowerBi.Standard'\r\n\t\t};\r\n\r\n\tpublic static readonly displayTypes:\r\n\t{\r\n\t\tblock: string;\r\n\t\tnone: string;\r\n\t} = {\r\n\t\t\tblock: 'block',\r\n\t\t\tnone: 'none'\r\n\t\t};\r\n\r\n\tpublic static readonly drawerActionLabels:\r\n\t{\r\n\t\tadd: string;\r\n\t\tsave: string;\r\n\t} = {\r\n\t\t\tadd: 'Add',\r\n\t\t\tsave: 'Save'\r\n\t\t};\r\n\r\n\tpublic static readonly documentElementTypes:\r\n\t{\r\n\t\tdiv: string;\r\n\t\tscript: string;\r\n\t} = {\r\n\t\t\tdiv: 'div',\r\n\t\t\tscript: 'script'\r\n\t\t};\r\n\r\n\tpublic static readonly empty: string = '';\r\n\r\n\tpublic static readonly emptyArray: string = '[]';\r\n\r\n\tpublic static readonly externalReportTypes:\r\n\t{\r\n\t\tpowerBi: string;\r\n\t} = {\r\n\t\t\tpowerBi: 'powerBi'\r\n\t\t};\r\n\r\n\tpublic static readonly externalUrls:\r\n\t{\r\n\t\tfontAwesomeIcons: string;\r\n\t} = {\r\n\t\t\tfontAwesomeIcons: 'https://fontawesome.com/v4.7.0/icons/'\r\n\t\t};\r\n\r\n\tpublic static readonly exportTypes:\r\n\t{\r\n\t\texcel: string;\r\n\t\tcommaSeparatedValues: string;\r\n\t} = {\r\n\t\t\texcel: 'Excel',\r\n\t\t\tcommaSeparatedValues: 'CommaSeparatedValues'\r\n\t\t};\r\n\r\n\tpublic static readonly feeTypes:\r\n\t{\r\n\t\tflat: string;\r\n\t\tpercent: string;\r\n\t} = {\r\n\t\t\tflat: 'Flat',\r\n\t\t\tpercent: 'Percent'\r\n\t\t};\r\n\r\n\tpublic static readonly fileBaseType: string = 'File';\r\n\r\n\tpublic static readonly fileBaseTypeCategory: string = 'Uncategorized';\r\n\r\n\tpublic static readonly filterQueryOperators:\r\n\t{\r\n\t\tequal: string;\r\n\t\tnotEqual: string;\r\n\t\tlessThan: string;\r\n\t\tlessOrEqual: string;\r\n\t\tgreaterThan: string;\r\n\t\tgreaterOrEqual: string;\r\n\t\tand: string;\r\n\t\tor: string;\r\n\t} = {\r\n\t\t\tequal: 'eq',\r\n\t\t\tnotEqual: 'ne',\r\n\t\t\tlessThan: 'lt',\r\n\t\t\tlessOrEqual: 'le',\r\n\t\t\tgreaterThan: 'gt',\r\n\t\t\tgreaterOrEqual: 'ge',\r\n\t\t\tand: 'and',\r\n\t\t\tor: 'or'\r\n\t\t};\r\n\r\n\tpublic static readonly formatTypes:\r\n\t{\r\n\t\tbeforeCapitalSpaces: string;\r\n\t\tboolean: string;\r\n\t\tcurrency: string;\r\n\t\tentityTypeDisplay: string;\r\n\t\tlongDate: string;\r\n\t\tnone: string;\r\n\t\tnumber: string;\r\n\t\tpercent: string;\r\n\t\tshortDate: string;\r\n\t\tyesNoBoolean: string;\r\n\t} = {\r\n\t\t\tbeforeCapitalSpaces: 'beforeCapitalSpaces',\r\n\t\t\tboolean: 'boolean',\r\n\t\t\tcurrency: 'currency',\r\n\t\t\tentityTypeDisplay: 'entityTypeDisplay',\r\n\t\t\tlongDate: 'longDate',\r\n\t\t\tnone: 'none',\r\n\t\t\tnumber: 'number',\r\n\t\t\tpercent: 'percent',\r\n\t\t\tshortDate: 'shortDate',\r\n\t\t\tyesNoBoolean: 'yesNoBoolean'\r\n\t\t};\r\n\r\n\tpublic static readonly formControlStatus:\r\n\t{\r\n\t\tdisabled: string;\r\n\t\tpending: string;\r\n\t\tvalid: string;\r\n\t\tinvalid: string;\r\n\t} = {\r\n\t\t\tdisabled: 'DISABLED',\r\n\t\t\tpending: 'PENDING',\r\n\t\t\tvalid: 'VALID',\r\n\t\t\tinvalid: 'INVALID'\r\n\t\t};\r\n\r\n\tpublic static readonly httpHeaders:\r\n\t{\r\n\t\tqueryOnlyGet: string;\r\n\t} = {\r\n\t\t\tqueryOnlyGet: 'query-only-get'\r\n\t\t};\r\n\r\n\tpublic static readonly httpRequestTypes:\r\n\t{\r\n\t\tget: string;\r\n\t\tdelete: string;\r\n\t\tpatch: string;\r\n\t\tpost: string;\r\n\t\tput: string;\r\n\t\thead: string;\r\n\t} = {\r\n\t\t\tget: 'GET',\r\n\t\t\tdelete: 'DELETE',\r\n\t\t\tpatch: 'PATCH',\r\n\t\t\tpost: 'POST',\r\n\t\t\tput: 'PUT',\r\n\t\t\thead: 'HEAD'\r\n\t\t};\r\n\r\n\tpublic static readonly httpStatusCodes:\r\n\t{\r\n\t\tnotModified: number;\r\n\t\tpreconditionFailed: number;\r\n\t\tunauthorized: number;\r\n\t} = {\r\n\t\t\tnotModified: 304,\r\n\t\t\tpreconditionFailed: 412,\r\n\t\t\tunauthorized: 401\r\n\t\t};\r\n\r\n\tpublic static readonly interpolationTypes:\r\n\t{\r\n\t\tstring: string;\r\n\t\tobject: string;\r\n\t} = {\r\n\t\t\tstring: '${',\r\n\t\t\tobject: '#{'\r\n\t\t};\r\n\r\n\tpublic static readonly jsonTabIndent: number = 4;\r\n\r\n\tpublic static readonly keyBoardKeyConstants:\r\n\t{\r\n\t\tbackspace: string;\r\n\t\tenter: string;\r\n\t} = {\r\n\t\t\tbackspace: 'Backspace',\r\n\t\t\tenter: 'Enter'\r\n\t\t};\r\n\r\n\tpublic static readonly keywordTooltip: string =\r\n\t\t'
    Search terms entered here will filter down to only the items '\r\n\t\t\t+ 'that hold all of the search terms.
    • In order to search '\r\n\t\t\t+ 'for dates, please use the following format \\'YYYY-MM-DD\\'.
    • '\r\n\t\t\t+ '
    • In order to search for numerical values, please enter '\r\n\t\t\t+ 'the number without commas or format characters.
    ';\r\n\r\n\tpublic static readonly layoutBreakpoints:\r\n\t{\r\n\t\tsmallPhone: number;\r\n\t\tphone: number;\r\n\t\ttablet: number;\r\n\t\tdesktop: number;\r\n\t\twidgetfullWidth: number;\r\n\t\tpinnableDrawerWidth: number;\r\n\t\tlargeDesktop: number;\r\n\t} = {\r\n\t\t\tsmallPhone: 500,\r\n\t\t\tphone: 640,\r\n\t\t\ttablet: 800,\r\n\t\t\tdesktop: 1024,\r\n\t\t\twidgetfullWidth: 1000,\r\n\t\t\tpinnableDrawerWidth: 1200,\r\n\t\t\tlargeDesktop: 1360\r\n\t\t};\r\n\r\n\tpublic static readonly layoutTypes:\r\n\t{\r\n\t\tdrawer: string;\r\n\t\tfull: string;\r\n\t\tgenerated: string;\r\n\t\tquickQuote: string;\r\n\t\tsimple: string;\r\n\t\tsummary: string;\r\n\t\ttableExpand: string;\r\n\t} = {\r\n\t\t\tdrawer: 'Drawer',\r\n\t\t\tfull: 'Full',\r\n\t\t\tgenerated: 'Generated',\r\n\t\t\tquickQuote: 'QuickQuote',\r\n\t\t\tsimple: 'Simple',\r\n\t\t\tsummary: 'Summary',\r\n\t\t\ttableExpand: 'TableExpand'\r\n\t\t};\r\n\r\n\tpublic static readonly localeDefinitions:\r\n\t{\r\n\t\tsymbol: string;\r\n\t\tunitedStatesDollars: string;\r\n\t} = {\r\n\t\t\tsymbol: 'symbol',\r\n\t\t\tunitedStatesDollars: 'USD'\r\n\t\t};\r\n\r\n\tpublic static readonly loginStatus:\r\n\t{\r\n\t\tinvalid: string;\r\n\t\tfailure: string;\r\n\t} = {\r\n\t\t\tinvalid: 'Invalid',\r\n\t\t\tfailure: 'Failure'\r\n\t\t};\r\n\r\n\tpublic static readonly markdownLanguages:\r\n\t{\r\n\t\tjson: string;\r\n\t\tjavascript: string;\r\n\t\tmarkup: string;\r\n\t\ttypescript: string;\r\n\t\tsql: string;\r\n\t\tcsharp: string;\r\n\t} = {\r\n\t\t\tjson: 'json',\r\n\t\t\tjavascript: 'javascript',\r\n\t\t\tmarkup: 'markup',\r\n\t\t\ttypescript: 'typescript',\r\n\t\t\tsql: 'sql',\r\n\t\t\tcsharp: 'csharp',\r\n\t\t};\r\n\r\n\tpublic static readonly messageLevel:\r\n\t{\r\n\t\tsuccess: string;\r\n\t\tinfo: string;\r\n\t\twarn: string;\r\n\t\terror: string;\r\n\t} = {\r\n\t\t\tsuccess: 'success',\r\n\t\t\tinfo: 'info',\r\n\t\t\twarn: 'warn',\r\n\t\t\terror: 'error'\r\n\t\t};\r\n\r\n\tpublic static readonly messages:\r\n\t{\r\n\t\tcontactSupportForPermissions: string;\r\n\t\tgenericErrorMessage: string;\r\n\t\townershipNotAllowed: string;\r\n\t\tpageAccessNotAllowed: string;\r\n\t\tpleaseEnterCredentials: string;\r\n\t\trequiredValueMessage: string;\r\n\t\tsessionExpired: string;\r\n\t\tswitchCaseNotHandled: string;\r\n\t} = {\r\n\t\t\tcontactSupportForPermissions:\r\n\t\t\t'Please contact support for additional permissions.',\r\n\t\t\tgenericErrorMessage: 'An Error Occurred',\r\n\t\t\townershipNotAllowed: 'The ownership check has failed.',\r\n\t\t\tpageAccessNotAllowed: 'Page access is not allowed.',\r\n\t\t\tpleaseEnterCredentials: 'Please enter your credentials to login.',\r\n\t\t\trequiredValueMessage: 'This value is required.',\r\n\t\t\tsessionExpired: 'Your session has expired.',\r\n\t\t\tswitchCaseNotHandled:\r\n\t\t\t'a switch case currently not implemented.'\r\n\t\t};\r\n\r\n\tpublic static readonly moduleNames:\r\n\t{\r\n\t\tadmin: string;\r\n\t\tbi: string;\r\n\t\tclaim: string;\r\n\t\tdashboard: string;\r\n\t\torganizations: string;\r\n\t\tpolicy: string;\r\n\t\tprofile: string;\r\n\t\taccount: string;\r\n\t} = {\r\n\t\t\tadmin: 'admin',\r\n\t\t\tbi: 'bi',\r\n\t\t\tclaim: 'claim',\r\n\t\t\tdashboard: 'dashboard',\r\n\t\t\torganizations: 'organization',\r\n\t\t\tpolicy: 'policy',\r\n\t\t\tprofile: 'profile',\r\n\t\t\taccount: 'account'\r\n\t\t};\r\n\r\n\tpublic static readonly navigatorBrowserNames:\r\n\t{\r\n\t\tfirefox: string;\r\n\t\tchrome: string;\r\n\t\tedge: string;\r\n\t\tsafari: string;\r\n\t\tother: string;\r\n\t} = {\r\n\t\t\tfirefox: 'Firefox',\r\n\t\t\tchrome: 'Chrome',\r\n\t\t\tedge: 'Edg',\r\n\t\t\tsafari: 'Safari',\r\n\t\t\tother: 'other'\r\n\t\t};\r\n\r\n\tpublic static readonly navigatorPermissionStates:\r\n\t{\r\n\t\tgranted: string;\r\n\t\tdenied: string;\r\n\t\tprompt: string;\r\n\t\tunknown: string;\r\n\t} = {\r\n\t\t\tgranted: 'granted',\r\n\t\t\tdenied: 'denied',\r\n\t\t\tprompt: 'prompt',\r\n\t\t\tunknown: 'unknown'\r\n\t\t};\r\n\r\n\tpublic static readonly navigatorPermissionTypes:\r\n\t{\r\n\t\tgeolocation: PermissionName;\r\n\t} = {\r\n\t\t\tgeolocation: 'geolocation'\r\n\t\t};\r\n\r\n\tpublic static readonly negativeIndex: number = -1;\r\n\r\n\tpublic static readonly nestedDataIdentifier: string = 'data.';\r\n\r\n\tpublic static readonly nestedDataKeyPrefix: string = '$.';\r\n\r\n\tpublic static readonly nestedRouteTypes:\r\n\t{\r\n\t\tactions: string;\r\n\t\tchildren: string;\r\n\t\tevents: string;\r\n\t\thistory: string;\r\n\t\tparents: string;\r\n\t\tsecurityGroups: string;\r\n\t\tusers: string;\r\n\t} = {\r\n\t\t\tactions: 'actions',\r\n\t\t\tchildren: 'children',\r\n\t\t\tevents: 'events',\r\n\t\t\thistory: 'history',\r\n\t\t\tparents: 'parents',\r\n\t\t\tsecurityGroups: 'securityGroups',\r\n\t\t\tusers: 'users'\r\n\t\t};\r\n\r\n\tpublic static readonly noResultsFoundMessage: string = 'No results found.';\r\n\r\n\tpublic static readonly parseRadix: number = 10;\r\n\r\n\tpublic static readonly paymentMethodTypes:\r\n\t{\r\n\t\tach: string;\r\n\t\tcreditCard: string;\r\n\t} = {\r\n\t\t\tach: 'ACH',\r\n\t\t\tcreditCard: 'CreditCard'\r\n\t\t};\r\n\r\n\tpublic static readonly placeholders:\r\n\t{\r\n\t\tselectAnOption: string;\r\n\t\tnoAvailableOptions: string;\r\n\t} = {\r\n\t\t\tselectAnOption: 'Select An Option',\r\n\t\t\tnoAvailableOptions: 'No Available Options'\r\n\t\t};\r\n\r\n\tpublic static readonly primaryOperationGroups:\r\n\t{\r\n\t\tprimaryNavigation: string;\r\n\t\tprofileActions: string;\r\n\t\tsettingActions: string;\r\n\t} = {\r\n\t\t\tprimaryNavigation: 'PrimaryNavigation',\r\n\t\t\tprofileActions: 'ProfileActions',\r\n\t\t\tsettingActions: 'SettingActions'\r\n\t\t};\r\n\r\n\tpublic static readonly propertyTypes:\r\n\t{\r\n\t\tboolean: string;\r\n\t\tfunction: string;\r\n\t\tnumber: string;\r\n\t\tbigint: string;\r\n\t\tstring: string;\r\n\t\tsymbol: string;\r\n\t\tarray: string;\r\n\t\tobject: string;\r\n\t} = {\r\n\t\t\tboolean: 'boolean',\r\n\t\t\tfunction: 'function',\r\n\t\t\tnumber: 'number',\r\n\t\t\tbigint: 'bigint',\r\n\t\t\tstring: 'string',\r\n\t\t\tsymbol: 'symbol',\r\n\t\t\tarray: 'array',\r\n\t\t\tobject: 'object'\r\n\t\t};\r\n\r\n\tpublic static readonly overlays:\r\n\t{\r\n\t\tsidebar: string;\r\n\t} = {\r\n\t\t\tsidebar: 'Sidebar'\r\n\t\t};\r\n\r\n\tpublic static readonly overlayLocations:\r\n\t{\r\n\t\ttopCenter: string;\r\n\t\ttopLeft: string;\r\n\t\ttopRight: string;\r\n\t\tbottomCenter: string;\r\n\t\tbottomLeft: string;\r\n\t\tbottomRight: string;\r\n\t} = {\r\n\t\t\ttopCenter: 'TopCenter',\r\n\t\t\ttopLeft: 'TopLeft',\r\n\t\t\ttopRight: 'TopRight',\r\n\t\t\tbottomCenter: 'BottomCenter',\r\n\t\t\tbottomLeft: 'BottomLeft',\r\n\t\t\tbottomRight: 'BottomRight'\r\n\t\t};\r\n\r\n\tpublic static readonly OperationIdentifiers:\r\n\t{\r\n\t\tcontextMenuModule: string;\r\n\t} = {\r\n\t\t\tcontextMenuModule: 'Module.ContextMenu'\r\n\t\t};\r\n\r\n\tpublic static readonly operationTypes:\r\n\t{\r\n\t\toperationDefinition: string;\r\n\t\toperationGroup: string;\r\n\t} = {\r\n\t\t\toperationDefinition: 'OperationDefinition',\r\n\t\t\toperationGroup: 'OperationGroup'\r\n\t\t};\r\n\r\n\tpublic static readonly regularExpressionFlags:\r\n\t{\r\n\t\tglobal: string;\r\n\t} = {\r\n\t\t\tglobal: 'g'\r\n\t\t};\r\n\r\n\tpublic static readonly reservedTableDisplayOrders:\r\n\t{\r\n\t\tactionColumn: number;\r\n\t} = {\r\n\t\t\tactionColumn: 10000\r\n\t\t};\r\n\r\n\tpublic static readonly responsiveClasses:\r\n\t{\r\n\t\tsmallPhoneContent: string;\r\n\t\tphoneContent: string;\r\n\t\ttabletContent: string;\r\n\t\tlargeTabletContent: string;\r\n\t\tdesktopContent: string;\r\n\t\tlargeDesktopContent: string;\r\n\t} = {\r\n\t\t\tsmallPhoneContent: 'ui-content-small-phone',\r\n\t\t\tphoneContent: 'ui-content-phone',\r\n\t\t\ttabletContent: 'ui-content-tablet',\r\n\t\t\tlargeTabletContent: 'ui-content-large-tablet',\r\n\t\t\tdesktopContent: 'ui-content-desktop',\r\n\t\t\tlargeDesktopContent: 'ui-content-large-desktop'\r\n\t\t};\r\n\r\n\tpublic static readonly route:\r\n\t{\r\n\t\tloginPage: string;\r\n\t\tchangePasswordPage: string;\r\n\t\tdashboardPage: string;\r\n\t\tdisplay: string;\r\n\t\tentities: string;\r\n\t} = {\r\n\t\t\tloginPage: 'login',\r\n\t\t\tchangePasswordPage: 'changePassword',\r\n\t\t\tdashboardPage: 'dashboard',\r\n\t\t\tdisplay: 'display',\r\n\t\t\tentities: 'entities'\r\n\t\t};\r\n\r\n\tpublic static readonly itemSelectionMode:\r\n\t{\r\n\t\tsingle: string;\r\n\t\tmultiple: string;\r\n\t} = {\r\n\t\t\tsingle: 'single',\r\n\t\t\tmultiple: 'multiple'\r\n\t\t};\r\n\r\n\tpublic static readonly ruleActionTypes:\r\n\t{\r\n\t\tblocked: number;\r\n\t\tcontinue: number;\r\n\t} = {\r\n\t\t\tblocked: 1,\r\n\t\t\tcontinue: 2\r\n\t\t};\r\n\r\n\tpublic static readonly ruleActionTypeNames:\r\n\t{\r\n\t\tblocked: string;\r\n\t\tcontinue: string;\r\n\t} = {\r\n\t\t\tblocked: 'Blocked',\r\n\t\t\tcontinue: 'Continue'\r\n\t\t};\r\n\r\n\tpublic static readonly securityGroups:\r\n\t{\r\n\t\tadministratorDisplay: string;\r\n\t\tadministrators: string;\r\n\t\tsupportUserDisplay: string;\r\n\t\tsupportUsers: string;\r\n\t\tuserDisplay: string;\r\n\t\tusers: string;\r\n\t\twaterStreetStandard: string;\r\n\t\tadminModuleAccess: string;\r\n\t\tbiModuleAccess: string;\r\n\t\tclaimModuleAccess: string;\r\n\t\torganizationModuleAccess: string;\r\n\t\tpolicyModuleAccess: string;\r\n\t\tworkitemsModuleAccess: string;\r\n\t} = {\r\n\t\t\tadministratorDisplay: 'Administrator',\r\n\t\t\tadministrators: 'Administrators',\r\n\t\t\tsupportUserDisplay: 'Support User',\r\n\t\t\tsupportUsers: 'Support Users',\r\n\t\t\tuserDisplay: 'User',\r\n\t\t\tusers: 'Users',\r\n\t\t\twaterStreetStandard: 'WaterStreetStandard',\r\n\t\t\tadminModuleAccess: 'Admin_Module_Acess',\r\n\t\t\tbiModuleAccess: 'Bi_Module_Access',\r\n\t\t\tclaimModuleAccess: 'Claim_Module_Access',\r\n\t\t\torganizationModuleAccess: 'Organization_Module_Access',\r\n\t\t\tpolicyModuleAccess: 'Policy_Module_Access',\r\n\t\t\tworkitemsModuleAccess: 'WorkItems_Module_Access'\r\n\t\t};\r\n\r\n\tpublic static readonly sizeIdentifiers:\r\n\t{\r\n\t\textraLarge: string;\r\n\t\tlarge: string;\r\n\t\tmedium: string;\r\n\t\tsmall: string;\r\n\t} = {\r\n\t\t\textraLarge: 'extra-large',\r\n\t\t\tlarge: 'large',\r\n\t\t\tmedium: 'medium',\r\n\t\t\tsmall: 'small'\r\n\t\t};\r\n\r\n\tpublic static readonly sortDirections:\r\n\t{\r\n\t\tascending: string;\r\n\t\tdescending: string;\r\n\t} = {\r\n\t\t\tascending: 'asc',\r\n\t\t\tdescending: 'desc'\r\n\t\t};\r\n\r\n\tpublic static readonly staticLayoutSizes:\r\n\t{\r\n\t\tcalendarInputIcon: number;\r\n\t\tcollapsedContextMenuWidth: number;\r\n\t\tdrawerWidth: number;\r\n\t\texpandedContextMenuWidth: number;\r\n\t\texpandedNavigationMenuWidth: number;\r\n\t\tfontSize: number;\r\n\t\theaderBottomRightIconWidth: number;\r\n\t\thelpIconPadding: number;\r\n\t\thelpIconWidth: number;\r\n\t\toperationMenuItemHeight: number;\r\n\t\tmobileHeaderHeight: number;\r\n\t\tnestedContentPadding: number;\r\n\t\tparameterButtonSetHeight: number;\r\n\t\tparameterContainerTitleHeight: number;\r\n\t\tcircularChartInformationBottomMargin: number;\r\n\t\tcircularChartInformationCardTopMargin: number;\r\n\t\tcircularChartSquareCardBottomMargin: number;\r\n\t\tscrollPanelOverlayHeightPercent: number;\r\n\t\tslimMenuWidth: number;\r\n\t\tsmallPadding: number;\r\n\t\tstandardPadding: number;\r\n\t\tstandardCommonTableWidgetHeight: string;\r\n\t\tstandardContentPadding: number;\r\n\t\tsummaryCardChartBottomMargin: number;\r\n\t\tsquareCardChartBottomMargin: number;\r\n\t\tradialGaugeChartBottomPadding: number;\r\n\t\tradialGaugeChartCircumference: number;\r\n\t\tradialGaugeChartInformationCardBottomMargin: number;\r\n\t\tradialGaugeChartRotation: number;\r\n\t\tradialGaugeChartStandardCutOut: string;\r\n\t\tradialGaugeChartTopPadding: number;\r\n\t\ttableSearchHeight: number;\r\n\t\tutilityMenuWidth: number;\r\n\t\ttinyPadding: number;\r\n\t} = {\r\n\t\t\tcalendarInputIcon: 32,\r\n\t\t\tcollapsedContextMenuWidth: 35,\r\n\t\t\tdrawerWidth: 360,\r\n\t\t\texpandedContextMenuWidth: 235,\r\n\t\t\texpandedNavigationMenuWidth: 235,\r\n\t\t\tfontSize: 14,\r\n\t\t\theaderBottomRightIconWidth: 32,\r\n\t\t\thelpIconPadding: 10,\r\n\t\t\thelpIconWidth: 35,\r\n\t\t\t// matches overrides/_layout_variables.scss.\r\n\t\t\toperationMenuItemHeight: 41,\r\n\t\t\tmobileHeaderHeight: 45,\r\n\t\t\tnestedContentPadding: 14,\r\n\t\t\tparameterButtonSetHeight: 70,\r\n\t\t\tparameterContainerTitleHeight: 42,\r\n\t\t\tcircularChartInformationBottomMargin: 260,\r\n\t\t\tcircularChartInformationCardTopMargin: -1,\r\n\t\t\tcircularChartSquareCardBottomMargin: 250,\r\n\t\t\tscrollPanelOverlayHeightPercent: .42,\r\n\t\t\tslimMenuWidth: 45,\r\n\t\t\tsmallPadding: 3.5,\r\n\t\t\tstandardPadding: 7,\r\n\t\t\tstandardCommonTableWidgetHeight: '235',\r\n\t\t\tstandardContentPadding: 14,\r\n\t\t\tsummaryCardChartBottomMargin: 108, // matches chart.Component.scss\r\n\t\t\tsquareCardChartBottomMargin: 102, // matches chart.Component.scss\r\n\t\t\tradialGaugeChartBottomPadding: 28,\r\n\t\t\tradialGaugeChartCircumference: 180,\r\n\t\t\tradialGaugeChartInformationCardBottomMargin: 240,\r\n\t\t\tradialGaugeChartRotation: 270,\r\n\t\t\tradialGaugeChartStandardCutOut: '68%',\r\n\t\t\tradialGaugeChartTopPadding: 22,\r\n\t\t\ttableSearchHeight: 55,\r\n\t\t\tutilityMenuWidth: 35,\r\n\t\t\ttinyPadding: 1.75\r\n\t\t};\r\n\r\n\tpublic static readonly statusIconCssClasses:\r\n\t{\r\n\t\tsuccess: string;\r\n\t\terror: string;\r\n\t\twarning: string;\r\n\t} = {\r\n\t\t\tsuccess: 'success-color fa fa-check-circle',\r\n\t\t\terror: 'error-color fa fa-exclamation-circle',\r\n\t\t\twarning: 'warning-color fa fa-exclamation-circle',\r\n\t\t};\r\n\r\n\tpublic static readonly storage:\r\n\t{\r\n\t\tsecurityTokenKey: string;\r\n\t\tsecurityUserKey: string;\r\n\t\tsecurityMultiFactorAuthenticationEnabledKey: string;\r\n\t\tsecurityMultiFactorAuthenticationMethodKey: string;\r\n\t\tsecurityExpiryKey: string;\r\n\t\tsessionValidKey: string;\r\n\t\tsessionExpiryKey: string;\r\n\t\tsessionIdKey: string;\r\n\t\tsystemSettings: string;\r\n\t\tsystemTimeZone: string;\r\n\t} = {\r\n\t\t\tsecurityTokenKey: 'Root-Security-Token',\r\n\t\t\tsecurityUserKey: 'Root-Security-User',\r\n\t\t\tsecurityMultiFactorAuthenticationEnabledKey:\r\n\t\t\t\t'Root-Security-MultiFactorAuthenticationEnabled',\r\n\t\t\tsecurityMultiFactorAuthenticationMethodKey:\r\n\t\t\t\t'Root-Security-MultiFactorAuthenticationMethod',\r\n\t\t\tsecurityExpiryKey: 'Root-Security-Expiry',\r\n\t\t\tsessionValidKey: 'Root-Session-Valid',\r\n\t\t\tsessionExpiryKey: 'Root-Session-Expiry',\r\n\t\t\tsessionIdKey: 'Root-Session-Id',\r\n\t\t\tsystemSettings: 'System-Settings',\r\n\t\t\tsystemTimeZone: 'System-Time-Zone'\r\n\t\t};\r\n\r\n\tpublic static readonly systemEngines:\r\n\t{\r\n\t\tworkflowEngine: string;\r\n\t} = {\r\n\t\t\tworkflowEngine: 'Workflow Engine'\r\n\t\t};\r\n\r\n\tpublic static readonly systemId: string = '1';\r\n\r\n\tpublic static readonly time:\r\n\t{\r\n\t\tfiveMilliseconds: number;\r\n\t\ttenMilliseconds: number;\r\n\t\ttwentyFiveMilliseconds: number;\r\n\t\tfiftyMilliseconds: number;\r\n\t\toneHundredMilliseconds: number;\r\n\t\tquarterSecond: number;\r\n\t\tthreeHundredMilliSeconds: number;\r\n\t\thalfSecond: number;\r\n\t\tthreeQuarterSecond: number;\r\n\t\toneSecond: number;\r\n\t\toneThirdSecond: number;\r\n\t\ttwoSeconds: number;\r\n\t\tthreeSeconds: number;\r\n\t\tfourSeconds: number;\r\n\t\tfiveSeconds: number;\r\n\t\toneMinute: number;\r\n\t\tfiveMinutes: number;\r\n\t\tthirtyMinutes: number;\r\n\t} = {\r\n\t\t\tfiveMilliseconds: 5,\r\n\t\t\ttenMilliseconds: 10,\r\n\t\t\ttwentyFiveMilliseconds: 25,\r\n\t\t\tfiftyMilliseconds: 50,\r\n\t\t\toneHundredMilliseconds: 100,\r\n\t\t\tquarterSecond: 250,\r\n\t\t\tthreeHundredMilliSeconds: 300,\r\n\t\t\thalfSecond: 500,\r\n\t\t\tthreeQuarterSecond: 750,\r\n\t\t\toneSecond: 1000,\r\n\t\t\toneThirdSecond: 333,\r\n\t\t\ttwoSeconds: 2000,\r\n\t\t\tthreeSeconds: 3000,\r\n\t\t\tfourSeconds: 4000,\r\n\t\t\tfiveSeconds: 5000,\r\n\t\t\toneMinute: 60000,\r\n\t\t\tfiveMinutes: 300000,\r\n\t\t\tthirtyMinutes: 1800000\r\n\t\t};\r\n\r\n\tpublic static readonly days:\r\n\t{\r\n\t\tsevenDays: number;\r\n\t\tthirtyDays: number;\r\n\t} = {\r\n\t\t\tsevenDays: 7,\r\n\t\t\tthirtyDays: 30\r\n\t\t};\r\n\r\n\tpublic static readonly timeSpan:\r\n\t{\r\n\t\tzeroMinutes: string;\r\n\t} = {\r\n\t\t\tzeroMinutes: '0:0.0'\r\n\t\t};\r\n\r\n\tpublic static readonly maxRetries:\r\n\t{\r\n\t\toneHundred: number;\r\n\t} = {\r\n\t\t\toneHundred: 100\r\n\t\t};\r\n\r\n\tpublic static readonly scriptTypes:\r\n\t{\r\n\t\tjavascript: string;\r\n\t} = {\r\n\t\t\tjavascript: 'text/javascript'\r\n\t\t};\r\n\r\n\tpublic static readonly typeGroups:\r\n\t{\r\n\t\tcompanies: string;\r\n\t\tmanagingGeneralAgencies: string;\r\n\t\tsystems: string;\r\n\t\tusers: string;\r\n\t\tworkItemQueues: string;\r\n\t} = {\r\n\t\t\tcompanies: 'Test.Organization.CompaniesV2',\r\n\t\t\tmanagingGeneralAgencies:\r\n\t\t\t\t'Test.Organization.ManagingGeneralAgenciesV2',\r\n\t\t\tsystems: 'Systems',\r\n\t\t\tusers: 'Users',\r\n\t\t\tworkItemQueues: 'WorkItemQueues'\r\n\t\t};\r\n\r\n\tpublic static readonly typeNames:\r\n\t{\r\n\t\tuser: string;\r\n\t\tworkItemQueue: string;\r\n\t} = {\r\n\t\t\tuser: 'User',\r\n\t\t\tworkItemQueue: 'WorkItemQueue'\r\n\t\t};\r\n\r\n\tpublic static readonly undefined: string = 'undefined';\r\n\r\n\tpublic static readonly unitsOfMeasurement:\r\n\t{\r\n\t\timperial: string;\r\n\t\tmetric: string;\r\n\t\tstandard: string;\r\n\t} = {\r\n\t\t\timperial: 'imperial',\r\n\t\t\tmetric: 'metric',\r\n\t\t\tstandard: 'standard'\r\n\t\t};\r\n\r\n\tpublic static readonly urlParameters:\r\n\t{\r\n\t\trouteData: string;\r\n\t} = {\r\n\t\t\trouteData: 'routeData'\r\n\t\t};\r\n\r\n\tpublic static readonly systems:\r\n\t{\r\n\t\tnautix: string;\r\n\t} = {\r\n\t\t\tnautix: 'Nautix'\r\n\t\t};\r\n\r\n\tpublic static readonly variableTypes:\r\n\t{\r\n\t\tboolean: string;\r\n\t\tdate: string;\r\n\t\tstring: string;\r\n\t\tnumber: string;\r\n\t\tobject: string;\r\n\t} = {\r\n\t\t\tboolean: 'boolean',\r\n\t\t\tdate: 'Date',\r\n\t\t\tstring: 'string',\r\n\t\t\tnumber: 'number',\r\n\t\t\tobject: 'object'\r\n\t\t};\r\n\r\n\tpublic static readonly viewTypes:\r\n\t{\r\n\t\tview: string;\r\n\t\tedit: string;\r\n\t\tsearch: string;\r\n\t\tcreate: string;\r\n\t\tdirect: string;\r\n\t\tdelete: string;\r\n\t} = {\r\n\t\t\tview: 'view',\r\n\t\t\tedit: 'edit',\r\n\t\t\tsearch: 'search',\r\n\t\t\tcreate: 'create',\r\n\t\t\tdirect: 'direct',\r\n\t\t\tdelete: 'delete'\r\n\t\t};\r\n\r\n\tpublic static readonly windowTargets:\r\n\t{\r\n\t\tblank: string;\r\n\t} = {\r\n\t\t\tblank: '_blank'\r\n\t\t};\r\n\r\n\tpublic static readonly webApi:\r\n\t{\r\n\t\tauthorizationKey: string;\r\n\t\ttokenKey: string;\r\n\t\tmultiFactorKey: string;\r\n\t\ttokenExpiryKey: string;\r\n\t\teTag: string;\r\n\t\tifMatch: string;\r\n\t\tifNoneMatch: string;\r\n\t} = {\r\n\t\t\tauthorizationKey: 'authorization',\r\n\t\t\ttokenKey: 'token',\r\n\t\t\tmultiFactorKey: 'multi-factor',\r\n\t\t\ttokenExpiryKey: 'token-expiry',\r\n\t\t\teTag: 'etag',\r\n\t\t\tifMatch: 'if-match',\r\n\t\t\tifNoneMatch: 'if-none-match'\r\n\t\t};\r\n\r\n\tpublic static readonly workflowActions:\r\n\t{\r\n\t\tcreate: string;\r\n\t\texternalReportConfiguration: string;\r\n\t\tfileDownload: string;\r\n\t\tfileUpload: string;\r\n\t\tkillAllSessions: string;\r\n\t\treallySimpleSyndicationFeed: string;\r\n\t\trunBusinessRules: string;\r\n\t} = {\r\n\t\t\tcreate: 'create',\r\n\t\t\texternalReportConfiguration: 'ExternalReportConfiguration',\r\n\t\t\tfileDownload: 'FileDownload',\r\n\t\t\tfileUpload: 'FileUpload',\r\n\t\t\tkillAllSessions: 'KillAllSessions',\r\n\t\t\treallySimpleSyndicationFeed: 'ReallySimpleSyndicationFeed',\r\n\t\t\trunBusinessRules: 'RunBusinessRules'\r\n\t\t};\r\n\r\n\tpublic static readonly workflowRequisiteTypes:\r\n\t{\r\n\t\tpreRequisite: string;\r\n\t\tpostRequisite: string;\r\n\t} = {\r\n\t\t\tpreRequisite: 'PreRequisite',\r\n\t\t\tpostRequisite: 'PostRequisite'\r\n\t\t};\r\n\r\n\tpublic static readonly displayMode:\r\n\t{\r\n\t\tview: string;\r\n\t\tcreate: string;\r\n\t\tupdate: string;\r\n\t\tdelete: string;\r\n\t\tlist: string;\r\n\t\ttimeline: string;\r\n\t\tkeyDates: string;\r\n\t\tsecondaryList: string;\r\n\t\tsecondaryView: string;\r\n\t} = {\r\n\t\t\tview: 'View',\r\n\t\t\tcreate: 'Create',\r\n\t\t\tupdate: 'Update',\r\n\t\t\tdelete: 'Delete',\r\n\t\t\tlist: 'List',\r\n\t\t\ttimeline: 'Timeline',\r\n\t\t\tkeyDates: 'KeyDates',\r\n\t\t\tsecondaryList: 'SecondaryList',\r\n\t\t\tsecondaryView: 'SecondaryView'\r\n\t\t};\r\n\r\n\tpublic static readonly mutationRecordTypes:\r\n\t{\r\n\t\tchildList: string;\r\n\t} =\t{\r\n\t\t\tchildList: 'childList'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the class based identifiers used for form control overlays\r\n\t * that will ensure these are handled accurately for display.\r\n\t * @note p-calendar, p-dropdown, p-multiselect, and third party modal\r\n\t * cases are covered.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof AppConstants\r\n\t */\r\n\tpublic static readonly clickOutsidePanelControl: string[] =\r\n\t\t[\r\n\t\t\t'p-calendar',\r\n\t\t\t'p-datepicker-buttonbar',\r\n\t\t\t'p-datepicker-calendar',\r\n\t\t\t'p-datepicker-group-container',\r\n\t\t\t'p-datepicker-group',\r\n\t\t\t'p-datepicker-header',\r\n\t\t\t'p-dropdown-filter',\r\n\t\t\t'p-dropdown-filter-icon',\r\n\t\t\t'p-dropdown-header',\r\n\t\t\t'p-dropdown-item',\r\n\t\t\t'p-dropdown-items',\r\n\t\t\t'p-multiselect-filter',\r\n\t\t\t'p-multiselect-filter-icon',\r\n\t\t\t'p-multiselect-header',\r\n\t\t\t'p-multiselect-item',\r\n\t\t\t'p-multiselect-items',\r\n\t\t\t'stn-wdgt',\r\n\t\t\t'stn-widget-buttons-wrapper',\r\n\t\t\t'stn-widget-content',\r\n\t\t\t'stn-widget-loader',\r\n\t\t\t'stn-widget-wrapper'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the wildcard identifier (\".*\").\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppConstants\r\n\t */\r\n\tpublic static readonly wildcardIdentifier: string =\r\n\t\tthis.characters.period + this.characters.asterisk;\r\n\r\n\t/**\r\n\t * Gets the allowed passwords special characters.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppConstants\r\n\t */\r\n\tpublic static readonly passwordSpecialCharacters: string =\r\n\t\t'[#*$-+?_&=!%{}/]';\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tTimeUnit\r\n} from 'chart.js';\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * for chart based work.\r\n *\r\n * @export\r\n * @class ChartConstants\r\n */\r\nexport class ChartConstants\r\n{\r\n\tpublic static readonly chartClasses:\r\n\t{\r\n\t\tcanvasElement: string;\r\n\t} =\r\n\t\t\t{\r\n\t\t\t\tcanvasElement: '.chartjs-render-monitor'\r\n\t\t\t};\r\n\r\n\tpublic static readonly chartTypes:\r\n\t{\r\n\t\tbar: string;\r\n\t\tdoughnut: string;\r\n\t\tline: string;\r\n\t\tpie: string;\r\n\t\tscatter: string;\r\n\t} = {\r\n\t\t\tbar: 'bar',\r\n\t\t\tdoughnut: 'doughnut',\r\n\t\t\tline: 'line',\r\n\t\t\tpie: 'pie',\r\n\t\t\tscatter: 'scatter'\r\n\t\t};\r\n\r\n\tpublic static readonly formats:\r\n\t{\r\n\t\tday: string;\r\n\t\thour: string;\r\n\t} = {\r\n\t\t\tday: 'cccc MMMM d, yyyy',\r\n\t\t\thour: 'cccc MMMM d h:mm a'\r\n\t\t};\r\n\r\n\tpublic static readonly themeColors:\r\n\t{\r\n\t\tamber: string;\r\n\t\tblack: string;\r\n\t\tblue: string;\r\n\t\tdarkGray: string;\r\n\t\terror: string;\r\n\t\tgray: string;\r\n\t\tgreen: string;\r\n\t\tindigo: string;\r\n\t\tinfo: string;\r\n\t\tlightBlue: string;\r\n\t\tlightGray: string;\r\n\t\tlightGreen: string;\r\n\t\torange: string;\r\n\t\tpink: string;\r\n\t\tprimary: string;\r\n\t\tpurple: string;\r\n\t\tred: string;\r\n\t\tsuccess: string;\r\n\t\tteal: string;\r\n\t\twarning: string;\r\n\t\tyellow: string;\r\n\t} = {\r\n\t\t\tamber: 'amber',\r\n\t\t\tblack: 'black',\r\n\t\t\tblue: 'blue',\r\n\t\t\tdarkGray: 'dark-gray',\r\n\t\t\terror: 'error',\r\n\t\t\tgray: 'gray',\r\n\t\t\tgreen: 'green',\r\n\t\t\tindigo: 'indigo',\r\n\t\t\tinfo: 'info',\r\n\t\t\tlightBlue: 'light-blue',\r\n\t\t\tlightGray: 'light-gray',\r\n\t\t\tlightGreen: 'light-green',\r\n\t\t\tpink: 'pink',\r\n\t\t\tprimary: 'primary',\r\n\t\t\tpurple: 'purple',\r\n\t\t\torange: 'orange',\r\n\t\t\tred: 'red',\r\n\t\t\tsuccess: 'success',\r\n\t\t\tteal: 'teal',\r\n\t\t\twarning: 'warning',\r\n\t\t\tyellow: 'yellow'\r\n\t\t};\r\n\r\n\tpublic static readonly timeUnits:\r\n\t{\r\n\t\tsecond: TimeUnit;\r\n\t\tminute: TimeUnit;\r\n\t\thour: TimeUnit;\r\n\t\tday: TimeUnit;\r\n\t\tmonth: TimeUnit;\r\n\t\tyear: TimeUnit;\r\n\t} = {\r\n\t\t\tsecond: 'second',\r\n\t\t\tminute: 'minute',\r\n\t\t\thour: 'hour',\r\n\t\t\tday: 'day',\r\n\t\t\tmonth: 'month',\r\n\t\t\tyear: 'year'\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for designating file state.\r\n */\r\nexport enum FileState\r\n{\r\n\t/**\r\n\t * The file is active.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileState\r\n\t */\r\n\tActive = 'Active',\r\n\r\n\t/**\r\n\t * The file has been removed/deleted.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileState\r\n\t */\r\n\tRemoved = 'Removed',\r\n\r\n\t/**\r\n\t * The file has been approved.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileState\r\n\t */\r\n\tApproved = 'Approved',\r\n\r\n\t/**\r\n\t * The file has been rejected.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileState\r\n\t */\r\n\tRejected = 'Rejected',\r\n\r\n\t/**\r\n\t * The file is awaiting review.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileState\r\n\t */\r\n\tPending = 'Pending'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/**\r\n * An enum for designating the response type from\r\n * an http request.\r\n * @see HttpClient\r\n */\r\nexport enum ResponseType\r\n{\r\n\t/**\r\n\t * Used when the body is expected to be an ArrayBuffer.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ResponseType\r\n\t */\r\n\tArrayBuffer = 'arraybuffer',\r\n\r\n\t/**\r\n\t * Used when the body is expected to be a Blob.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ResponseType\r\n\t */\r\n\tBlob = 'blob',\r\n\r\n\t/**\r\n\t * Used when the body is expected to be an object.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ResponseType\r\n\t */\r\n\tJson = 'json',\r\n\r\n\t/**\r\n\t * Used when the body is expected to be a string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ResponseType\r\n\t */\r\n\tText = 'text'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for security right categories.\r\n *\r\n * @export\r\n */\r\nexport enum SecurityRightCategory\r\n{\r\n\t/**\r\n\t * Designates the top level rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightCategory\r\n\t */\r\n\tTopLevelRight = 'TopLevelRight',\r\n\r\n\t/**\r\n\t * Designates the top action rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightCategory\r\n\t */\r\n\tAction = 'Action',\r\n\r\n\t/**\r\n\t * Designates the top data rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightCategory\r\n\t */\r\n\tData = 'Data',\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for security right types.\r\n *\r\n * @export\r\n */\r\nexport enum SecurityRightType\r\n{\r\n\t/**\r\n\t * Designates create rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightType\r\n\t */\r\n\tcreate = 'create',\r\n\r\n\t/**\r\n\t * Designates read rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightType\r\n\t */\r\n\tread = 'read',\r\n\r\n\t/**\r\n\t * Designates update rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightType\r\n\t */\r\n\tupdate = 'update',\r\n\r\n\t/**\r\n\t * Designates delete rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightType\r\n\t */\r\n\tdelete = 'delete',\r\n\r\n\t/**\r\n\t * Designates execute rights.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SecurityRightType\r\n\t */\r\n\texecute = 'execute'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * The storage types that the server supports.\r\n */\r\nexport enum StorageType\r\n{\r\n\t/**\r\n\t * The file is saved to a drive or other strage service\r\n\t * like Azure Blob Storage\r\n\t */\r\n\tPersisted = 'Persisted',\r\n\r\n\t/**\r\n\t * The file bytes are encoded and embedded into a property\r\n\t * in the enity instance.\r\n\t */\r\n\tEmbedded = 'Embedded',\r\n\r\n\t/**\r\n\t * The file is referenced. No bytes are stored by\r\n\t * the application, only a reference that is verified.\r\n\t */\r\n\tReferenced = 'Referenced'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A class representing static constant and read only values for formly.\r\n *\r\n * @export\r\n * @class FormlyConstants\r\n */\r\nexport class FormlyConstants\r\n{\r\n\tpublic static readonly appendToTargets:\r\n\t{\r\n\t\tbody: string;\r\n\t} = {\r\n\t\t\tbody: 'body'\r\n\t\t};\r\n\r\n\tpublic static readonly attributeKeys:\r\n\t{\r\n\t\tassociatedRules: string;\r\n\t\tdataKey: string;\r\n\t\tfieldIndex: string;\r\n\t\tsectionIndex: string;\r\n\t\ttabIndex: string;\r\n\t} = {\r\n\t\t\tassociatedRules: 'associated-rules',\r\n\t\t\tdataKey: 'data-key',\r\n\t\t\tfieldIndex: 'field-index',\r\n\t\t\tsectionIndex: 'section-index',\r\n\t\t\ttabIndex: 'tab-index'\r\n\t\t};\r\n\r\n\tpublic static readonly controlStatus:\r\n\t{\r\n\t\tinvalid: string;\r\n\t} = {\r\n\t\t\tinvalid: 'INVALID'\r\n\t\t};\r\n\r\n\tpublic static readonly customControls:\r\n\t{\r\n\t\tcustomCalendar: string;\r\n\t\tcustomCheckbox: string;\r\n\t\tcustomDashboard: string;\r\n\t\tcustomDataSelect: string;\r\n\t\tcustomTabContent: string;\r\n\t\tcustomEmptyWrapper: string;\r\n\t\tcustomFieldWrapper: string;\r\n\t\tcustomIframe: string;\r\n\t\tcustomIconInput: string;\r\n\t\tcustomImageInput: string;\r\n\t\tcustomInputNumber: string;\r\n\t\tcustomInputPassword: string;\r\n\t\tcustomInputRadioButton: string;\r\n\t\tcustomInputSearch: string;\r\n\t\tcustomInputSwitch: string;\r\n\t\tcustomMaskedInput: string;\r\n\t\tcustomMessage: string;\r\n\t\tcustomMultiSelect: string;\r\n\t\tcustomOperationButton: string;\r\n\t\tcustomRepeater: string;\r\n\t\tcustomResourceIdentifier: string;\r\n\t\tcustomSectionTitle: string;\r\n\t\tcustomSelect: string;\r\n\t\tcustomSummaryCard: string;\r\n\t\tcustomTableDisplay: string;\r\n\t\tcustomTextArea: string;\r\n\t\tcustomTextDisplay: string;\r\n\t\tinput: string;\r\n\t} = {\r\n\t\t\tcustomCalendar: 'custom-calendar',\r\n\t\t\tcustomCheckbox: 'custom-checkbox',\r\n\t\t\tcustomDashboard: 'custom-dashboard',\r\n\t\t\tcustomDataSelect: 'custom-data-select',\r\n\t\t\tcustomTabContent: 'custom-tab-content',\r\n\t\t\tcustomEmptyWrapper: 'custom-empty-wrapper',\r\n\t\t\tcustomFieldWrapper: 'custom-field-wrapper',\r\n\t\t\tcustomIconInput: 'custom-icon-input',\r\n\t\t\tcustomIframe: 'custom-iframe',\r\n\t\t\tcustomInputNumber: 'custom-input-number',\r\n\t\t\tcustomImageInput: 'custom-image-input',\r\n\t\t\tcustomInputPassword: 'custom-input-password',\r\n\t\t\tcustomInputRadioButton: 'custom-input-radio-button',\r\n\t\t\tcustomInputSearch: 'custom-input-search',\r\n\t\t\tcustomInputSwitch: 'custom-input-switch',\r\n\t\t\tcustomMaskedInput: 'custom-masked-input',\r\n\t\t\tcustomMessage: 'custom-message',\r\n\t\t\tcustomMultiSelect: 'custom-multi-select',\r\n\t\t\tcustomOperationButton: 'custom-operation-button',\r\n\t\t\tcustomRepeater: 'custom-repeater',\r\n\t\t\tcustomResourceIdentifier: 'custom-resource-identifier',\r\n\t\t\tcustomSectionTitle: 'custom-section-title',\r\n\t\t\tcustomSelect: 'custom-select',\r\n\t\t\tcustomSummaryCard: 'custom-summary-card',\r\n\t\t\tcustomTableDisplay: 'custom-table-display',\r\n\t\t\tcustomTextArea: 'custom-textarea',\r\n\t\t\tcustomTextDisplay: 'custom-text-display',\r\n\t\t\tinput: 'input',\r\n\t\t};\r\n\r\n\tpublic static readonly expressions:\r\n\t{\r\n\t\thide: string;\r\n\t} = {\r\n\t\t\thide: 'hide'\r\n\t\t};\r\n\r\n\tpublic static readonly expressionMappings:\r\n\t{\r\n\t\tpropsDisabled: string;\r\n\t} = {\r\n\t\t\tpropsDisabled: 'props.disabled'\r\n\t\t};\r\n\r\n\tpublic static readonly formlyMethodParameters:\r\n\t{\r\n\t\tcontrol: string;\r\n\t\terror: string;\r\n\t\tevent: string;\r\n\t\tfield: string;\r\n\t\tformState: string;\r\n\t\tmodel: string;\r\n\t} = {\r\n\t\t\tcontrol: 'control',\r\n\t\t\terror: 'error',\r\n\t\t\tevent: 'event',\r\n\t\t\tfield: 'field',\r\n\t\t\tformState: 'formState',\r\n\t\t\tmodel: 'model'\r\n\t\t};\r\n\r\n\tpublic static readonly gridColumns:\r\n\t{\r\n\t\thalfGrid: string;\r\n\t\tfullGrid: string;\r\n\t} = {\r\n\t\t\thalfGrid: '6',\r\n\t\t\tfullGrid: '12'\r\n\t\t};\r\n\r\n\tpublic static readonly gridSizeRelationship:\r\n\t{\r\n\t\thalfGrid: number;\r\n\t\tfullGrid: number;\r\n\t} = {\r\n\t\t\thalfGrid: 2,\r\n\t\t\tfullGrid: 1\r\n\t\t};\r\n\r\n\tpublic static readonly repeaterActions:\r\n\t{\r\n\t\tadd: string;\r\n\t\tremove: string;\r\n\t} = {\r\n\t\t\tadd: 'add',\r\n\t\t\tremove: 'remove'\r\n\t\t};\r\n\r\n\tpublic static readonly valueChangeTypes:\r\n\t{\r\n\t\tvalueChanges: string;\r\n\t} = {\r\n\t\t\tvalueChanges: 'valueChanges'\r\n\t\t};\r\n\r\n\tpublic static readonly textAreaRowSizes:\r\n\t{\r\n\t\tsmall: number;\r\n\t\tstandard: number;\r\n\t\tlarge: number;\r\n\t\tfullSize: number;\r\n\t} = {\r\n\t\t\tsmall: 5,\r\n\t\t\tstandard: 10,\r\n\t\t\tlarge: 20,\r\n\t\t\tfullSize: 40\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined available mouse events.\r\n *\r\n * @export\r\n * @const MouseEventConstants\r\n */\r\nexport const MouseEventConstants:\r\n{\r\n\tclick: string;\r\n\tmouseEnter: string;\r\n\tmouseLeave: string;\r\n\tmouseOut: string;\r\n\tmouseOver: string;\r\n\ttap: string;\r\n} = {\r\n\tclick: 'click',\r\n\tmouseEnter: 'mouseenter',\r\n\tmouseLeave: 'mouseleave',\r\n\tmouseOut: 'mouseout',\r\n\tmouseOver: 'mouseover',\r\n\ttap: 'tap'\r\n};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined constants that are used to\r\n * setup payment batches.\r\n *\r\n * @export\r\n * @class PaymentBatchConstants\r\n */\r\nexport class PaymentBatchConstants\r\n{\r\n\t/**\r\n\t * Gets the identifiers used for payment batch business logic.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof PaymentBatchConstants\r\n\t */\r\n\tpublic static readonly paymentBatchIdentifiers:\r\n\t{\r\n\t\tentityTypePrefix: string;\r\n\t\tentityTypeIdentifier: string;\r\n\t\tparentNavigationEntityIdentifer: string;\r\n\t\tparentNavigationEntityType: string;\r\n\t\tpaymentBatchIdentifier: string;\r\n\t} = {\r\n\t\t\tentityTypePrefix: 'PaymentBatch.',\r\n\t\t\tentityTypeIdentifier: 'PaymentBatch.*',\r\n\t\t\tparentNavigationEntityIdentifer: 'ParentNavigationEntityId',\r\n\t\t\tparentNavigationEntityType: 'ParentNavigationEntityType',\r\n\t\t\tpaymentBatchIdentifier: 'PaymentBatchIdentifier'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the payment batch status options.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof PaymentBatchConstants\r\n\t */\r\n\tpublic static readonly paymentBatchStatus:\r\n\t{\r\n\t\tapproved: string;\r\n\t\tpending: string;\r\n\t\trejected: string;\r\n\t} = {\r\n\t\t\tapproved: 'Approved',\r\n\t\t\tpending: 'Pending',\r\n\t\t\trejected: 'Rejected'\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * associated with site permissions.\r\n *\r\n * @export\r\n * @class PermissionConstants\r\n */\r\nexport class PermissionConstants\r\n{\r\n\tpublic static readonly editPowerBiReportRoles: string [] =\r\n\t\t[\r\n\t\t\tAppConstants.securityGroups.administrators,\r\n\t\t\tAppConstants.securityGroups.supportUsers\r\n\t\t];\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A class representing static constant and read only values for reports.\r\n *\r\n * @export\r\n * @class ReportConstants\r\n */\r\nexport class ReportConstants\r\n{\r\n\tpublic static readonly externalReportTypes:\r\n\t{\r\n\t\tpowerBi: string;\r\n\t} = {\r\n\t\t\tpowerBi: 'powerBi'\r\n\t\t};\r\n\r\n\tpublic static readonly powerBiEmbedEndpoint: string =\r\n\t\t'https://app.powerbi.com';\r\n\r\n\tpublic static readonly powerBiDefaults:\r\n\t{\r\n\t\tpageName: string;\r\n\t} = {\r\n\t\t\tpageName: 'ReportSection'\r\n\t\t};\r\n\r\n\tpublic static readonly powerBiObjectTypes:\r\n\t{\r\n\t\tdashboard: string;\r\n\t\tdataset: string;\r\n\t\tgroup: string;\r\n\t\tpage: string;\r\n\t\treport: string;\r\n\t\ttile: string;\r\n\t\tvisual: string;\r\n\t} = {\r\n\t\t\tdashboard: 'dashboard',\r\n\t\t\tdataset: 'dataset',\r\n\t\t\tgroup: 'group',\r\n\t\t\tpage: 'page',\r\n\t\t\treport: 'report',\r\n\t\t\ttile: 'tile',\r\n\t\t\tvisual: 'visual'\r\n\t\t};\r\n\r\n\tpublic static readonly powerBiWorkspaceTypes:\r\n\t{\r\n\t\tcustom: string;\r\n\t\tstandard: string;\r\n\t} = {\r\n\t\t\tcustom: 'Custom',\r\n\t\t\tstandard: 'Standard'\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * for shared type based business logic.\r\n *\r\n * @export\r\n * @class SharedTypeConstants\r\n */\r\nexport class SharedTypeConstants\r\n{\r\n\t/**\r\n\t * Gets or sets the address types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly addressTypes: string[] =\r\n\t\t[\r\n\t\t\t'Mailing',\r\n\t\t\t'Physical',\r\n\t\t\t'Employer'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the address type.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly addressType:\r\n\t{\r\n\t\temployer: string;\r\n\t\tmailing: string;\r\n\t\tphysical: string;\r\n\t} = {\r\n\t\t\temployer: 'Employer',\r\n\t\t\tmailing: 'Mailing',\r\n\t\t\tphysical: 'Physical'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the email types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly emailTypes: string[] =\r\n\t\t[\r\n\t\t\t'Personal',\r\n\t\t\t'Work'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the individual types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly individualTypes: string[] =\r\n\t\t[\r\n\t\t\t'Individual'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the organization types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly organizationTypes: string[] =\r\n\t\t[\r\n\t\t\t'Organization'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the phone types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly phoneTypes: string[] =\r\n\t\t[\r\n\t\t\t'Mobile',\r\n\t\t\t'Home',\r\n\t\t\t'Work',\r\n\t\t\t'Fax'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the tax information types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof SharedTypeConstants\r\n\t */\r\n\tpublic static readonly taxInformationTypes: string[] =\r\n\t\t[\r\n\t\t\t'SocialSecurityNumber',\r\n\t\t\t'FederalEmployerIdentificationNumber'\r\n\t\t];\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined names used in the system service\r\n * settings.\r\n *\r\n * @export\r\n * @const SystemServiceConstants\r\n */\r\nexport const SystemServiceConstants:\r\n{\r\n\tchat: string;\r\n\tchatData: string;\r\n\tcomponentName: string;\r\n\tdeploymentId: string;\r\n\tenabled: string;\r\n\tenvironment: string;\r\n\tknowledgeBase: string;\r\n\tknowledgeBaseUrl: string;\r\n\tmodalService: string;\r\n\toffline: string;\r\n\tofflineMessage: string;\r\n\twalkthrough: string;\r\n\twidgetId: string;\r\n} =\r\n\t{\r\n\t\tchat: 'chat',\r\n\t\tchatData: 'chatData',\r\n\t\tcomponentName: 'componentName',\r\n\t\tdeploymentId: 'deploymentId',\r\n\t\tenabled: 'enabled',\r\n\t\tenvironment: 'environment',\r\n\t\tknowledgeBase: 'knowledgeBase',\r\n\t\tknowledgeBaseUrl: 'knowledgeBaseUrl',\r\n\t\tmodalService: 'modalService',\r\n\t\toffline: 'offline',\r\n\t\tofflineMessage: 'offlineMessage',\r\n\t\twalkthrough: 'walkthrough',\r\n\t\twidgetId: 'widgetId'\r\n\t};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined available window\r\n * emitted events that can be consumed in listening components\r\n * via the host listener.\r\n *\r\n * @export\r\n * @const WindowEventConstants\r\n */\r\nexport const WindowEventConstants:\r\n{\r\n\tbeforeUnloadEvent: string;\r\n\tclick: string;\r\n\tmessage: string;\r\n\tmessageEvent: string;\r\n\tresizeEvent: string;\r\n\tscroll: string;\r\n\tscrollEvent: string;\r\n\tfocus: string;\r\n\tkeyup: string;\r\n\tstorage: string;\r\n} = {\r\n\tbeforeUnloadEvent: 'window:beforeunload',\r\n\tclick: 'click',\r\n\tmessage: 'message',\r\n\tmessageEvent: 'window:message',\r\n\tresizeEvent: 'window:resize',\r\n\tscroll: 'scroll',\r\n\tscrollEvent: 'window:scroll',\r\n\tfocus: 'focus',\r\n\tkeyup: 'keyup',\r\n\tstorage: 'storage'\r\n};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined constants that are used to\r\n * setup work items.\r\n *\r\n * @export\r\n * @class WorkItemConstants\r\n */\r\nexport class WorkItemConstants\r\n{\r\n\t/**\r\n\t * Gets the work item entity type prefix.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly workItemEntityTypePrefix: string = 'WorkItem.';\r\n\r\n\t/**\r\n\t * Gets the identifiers used for work item business logic.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly workItemIdentifiers:\r\n\t{\r\n\t\tentityTypeIdentifier: string;\r\n\t\tparentNavigationEntityIdentifer: string;\r\n\t\tparentNavigationEntityType: string;\r\n\t\tworkItemIdentifier: string;\r\n\t} = {\r\n\t\t\tentityTypeIdentifier: 'WorkItem.*',\r\n\t\t\tparentNavigationEntityIdentifer: 'ParentNavigationEntityId',\r\n\t\t\tparentNavigationEntityType: 'ParentNavigationEntityType',\r\n\t\t\tworkItemIdentifier: 'WorkItemIdentifier'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the work item priority options.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly workItemPriority:\r\n\t{\r\n\t\thigh: string;\r\n\t\tnormal: string;\r\n\t\tlow: string;\r\n\t} = {\r\n\t\t\thigh: 'High',\r\n\t\t\tnormal: 'Normal',\r\n\t\t\tlow: 'Low'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the work item status options.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly workItemStatus:\r\n\t{\r\n\t\tactive: string;\r\n\t\tdone: string;\r\n\t\tignored: string;\r\n\t\toverdue: string;\r\n\t} = {\r\n\t\t\tactive: 'Active',\r\n\t\t\tdone: 'Done',\r\n\t\t\tignored: 'Ignored',\r\n\t\t\toverdue: 'Overdue'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the work item action names.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly actions:\r\n\t\t{\r\n\t\t\tworkItemUnblocked: string;\r\n\t\t\tworkItemBlocked: string;\r\n\t\t\tworkItemIgnored: string;\r\n\t\t\tworkItemDone: string;\r\n\t\t\tworkItemReset: string;\r\n\t\t} = {\r\n\t\t\tworkItemUnblocked: 'WorkItemUnblocked',\r\n\t\t\tworkItemBlocked: 'WorkItemBlocked',\r\n\t\t\tworkItemIgnored: 'WorkItemIgnored',\r\n\t\t\tworkItemDone: 'WorkItemDone',\r\n\t\t\tworkItemReset: 'WorkItemReset',\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the work item security group constants.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof WorkItemConstants\r\n\t */\r\n\tpublic static readonly securityGroups:\r\n\t\t{\r\n\t\t\tmanage: string;\r\n\t\t\tview: string;\r\n\t\t} = {\r\n\t\t\tmanage: 'Manage',\r\n\t\t\tview: 'View'\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewChecked,\r\n\tComponent,\r\n\tDirective,\r\n\tElementRef,\r\n\tHostListener,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tOperationButtonTypeConstants\r\n} from '@operation/shared/operation-button-type.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIDisplayComponentContainer\r\n} from '@shared/interfaces/display-components/display-component-container.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tSubscription\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[BasePage]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for displaying\r\n * a base page component with common utilities.\r\n *\r\n * @export\r\n * @class BasePageDirective\r\n * @implements {AfterViewChecked}\r\n */\r\nexport class BasePageDirective\r\nimplements AfterViewChecked\r\n{\r\n\t/**\r\n\t * Creates an instance of a base page with common utilities.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this directive.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the identifier for the div directly above the base\r\n\t * page content.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic static readonly contentTopIdentifier: string =\r\n\t\t'base-page-content-top';\r\n\r\n\t/**\r\n\t * Gets or sets the additional header content.\r\n\t * This is defined in calling components via the #BasePageTabMenu\r\n\t * attribute. This is requred for each base page tab section.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\t@ViewChild('BasePageTabMenu', { read: ElementRef })\r\n\tpublic tabMenu: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this directive.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the page operation group to load.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic operationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the tab items specifying different\r\n\t * data display tabs.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic tabItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the section items specifying different\r\n\t * data sections.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic sectionItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the document item heights for different\r\n\t * data sections.\r\n\t *\r\n\t * @type {number[]}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic tabItemHeights: number[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the current selected tab item.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic activeTabItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the current selected section item.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic activeSectionItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the information menu display component instance name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic informationMenuDisplayComponentInstanceName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the list of information menu items\r\n\t * to display in this component.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic informationMenuItems: IInformationMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display value for a completed data load for\r\n\t * an async populated information menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic informationMenuItemsLoaded: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the observer of scroll height changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic scrollHeightChangedSubject:\r\n\t\tSubject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets or sets the is layout changed value of this component.\r\n\t * This is currently set when the page header height changes\r\n\t * or when the formly display moves to a one column layout.\r\n\t * This can also be set when hiding elements in the business\r\n\t * rules to update the tab menu scroll commands.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic layoutChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the is layout reloaded value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic layoutReloaded: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the initial setup value of this component.\r\n\t * This is used to fire a one time change on load to ensure\r\n\t * tab menu commands are accurate.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic initialSetupInProgress: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the class of the container for a use available\r\n\t * height content container. This can be set in the implementing\r\n\t * component if you desire the content to be limited to available\r\n\t * content height while using dynamic sized page headers.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic fixedHeightContentClass: string;\r\n\r\n\t/**\r\n\t * Gets or sets the calculated width for displaying a full tab menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic tabMenuWidth: number;\r\n\r\n\t/**\r\n\t * Gets or sets the boolean value that defines if we should be showing\r\n\t * a navigation dropdown or a set of tab navigation items.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic displayNavigationDropdown: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the boolean value that defines if we are displaying a\r\n\t * parameter filter/chips set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic displayParameterFilter: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the boolean value sent to the base page to define if it\r\n\t * should reserve the bottom right of the header when no tab navigation\r\n\t * exists.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic reserveHeaderBottomRight: boolean;\r\n\r\n\t/**\r\n\t * Gets the value used by the UI to define at which content\r\n\t * width we should switch to a two column page header layout.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic readonly twoColumnHeaderBreakpoint: number =\r\n\t\tAppConstants.layoutBreakpoints.desktop;\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis menu item that will be displayed when we\r\n\t * are collapsing button sets and no ellipsis is already defined.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic buttonMenuNavigationGroup: MenuItem =\r\n\t\t\r\n\t\t{\r\n\t\t\tid: OperationButtonTypeConstants.groupButton,\r\n\t\t\titems: [],\r\n\t\t\tlabel: 'Page Navigation',\r\n\t\t\tstyleClass: 'theme-color selected-bottom-border p-menuitem-link'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the vertical height used for the header for both the site and the\r\n\t * page.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic get verticalOffsetHeight(): number\r\n\t{\r\n\t\treturn (this.siteLayoutService.displayTabletView === true\r\n\t\t\t? AppConstants.staticLayoutSizes.mobileHeaderHeight\r\n\t\t\t: 0)\r\n\t\t\t+ DocumentHelper.getBoundingRectangleById(\r\n\t\t\t\tdocument,\r\n\t\t\t\tAppConstants.basePageSections.headerIdentifier).height;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the identifier added to a section title for ID based\r\n\t * lookups.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tprotected readonly sectionIdentifier: string = 'Section';\r\n\r\n\t/**\r\n\t * Gets or sets the delay for a debounced subject change for tab\r\n\t * calculations.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tprotected readonly tabCalculationDebounceDelay: number =\r\n\t\tAppConstants.time.oneHundredMilliseconds;\r\n\r\n\t/**\r\n\t * Handles the scroll event sent from the window.\r\n\t * This will calculate the current scroll position so that the tab\r\n\t * menu can stay accurate with the current displayed section.\r\n\t *\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.scrollEvent)\r\n\tpublic scroll(): void\r\n\t{\r\n\t\tif (window.scrollY < 0)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.scrollHeightChangedSubject.next(window.scrollY);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.initialSetupInProgress === false)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\t// Reserve the bottom right for operation button bars\r\n\t\t\t\t\t// or titles if the page navigation row is not used.\r\n\t\t\t\t\tthis.reserveHeaderBottomRight =\r\n\t\t\t\t\t\tthis.sectionItems.length === 0\r\n\t\t\t\t\t\t\t&& this.displayParameterFilter === true;\r\n\r\n\t\t\t\t\tthis.setAvailableContentHeight();\r\n\t\t\t\t\tthis.setTabDisplay();\r\n\t\t\t\t\tthis.setTabHeights(window.scrollY);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the tab display style between tab navigation and a navigation\r\n\t * dropdown.\r\n\t *\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic setTabDisplay(): void\r\n\t{\r\n\t\tif (this.loading === true\r\n\t\t\t|| (AnyHelper.isNull(this.tabMenu)\r\n\t\t\t\t&& this.displayNavigationDropdown === false))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(this.tabMenuWidth))\r\n\t\t{\r\n\t\t\tthis.tabMenuWidth = this.tabMenu.nativeElement.scrollWidth;\r\n\t\t}\r\n\r\n\t\tconst utilizedFilterWidth: number =\r\n\t\t\tthis.displayParameterFilter === true\r\n\t\t\t\t? AppConstants.staticLayoutSizes.headerBottomRightIconWidth\r\n\t\t\t\t: 0;\r\n\t\tconst utilizedTabletWidth: number =\r\n\t\t\tAppConstants.staticLayoutSizes.utilityMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.collapsedContextMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.nestedContentPadding * 3\r\n\t\t\t\t+ utilizedFilterWidth;\r\n\t\tconst utilizedDesktopWidth: number =\r\n\t\t\tutilizedTabletWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.slimMenuWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.nestedContentPadding * 1;\r\n\t\tconst utilizedWidth: number = this.siteLayoutService.contentWidth\r\n\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t? utilizedTabletWidth\r\n\t\t\t\t: utilizedDesktopWidth);\r\n\r\n\t\t// If we are showing parameters and chips, split this width.\r\n\t\tconst availableTabDisplayWidth: number =\r\n\t\t\tthis.displayParameterFilter === true\r\n\t\t\t\t&& this.siteLayoutService.contentWidth >\r\n\t\t\t\t\tthis.twoColumnHeaderBreakpoint\r\n\t\t\t\t? (this.siteLayoutService.contentWidth\r\n\t\t\t\t\t\t- utilizedDesktopWidth) / 2\r\n\t\t\t\t: utilizedWidth;\r\n\r\n\t\tconst tooSmall: boolean =\r\n\t\t\tthis.tabMenuWidth > availableTabDisplayWidth;\r\n\r\n\t\tif (this.displayNavigationDropdown !== tooSmall)\r\n\t\t{\r\n\t\t\tthis.displayNavigationDropdown = tooSmall;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On after view checked event.\r\n\t * After the screen is drawn and displayed, this will calculate\r\n\t * the height of each data section that is shown in the tab menu.\r\n\t * These values are used for dynamic scroll events.\r\n\t * @note This method is called on all formly changes and you must\r\n\t * be careful to make sure you limit logic ran in this method.\r\n\t *\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic ngAfterViewChecked(): void\r\n\t{\r\n\t\tif ((this.loading === false\r\n\t\t\t&& (this.initialSetupInProgress === true\r\n\t\t\t\t|| this.layoutChanged === true))\r\n\t\t\t|| this.layoutReloaded === true)\r\n\t\t{\r\n\t\t\tthis.sectionItems.forEach(\r\n\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setScrollToCommand(menuItem);\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.tabItems.forEach(\r\n\t\t\t\t(menuItem: MenuItem,\r\n\t\t\t\t\tindex: number) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (menuItem.items.length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmenuItem.command =\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.tabSelected({ index: index });\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmenuItem.items?.forEach(\r\n\t\t\t\t\t\t(tabMenuItem: MenuItem) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.setScrollToCommand(\r\n\t\t\t\t\t\t\t\ttabMenuItem,\r\n\t\t\t\t\t\t\t\tindex);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.buttonMenuNavigationGroup.items =\r\n\t\t\t\tthis.tabItems.length > 0\r\n\t\t\t\t\t? \r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t...this.tabItems\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t: \r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t...this.sectionItems\r\n\t\t\t\t\t\t];\r\n\r\n\t\t\tthis.initialSetupInProgress = false;\r\n\t\t\tthis.layoutReloaded = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the tab select observed event.\r\n\t * Selects the active tab item.\r\n\t *\r\n\t * @param {any} event\r\n\t * The tab selected event sent from the observed action.\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic tabSelected(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tthis.activeTabItem = this.tabItems[event.index];\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the available height for content displays. If the value of\r\n\t * fixedHeightContentClass exists and matches with a displayed container,\r\n\t * this will set that container height at runtime.\r\n\t *\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic setAvailableContentHeight(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.fixedHeightContentClass))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst reservedHeight: number =\r\n\t\t\tMath.ceil(\r\n\t\t\t\tDocumentHelper.getElementVerticalPositionById(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tBasePageDirective.contentTopIdentifier))\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.standardPadding;\r\n\r\n\t\tconst dynamicHeightContainer: HTMLElement =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`.${this.fixedHeightContentClass}`);\r\n\t\tdynamicHeightContainer.style.height =\r\n\t\t\t`calc(100vh - ${reservedHeight}px)`;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the tab heights of each control and then\r\n\t * defines which section is currently at the top of the page.\r\n\t * This is used to keep the tab menu accurate with current settings.\r\n\t *\r\n\t * @param {number} scrollHeight\r\n\t * The current scroll height of the browser window. This is available\r\n\t * as the window.scrollY in this component.\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic setTabHeights(\r\n\t\tscrollHeight: number): void\r\n\t{\r\n\t\tif (scrollHeight < 0)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.sectionItems.length > 0\r\n\t\t\t|| this.activeTabItem?.items.length > 0)\r\n\t\t{\r\n\t\t\tconst tabItemHeights: number[] = [];\r\n\t\t\tconst sectionItems =\r\n\t\t\t\tthis.activeTabItem?.items || this.sectionItems;\r\n\r\n\t\t\tsectionItems.forEach(\r\n\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttabItemHeights.push(\r\n\t\t\t\t\t\tMath.floor(\r\n\t\t\t\t\t\t\tDocumentHelper.getElementVerticalPositionById(\r\n\t\t\t\t\t\t\t\tdocument,\r\n\t\t\t\t\t\t\t\tmenuItem.id + this.sectionIdentifier)\r\n\t\t\t\t\t\t\t\t\t+ scrollHeight));\r\n\t\t\t\t});\r\n\r\n\t\t\tconst activeTabHeight: number =\r\n\t\t\t\tMath.max.apply(\r\n\t\t\t\t\tMath,\r\n\t\t\t\t\ttabItemHeights.filter(\r\n\t\t\t\t\t\t(height: number) =>\r\n\t\t\t\t\t\t\theight <= Math.ceil(\r\n\t\t\t\t\t\t\t\tscrollHeight + this.verticalOffsetHeight)));\r\n\r\n\t\t\tconst activeTabIndex: number =\r\n\t\t\t\ttabItemHeights.indexOf(activeTabHeight);\r\n\r\n\t\t\tthis.activeSectionItem =\r\n\t\t\t\tsectionItems[\r\n\t\t\t\t\tactiveTabIndex > 0\r\n\t\t\t\t\t\t? activeTabIndex\r\n\t\t\t\t\t\t: 0];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an array of information menu items to display in this\r\n\t * component.\r\n\t *\r\n\t * @async\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic async setupInformationMenuItems(\r\n\t\tpageContext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\tthis.informationMenuItems = [];\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.informationMenuDisplayComponentInstanceName))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst displayComponentContainer: IDisplayComponentContainer =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentContainer(\r\n\t\t\t\t\tthis.informationMenuDisplayComponentInstanceName,\r\n\t\t\t\t\tpageContext);\r\n\r\n\t\tif (AnyHelper.isNull(displayComponentContainer)\r\n\t\t\t|| displayComponentContainer.container.visible === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst informationMenuPageContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tsource: pageContext.source,\r\n\t\t\t\t\tdata: await this.displayComponentFactory\r\n\t\t\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\t\t\tdisplayComponentContainer.container\r\n\t\t\t\t\t\t\t\t.jsonInitialParameters,\r\n\t\t\t\t\t\t\tpageContext)\r\n\t\t\t\t};\r\n\r\n\t\tlet displayComponentCounter: number = 0;\r\n\t\tthis.subscriptions.add(\r\n\t\t\tdisplayComponentContainer.components.subscribe(\r\n\t\t\t\tasync(displayComponentPromise:\r\n\t\t\t\t\tPromise) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponentCounter++;\r\n\t\t\t\t\tconst displayComponentInstance: DisplayComponentInstance =\r\n\t\t\t\t\t\tawait displayComponentPromise;\r\n\r\n\t\t\t\t\tconst summaryCard: IInformationMenuItem =\r\n\t\t\t\t\t\tawait this.displayComponentFactory.summaryCard(\r\n\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\tinformationMenuPageContext);\r\n\r\n\t\t\t\t\tif (!AnyHelper.isNull(summaryCard))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsummaryCard.order = displayComponentInstance.order;\r\n\r\n\t\t\t\t\t\tthis.informationMenuItems =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...this.informationMenuItems,\r\n\t\t\t\t\t\t\t\tsummaryCard\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t.sort(\r\n\t\t\t\t\t\t\t\t\t(summaryCardOne:\r\n\t\t\t\t\t\t\t\t\t\tIInformationMenuItem,\r\n\t\t\t\t\t\t\t\t\tsummaryCardTwo:\r\n\t\t\t\t\t\t\t\t\t\tIInformationMenuItem) =>\r\n\t\t\t\t\t\t\t\t\t\tsummaryCardOne.order -\r\n\t\t\t\t\t\t\t\t\t\t\tsummaryCardTwo.order);\r\n\r\n\t\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tEventHelper\r\n\t\t\t\t\t\t\t\t.dispatchSiteLayoutChangedEvent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (displayComponentCounter ===\r\n\t\t\t\t\t\tdisplayComponentContainer.container\r\n\t\t\t\t\t\t\t.displayArray.length)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.informationMenuItemsLoaded = true;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a scroll to section command to an existing menu item.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The menu item to be decorated.\r\n\t * @param {number} tabIndex\r\n\t * If sent this value will represent the tab index this section level\r\n\t * menu item is a child of.\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tprivate setScrollToCommand(\r\n\t\tmenuItem: MenuItem,\r\n\t\ttabIndex: number = null): void\r\n\t{\r\n\t\tmenuItem.command =\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tif (!AnyHelper.isNull(tabIndex)\r\n\t\t\t\t\t&& this.tabItems[tabIndex] !== this.activeTabItem)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.tabSelected({ index: tabIndex });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst sectionId: string =\r\n\t\t\t\t\tmenuItem.id + this.sectionIdentifier;\r\n\t\t\t\tDocumentHelper.scrollToElementById(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tsectionId,\r\n\t\t\t\t\tthis.verticalOffsetHeight);\r\n\t\t\t\tDocumentHelper.displaySelectedElementBorderById(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tsectionId);\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tDirective\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tPowerBiWizardStepDirective\r\n} from '@bi/directives/power-bi-wizard-step.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIPowerBiCommandArguments\r\n} from '@shared/interfaces/reports/power-bi/power-bi-command-arguments.interface';\r\nimport {\r\n\tIPowerBiDataset\r\n} from '@shared/interfaces/reports/power-bi/power-bi-dataset.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[biReportSettings]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with bi report settings.\r\n *\r\n * @export\r\n * @extends {PowerBiWizardStepDirective}\r\n * @class BIReportSettingDirective\r\n */\r\nexport class BIReportSettingDirective\r\n\textends PowerBiWizardStepDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the clone power bi report component.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power bi display service used for external power bi reports.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used for external power bi reports.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * @param {DisplayComponentTypeApiService}\r\n\t * displayComponentTypeApiService\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t *\r\n\t * Initializes a new instance of bi report settings directive.\r\n\t * @memberof BIReportSettingDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService\r\n\t)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tpowerBiService,\r\n\t\t\tpowerBiApiService,\r\n\t\t\tdisplayComponentDefinitionApiService,\r\n\t\t\tdisplayComponentTypeApiService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * icon action id constants.\r\n\t *\r\n\t * @type {{navigateToEditReport: string;\r\n\t*\tnavigateToViewReport: string;\r\n\t*\tdeleteReport: string;}}\r\n\t*\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic iconActionIds:\r\n\t{\r\n\t\tnavigateToEditReport: string;\r\n\t\tnavigateToViewReport: string;\r\n\t\tdeleteReport: string;\r\n\t} = {\r\n\t\t\tnavigateToEditReport: 'NavigateToEditReport',\r\n\t\t\tnavigateToViewReport: 'NavigateToViewReport',\r\n\t\t\tdeleteReport: 'DeleteReport'\r\n\t\t};\r\n\r\n\t/**\r\n\t* A method that get the delete\r\n\t* statement.\r\n\t*\r\n\t* @returns {string}\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic getDeleteStatement(): string\r\n\t{\r\n\t\treturn '\\nAre you sure you want to delete this Report?';\r\n\t}\r\n\r\n\t/**\r\n\t* A method that performs the navigate\r\n\t* to display action.\r\n\t*\r\n\t* @param {Router} router\r\n\t* Provided router.\r\n\t* @param {IPowerBiCommandArguments} commandArguments\r\n\t* Provided Command Arguments.\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic navigateToDisplay(\r\n\t\trouter: Router,\r\n\t\tcommandArguments: IPowerBiCommandArguments): void\r\n\t{\r\n\t\tconst basePageReportDisplayComponentName: string =\r\n\t\t\t`${AppConstants.displayComponentTypes.basePage}.`\r\n\t\t\t\t+ commandArguments.selectedItem.displayComponentInstanceName;\r\n\r\n\t\tconst displayMode: string =\r\n\t\t\tcommandArguments.item.id === this.iconActionIds.navigateToViewReport\r\n\t\t\t\t? AppConstants.viewTypes.view\r\n\t\t\t\t: AppConstants.viewTypes.edit;\r\n\r\n\t\t// Store this value for back functionality.\r\n\t\thistory.pushState(\r\n\t\t\tnull,\r\n\t\t\tAppConstants.empty,\r\n\t\t\trouter.url);\r\n\r\n\t\trouter.navigate(\r\n\t\t\t[\r\n\t\t\t\tAppConstants.moduleNames.bi,\r\n\t\t\t\tAppConstants.route.display,\r\n\t\t\t\tbasePageReportDisplayComponentName,\r\n\t\t\t\tdisplayMode\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\treplaceUrl: true\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t* Validates that new report names do not begin with an underscore\r\n\t* which would set them as not searchable due to our underscore\r\n\t* name filters on reports and datasets.\r\n\t*\r\n\t*\r\n\t* @param {FormControl} control\r\n\t* The control to be validated.\r\n\t* @returns {boolean}\r\n\t* A value representing that the value of this control starts with\r\n\t* and underscore.\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic validateNoUnderscoreStart(\r\n\t\tcontrol: UntypedFormControl): boolean\r\n\t{\r\n\t\treturn control.value.indexOf(\r\n\t\t\tAppConstants.characters.underscore) !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t* A method that performs the rename Power BI\r\n\t* report action.\r\n\t*\r\n\t* @param {IPowerBiReportDefinition} reportDefinition\r\n\t* Provided Report Definition.\r\n\t* @returns {IPowerBiReport}\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic powerBIReportMapping(\r\n\t\treportDefinition: IPowerBiReportDefinition): IPowerBiReport\r\n\t{\r\n\t\tconst powerBiReport: IPowerBiReport =\r\n\t\t\t{\r\n\t\t\t\tid: reportDefinition.reportId,\r\n\t\t\t\tdatasetId: reportDefinition.datasetId,\r\n\t\t\t\tembedUrl: AppConstants.empty,\r\n\t\t\t\tisFromPbix: false,\r\n\t\t\t\tisOwnedByMe: false,\r\n\t\t\t\tname: reportDefinition.reportName,\r\n\t\t\t\treportType: reportDefinition.reportType,\r\n\t\t\t\tweb: AppConstants.empty\r\n\t\t\t};\r\n\r\n\t\treturn powerBiReport;\r\n\t}\r\n\r\n\t/**\r\n\t* Get matching report names.\r\n\t*\r\n\t* @param {PowerBiApiService} powerBiApiService\r\n\t* Provided power BI Api service.\r\n\t* @param {FormControl} control\r\n\t* Provided report name.\r\n\t* @param {string} selectedGroupId\r\n\t* Provided report name.\r\n\t* @returns {IPowerBiReport[]}\r\n\t* @async\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic async getMatchingReportNames(\r\n\t\tpowerBiApiService: PowerBiApiService,\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tselectedGroupId: string): Promise\r\n\t{\r\n\t\tconst groupLevelData: any =\r\n\t\t\tawait powerBiApiService\r\n\t\t\t\t.groupLevelData(\r\n\t\t\t\t\tselectedGroupId);\r\n\r\n\t\treturn groupLevelData\r\n\t\t\t.filter((report: IPowerBiReport) =>\r\n\t\t\t\treport.name ===\r\n\t\t\t\t\tStringHelper.trim(\r\n\t\t\t\t\t\tcontrol.value));\r\n\t}\r\n\r\n\t/**\r\n\t* Get matching display names.\r\n\t*\r\n\t* @param {DisplayComponentInstanceApiService} displayComponentService\r\n\t* Provided display component service object.\r\n\t* @param {string} displayComponentName\r\n\t* Provided report name.\r\n\t* @returns {Promise}\r\n\t* @async\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic async getmatchingDisplayNames(\r\n\t\tdisplayComponentService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tdisplayComponentName: string): Promise\r\n\t{\r\n\t\tconst matchingDisplayNames: any =\r\n\t\t\tawait displayComponentService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${displayComponentName}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id}`);\r\n\r\n\t\treturn matchingDisplayNames;\r\n\t}\r\n\r\n\t/**\r\n\t* Gets the selected item information.\r\n\t*\r\n\t* @param {string} displayComponentInstanceName\r\n\t* The display component instance name.\r\n\t* @param {string} navigateAction\r\n\t* Provided navigation action, null as default value\r\n\t* Whether or not the current form is valid.\r\n\t* @returns {IPowerBiCommandArguments}\r\n\t* @memberof BIReportSettingDirective\r\n\t*/\r\n\tpublic getItemSelectedInfo(\r\n\t\tdisplayComponentInstanceName: string,\r\n\t\tnavigateAction: string = null): IPowerBiCommandArguments\r\n\t{\r\n\t\treturn {\r\n\t\t\tselectedItem:\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponentInstanceName: displayComponentInstanceName\r\n\t\t\t\t},\r\n\t\t\titem:\r\n\t\t\t\t{\r\n\t\t\t\t\tid: AnyHelper.isNullOrEmpty(navigateAction)\r\n\t\t\t\t\t\t? this.iconActionIds.navigateToViewReport\r\n\t\t\t\t\t\t: navigateAction\r\n\t\t\t\t}\r\n\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnChanges,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\n\r\n@Directive({\r\n\tselector: '[clickOutside]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for the click outside event.\r\n * This directive can be attached to html elements to define if a click\r\n * outside of this element occurred.\r\n *\r\n * @export\r\n * @class ClickOutsideDirective\r\n */\r\nexport class ClickOutsideDirective\r\nimplements OnChanges\r\n{\r\n\t/**\r\n\t* Initializes a new instance of the click outside directive.\r\n\t*\r\n\t* @param {ElementRef} elementRef\r\n\t* The html element that has this attached directive.\r\n\t* @memberof ClickOutsideDirective\r\n\t*/\r\n\tpublic constructor(\r\n\t\tpublic elementRef: ElementRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the content displayed value, which can be\r\n\t * sent if you want this click outside event to be conditional.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\t@Input() public contentDisplayed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value defining whether or not this click outside\r\n\t * should ignore formly panel based body containers.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\t@Input() public ignoreAppendedBodyPanelClicks: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the click outside event that will be attached\r\n\t * to html elements via (clickOutside)=\"componentMethod()\".\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\t@Output() public clickOutside: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the depth of classlists used to find if the clicked control\r\n\t * is in an appended panel.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\tprivate readonly appendedPanelClickDepth: number = 5;\r\n\r\n\t/**\r\n\t * Checks for click outside the element when\r\n\t * the element is active, otherwise removes\r\n\t * the window event listener.\r\n\t *\r\n\t * @type {EventListener}\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\tpublic onClick: EventListener =\r\n\t\t(clickEvent: any) =>\r\n\t\t{\r\n\t\t\tif (this.contentDisplayed === true)\r\n\t\t\t{\r\n\t\t\t\tconst clickedInside =\r\n\t\t\t\t\tthis.elementRef.nativeElement\r\n\t\t\t\t\t\t.contains(clickEvent.target);\r\n\r\n\t\t\t\tlet panelClicked: boolean = false;\r\n\t\t\t\tif (!clickedInside\r\n\t\t\t\t\t&& this.ignoreAppendedBodyPanelClicks === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet includedClassLists: any[] = [];\r\n\t\t\t\t\tfor (const includedPath of\r\n\t\t\t\t\t\tclickEvent.composedPath().slice(\r\n\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\tthis.appendedPanelClickDepth))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tincludedClassLists =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...includedClassLists,\r\n\t\t\t\t\t\t\t\t...includedPath.classList || []\r\n\t\t\t\t\t\t\t];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpanelClicked =\r\n\t\t\t\t\t\tincludedClassLists.filter(\r\n\t\t\t\t\t\t\t(value: string) =>\r\n\t\t\t\t\t\t\t\tAppConstants.clickOutsidePanelControl\r\n\t\t\t\t\t\t\t\t\t.includes(value)).length > 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!panelClicked\r\n\t\t\t\t\t&& !clickedInside)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.clickOutside.emit(clickEvent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\twindow.removeEventListener(\r\n\t\t\t\t\tWindowEventConstants.click,\r\n\t\t\t\t\tthis.onClick,\r\n\t\t\t\t\ttrue);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t/**\r\n\t * Implements the on changes interface.\r\n\t * Adds a listener for any click event\r\n\t * on the window only if the content\r\n\t * is displayed.\r\n\t *\r\n\t * @memberof ClickOutsideDirective\r\n\t */\r\n\tpublic ngOnChanges(): void\r\n\t{\r\n\t\tif (this.contentDisplayed)\r\n\t\t{\r\n\t\t\twindow.addEventListener(\r\n\t\t\t\tWindowEventConstants.click,\r\n\t\t\t\tthis.onClick,\r\n\t\t\t\ttrue);\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonListDirective\r\n} from '@shared/directives/common-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIInstanceAccessPolicy\r\n} from '@shared/interfaces/application-objects/instance-access-policy.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecurityDefinition\r\n} from '@shared/interfaces/security/security-definition.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[CommonChildListDirective]'\r\n})\r\n\r\n/**\r\n * A class representing the common code for a component displaying a list of\r\n * entity children.\r\n *\r\n * @export\r\n * @class CommonChildListDirective\r\n * @extends {CommonListDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CommonChildListDirective\r\n\textends CommonListDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CommonChildListDirective. This\r\n\t * directive is used to help with loading and displaying\r\n\t * an entity based child list.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service for this directive.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service for this directive.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this directive.\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the wildcard child filter that be used to identify a\r\n\t * singular exact type or a wild card child type such as 'WorkItem.*'.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\t@Input() public wildcardChildFilter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of user instance based access access policies\r\n\t * per work item.\r\n\t *\r\n\t * @type {IInstanceAccessPolicy[]}\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic instanceBasedPermissions: IInstanceAccessPolicy[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the supported entity types for this common child list.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic supportedEntityTypes: EntityType[];\r\n\r\n\t/**\r\n\t * Gets or sets the return to use when you wish to hide an item from\r\n\t * display in this list.\r\n\t *\r\n\t * @type {ICommonListItem}\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic readonly hiddenCommonListItem: ICommonListItem =\r\n\t\t>\r\n\t\t{\r\n\t\t\titem: null,\r\n\t\t\tdescriptionLineFormat: AppConstants.empty,\r\n\t\t\tinformationLineFormat: AppConstants.empty,\r\n\t\t\tinformationIcons: [],\r\n\t\t\tactions: []\r\n\t\t};\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will find all of the supported entity types of the context\r\n\t * displayed entity and load all of those types into a common list.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst childEntityTypes: string[] =\r\n\t\t\tApiFilterHelper.getWildcardEntityTypes(\r\n\t\t\t\t(this.context.source)\r\n\t\t\t\t\t.entityDefinition\r\n\t\t\t\t\t.supportedChildTypes,\r\n\t\t\t\tthis.wildcardChildFilter);\r\n\r\n\t\tconst namesFromList: EntityType[] =\r\n\t\t\tawait this.entityService\r\n\t\t\t\t.getEntityTypesFromNameList(childEntityTypes);\r\n\r\n\t\tthis.supportedEntityTypes = namesFromList\r\n\t\t\t.filter((entityType: EntityType) =>\r\n\t\t\t\tentityType.name.startsWith(this.wildcardChildFilter));\r\n\r\n\t\tthis.sorter =\r\n\t\t\tthis.sorter || this.sorters[0];\r\n\r\n\t\tawait this.setSecurityDefinitions();\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadItems(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tthis);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will return a primary filter that will be used for all list\r\n\t * displays regardless of the selected filters.\r\n\t *\r\n\t * @returns {string}\r\n\t * A primary filter for all queries in this child list.\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic getPrimaryFilter(): string\r\n\t{\r\n\t\treturn ApiFilterHelper.getEntityTypeFilter(this.supportedEntityTypes);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads all of the associated items to be displayed in this child common\r\n\t * list based on the sent filters and sorters.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * The additional filters array above and beyond the primary filter used\r\n\t * to further limit the items result set.\r\n\t * @param {ICommonListSort} sorter\r\n\t * The sort order to load these items in.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will contain all of the entity instances\r\n\t * matching the wildcard filter with additional filtering and sorts\r\n\t * based on user interface selections.\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tpublic async loadItems(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise\r\n\t{\r\n\t\tlet filter: string =\r\n\t\t\tthis.getPrimaryFilter();\r\n\r\n\t\tif (this.supportedEntityTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn Promise.resolve([]);\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(filters) === false)\r\n\t\t{\r\n\t\t\tfilters.forEach(\r\n\t\t\t\t(item: ICommonListFilter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter = AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t\t? item.value\r\n\t\t\t\t\t\t: `(${filter}) and (${item.value})`;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\treturn this.entityService.getFullHierarchyDataSet(\r\n\t\t\t\tthis.context.source.id,\r\n\t\t\t\tthis.context.source.entityTypeGroup,\r\n\t\t\t\tfilter,\r\n\t\t\t\torderBy);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets security definitions associated with current parent instance.\r\n\t *\r\n\t * @protected\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tprotected async setSecurityDefinitions(): Promise\r\n\t{\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tthis.securityDefinitions =\r\n\t\t\tawait SecurityHelper\r\n\t\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\t\tentityInstanceComponent.id,\r\n\t\t\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\t\t\tthis.wildcardChildFilter,\r\n\t\t\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets security definitions associated with the current user instance\r\n\t * per work item in the list.\r\n\t *\r\n\t * @protected\r\n\t * @memberof CommonChildListDirective\r\n\t */\r\n\tprotected async setInstanceBasedPermissions(): Promise\r\n\t{\r\n\t\tconst promiseArray: Promise[] = [];\r\n\r\n\t\tfor (const item of this.listData)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\t(async () =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\titem.entityType;\r\n\r\n\t\t\t\t\tconst result: IInstanceAccessPolicy =\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.getPermissions(item.id)\r\n\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\t(accessPolicy: ISecurityDefinition) =>\r\n\t\t\t\t\t\t\t\t\t({ id: item.id, accessPolicy }));\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t})());\r\n\t\t}\r\n\r\n\t\tthis.instanceBasedPermissions =\r\n\t\t\tawait Promise.all(promiseArray);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[CommonListDirective]'\r\n})\r\n\r\n/**\r\n * A class representing the common code for a component displaying a list.\r\n *\r\n * @export\r\n * @class CommonListDirective\r\n * @typeparam {TEntity} The interface type that will be displayed in this\r\n * common list.\r\n * @typeparam {TEntityDto} The public dto type that will be displayed in this\r\n * common list.\r\n * @implements {OnInit}\r\n */\r\nexport class CommonListDirective implements OnInit\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the change selected item event emitter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\t@Output() public changeSelectedItem: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the navigate event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the common list context to be loaded\r\n\t * during view mode.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \tComponent,\r\n\t * \tICommonListContext>}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic commonListContext: IDynamicComponentContext<\r\n\t\tComponent,\r\n\t\tICommonListContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the current display mode is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of enabled filters.\r\n\t *\r\n\t * @type {ICommonListFilter[]}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic enabledFilters: ICommonListFilter[];\r\n\r\n\t/**\r\n\t * Gets or sets the list of common sorters for the list view.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic sorters: ICommonListSort[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected sorter.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic sorter: ICommonListSort;\r\n\r\n\t/**\r\n\t * Gets or sets the api service to be used.\r\n\t *\r\n\t * @type {BaseEntityApiService}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic apiService: BaseEntityApiService;\r\n\r\n\t/**\r\n\t * Gets or sets the list data for the list.\r\n\t *\r\n\t * @type {TEntity[]}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic listData: TEntity[];\r\n\r\n\t/**\r\n\t * Gets or sets the creatable types for the list.\r\n\t *\r\n\t * @type {EntityType[]}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic creatableEntityTypes: EntityType[];\r\n\r\n\t/**\r\n\t * Gets or sets the message sent to developers implementing this directive\r\n\t * when a method must be created.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tprivate readonly requiredImplementationMessage: string =\r\n\t\t'must be implemented in the component.';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.sorter =\r\n\t\t\tthis.sorter || this.sorters[0];\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadItems(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tthis);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any sorter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListSort} sorter\r\n\t * A value representing the enabled and selected sorter.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic handleSortingChange(\r\n\t\tsource: any,\r\n\t\tsorter: ICommonListSort): void\r\n\t{\r\n\t\tthis.sorter = sorter;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadItems(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any filter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * A collection of enabled and active filters.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic handleFilterChange(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[]): void\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadItems(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to either create or refresh the common list context.\r\n\t *\r\n\t * @rule\r\n\t * The source control's which loading parameter, icon display to enable.\r\n\t *\r\n\t * @async\r\n\t * @param {Promise} dataPromise\r\n\t * A value representing the data promise to load into the context.\r\n\t * @param {any} source\r\n\t * A value representing the source component we are refreshing the context\r\n\t * from.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic async refreshCommonListContext(\r\n\t\tdataPromise: Promise,\r\n\t\tsource: any): Promise\r\n\t{\r\n\t\tconst firstLoad: boolean =\r\n\t\t\tAnyHelper.isNull(this.commonListContext) === true;\r\n\t\tsource.loading = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.listData = await dataPromise;\r\n\r\n\t\t\tawait this.performPreMappingRequirements();\r\n\r\n\t\t\tconst data: ICommonListItem[] =\r\n\t\t\t\tthis.listData\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(item: TEntity) =>\r\n\t\t\t\t\t\t\tthis.mapToListItem(item))\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(listItem: ICommonListItem) =>\r\n\t\t\t\t\t\t\t!AnyHelper.isNull(listItem?.item));\r\n\r\n\t\t\tif (firstLoad)\r\n\t\t\t{\r\n\t\t\t\t// Generate entire context.\r\n\t\t\t\tthis.commonListContext =\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: this.generateCommonListContext(data),\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// We need to refresh data only.\r\n\t\t\t\tthis.commonListContext.data.data = data;\r\n\t\t\t}\r\n\r\n\t\t\tthis.performPostLoadActions();\r\n\r\n\t\t\tsource.loading = false;\r\n\r\n\t\t\tif (AnyHelper.isFunction(\r\n\t\t\t\tsource.performPostLoadActions))\r\n\t\t\t{\r\n\t\t\t\tsource.performPostLoadActions();\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tsource.loading = false;\r\n\t\t\tthrow exception;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading rules data.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} [filters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @param {ICommonListSort} [sorter]\r\n\t * A value representing the enabled sorter to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with an filter, order, and offset.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic async loadItems(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise\r\n\t{\r\n\t\tlet filter: string =\r\n\t\t\tthis.getPrimaryFilter();\r\n\r\n\t\tif (AnyHelper.isNull(filters) === false)\r\n\t\t{\r\n\t\t\tfilters.forEach(\r\n\t\t\t\t(item: ICommonListFilter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter = AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t\t? item.value\r\n\t\t\t\t\t\t: `(${filter}) AND (${item.value})`;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\treturn this.getData(\r\n\t\t\t\tfilter,\r\n\t\t\t\torderBy);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate an initial filter for all calls to this list.\r\n\t *\r\n\t * @rule\r\n\t * This filter will be used for all calls, including those in the\r\n\t * list context filter set.\r\n\t *\r\n\t * @returns {string}\r\n\t * A filter value used for all data loads in this list.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic getPrimaryFilter(): string\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\t`GetPrimaryFilter ${this.requiredImplementationMessage}`);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * A value representing the compiled filters from the common list filter\r\n\t * array.\r\n\t * @param {string} orderBy\r\n\t * A value representing the compiled order by from the common list sort.\r\n\t * @param {number} offset\r\n\t * A value representing the current offset to load from. This value\r\n\t * defaults to 0.\r\n\t * @returns {Promise}\r\n\t * A data promise with an applied filter, order, and offset.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic async getData(\r\n\t\t_filter: string,\r\n\t\t_orderBy: string,\r\n\t\t_offset: number = 0): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\t`GetData ${this.requiredImplementationMessage}`);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that sets the creatable entity types property.\r\n\t *\r\n\t * @async\r\n\t * @param {string} childTypeWildCard\r\n\t * the child wildcard entity type.\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic async setCreatableEntityTypes(\r\n\t\tchildTypeWildCard: string): Promise\r\n\t{\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\t(this.context.source);\r\n\r\n\t\tconst supportedChildPermissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait SecurityHelper\r\n\t\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\t\tentityInstanceComponent.id,\r\n\t\t\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\t\t\tchildTypeWildCard,\r\n\t\t\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tthis.creatableEntityTypes = supportedChildPermissions\r\n\t\t\t.map((supportedChildPermission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: supportedChildPermission.entityTypeId,\r\n\t\t\t\t\tname: supportedChildPermission.entityTypeName,\r\n\t\t\t\t\tgroup: supportedChildPermission.entityTypeGroup,\r\n\t\t\t\t\tpublic: supportedChildPermission.public,\r\n\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\tsupportedChildPermission.OwnershipSecurityGroupId\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the base rules common list context.\r\n\t *\r\n\t * @rule\r\n\t * This method will generate on firstLoad the default common list context\r\n\t * with properties used for rules.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * A value representing the data to load within the common list context.\r\n\t * @returns {ICommonListContext}\r\n\t * A value representing the common list context for first load.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\t_data: ICommonListItem[]): ICommonListContext\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\t`GenerateCommonListContext ${this.requiredImplementationMessage}`);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps entity instance data to a common list item.\r\n\t *\r\n\t * @param {TEntity} entity\r\n\t * A value representing the TEntity to map to common list item.\r\n\t * @returns {ICommonListItem}\r\n\t * A value representing the mapped common list item from the instance.\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\t_entity: TEntity): ICommonListItem\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\t`MapToListItem ${this.requiredImplementationMessage}`);\r\n\t}\r\n\r\n\t/**\r\n\t * An available lifecycle event which is called after the list data is\r\n\t * initially loaded.\r\n\t *\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic performPostLoadActions(): void\r\n\t{\r\n\t\t// Placeholder method that can be implemented in the child component.\r\n\t}\r\n\r\n\t/**\r\n\t * An available lifecycle event which is called prior to mapping list items\r\n\t * as soon as list data is available.\r\n\t *\r\n\t * @memberof CommonListDirective\r\n\t */\r\n\tpublic async performPreMappingRequirements(): Promise\r\n\t{\r\n\t\t// Placeholder method that can be implemented in the child component.\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTablePageDirective\r\n} from '@shared/interfaces/application-objects/common-table-page-directive.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubscription\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[CommonTablePage]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component displaying\r\n * an admin page component.\r\n *\r\n * @export\r\n * @class CommonTablePageDirective\r\n * @implements {ICommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CommonTablePageDirective\r\nimplements ICommonTablePageDirective, OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of an admin page directive.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the api service used to capture data. This service is saved\r\n\t * during the initial load and used on subsequent loads. If the\r\n\t * loadListData method is overrode in the implementing component, this\r\n\t * interface is not required.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic apiService: any;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic availableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic selectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the menu items for page actions that will be\r\n\t * displayed in the page containing this admin page.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic pageActions: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table row count.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic tableRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets or sets the table filter query.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic tableFilterQuery: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic loadingTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tsource: this\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method is used to load list data and to set the admin page row\r\n\t * expand component to be displayed.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setupPage();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on destroy interface.\r\n\t * This method is used to clean up any page based subscriptions.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.subscriptions.unsubscribe();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the full page set of display items.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupPage(): void\r\n\t{\r\n\t\tthis.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.setupInformationMenuItems();\r\n\t\tthis.setupPageCharts();\r\n\t\tthis.setupPageActions();\r\n\t}\r\n\r\n\t/**\r\n\t * Resets pulled data filters to latest and refreshes\r\n\t * related diplays.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic refreshDataQueries(): void\r\n\t{\r\n\t\tthis.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.setupInformationMenuItems();\r\n\t\tthis.setupPageCharts();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the array of information menu items for the current\r\n\t * admin page.\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupInformationMenuItems(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the array of charts to be displayed in the current\r\n\t * admin page.\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupPageCharts(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for the current admin page.\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page actions to display in an operation button bar to\r\n\t * interact with data in this admin page.\r\n\t *\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupPageActions(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based filter.\r\n\t * This must be overrode in the implementing class.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a mobile specific pan event to ensure that tooltips\r\n\t * are displayed one at a time for all touch actions.\r\n\t *\r\n\t * @memberof CommonTablePageDirective\r\n\t */\r\n\tpublic closeChartTooltips(): void\r\n\t{\r\n\t\tconst mouseOutEvent =\r\n\t\t\tnew MouseEvent(\r\n\t\t\t\tMouseEventConstants.mouseOut);\r\n\r\n\t\tdocument.querySelectorAll(\r\n\t\t\tChartConstants.chartClasses.canvasElement)\r\n\t\t\t.forEach(\r\n\t\t\t\t(canvasElement: Element) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tcanvasElement.dispatchEvent(mouseOutEvent);\r\n\t\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tBasePageDirective\r\n} from '@shared/directives/base-page.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIFormlyDisplay\r\n} from '@shared/interfaces/application-objects/formly-display.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisEqual\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[AppDisplayComponentParameter]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with a display component parameter object.\r\n *\r\n * @export\r\n * @class EntitySearchDirective\r\n * @extends {BasePageDirective}\r\n */\r\nexport class DisplayComponentParameterDirective\r\n\textends BasePageDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component parameter directive.\r\n\t * This directive is used when displaying and interacting with display\r\n\t * component parameters.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this directive.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the page context used to interact with nested display\r\n\t * components.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the parent parameter layout data for child components.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public parentParameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the active settings display value, used to define\r\n\t * if a dashboard widget item is currently displaying a display settings\r\n\t * component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic settingsActive: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the click of apply parameters sent from the contained\r\n\t * display component parameter object.\r\n\t * This is a stubbed method signature and implementing classes should\r\n\t * handle this logic individually.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic async applyParameters(): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\t'This must be implemented in the component instance');\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click for the display and hide action of\r\n\t * parameter components.\r\n\t *\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic settingsClicked(): void\r\n\t{\r\n\t\tthis.settingsActive = !this.settingsActive;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a cancel click from a parameter component.\r\n\t *\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic cancelClicked(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.settingsActive = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles child parameter data by ensuring that matching value in\r\n\t * child parameter based display components also receive the updated\r\n\t * value in the parent.\r\n\t *\r\n\t * @param {IFormlyDisplay[]} displayArray\r\n\t * The display array of child components used to interact with data\r\n\t * objects in children.\r\n\t * @param {FormlyFieldConfig[]} parameterSchema\r\n\t * The layout schema currently displayed at this level in the display\r\n\t * component hierarchy.\r\n\t * @param {any} parameterLayoutData\r\n\t * The layout data currently displayed at this level in the display\r\n\t * component hierarchy. These values will be populated into child display\r\n\t * components.\r\n\t * @returns {boolean}\r\n\t * If true, this signifies that a child parameter object has had it's\r\n\t * data altered and should be updated.\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic handleChildParameterData(\r\n\t\tdisplayArray: IFormlyDisplay[],\r\n\t\tparameterSchema: FormlyFieldConfig[],\r\n\t\tparameterLayoutData: any): boolean\r\n\t{\r\n\t\tlet parentChanged: boolean = false;\r\n\t\tdisplayArray.forEach(\r\n\t\t\t(displayChild: IFormlyDisplay, _index: number) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(displayChild.parameterLayoutSchema))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparameterSchema\r\n\t\t\t\t\t.forEach((formlyFieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet objectChanged: boolean = false;\r\n\t\t\t\t\t\tconst dataClone: any =\r\n\t\t\t\t\t\t\t{...displayChild.parameterLayoutData};\r\n\r\n\t\t\t\t\t\tdisplayChild.parameterLayoutSchema\r\n\t\t\t\t\t\t\t.forEach(\r\n\t\t\t\t\t\t\t\t(nestedFormlyFieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst cleanedDataKey: string =\r\n\t\t\t\t\t\t\t\t\t\tStringHelper.clearNestedDataIdentifier(\r\n\t\t\t\t\t\t\t\t\t\t\tformlyFieldConfig.key\r\n\t\t\t\t\t\t\t\t\t\t\t\t.toString());\r\n\r\n\t\t\t\t\t\t\t\t\tif (formlyFieldConfig.key ===\r\n\t\t\t\t\t\t\t\t\t\tnestedFormlyFieldConfig.key\r\n\t\t\t\t\t\t\t\t\t\t&& !isEqual(\r\n\t\t\t\t\t\t\t\t\t\t\tdataClone.data[\r\n\t\t\t\t\t\t\t\t\t\t\t\tcleanedDataKey],\r\n\t\t\t\t\t\t\t\t\t\t\tparameterLayoutData.data[\r\n\t\t\t\t\t\t\t\t\t\t\t\tcleanedDataKey]))\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tobjectChanged = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdataClone.data[\r\n\t\t\t\t\t\t\t\t\t\t\tcleanedDataKey] =\r\n\t\t\t\t\t\t\t\t\t\t\tparameterLayoutData.data[\r\n\t\t\t\t\t\t\t\t\t\t\t\tcleanedDataKey];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (objectChanged)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tparentChanged = true;\r\n\t\t\t\t\t\t\tdisplayChild.parameterLayoutData =\r\n\t\t\t\t\t\t\t\t{...dataClone};\r\n\t\t\t\t\t\t\tdisplayChild.dataChanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn parentChanged;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[DrawerListDirective]'\r\n})\r\n\r\n/**\r\n * A class representing the common code for a list displayed in a base\r\n * drawer.\r\n *\r\n * @export\r\n * @class DrawerListDirective\r\n * @typeparam {TEntity} The generic type that will be displayed in this\r\n * drawer list.\r\n */\r\nexport class DrawerListDirective\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * An object containing the possible display modes for the notes component.\r\n\t *\r\n\t * @type {{\r\n\t * \t\tview: string;\r\n\t * \t\tcreate: string;\r\n\t * \t\tupdate: string;\r\n\t * \t\tdelete: string;\r\n\t * \t\tlist: string;\r\n\t * \t\tkeyDates: string;\r\n\t * \t\ttimeline: string;\r\n\t * \t\tsecondaryList: string;\r\n\t * \t\tsecondaryView: string;\r\n\t * \t}}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic readonly displayModes: {\r\n\t\tview: string;\r\n\t\tcreate: string;\r\n\t\tupdate: string;\r\n\t\tdelete: string;\r\n\t\tlist: string;\r\n\t\tkeyDates: string;\r\n\t\ttimeline: string;\r\n\t\tsecondaryList: string;\r\n\t\tsecondaryView: string;\r\n\t} = {\r\n\t\t\tview: AppConstants.displayMode.view,\r\n\t\t\tcreate: AppConstants.displayMode.create,\r\n\t\t\tupdate: AppConstants.displayMode.update,\r\n\t\t\tdelete: AppConstants.displayMode.delete,\r\n\t\t\tlist: AppConstants.displayMode.list,\r\n\t\t\tkeyDates: AppConstants.displayMode.keyDates,\r\n\t\t\ttimeline: AppConstants.displayMode.timeline,\r\n\t\t\tsecondaryList: AppConstants.displayMode.secondaryList,\r\n\t\t\tsecondaryView: AppConstants.displayMode.secondaryView\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets a set of item level actions that are used in this drawer\r\n\t * list.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic itemActions: ISecureMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the active view mode.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic displayMode: string = this.displayModes.list;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing a selected item.\r\n\t *\r\n\t * @type {TEntity}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic selectedItem: TEntity = null;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the display name of this list item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic entityDisplayName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the wildcard child filter which is\r\n\t * used to find allowed child types that can be created in this list.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic wildcardChildFilter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing an initial create set of data that will\r\n\t * be set into a newly created instance made from this drawer list.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic initialCreateData: any = {};\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic isOwnershipAllowed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the access denied url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic resources: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the client message if insufficient resources exist.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the view is valid.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean value representing if the view is valid.\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic isValid(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNull(this.context?.source)\r\n\t\t\t&& (this.context.source instanceof EntityInstanceComponent);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the display mode is available.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean value representing if the display mode is available.\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic isDisplayModeAvailable(): boolean\r\n\t{\r\n\t\treturn Object.keys(this.displayModes)\r\n\t\t\t.map(\r\n\t\t\t\t(mode: string) =>\r\n\t\t\t\t\tmode.toLocaleLowerCase())\r\n\t\t\t.includes(\r\n\t\t\t\tthis.displayMode.toLocaleLowerCase());\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the display mode to the requested mode.\r\n\t *\r\n\t * @param {string} mode\r\n\t * A string representing the display mode to change to.\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic changeDisplayMode(\r\n\t\tmode: string): void\r\n\t{\r\n\t\tthis.displayMode = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the selected item value to the requested item.\r\n\t *\r\n\t * @param {TEntity} item\r\n\t * A item to changed the selected item value to.\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic changeSelectedItem(\r\n\t\titem: TEntity): void\r\n\t{\r\n\t\tthis.selectedItem = item;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of strings representing note types filtered from the\r\n\t * list of input types.\r\n\t *\r\n\t * @protected\r\n\t * @param {number} parentId\r\n\t * The parent id of the note.\r\n\t * @param {string} parentTypeGroup\r\n\t * the parent type group.\r\n\t * @param {EntityDefinition} parentEntityDefinition\r\n\t * The parent Entity Definition.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * the entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The Entity Type API service.\r\n\t * @returns {Promise}\r\n\t * A collection of suppported and authorized entity types notes.\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tprotected async setSecurityDefinitions(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tparentEntityDefinition: EntityDefinition,\r\n\t\tentityInstanceApiService: EntityInstanceApiService,\r\n\t\tentityTypeApiService: EntityTypeApiService):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.securityDefinitions =\r\n\t\t\tawait SecurityHelper\r\n\t\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tparentTypeGroup,\r\n\t\t\t\t\tthis.wildcardChildFilter,\r\n\t\t\t\t\tparentEntityDefinition,\r\n\t\t\t\t\tentityInstanceApiService,\r\n\t\t\t\t\tentityTypeApiService);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tTooltip\r\n} from 'primeng/tooltip';\r\n\r\n@Directive({\r\n\tselector: '[mobileTooltip]',\r\n\texportAs: 'mobileTooltip'\r\n})\r\n\r\n/**\r\n * A directive that handles mobile tap based tooltips and hides a tooltip\r\n * when the window is scrolled.\r\n *\r\n * @export\r\n * @class MobileTooltipDirective\r\n */\r\nexport class MobileTooltipDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the MobileTooltipDirective.\r\n\t *\r\n\t * @param {Tooltip} tooltip\r\n\t * The tooltip element.\r\n\t * @memberof MobileTooltipDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly tooltip: Tooltip)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Deactivates the tooltip when the window is scrolled.\r\n\t *\r\n\t * @memberof MobileTooltipDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.scrollEvent)\r\n\tpublic onScroll()\r\n\t{\r\n\t\tthis.tooltip.deactivate();\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the tap event on the tooltip and toggle\r\n\t * the display of the tooltip.\r\n\t *\r\n\t * @memberof MobileTooltipDirective\r\n\t */\r\n\tpublic mobileTooltipToggle(): void\r\n\t{\r\n\t\tif (this.tooltip.active === true)\r\n\t\t{\r\n\t\t\tthis.tooltip.deactivate();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.tooltip.activate();\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @memberof MobileTooltipDirective\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tDirective,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tCommonListDirective\r\n} from '@shared/directives/common-list-directive';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[ProductSetting]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with product setting.\r\n *\r\n * @export\r\n * @class ProductSettingDirective\r\n */\r\nexport class ProductSettingDirective\r\n\textends CommonListDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of product setting directive.\r\n\t * @memberof ProductSettingDirective\r\n\t */\r\n\tpublic constructor()\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof ProductSettingDirective\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the change display mode event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof ProductSettingDirective\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the product Authority Types\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ProductSettingDirective\r\n\t */\r\n\tpublic readonly productAuthorityTypes:\r\n\t{\r\n\t\tactive: string;\r\n\t\tinactive: string;\r\n\t\tserviceExisting: string;\r\n\t} = {\r\n\t\t\tactive: 'Active',\r\n\t\t\tinactive: 'Inactive',\r\n\t\t\tserviceExisting: 'Service Existing'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the set of available actions for nested displays.\r\n\t *\r\n\t * @type\r\n\t * @memberof ProductSettingDirective\r\n\t */\r\n\tpublic itemActions: ISecureMenuItem[] =\r\n\t\t[\r\n\t\t\t {\r\n\t\t\t\ticon: 'fa fa-info-circle',\r\n\t\t\t\tid: AppConstants.displayMode.view,\r\n\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\tsecurityRightType: SecurityRightType.read,\r\n\t\t\t\tcommand: ((\r\n\t\t\t\t\tevent: any,\r\n\t\t\t\t\titem: any) => {\r\n\t\t\t\t\tthis.changeSelectedItem.emit(item);\r\n\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\tAppConstants.displayMode.view);\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\t {\r\n\t\t\t\ticon: 'fa fa-pencil',\r\n\t\t\t\tid: AppConstants.displayMode.update,\r\n\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\tsecurityRightPath: AppConstants.apiMethods.update,\r\n\t\t\t\tcommand: ((\r\n\t\t\t\t\tevent: any,\r\n\t\t\t\t\titem: any) => {\r\n\t\t\t\t\tthis.changeSelectedItem.emit(item);\r\n\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\tAppConstants.displayMode.update);\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t];\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tDirective,\r\n\tElementRef,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tSubject\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[TooltipDisplay]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component displaying a set of\r\n * tooltips.\r\n *\r\n * @export\r\n * @class TooltipDisplayDirective\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class TooltipDisplayDirective implements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Gets or sets the array of ElementRef tooltip display components.\r\n\t * This should be set in the after view init workflow action.\r\n\t *\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic tooltips: ElementRef[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the observer of scroll height changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic scrollHeightChangedSubject:\r\n\t\tSubject = new Subject();\r\n\r\n\t/**\r\n\t * Handles the scroll event sent from the window.\r\n\t * This will hide any currently displayed tooltips.\r\n\t *\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.scrollEvent)\r\n\tpublic scroll(): void\r\n\t{\r\n\t\tthis.scrollHeightChangedSubject.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will set a debounce watcher to find whether or not tooltips\r\n\t * should be hidden.\r\n\t *\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.scrollHeightChangedSubject.pipe(\r\n\t\t\tdebounceTime(AppConstants.time.twentyFiveMilliseconds),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.tooltips.forEach(\r\n\t\t\t\t\t\t(tooltip: ElementRef) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttooltip?.nativeElement?.dispatchEvent(\r\n\t\t\t\t\t\t\t\tnew Event(MouseEventConstants.mouseLeave));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will complete any current observables.\r\n\t *\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.scrollHeightChangedSubject.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the tap mobile only event on the tooltip icon\r\n\t * and toggle the display of the tooltip.\r\n\t *\r\n\t * @param {Element} tooltip\r\n\t * The tooltip to toggle.\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic mobileTooltipToggle(\r\n\t\ttooltip: Element): void\r\n\t{\r\n\t\ttooltip.dispatchEvent(\r\n\t\t\tnew Event(MouseEventConstants.mouseEnter));\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @memberof TooltipDisplayDirective\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tDirective,\r\n\tElementRef,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tTooltipDisplayDirective\r\n} from '@shared/directives/tooltip-display.directive';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[RuleWorkflowDisplay]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component displaying a rule\r\n * workflow.\r\n *\r\n * @export\r\n * @extends {TooltipDisplayDirective}\r\n * @implements {AfterViewInit}\r\n * @class RuleWorkflowDisplayDirective\r\n */\r\nexport class RuleWorkflowDisplayDirective\r\n\textends TooltipDisplayDirective\r\n\timplements AfterViewInit\r\n{\r\n\t/**\r\n\t * Gets or sets the blocking tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\t@ViewChild('BlockingTooltip')\r\n\tpublic blockingTooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the warning tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\t@ViewChild('WarningTooltip')\r\n\tpublic warningTooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the rule violation workflow action definitions.\r\n\t *\r\n\t * @type {IRuleViolationWorkflowActionDefinition[]}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic ruleViolationWorkflowActions:\r\n\t\tIRuleViolationWorkflowActionDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the override allowed value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic overrideAllowed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip message to display for the blocked icon.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic readonly blockedTooltipMessage: string =\r\n\t\t'This action is blocked from execution due to rule violations. '\r\n\t\t\t+ 'Please correct this rule violation or override to allow this '\r\n\t\t\t+ 'action.';\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip message to display for the warning icon.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic readonly warningTooltipMessage: string =\r\n\t\t'This action is not blocking at this point but will be required '\r\n\t\t\t+ 'for future actions.';\r\n\r\n\t/**\r\n\t * After view initialization event.\r\n\t * Initializes the set of tooltips.\r\n\t *\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tthis.tooltips =\r\n\t\t\t[\r\n\t\t\t\tthis.blockingTooltip,\r\n\t\t\t\tthis.warningTooltip\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a value signifying that this displayed\r\n\t * rule violation allows override.\r\n\t *\r\n\t * @return {boolean}\r\n\t * A boolean that defines whether or not an override is allowed.\r\n\t * @memberof RuleWorkflowDisplayDirective\r\n\t */\r\n\tpublic getOverrideAllowed(): boolean\r\n\t{\r\n\t\treturn this.ruleViolationWorkflowActions\r\n\t\t\t.filter(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\truleViolationWorkflowAction.blocked === true &&\r\n\t\t\t\t\t\truleViolationWorkflowAction.overridable ===\r\n\t\t\t\t\t\t\ttrue).length > 0;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-activity-list',\r\n\ttemplateUrl: './activity-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./activity-list.component.scss',\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the activity\r\n * list.\r\n *\r\n * @export\r\n * @class ActivityListComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ActivityListComponent\r\nimplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActivityListComponent class.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used in this component.\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the common list context to be loaded\r\n\t * during list mode.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t\t* ActivityListComponent,\r\n\t\t* ICommonListContext>>}\r\n\t* @memberof ActivityListComponent\r\n\t*/\r\n\tpublic commonListContext: IDynamicComponentContext<\r\n\t\tActivityListComponent,\r\n\t\tICommonListContext>>;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of enabled filters.\r\n\t *\r\n\t * @type {ICommonListFilter[]}\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic enabledFilters: ICommonListFilter[];\r\n\r\n\t/**\r\n\t * Gets or sets the enabled sorter.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic sorter: ICommonListSort =\r\n\t\t{\r\n\t\t\tname: 'Activity Time',\r\n\t\t\tvalue: 'lastActivityTime',\r\n\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\ticonAsc: 'fa fa-sort-amount-asc',\r\n\t\t\ticonDesc: 'fa fa-sort-amount-desc'\r\n\t\t};\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Initializes the activity list component and creates the common list.\r\n\t *\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.activityService\r\n\t\t\t.activityChanged\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.refreshCommonListContext(\r\n\t\t\t\t\t\tthis.getSortedActivities(),\r\n\t\t\t\t\t\tthis);\r\n\t\t\t\t});\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.getSortedActivities(),\r\n\t\t\tthis);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any sorter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListSort} sorter\r\n\t * A value representing the enabled and selected sorter.\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic handleSortingChange(\r\n\t\tsource: any,\r\n\t\tsorter: ICommonListSort): void\r\n\t{\r\n\t\tthis.sorter = sorter;\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.getSortedActivities(),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any filter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * A collection of enabled and active filters.\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic handleFilterChange(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[]): void\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.getSortedActivities(),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * Refreshed the common list context\r\n\t *\r\n\t * @param {Activity[]} activities\r\n\t * The activities to list\r\n\t * @param {any} source\r\n\t * A value representing the source component\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic refreshCommonListContext(\r\n\t\tactivities: Activity[],\r\n\t\tsource: any): void\r\n\t{\r\n\t\tconst firstLoad: boolean\r\n\t\t\t= AnyHelper.isNull(this.commonListContext) === true;\r\n\r\n\t\tconst data: ICommonListItem>[]\r\n\t\t\t= activities?.map(activity => this.mapToListItem(activity));\r\n\r\n\t\tif (firstLoad)\r\n\t\t{\r\n\t\t\tthis.commonListContext =\r\n\t\t\t{\r\n\t\t\t\tdata: this.generateCommonListContext(data),\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.commonListContext\r\n\t\t\t\t.data\r\n\t\t\t\t.data = data;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isFunction(\r\n\t\t\tsource.performPostLoadActions))\r\n\t\t{\r\n\t\t\tsource.performPostLoadActions();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the action click event.\r\n\t *\r\n\t * @param {Activity} activity\r\n\t * The activity to perform the action againt\r\n\t * @param {string} action\r\n\t * The action to perform\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tpublic async actionClick(\r\n\t\tactivity: Activity,\r\n\t\taction: string): Promise\r\n\t{\r\n\t\tif (action === 'dismissAll')\r\n\t\t{\r\n\t\t\tawait this.activityService\r\n\t\t\t\t.dismissAllActivities();\r\n\t\t}\r\n\r\n\t\tif (action === 'dismiss')\r\n\t\t{\r\n\t\t\tawait this.activityService\r\n\t\t\t\t.dismissActivity(activity);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a list of sorted activities\r\n\t *\r\n\t * @private\r\n\t * @memberof ActivityListComponent\r\n\t * @returns {Activity[]}\r\n\t */\r\n\tprivate getSortedActivities(): Activity[]\r\n\t{\r\n\t\tlet filteredActivities: Activity[] = [];\r\n\t\tlet isFiltered: boolean = false;\r\n\t\tlet statusFilterCount: number = 0;\r\n\r\n\t\tif (this.enabledFilters?.length > 0)\r\n\t\t{\r\n\t\t\t// include status types\r\n\t\t\tthis.enabledFilters\r\n\t\t\t\t.forEach((filter: ICommonListFilter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst isStatusFilter: boolean =\r\n\t\t\t\t\t\tfilter.value === AppConstants.activityStatus.complete\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.error\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.info\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.pending;\r\n\r\n\t\t\t\t\tif (isStatusFilter)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tisFiltered = true;\r\n\t\t\t\t\t\tstatusFilterCount ++;\r\n\r\n\t\t\t\t\t\tfilteredActivities.push(\r\n\t\t\t\t\t\t\t...this.activityService\r\n\t\t\t\t\t\t\t\t.activities\r\n\t\t\t\t\t\t\t\t.filter(activity =>\r\n\t\t\t\t\t\t\t\t\tactivity.status === filter.value));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t// There can be only one.\r\n\t\t\t// An activity can only be one status at a time.\r\n\t\t\tif (statusFilterCount > 1)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// filter matching search filters.\r\n\t\t\tthis.enabledFilters\r\n\t\t\t\t.forEach((filter: ICommonListFilter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst isStatusFilter: boolean =\r\n\t\t\t\t\t\tfilter.value === AppConstants.activityStatus.complete\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.error\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.info\r\n\t\t\t\t\t\t|| filter.value === AppConstants.activityStatus.pending;\r\n\r\n\t\t\t\t\tif (isStatusFilter)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst regEx: RegExp = new RegExp(\r\n\t\t\t\t\t\tfilter.value,\r\n\t\t\t\t\t\t'gi');\r\n\r\n\t\t\t\t\tfilteredActivities = isFiltered\r\n\t\t\t\t\t\t? this.getFilteredActivities(\r\n\t\t\t\t\t\t\tfilteredActivities,\r\n\t\t\t\t\t\t\tregEx)\r\n\t\t\t\t\t\t: this.getFilteredActivities(\r\n\t\t\t\t\t\t\tthis.activityService.activities,\r\n\t\t\t\t\t\t\tregEx);\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tfilteredActivities = this.activityService.activities;\r\n\t\t}\r\n\r\n\t\treturn filteredActivities\r\n\t\t\t.sort((activityA, activityB) =>\r\n\t\t\t{\r\n\t\t\t\tif (activityA.lastActivityTime > activityB.lastActivityTime)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn this.sorter?.direction === AppConstants\r\n\t\t\t\t\t\t.sortDirections\r\n\t\t\t\t\t\t.ascending\r\n\t\t\t\t\t\t? -1\r\n\t\t\t\t\t\t: 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.sorter?.direction === AppConstants\r\n\t\t\t\t\t.sortDirections\r\n\t\t\t\t\t.ascending\r\n\t\t\t\t\t? 1\r\n\t\t\t\t\t: -1;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps activities to a common list item.\r\n\t *\r\n\t * @private\r\n\t * @param {IEntityInstanceDto} entity\r\n\t * A value representing the entity instance to map to common list item.\r\n\t * @returns {ICommonListItem>}\r\n\t * A value representing the mapped common list item from the entity\r\n\t * instance.\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\tprivate mapToListItem(\r\n\t\tactivity: Activity): ICommonListItem>\r\n\t{\r\n\t\tconst timePassed: string =\r\n\t\t\tDateTime.fromMillis(\r\n\t\t\t\tactivity.lastActivityTime)\r\n\t\t\t\t.toISO();\r\n\r\n\t\tconst descriptionLine: string = AnyHelper\r\n\t\t\t.isNullOrWhitespace(activity.statusMessage)\r\n\t\t\t? activity.message\r\n\t\t\t: '${item.message}
    '\r\n\t\t\t\t\t+ ''\r\n\t\t\t\t\t\t+ '${item.statusMessage}';\r\n\r\n\t\tconst listItem: ICommonListItem> = {\r\n\t\t\titem: activity,\r\n\t\t\tdescriptionLineFormat: descriptionLine,\r\n\t\t\tinformationLineFormat: null,\r\n\t\t\tinformationLineRelativeDateTime: timePassed,\r\n\t\t\tinformationIcons: [],\r\n\t\t\tactions: []\r\n\t\t};\r\n\r\n\t\tlet iconClass: string;\r\n\t\tswitch (activity.status)\r\n\t\t{\r\n\t\t\tcase AppConstants.activityStatus.complete:\r\n\t\t\t\ticonClass = 'fa fa-check theme-color-green';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase AppConstants.activityStatus.error:\r\n\t\t\t\ticonClass = 'fa fa-exclamation theme-color-red';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase AppConstants.activityStatus.info:\r\n\t\t\t\ticonClass = 'fa fa-info theme-color-light-blue';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase AppConstants.activityStatus.pending:\r\n\t\t\t\ticonClass = 'pi pi-spin pi-spinner theme-color-green';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tlistItem.informationIcons\r\n\t\t\t.push(iconClass);\r\n\r\n\t\tlistItem.actions.push({\r\n\t\t\ticon: 'fa fa-times',\r\n\t\t\tcommand: (event: any) => {\r\n\t\t\t\tthis.actionClick(activity, 'dismiss');\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn listItem;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the activities common list context.\r\n\t *\r\n\t * @note\r\n\t * This method will generate on first Load the default common list context\r\n\t * with properties used for activities.\r\n\t *\r\n\t * @private\r\n\t * @param {ICommonListItem>[]} data\r\n\t * A value representing the data to load within the common list context.\r\n\t * @memberof ActivityListComponent\r\n\t * @returns {ICommonListContext[]>}\r\n\t * A value representing the common list context for first load.\r\n\t*/\r\n\tprivate generateCommonListContext(\r\n\t\tdata: ICommonListItem>[]):\r\n\t\tICommonListContext>\r\n\t{\r\n\t\tconst generatedCommonListContext: ICommonListContext> =\r\n\t\t\t>>\r\n\t\t\t{\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsorters: [\r\n\t\t\t\t\tthis.sorter\r\n\t\t\t\t],\r\n\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\tsearchFilterFormat: '${inputValue}',\r\n\t\t\t\tactions: [{\r\n\t\t\t\t\ticon: 'fa fa-bell-slash-o',\r\n\t\t\t\t\tlabel: 'Dismiss All',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.actionClick(\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t'dismissAll');\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t}],\r\n\t\t\t\tfilters: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: AppConstants.activityStatus.complete,\r\n\t\t\t\t\t\tvalue: AppConstants.activityStatus.complete\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: AppConstants.activityStatus.pending,\r\n\t\t\t\t\t\tvalue: AppConstants.activityStatus.pending\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: AppConstants.activityStatus.info,\r\n\t\t\t\t\t\tvalue: AppConstants.activityStatus.info\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: AppConstants.activityStatus.error,\r\n\t\t\t\t\t\tvalue: AppConstants.activityStatus.error\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets filtered activities.\r\n\t *\r\n\t * @param {Activity[]} activities\r\n\t * The activities object.\r\n\t * @param {RegExp} regEx\r\n\t * The regular expresion.\r\n\t * @memberof ActivityListComponent\r\n\t */\r\n\t private getFilteredActivities(\r\n\t\t activities: Activity[],\r\n\t\t regEx: RegExp): any[]\r\n\t {\r\n\t\treturn activities\r\n\t\t\t.filter(activity =>\r\n\t\t\t{\r\n\t\t\t\tif (activity.statusMessage\r\n\t\t\t\t\t?.match(regEx))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (activity.message\r\n\t\t\t\t\t?.match(regEx))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    ","
    \r\n\t
    \r\n\t\tBusiness Locations\r\n\t
    \r\n\t
      \r\n\t\t\r\n\t\t\t
    • \r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t{{getAddressLineOne(location)}}\r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t{{getAddressLineTwo(location)}}\r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
      \r\n\t\t\t\t
      \r\n\t\t\t
    • \r\n\t\t
      \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'address-list',\r\n\ttemplateUrl: './address-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./address-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a list view of addresses.\r\n *\r\n * @export\r\n * @class AddressListComponent\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class AddressListComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AddressListComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets the address line one of the sent address object.\r\n\t * At this time this is hardcoded as the sample used does not gather\r\n\t * this data. AgencyV2.\r\n\t *\r\n\t * @param {any} _location\r\n\t * The location parsed to gather address data from.\r\n\t * @returns {string}\r\n\t * The line one address formatted for mailing.\r\n\t * @memberof AddressListComponent\r\n\t */\r\n\tpublic getAddressLineOne(\r\n\t\t_location: any): string\r\n\t{\r\n\t\treturn '555 Test Address';\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the address line two of the sent address object.\r\n\t *\r\n\t * @param {any} _location\r\n\t * The location parsed to gather address data from.\r\n\t * @returns {string}\r\n\t * The line two address formatted for mailing.\r\n\t * @memberof AddressListComponent\r\n\t */\r\n\tpublic getAddressLineTwo(\r\n\t\tlocation: any): string\r\n\t{\r\n\t\treturn `${location.city}, ${location.state} ${location.zip}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the copy address click.\r\n\t * Creates a pastable copy on the clipboard of this address ready\r\n\t * for use as a mailing label.\r\n\t *\r\n\t * @async\r\n\t * @param {any} location\r\n\t * The location parsed to gather address data from an send to the\r\n\t * clipboard.\r\n\t * @memberof AddressListComponent\r\n\t */\r\n\tpublic async copyAddressToClipboard(\r\n\t\tlocation: any): Promise\r\n\t{\r\n\t\tawait StringHelper.copyToClipboard(\r\n\t\t\t`${this.getAddressLineOne(location)}\\r\\n`\r\n\t\t\t\t+ `${this.getAddressLineTwo(location)}`);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-application-search',\r\n\ttemplateUrl: './application-search.component.html'\r\n})\r\n\r\n/**\r\n * A component representing application level searches.\r\n *\r\n * @export\r\n * @class ApplicationSearchComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ApplicationSearchComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ApplicationSearchComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n}","
    \r\n\tSearch\r\n
    ","
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tThis view is not currently available.\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tMode\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tDelete: {{reportDefinition.reportName}}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t{{ deleteConfirmationMessage }}\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tClonePowerBiReportComponent\r\n} from '@bi/components/wizard-steps/clone-power-bi-report/clone-power-bi-report.component';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tBIReportSettingDirective\r\n} from '@shared/directives/bi-report-setting.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIAwaitableMenuItem\r\n} from '@shared/interfaces/application-objects/awaitable-menu-item.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIGroupedDropdownOption\r\n} from '@shared/interfaces/application-objects/grouped-dropdown-option.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReportLookup\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-lookup.interface';\r\nimport {\r\n\tIReportDataDetails\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.details.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-bi-report-settings',\r\n\ttemplateUrl: './bi-report-settings.component.html',\r\n\tstyleUrls: [\r\n\t\t'./bi-report-settings.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing Business\r\n * Inteligence Report Component.\r\n *\r\n * @export\r\n * @class BIReportComponent\r\n * @extends {BIReportSettingDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class BIReportComponent\r\n\textends BIReportSettingDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the Business\r\n\t * Inteligence Report Component.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power Bi service.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power Bi api service.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The display component definition api service.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The display component instance api service.\r\n\t * @param {DisplayComponentTypeApiService}\r\n\t * displayComponentTypeApiService\r\n\t * The display component type api service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {ClonePowerBiReportComponent} clonePowerBiReportComponent\r\n\t * The clone power Bi report component.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The display component factory.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic clonePowerBiReportComponent: ClonePowerBiReportComponent,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tpowerBiService,\r\n\t\t\tpowerBiApiService,\r\n\t\t\tdisplayComponentDefinitionApiService,\r\n\t\t\tdisplayComponentTypeApiService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the is Ownership Allowed\r\n\t * value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic isOwnershipAllowed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading\r\n\t * value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets if there are\r\n\t * pending changes.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic pendingChanges: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the view\r\n\t * mode type.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic viewMode: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets if button\r\n\t * save is enabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic saveEnabled: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the page\r\n\t * mode type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic pageMode: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the awaitable\r\n\t * Menu items.\r\n\t *\r\n\t * @type {IAwaitableMenuItem[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic items?: IAwaitableMenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the user security\r\n\t * groups.\r\n\t * @type {string[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic userSecurityGroups?: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the delete return statement.\r\n\t *\r\n\t * @type {() => string | Promise}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic deleteStatement?: () => string | Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the standard Workspace\r\n\t * Type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic standardWorkspaceType: string = 'Standard';\r\n\r\n\t/**\r\n\t * Gets or sets the drawer action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic drawerAction: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets if edit button\r\n\t * is enabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t*/\r\n\tpublic editEnabled: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the delete\r\n\t * mode\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t*/\r\n\tpublic deleteMode: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the base page display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic basePageInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the base page display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets if edit action\r\n\t * is in Progress.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t*/\r\n\tpublic editInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets if display modal\r\n\t * is enabled.\r\n\t * Type.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic displayModal: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the reportData\r\n\t * Info.\r\n\t *\r\n\t * @type {IReportDataDetails}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic reportData: IReportDataDetails;\r\n\r\n\t/**\r\n\t * Gets or sets the reportData\r\n\t * Lookup.\r\n\t *\r\n\t * @type {IPowerBiReportLookup}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic powerBiReportLookup: IPowerBiReportLookup;\r\n\r\n\t/**\r\n\t * Gets or sets the report\r\n\t * button actions.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic reportButtonActions: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the allow security\r\n\t * groups.\r\n\t *\r\n\t * @type {number[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic allowedSecurityGroups: number[];\r\n\r\n\t/**\r\n\t * Gets or sets the allowed base security\r\n\t * groups.\r\n\t *\r\n\t * @type {number[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic allowedBaseSecurityGroups: number[];\r\n\r\n\t/**\r\n\t * Gets or sets the user Entity Instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic userEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the security group options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic securityGroupOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the report Definition.\r\n\t *\r\n\t * @type {IPowerBiReportDefinition}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic reportDefinition: IPowerBiReportDefinition;\r\n\r\n\t/**\r\n\t * icon action id constants.\r\n\t *\r\n\t * @type {{navigateToEditReport: string;\r\n\t *\tnavigateToViewReport: string;\r\n\t *\tdeleteReport: string;}}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic iconActionIds:\r\n\t\t{\r\n\t\t\tnavigateToEditReport: string;\r\n\t\t\tnavigateToViewReport: string;\r\n\t\t\tdeleteReport: string;\r\n\t\t} = {\r\n\t\t\tnavigateToEditReport: 'NavigateToEditReport',\r\n\t\t\tnavigateToViewReport: 'NavigateToViewReport',\r\n\t\t\tdeleteReport: 'DeleteReport'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets if display report\r\n\t * is enabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic displayReport: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the drawer\r\n\t * options.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic drawerOptions: any[];\r\n\r\n\t/**\r\n\t * Gets or sets the report search\r\n\t * url value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic readonly reportSearchUrl: string =\r\n\t\t'bi/reports';\r\n\r\n\t/**\r\n\t * Gets or sets the delete confirmation\r\n\t * message text.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic deleteConfirmationMessage: string =\r\n\t\tAppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets if initial Validation Complete\r\n\t * is enabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic initialValidationComplete: boolean = false;\r\n\r\n\t/**\r\n\t * A method that performs the view report action.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic viewReport(): void\r\n\t{\r\n\t\tif (this.editInProgress)\r\n\t\t{\r\n\t\t\tthis.navigateToDisplay(\r\n\t\t\t\tthis.router,\r\n\t\t\t\tthis.getItemSelectedInfo(\r\n\t\t\t\t\tthis.context.source.reportData.displayComponentInstanceName,\r\n\t\t\t\t\tthis.iconActionIds.navigateToViewReport));\r\n\t\t}\r\n\r\n\t\tif (this.dynamicFormlyLayout !== null)\r\n\t\t{\r\n\t\t\tFormlyHelper.disableAllFields(this.dynamicFormlyLayout);\r\n\r\n\t\t\tthis.viewMode = true;\r\n\t\t\tthis.saveEnabled = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the delete report\r\n\t * cofirmation action.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic deleteReportConfirmation(): void\r\n\t{\r\n\t\tthis.deleteMode = true;\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the validation for\r\n\t * edit mode.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async validateEditMode(): Promise\r\n\t{\r\n\t\tif ( this.reportData.reportDefinition.workspaceType !==\r\n\t\t\tthis.standardWorkspaceType)\r\n\t\t{\r\n\t\t\tthis.editEnabled = new User(this.sessionService.user)\r\n\t\t\t\t.membershipSecurityGroups\r\n\t\t\t\t.some((item: ISecurityGroup) => item.id ===\r\n\t\t\t\t\tthis.reportData.ownershipSecurityGroupId);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the edit report\r\n\t * action.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async editReport(): Promise\r\n\t{\r\n\t\tif (this.editEnabled)\r\n\t\t{\r\n\t\t\tthis.navigateToDisplay(\r\n\t\t\t\tthis.router,\r\n\t\t\t\tthis.getItemSelectedInfo(\r\n\t\t\t\t\tthis.context.source.reportData.displayComponentInstanceName,\r\n\t\t\t\t\tthis.iconActionIds.navigateToEditReport));\r\n\t\t}\r\n\r\n\t\tif (this.dynamicFormlyLayout !== null)\r\n\t\t{\r\n\t\t\tthis.dynamicFormlyLayout.forEach((definition) =>\r\n\t\t\t{\r\n\t\t\t\tlet isDisabled: boolean = false;\r\n\r\n\t\t\t\tif (definition.id === AppConstants.commonProperties.datasetId\r\n\t\t\t\t\t|| definition.id === AppConstants.commonProperties.createdBy\r\n\t\t\t\t\t|| (this.context.source.reportData.public === false\r\n\t\t\t\t\t\t&& (definition.id === AppConstants.nestedRouteTypes\r\n\t\t\t\t\t\t\t.securityGroups\r\n\t\t\t\t\t\t\t|| definition.id === AppConstants.commonProperties\r\n\t\t\t\t\t\t\t\t.ownershipSecurityGroupId)))\r\n\t\t\t\t{\r\n\t\t\t\t\tisDisabled = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdefinition.props.disabled = isDisabled;\r\n\t\t\t});\r\n\r\n\t\t\tthis.editInProgress = true;\r\n\t\t\tthis.viewMode = false;\r\n\t\t\tthis.saveEnabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the cancel\r\n\t * action.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async cancelAction(): Promise\r\n\t{\r\n\t\tthis.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the delete report\r\n\t * action.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async deleteReport(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.displayModal = false;\r\n\r\n\t\tconst currentData: IReportDataDetails =\r\n\t\t\tthis.reportData;\r\n\r\n\t\tfor (const securityGroupId of currentData\r\n\t\t\t.allowedDisplayComponentSecurityGroups)\r\n\t\t{\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\tcurrentData.displayComponentInstanceId,\r\n\t\t\t\t\tsecurityGroupId);\r\n\t\t}\r\n\r\n\t\tfor (const securityGroupId of currentData.allowedBaseSecurityGroups)\r\n\t\t{\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\tcurrentData.basePageInstanceId,\r\n\t\t\t\t\tsecurityGroupId);\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.delete(currentData.displayComponentInstanceId);\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.delete(currentData.basePageInstanceId);\r\n\r\n\t\t\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t\t\t.deleteReport(\r\n\t\t\t\t\t\t\t\tcurrentData.reportDefinition);\r\n\r\n\t\t\t\t\t\tthis.router.navigate([this.reportSearchUrl]);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Deleting Report',\r\n\t\t\t\t'Deleted A Report',\r\n\t\t\t\t`${currentData.reportName} was deleted.`,\r\n\t\t\t\t`${currentData.reportName} was not deleted.`));\r\n\r\n\t\tthis.loading = false;\r\n\t\tthis.deleteMode = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.initDrawer();\r\n\r\n\t\tthis.context.source.reportData = this.reportData;\r\n\r\n\t\tthis.deleteConfirmationMessage =\r\n\t\t\tthis.getDeleteStatement();\r\n\r\n\t\tthis.securityGroupOptions =\r\n\t\t\tthis.securityGroupOptions.filter(option =>\r\n\t\t\t\tthis.userSecurityGroups.includes(option.label));\r\n\r\n\t\tthis.dynamicFormlyLayout =\tthis.initLayout();\r\n\r\n\t\tthis.validateEditMode();\r\n\r\n\t\tif (this.pageMode ===\r\n\t\t\t\tAppConstants.viewTypes.edit)\r\n\t\t{\r\n\t\t\tthis.editReport();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.viewReport();\r\n\t\t}\r\n\r\n\t\tthis.setDrawerButtonDefinition();\r\n\r\n\t\tthis.deleteMode = false;\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that initialize drawer\r\n\t * variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async initDrawer(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.editInProgress = false;\r\n\r\n\t\tthis.reportButtonActions =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Delete',\r\n\t\t\t\t\ticon: 'pi pi-times',\r\n\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.deleteReportConfirmation();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.userSecurityGroups =\r\n\t\t\tthis.sessionService.user.membershipSecurityGroups.map(\r\n\t\t\t\t(item: ISecurityGroup) => item.name);\r\n\r\n\t\tthis.securityGroupOptions =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.displayComponentInstance =\r\n\t\t\tthis.context.source.displayComponentInstance;\r\n\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\tthis.context.source.pageContext.data.reportDefinition))\r\n\t\t{\r\n\t\t\tthis.reportDefinition =\r\n\t\t\t\tawait this.displayComponentFactory.externalReport(\r\n\t\t\t\t\tthis.displayComponentInstance,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.reportDefinition =\r\n\t\t\t\tthis.context\r\n\t\t\t\t\t.source\r\n\t\t\t\t\t.pageContext\r\n\t\t\t\t\t.data\r\n\t\t\t\t\t.reportDefinition;\r\n\t\t}\r\n\r\n\t\tconst pageUrl: any =\r\n\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.context\r\n\t\t\t\t\t.source\r\n\t\t\t\t\t.route\r\n\t\t\t\t\t.url)\r\n\t\t\t\t? AppConstants.viewTypes.view\r\n\t\t\t\t: this.context\r\n\t\t\t\t\t.source\r\n\t\t\t\t\t.route\r\n\t\t\t\t\t.url;\r\n\r\n\t\tthis.pageMode =\r\n\t\t\tpageUrl.value[1].path;\r\n\r\n\t\tthis.powerBiReportLookup =\r\n\t\t\tawait this.powerBiApiService\r\n\t\t\t\t.lookupReportData(this.reportDefinition);\r\n\r\n\t\tthis.reportDefinition.reportId = this.powerBiReportLookup.reportId;\r\n\r\n\t\tthis.basePageInstance =\r\n\t\t\tthis.context.source.basePageInstance;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tthis.userEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(this.basePageInstance.createdById);\r\n\r\n\t\tthis.allowedSecurityGroups =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\tthis.displayComponentInstance.id);\r\n\r\n\t\tthis.allowedBaseSecurityGroups =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\tthis.basePageInstance.id);\r\n\r\n\t\tthis.reportData =\r\n\t\t\t{\r\n\t\t\t\treportName: this.reportDefinition.reportName,\r\n\t\t\t\treportDefinition: this.reportDefinition,\r\n\t\t\t\tdisplayComponentInstanceId: this.displayComponentInstance.id,\r\n\t\t\t\tdisplayComponentInstanceName:\r\n\t\t\t\t\tthis.displayComponentInstance.name,\r\n\t\t\t\tbasePageInstanceId: this.basePageInstance.id,\r\n\t\t\t\tbasePageInstance: this.basePageInstance,\r\n\t\t\t\tallowedDisplayComponentSecurityGroups :\r\n\t\t\t\t\tthis.allowedSecurityGroups,\r\n\t\t\t\tallowedBaseSecurityGroups : this.allowedBaseSecurityGroups,\r\n\t\t\t\tsecurityGroups: this.allowedSecurityGroups,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tthis.basePageInstance.ownershipSecurityGroupId,\r\n\t\t\t\tdatasetId: this.reportDefinition.datasetId,\r\n\t\t\t\tpublic: this.basePageInstance.public,\r\n\t\t\t\tcreatedBy: this.userEntityInstance.data.userName,\r\n\t\t\t\tisFavorite: false,\r\n\t\t\t\tcreatedDate: AppConstants.empty,\r\n\t\t\t\tlastUpdatedById: AppConstants.empty,\r\n\t\t\t\tlastUpdatedDate: AppConstants.empty\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Validates that the report name being selected is unique in power bi\r\n\t * as well as when we create the display component instance.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The control to be validated for a unique name value.\r\n\t * @returns {Promise}\r\n\t * A value representing the is valid value of this control.\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async validateUniqueReportName(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst currentData: any =\r\n\t\t\tthis.context.source.reportData;\r\n\r\n\t\tif (currentData.reportDefinition.reportName ===\r\n\t\t\tcontrol.value.trimRight())\r\n\t\t{\r\n\t\t\tthis.saveEnabled = false;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst newReportDisplayComponentName: string =\r\n\t\t\tthis.getReportDisplayComponentName(\r\n\t\t\t\tcontrol.value);\r\n\t\tconst newBasePageDisplayComponentName: string =\r\n\t\t\t`${AppConstants.displayComponentTypes.basePage}.`\r\n\t\t\t\t+ `${newReportDisplayComponentName}`;\r\n\t\tconst selectedGroupId: string =\r\n\t\t\tcurrentData.ownershipSecurityGroupId;\r\n\r\n\t\tconst matchingReportNames: IPowerBiReport[] =\r\n\t\t\tawait this.getMatchingReportNames(\r\n\t\t\t\tthis.powerBiApiService,\r\n\t\t\t\tcontrol,\r\n\t\t\t\tselectedGroupId);\r\n\r\n\t\tconst matchingDisplayNames: IDisplayComponentInstance[] =\r\n\t\t\tawait this.getmatchingDisplayNames(\r\n\t\t\t\tthis.displayComponentInstanceApiService,\r\n\t\t\t\tnewReportDisplayComponentName);\r\n\r\n\t\tconst matchingBasePageNames: IDisplayComponentInstance[] =\r\n\t\t\tawait this.getmatchingDisplayNames(\r\n\t\t\t\tthis.displayComponentInstanceApiService,\r\n\t\t\t\tnewBasePageDisplayComponentName);\r\n\r\n\t\tconst isValid: boolean =\r\n\t\t\t(matchingReportNames.length === 0\r\n\t\t\t\t&& matchingDisplayNames.length === 0\r\n\t\t\t\t&& matchingBasePageNames.length === 0);\r\n\r\n\t\tthis.saveEnabled = !isValid;\r\n\r\n\t\tif (this.initialValidationComplete === false\r\n\t\t\t&& control.valid === false\r\n\t\t\t&& isValid === true)\r\n\t\t{\r\n\t\t\tcontrol.markAsTouched();\r\n\t\t\tcontrol.updateValueAndValidity();\r\n\t\t\tthis.initialValidationComplete = true;\r\n\t\t}\r\n\r\n\t\treturn matchingReportNames.length === 0\r\n\t\t\t&& matchingDisplayNames.length === 0\r\n\t\t\t&& matchingBasePageNames.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the update\r\n\t * security groups action.\r\n\t * @param {number} displayComponentInstanceId\r\n\t * The control to be validated.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async updateSecurityGroups(\r\n\t\tdisplayComponentInstanceId: number): Promise\r\n\t{\r\n\t\tconst currentData: IReportDataDetails =\r\n\t\t\tthis.reportData;\r\n\r\n\t\tconst deleteSecurityGroups: number[] = currentData\r\n\t\t\t.allowedDisplayComponentSecurityGroups\r\n\t\t\t.filter((item: number) =>\r\n\t\t\t\t!currentData.securityGroups\r\n\t\t\t\t\t.includes(item));\r\n\r\n\t\tconst updateSecurityGroups: number[] = currentData\r\n\t\t\t.securityGroups\r\n\t\t\t.filter((item: number) => !currentData\r\n\t\t\t\t.allowedDisplayComponentSecurityGroups\r\n\t\t\t\t.includes(item));\r\n\r\n\t\tfor (const securityGroupId of deleteSecurityGroups)\r\n\t\t{\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\tdisplayComponentInstanceId,\r\n\t\t\t\t\tsecurityGroupId);\r\n\t\t}\r\n\r\n\t\tfor (const securityGroupId of updateSecurityGroups)\r\n\t\t{\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\tdisplayComponentInstanceId,\r\n\t\t\t\t\tsecurityGroupId);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the update\r\n\t * the display component action.\r\n\t * @param {number} displayComponentInstanceId\r\n\t * The display component Instance Id.\r\n\t * @param {string} reportDisplayComponentName\r\n\t * The report display Component Name.\r\n\t * @param {object} reportDisplayJson\r\n\t * The report display Json object.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async updateDisplayComponent(\r\n\t\tdisplayComponentInstanceId: number,\r\n\t\treportDisplayComponentName: string,\r\n\t\treportDisplayJson: object\r\n\t): Promise\r\n\t{\r\n\t\tconst currentData: IReportDataDetails =\r\n\t\t\tthis.reportData;\r\n\r\n\t\tconst displayComponentInstance:\r\n\t\t\tIDisplayComponentInstance =\r\n\t\t\t\t\r\n\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t.get(displayComponentInstanceId);\r\n\r\n\t\tthis.updateSecurityGroups(displayComponentInstanceId);\r\n\r\n\t\tdisplayComponentInstance.jsonData =\r\n\t\t\tJSON.stringify(reportDisplayJson);\r\n\r\n\t\tdisplayComponentInstance.name =\r\n\t\t\treportDisplayComponentName;\r\n\r\n\t\tdisplayComponentInstance.public =\r\n\t\t\tcurrentData.public;\r\n\r\n\t\tdisplayComponentInstance.ownershipSecurityGroupId =\r\n\t\t\tcurrentData.ownershipSecurityGroupId;\r\n\r\n\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t.update(displayComponentInstanceId,\r\n\t\t\t\tdisplayComponentInstance);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the update\r\n\t * entity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async updateEntity(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.editInProgress = false;\r\n\r\n\t\tlet reloadPage: boolean = false;\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\r\n\t\tconst currentData: IReportDataDetails =\r\n\t\t\tthis.reportData;\r\n\r\n\t\tconst displayComponentInstance:\r\n\t\t\tIDisplayComponentInstance =\r\n\t\t\t\t\r\n\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t.get(currentData.displayComponentInstanceId);\r\n\r\n\t\tconst basePageComponentDefinitionInstance:\r\n\t\t\tIDisplayComponentInstance =\r\n\t\t\t\t\r\n\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t.get(currentData.basePageInstanceId);\r\n\r\n\t\tconst basePageJsonData =\r\n\t\t\tJSON.parse(basePageComponentDefinitionInstance.jsonData);\r\n\r\n\t\tconst reportDisplayComponentName: string =\r\n\t\t\tthis.getReportDisplayComponentName(\r\n\t\t\t\tcurrentData.reportName);\r\n\r\n\t\tif (displayComponentInstance.name !==\r\n\t\t\treportDisplayComponentName)\r\n\t\t{\r\n\t\t\treloadPage = true;\r\n\t\t\tawait this.renamePowerBIReport(currentData.reportName);\r\n\t\t}\r\n\r\n\t\t//\tDisplay Component Update\r\n\t\tconst reportDisplayJson: object =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tinterpolationData:\r\n\t\t\t\t{\r\n\t\t\t\t\tdatasetGroupId: currentData.reportDefinition.datasetGroupId,\r\n\t\t\t\t\texternalReportType:\r\n\t\t\t\t\t\tcurrentData.reportDefinition.externalReportType,\r\n\t\t\t\t\treportName: currentData.reportName,\r\n\t\t\t\t\treportType: currentData.reportDefinition.reportType\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tinitialPromiseArray.push(\r\n\t\t\tthis.updateDisplayComponent(displayComponentInstance.id,\r\n\t\t\t\treportDisplayComponentName,\r\n\t\t\t\treportDisplayJson));\r\n\r\n\t\t//\tBasePage Update\r\n\t\tconst basePageComponentDefinitionName: string =\r\n\t\t\tAppConstants.displayComponentTypes.basePage\r\n\t\t\t\t+ `.${reportDisplayComponentName}`;\r\n\r\n\t\tconst basePageDisplayJson: object =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tinterpolationData:\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponent: reportDisplayComponentName,\r\n\t\t\t\t\tpageButtonBar: AppConstants.empty,\r\n\t\t\t\t\tloadingPageTitle: 'Report',\r\n\t\t\t\t\tpageTitleTemplate: '${data.reportDefinition.reportName}',\r\n\t\t\t\t\tpageContextMenu: AppConstants.empty,\r\n\t\t\t\t\tpageUtilityMenu: basePageJsonData.interpolationData\r\n\t\t\t\t\t\t.pageUtilityMenu,\r\n\t\t\t\t\tpageInformationMenu: AppConstants.empty\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tinitialPromiseArray.push(\r\n\t\t\tthis.updateDisplayComponent(basePageComponentDefinitionInstance.id,\r\n\t\t\t\tbasePageComponentDefinitionName,\r\n\t\t\t\tbasePageDisplayJson));\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.editInProgress = false;\r\n\r\n\t\t\t\t\t\tawait Promise.all(\r\n\t\t\t\t\t\t\tinitialPromiseArray);\r\n\r\n\t\t\t\t\t\tif (!reloadPage)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait this.ngOnInit();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Update Report',\r\n\t\t\t\t'Update A Report',\r\n\t\t\t\t`${currentData.reportName} was updated.`,\r\n\t\t\t\t`${currentData.reportName} was not updated.`));\r\n\r\n\t\tif (reloadPage)\r\n\t\t{\r\n\t\t\tthis.navigateToDisplay(\r\n\t\t\t\tthis.router,\r\n\t\t\t\tthis.getItemSelectedInfo(\r\n\t\t\t\t\treportDisplayComponentName,\r\n\t\t\t\t\tthis.iconActionIds.navigateToEditReport));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the layout.\r\n\t *\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic initLayout(): FormlyFieldConfig[]\r\n\t{\r\n\t\treturn\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'reportName',\r\n\t\t\t\t\tid: 'reportName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Title',\r\n\t\t\t\t\t\ttooltip: 'The name of the new report.',\r\n\t\t\t\t\t\tmaxLength: 80,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnoUnderscoreStart:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\tthis.validateNoUnderscoreStart.bind(this),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Report names cannot begin with an underscore.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuniqueReportName:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\tthis.validateUniqueReportName.bind(this),\r\n\t\t\t\t\t\t\tmessage: 'Report name already exists.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: AppConstants.nestedRouteTypes.securityGroups,\r\n\t\t\t\t\tid: AppConstants.nestedRouteTypes.securityGroups,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Viewer(s)',\r\n\t\t\t\t\t\ttooltip: 'Set the Security Groups that will be'\r\n\t\t\t\t\t\t\t+ ' allowed to view the report.',\r\n\t\t\t\t\t\toptions: this.securityGroupOptions,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: AppConstants.commonProperties.ownershipSecurityGroupId,\r\n\t\t\t\t\tid: AppConstants.commonProperties.ownershipSecurityGroupId,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Owner(s)',\r\n\t\t\t\t\t\ttooltip: 'Set Additional Report Owner\\'s'\r\n\t\t\t\t\t\t\t+ ' that will be allowed to edit'\r\n\t\t\t\t\t\t\t+ ' the report.',\r\n\t\t\t\t\t\tplaceholder: 'Select an ownership group',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\toptions: this.securityGroupOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: AppConstants.commonProperties.datasetId,\r\n\t\t\t\t\tid: AppConstants.commonProperties.datasetId,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Dataset',\r\n\t\t\t\t\t\ttooltip: 'The dataset of the current report.',\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.groupedSelectionOptions.map(\r\n\t\t\t\t\t\t\t\t(groupedOption: IGroupedDropdownOption) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst groupedIdOptions:\r\n\t\t\t\t\t\t\t\t\t\tIDropdownOption[] = [];\r\n\t\t\t\t\t\t\t\t\tgroupedOption.items.forEach(\r\n\t\t\t\t\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tgroupedIdOptions.push(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: option.label,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: option.value.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tgroupedOption.items = groupedIdOptions;\r\n\r\n\t\t\t\t\t\t\t\t\treturn groupedOption;\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgroup: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'public',\r\n\t\t\t\t\tid: 'public',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Publish',\r\n\t\t\t\t\t\ttooltip: 'If Public is enabled, then that means'\r\n\t\t\t\t\t\t\t+ ' the report is published and accessible to'\r\n\t\t\t\t\t\t\t+ ' the specified Report Viewers. If Public is'\r\n\t\t\t\t\t\t\t+ ' disabled, then only the Report Owner\\'s will'\r\n\t\t\t\t\t\t\t+ ' be able to see the new report.',\r\n\t\t\t\t\t\tdefault: true,\r\n\t\t\t\t\t\tgridColumns: 6,\r\n\t\t\t\t\t\tchange: (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (!this.viewMode\r\n\t\t\t\t\t\t\t\t\t\t&& this.editInProgress)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.reportData.public =\r\n\t\t\t\t\t\t\t\t\t\t\tfield.formControl.value;\r\n\t\t\t\t\t\t\t\t\t\tthis.editReport();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: AppConstants.commonProperties.createdBy,\r\n\t\t\t\t\tid: AppConstants.commonProperties.createdBy,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: 'Created By',\r\n\t\t\t\t\t\tmaxLength: 80,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the rename Power BI\r\n\t * report action.\r\n\t *\r\n\t * @param {string} newReportName\r\n\t * Provided New Report Name.\r\n\t *\r\n\t * @async\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic async renamePowerBIReport(\r\n\t\tnewReportName: string)\r\n\t{\r\n\t\tconst currentData: IReportDataDetails =\r\n\t\t\tthis.reportData;\r\n\r\n\t\tawait this.powerBiApiService\r\n\t\t\t.cloneExistingReport(\r\n\t\t\t\tthis.powerBIReportMapping(\r\n\t\t\t\t\tcurrentData.reportDefinition),\r\n\t\t\t\tcurrentData.reportDefinition.groupId,\r\n\t\t\t\tnewReportName,\r\n\t\t\t\tcurrentData.reportDefinition.datasetId,\r\n\t\t\t\tcurrentData.reportDefinition.groupId);\r\n\r\n\t\tawait this.powerBiApiService\r\n\t\t\t.deleteReport(\r\n\t\t\t\tcurrentData.reportDefinition);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted string name for the display component based on the\r\n\t * alphanumeric report name.\r\n\t *\r\n\t * @param {string} reportName\r\n\t * Provided report name.\r\n\t * @returns {string}\r\n\t * The display component name suffix that this will be created under.\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic getReportDisplayComponentName(\r\n\t\treportName: string): string\r\n\t{\r\n\t\treturn 'Report.PowerBi.'\r\n\t\t\t+ StringHelper.getCleanedValue(\r\n\t\t\t\treportName,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.commonRegex.alphaNumericOnly\r\n\t\t\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * Set the drawer button action.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic setDrawerButtonAction(): void\r\n\t{\r\n\t\tif (this.drawerAction ===\r\n\t\t\tAppConstants.viewTypes.edit)\r\n\t\t{\r\n\t\t\tthis.editReport();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.viewReport();\r\n\t\t}\r\n\r\n\t\tthis.setDrawerButtonDefinition();\r\n\t}\r\n\r\n\t/**\r\n\t * Set drawer button definition.\r\n\t *\r\n\t * @memberof BIReportComponent\r\n\t */\r\n\tpublic setDrawerButtonDefinition(): void\r\n\t{\r\n\t\tthis.drawerOptions =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'View',\r\n\t\t\t\t\tvalue: AppConstants.viewTypes.view,\r\n\t\t\t\t\ticon: 'pi pi-search',\r\n\t\t\t\t\tdisabled: this.viewMode\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Edit',\r\n\t\t\t\t\tvalue: AppConstants.viewTypes.edit,\r\n\t\t\t\t\ticon: 'pi pi-pencil',\r\n\t\t\t\t\tdisabled: !this.viewMode\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","/*!\n * chartjs-adapter-luxon v1.3.1\n * https://www.chartjs.org\n * (c) 2023 chartjs-adapter-luxon Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { DateTime } from 'luxon';\n\nconst FORMATS = {\n datetime: DateTime.DATETIME_MED_WITH_SECONDS,\n millisecond: 'h:mm:ss.SSS a',\n second: DateTime.TIME_WITH_SECONDS,\n minute: DateTime.TIME_SIMPLE,\n hour: {hour: 'numeric'},\n day: {day: 'numeric', month: 'short'},\n week: 'DD',\n month: {month: 'short', year: 'numeric'},\n quarter: \"'Q'q - yyyy\",\n year: {year: 'numeric'}\n};\n\n_adapters._date.override({\n _id: 'luxon', // DEBUG\n\n /**\n * @private\n */\n _create: function(time) {\n return DateTime.fromMillis(time, this.options);\n },\n\n init(chartOptions) {\n if (!this.options.locale) {\n this.options.locale = chartOptions.locale;\n }\n },\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, format) {\n const options = this.options;\n\n const type = typeof value;\n if (value === null || type === 'undefined') {\n return null;\n }\n\n if (type === 'number') {\n value = this._create(value);\n } else if (type === 'string') {\n if (typeof format === 'string') {\n value = DateTime.fromFormat(value, format, options);\n } else {\n value = DateTime.fromISO(value, options);\n }\n } else if (value instanceof Date) {\n value = DateTime.fromJSDate(value, options);\n } else if (type === 'object' && !(value instanceof DateTime)) {\n value = DateTime.fromObject(value, options);\n }\n\n return value.isValid ? value.valueOf() : null;\n },\n\n format: function(time, format) {\n const datetime = this._create(time);\n return typeof format === 'string'\n ? datetime.toFormat(format)\n : datetime.toLocaleString(format);\n },\n\n add: function(time, amount, unit) {\n const args = {};\n args[unit] = amount;\n return this._create(time).plus(args).valueOf();\n },\n\n diff: function(max, min, unit) {\n return this._create(max).diff(this._create(min)).as(unit).valueOf();\n },\n\n startOf: function(time, unit, weekday) {\n if (unit === 'isoWeek') {\n weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));\n const dateTime = this._create(time);\n return dateTime.minus({days: (dateTime.weekday - weekday + 7) % 7}).startOf('day').valueOf();\n }\n return unit ? this._create(time).startOf(unit).valueOf() : time;\n },\n\n endOf: function(time, unit) {\n return this._create(time).endOf(unit).valueOf();\n }\n});\n","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\r\n
    \r\n\t\r\n\t\tNo Data\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tNo Chart Data for {{chartConfiguration.options.plugins.title.text}}\r\n\t\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tSimpleChanges,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIChartContext\r\n} from '@shared/interfaces/dynamic-interfaces/chart-context.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tChartTransform\r\n} from '@shared/transforms/chart-transform';\r\nimport {\r\n\tChartConfiguration,\r\n\tChartData,\r\n\tChartDataset\r\n} from 'chart.js';\r\nimport 'chartjs-adapter-luxon';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-chart',\r\n\ttemplateUrl: './chart.component.html',\r\n\tstyleUrls: [\r\n\t\t'./chart.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a chart display.\r\n * @note This component utilizes ChartJs and further information\r\n * on the available API can be found at:\r\n * https://www.chartjs.org/docs/latest/\r\n *\r\n * @export\r\n * @class ChartComponent\r\n * @implements {OnInit}\r\n * @implements {OnChanges}\r\n * @implements {OnDestroy}\r\n */\r\nexport class ChartComponent implements OnInit, OnChanges, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a chart display component.\r\n\t *\r\n\t * @param {ChartTransform} chartTransform\r\n\t * The class used to transform existing chart configurations into\r\n\t * desired outputs.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used to define responsive\r\n\t * layout variables.\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic chartTransform: ChartTransform,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t * If sent this will override the input parameter values.\r\n\t *\r\n\t * @type {IDynamicComponentContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a truthy defining if this chart will be displayed in\r\n\t * a summary card.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public summaryCardDisplay: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets a truthy defining if this chart will be displayed in\r\n\t * a info chart.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public squareCardDisplay: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets a boolean signifying if this chart should streth to fill\r\n\t * content or maintain an aspect ratio.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public maintainAspectRatio: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the chart configuration displayed in this component.\r\n\t *\r\n\t * @type {ChartConfiguration}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public chartConfiguration: ChartConfiguration;\r\n\r\n\t/**\r\n\t * The property key based value to display in the charts y value. This will\r\n\t * be the x pivot property. Note: Time based pivots are not required.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public pivotProperty: string;\r\n\r\n\t/**\r\n\t * The group of multiple pivot properties to display in the charts values.\r\n\t * This is required when multiple properties/values are to be\r\n\t * displayed in the chart.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public pivotProperties: string[];\r\n\r\n\t/**\r\n\t * The property key based value to display in the charts y value. This will\r\n\t * be the x pivot property. Note: Time based pivots are not required.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public radialGaugeChart: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the data promise used to gather data to display in\r\n\t * this chart.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public dataPromise: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the array of colors used for this component.\r\n\t * The available definitions are found in ChartConstants.themeColors.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public chartColors: string[] = ['primary'];\r\n\r\n\t/**\r\n\t * Gets or sets the truthy defining if this component should fill\r\n\t * missing data sets. This value will alter line charts from a\r\n\t * trend line to a data value point line via filling in missing\r\n\t * data with zero values.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public fillMissingDataSets: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy defining if this component should display\r\n\t * a count grouping. This is used for count values grouped by\r\n\t * distinct properties.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public groupByCount: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data value directly as opposed to utilizing\r\n\t * the existing data promise. This overload allows for direct\r\n\t * data interaction.\r\n\t *\r\n\t * @type {IAggregate[]}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@Input() public data: IAggregate[];\r\n\r\n\t/**\r\n\t * Gets or sets the chart container div element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@ViewChild('ChartContainer') public chartContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the color swatch element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@ViewChild('ColorSwatch') public colorSwatch: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets a truthy defining if a data promise is currently being\r\n\t * loaded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a storage variable used to hold chart data until it is fully\r\n\t * configured and ready for display.\r\n\t *\r\n\t * @type {ChartData}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic chartData: ChartData;\r\n\r\n\t/**\r\n\t * Gets or sets a boolean signifying if a no data value output should\r\n\t * display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic displayMissingDataMessage: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the observer that will capture display configured values\r\n\t * debounced.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic displayConfigured: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets the delay between chart redraws to ensure that animations\r\n\t * remain smooth and only display desired configured outputs.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tprivate readonly changeDebounceDelay: number = 500;\r\n\r\n\t/**\r\n\t * Handles the theme change event.\r\n\t * This redraws the chart via updated colors to match the\r\n\t * current theme.\r\n\t *\r\n\t * @memberof ChartComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.themeChangedEvent)\r\n\tpublic themeChanged(): void\r\n\t{\r\n\t\tthis.displayConfigured.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will set the display value correctly for it's desired output\r\n\t * and set up a debounce subscription for drawing configuration\r\n\t * and data changes.\r\n\t *\r\n\t * @async\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setChartContext();\r\n\r\n\t\tif (this.summaryCardDisplay === true)\r\n\t\t{\r\n\t\t\tthis.chartConfiguration.options =\r\n\t\t\t\tawait this.chartTransform.toSummaryChart(\r\n\t\t\t\t\tthis.chartConfiguration,\r\n\t\t\t\t\tthis.radialGaugeChart);\r\n\t\t}\r\n\r\n\t\tif (this.radialGaugeChart === true\r\n\t\t\t&& this.summaryCardDisplay !== true)\r\n\t\t{\r\n\t\t\tthis.chartConfiguration.options =\r\n\t\t\t\tawait this.chartTransform.toRadialGaugeChart(\r\n\t\t\t\t\tthis.chartConfiguration);\r\n\t\t}\r\n\r\n\t\tif (this.squareCardDisplay === true)\r\n\t\t{\r\n\t\t\tthis.chartConfiguration.options =\r\n\t\t\t\tawait this.chartTransform.toSquareChart(\r\n\t\t\t\t\tthis.chartConfiguration);\r\n\t\t}\r\n\r\n\t\tthis.displayConfigured.pipe(\r\n\t\t\tdebounceTime(this.changeDebounceDelay))\r\n\t\t\t.subscribe(\r\n\t\t\t\tasync() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNull(this.colorSwatch))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.displayConfigured.next();\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.chartConfiguration.data =\r\n\t\t\t\t\t\tthis.chartData;\r\n\r\n\t\t\t\t\tconst xAxes: any =\r\n\t\t\t\t\t\tthis.chartConfiguration.options.scales?.x;\r\n\r\n\t\t\t\t\tthis.chartConfiguration.data =\r\n\t\t\t\t\t\tawait this.chartTransform.toThemeColor(\r\n\t\t\t\t\t\t\tthis.chartConfiguration,\r\n\t\t\t\t\t\t\tthis.chartColors,\r\n\t\t\t\t\t\t\tthis.chartConfiguration.type ===\r\n\t\t\t\t\t\t\t\tChartConstants.chartTypes.pie\r\n\t\t\t\t\t\t\t\t|| this.chartConfiguration.type ===\r\n\t\t\t\t\t\t\t\t\tChartConstants.chartTypes.doughnut\r\n\t\t\t\t\t\t\t\t|| (this.chartConfiguration.type ===\r\n\t\t\t\t\t\t\t\t\tChartConstants.chartTypes.bar\r\n\t\t\t\t\t\t\t\t\t&& xAxes?.stacked !== true)\r\n\t\t\t\t\t\t\t\t? 0\r\n\t\t\t\t\t\t\t\t: null);\r\n\r\n\t\t\t\t\tthis.displayMissingDataMessage =\r\n\t\t\t\t\t\t(this.chartConfiguration.type ===\r\n\t\t\t\t\t\t\tChartConstants.chartTypes.pie\r\n\t\t\t\t\t\t\t|| this.chartConfiguration.type ===\r\n\t\t\t\t\t\t\t\tChartConstants.chartTypes.doughnut)\r\n\t\t\t\t\t\t\t&& this.chartConfiguration.data.datasets.filter(\r\n\t\t\t\t\t\t\t\t(dataSet: ChartDataset) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfor (const item of dataSet.data)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (parseInt(\r\n\t\t\t\t\t\t\t\t\t\t\titem.toString(),\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.parseRadix) > 0)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.length === 0;\r\n\r\n\t\t\t\t\tthis.chartData =\r\n\t\t\t\t\t\tthis.chartTransform\r\n\t\t\t\t\t\t\t.cloneChartData(\r\n\t\t\t\t\t\t\t\tthis.chartConfiguration);\r\n\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t\t});\r\n\r\n\t\t// Handle cases of stored configuration properties.\r\n\t\tif (this.chartConfiguration.data?.datasets[0]?.data?.length > 0)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.loading === true\r\n\t\t\t\t\t\t&& !AnyHelper.isNull(this.colorSwatch))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.threeQuarterSecond);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on changes event.\r\n\t * This will watch for data promise and direct data input value changes\r\n\t * and update the chart data appropriately along with a redraw.\r\n\t *\r\n\t * @async\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic async ngOnChanges(\r\n\t\tchanges: SimpleChanges): Promise\r\n\t{\r\n\t\tif (changes.dataPromise?.currentValue\r\n\t\t\t!==\tchanges.dataPromise?.previousValue\r\n\t\t\t|| changes.data?.currentValue\r\n\t\t\t\t!== changes.data?.previousValue)\r\n\t\t{\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif (!AnyHelper.isNull(changes.dataPromise))\r\n\t\t\t{\r\n\t\t\t\tthis.dataPromise.then(\r\n\t\t\t\t\tasync(data: IAggregate[]) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.handleChartData(data);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.handleChartData(this.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will complete any existing display configured observers\r\n\t * and free memory.\r\n\t *\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.displayConfigured.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles setting local parameter input values from a dynamic component\r\n\t * context if sent and initializing chart based inputs.\r\n\t * This will fall back to local default values if not sent.\r\n\t *\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tpublic async setChartContext(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.context))\r\n\t\t{\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tconst chartContext: IChartContext =\r\n\t\t\t\tthis.context.data;\r\n\r\n\t\t\tconst chartDefinition: IChartDefinition =\r\n\t\t\t\tthis.context.data.chartDefinition;\r\n\r\n\t\t\tthis.summaryCardDisplay =\r\n\t\t\t\tchartContext.summaryCardDisplay;\r\n\t\t\tthis.squareCardDisplay =\r\n\t\t\t\tchartContext.squareCardDisplay;\r\n\t\t\tthis.maintainAspectRatio =\r\n\t\t\tchartContext.maintainAspectRatio === true\r\n\t\t\t\t|| (chartContext.summaryCardDisplay === false\r\n\t\t\t\t\t&& chartContext\r\n\t\t\t\t\t\t.chartDefinition.chartConfiguration.type !==\r\n\t\t\t\t\t\t\tChartConstants.chartTypes.pie\r\n\t\t\t\t\t&& chartContext\r\n\t\t\t\t\t\t.chartDefinition.chartConfiguration.type !==\r\n\t\t\t\t\t\t\tChartConstants.chartTypes.doughnut);\r\n\t\t\tthis.fillMissingDataSets =\r\n\t\t\t\tchartContext.fillMissingDataSets;\r\n\r\n\t\t\tthis.chartColors =\r\n\t\t\t\tchartDefinition.chartColors;\r\n\t\t\tthis.chartConfiguration =\r\n\t\t\t\tchartDefinition.chartConfiguration;\r\n\t\t\tthis.dataPromise =\r\n\t\t\t\tchartDefinition.dataPromise;\r\n\t\t\tthis.groupByCount =\r\n\t\t\t\tchartDefinition.groupByCount;\r\n\t\t\tthis.pivotProperty =\r\n\t\t\t\tchartDefinition.chartPivotProperty;\r\n\r\n\t\t\tthis.dataPromise.then(\r\n\t\t\t\tasync (data: IAggregate[]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.data = [\r\n\t\t\t\t\t\t...chartContext.data || [],\r\n\t\t\t\t\t\t...data\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\tawait this.handleChartData(this.data);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.chartConfiguration.options\r\n\t\t\t.maintainAspectRatio =\r\n\t\t\t\tthis.maintainAspectRatio;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the input of chart data via calculating and grouping\r\n\t * available data into a chart display. This will set the display\r\n\t * mode to label only until all configurations are complete and\r\n\t * ready to be drawn.\r\n\t *\r\n\t * @async\r\n\t * @memberof ChartComponent\r\n\t */\r\n\tprivate async handleChartData(\r\n\t\tdata: IAggregate[]): Promise\r\n\t{\r\n\t\tthis.chartData =\r\n\t\t\tawait this.chartTransform\r\n\t\t\t\t.handleAggregateData(\r\n\t\t\t\t\tthis.chartConfiguration,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t\tthis.pivotProperty,\r\n\t\t\t\t\tthis.pivotProperties,\r\n\t\t\t\t\tthis.radialGaugeChart,\r\n\t\t\t\t\tthis.groupByCount,\r\n\t\t\t\t\tthis.fillMissingDataSets);\r\n\r\n\t\tthis.chartConfiguration.data =\r\n\t\t\t{\r\n\t\t\t\tlabels: this.chartData.labels,\r\n\t\t\t\tdatasets: this.chartConfiguration.data.datasets\r\n\t\t\t};\r\n\r\n\t\tthis.displayConfigured.next();\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    \r\n\r\n
    \r\n\t
    \r\n\t\t{{chatOfflineMessage}}
    \r\n\t\t{{chatOfflineSecondaryMessage}}\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSystemServiceConstants\r\n} from '@shared/constants/system-service.constants';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tIChatSettings\r\n} from '@shared/interfaces/application-objects/chat-settings';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tINameValuePair\r\n} from '@shared/interfaces/application-objects/name-value-pair.interface';\r\nimport {\r\n\tISystemServiceConfiguration\r\n} from '@shared/interfaces/application-objects/system-service-configuration';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIChatService\r\n} from '@shared/interfaces/services/chat-service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-cloud-chat',\r\n\ttemplateUrl: './cloud-chat.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a cloud chat.\r\n *\r\n * @export\r\n * @class CloudChatComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CloudChatComponent\r\nimplements OnInit, AfterViewInit, OnDestroy, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of CloudChatComponent.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver for dependency injection.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service for the current user.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used to interact with entity instances.\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the component container.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\t@ViewChild('CloudChat')\r\n\tpublic CloudChatContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the loading state of the component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading state of the component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic destroyed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the chat service.\r\n\t *\r\n\t * @type {IChatService}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic chatService: IChatService;\r\n\r\n\t/**\r\n\t * Gets or sets a boolean signifying whether the chat is offline.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic chatOffline: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the chat offline message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic chatOfflineMessage: string =\r\n\t\t'Chat is currently offline.';\r\n\r\n\t/**\r\n\t * Gets or sets the chat offline message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic chatOfflineSecondaryMessage: string =\r\n\t\t'Please try again later.';\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the drawer title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tprivate readonly drawerTitle: string = 'Chat';\r\n\r\n\t/**\r\n\t * Handles the site layout change event.\r\n\t * This will ensure the chat content remains accurately positioned.\r\n\t *\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.chatService.positionModalContent(\r\n\t\t\tthis.getDrawerIndex());\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the OnInit lifecycle hook.\r\n\t * Initializes the service provider modal chat service.\r\n\t *\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.chatService =\r\n\t\t\tthis.resolver.resolveShared(\r\n\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t.chat\r\n\t\t\t\t\t.modalService);\r\n\r\n\t\tthis.chatService.context =\r\n\t\t\t\tthis.context;\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the AfterViewInit lifecycle hook.\r\n\t * Initializes the component after the view has been initialized.\r\n\t *\r\n\t * @async\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic async ngAfterViewInit(): Promise\r\n\t{\r\n\t\tawait this.loadChatSettings();\r\n\t\tif (this.chatOffline === true)\r\n\t\t{\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle race cases where destroy is called prior to init complete.\r\n\t\tif (this.destroyed === true)\r\n\t\t{\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.chatService.openModalChat();\r\n\t\tthis.chatService.positionModalContent(\r\n\t\t\tthis.getDrawerIndex());\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the OnDestroy lifecycle hook.\r\n\t * Closes the modal chat if open.\r\n\t *\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.destroyed = true;\r\n\t\tthis.chatService.closeModalChat();\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the latest chat settings.\r\n\t *\r\n\t * @async\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tprivate async loadChatSettings(): Promise\r\n\t{\r\n\t\tconst settings: IChatSettings =\r\n\t\t\tawait this.getChatConfiguration();\r\n\r\n\t\tthis.chatOffline =\r\n\t\t\tsettings.offline;\r\n\t\tthis.chatOfflineMessage =\r\n\t\t\tsettings.offlineMessage ?? this.chatOfflineMessage;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets updated chat configuration settings.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The chat configuration settings.\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tprivate async getChatConfiguration(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\t\tconst systemInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\tconst systemService: ISystemServiceConfiguration =\r\n\t\t\tObjectArrayHelper\r\n\t\t\t\t.findByProperty(\r\n\t\t\t\t\tsystemInstance.data.settings?.services,\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tSystemServiceConstants.chat)\r\n\t\t\t\t\t?? { name: AppConstants.empty, settings: [] };\r\n\r\n\t\tconst chatSettings: IChatSettings =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\toffline:\r\n\t\t\t\t\tJSON.parse(\r\n\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\tSystemServiceConstants.offline)\r\n\t\t\t\t\t\t\t?.value ?? 'false'),\r\n\t\t\t\tofflineMessage:\r\n\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\tSystemServiceConstants.offlineMessage)\r\n\t\t\t\t\t\t?.value,\r\n\t\t\t};\r\n\r\n\t\treturn chatSettings;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the drawer index based on the current site layout.\r\n\t *\r\n\t * @returns {number}\r\n\t * The drawer index.\r\n\t * @memberof CloudChatComponent\r\n\t */\r\n\tprivate getDrawerIndex(): number\r\n\t{\r\n\t\tconst drawers: NodeListOf =\r\n\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t`.${AppConstants.cssClasses.drawer}`);\r\n\r\n\t\tconst drawerIndex: number =\r\n\t\t\tArray.from(drawers)\r\n\t\t\t\t.findIndex(\r\n\t\t\t\t\t(drawer: HTMLElement) =>\r\n\t\t\t\t\t\tdrawer.childNodes[0].textContent.trim() ===\r\n\t\t\t\t\t\t\tthis.drawerTitle);\r\n\r\n\t\treturn drawers.length - drawerIndex;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for designating commission disbursement status.\r\n */\r\nexport enum CommissionDisbursementStatus {\r\n\t/**\r\n\t * The commission disbursement is pending.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionDisbursementStatus\r\n\t */\r\n\tPending = 'Pending',\r\n\r\n\t/**\r\n\t* The commission disbursement is approved.\r\n\t*\r\n\t* @type {string}\r\n\t* @memberof CommissionDisbursementStatus\r\n */\r\n\tApproved = 'Approved',\r\n\r\n\t/**\r\n\t * The commission disbursement is rejected.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionDisbursementStatus\r\n\t */\r\n\tRejected = 'Rejected',\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommissionDisbursementStatus\r\n} from '@shared/constants/enums/commission-disbursment-status.enum';\r\nimport {\r\n\tCommonChildListDirective\r\n} from '@shared/directives/common-child-list-directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\n\r\n@Component({\r\n\tselector: 'app-commissions-list',\r\n\ttemplateUrl: './commissions-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./commissions-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing commission disbursement item list view.\r\n *\r\n * @export\r\n * @class CommisionsListComponent\r\n * @extends {CommonChildListDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CommissionsListComponent\r\n\textends CommonChildListDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the commission list component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Router} router\r\n\t * The router for navigation.\r\n\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityservice: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityservice,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the list of sorts available in this list component.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Create Date',\r\n\t\t\t\tvalue: AppConstants.commonProperties.id,\r\n\t\t\t\tdirection: AppConstants.sortDirections.descending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the listy of users who created teh commission disbursements.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic createdByList: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets the search flag that indicates that the filter from\r\n\t * the search input.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tprivate readonly searchFlag: string = 'Search';\r\n\r\n\t/**\r\n\t * Performs data operation that need to happen before mapping.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @returns\r\n\t * An empty promise.\r\n\t * @member CommisionsListComponent\r\n\t */\r\n\tpublic async performPreMappingRequirements(): Promise\r\n\t{\r\n\t\tawait this.setCreatableEntityTypes(this.wildcardChildFilter);\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(this.listData))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst createdByIds: string[] =\r\n\t\t\tthis.listData.map((item: any) =>\r\n\t\t\t\t`${item.createdById}`);\r\n\r\n\t\tconst createdByFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\tcreatedByIds,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\r\n\t\tthis.createdByList =\r\n\t\t\tawait this.getFullCreatorDataSet(createdByFilter);\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a common list context that can be consumed by a common list\r\n\t * displayed in this component.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * The collection of data that will be displayed in this list.\r\n\t * @returns {ICommonListContext}\r\n\t * The common list context to display.\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: CommissionDisbursementStatus.Pending,\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t`status eq \"${CommissionDisbursementStatus.Pending}\"`\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: CommissionDisbursementStatus.Approved,\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t`status eq \"${CommissionDisbursementStatus.Approved}\"`\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: CommissionDisbursementStatus.Rejected,\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t`status eq \"${CommissionDisbursementStatus.Rejected}\"`\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tsortable: true,\r\n\t\t\t\t\tsorters: this.sorters,\r\n\t\t\t\t\tsearchFilterFormat: this.searchFlag,\r\n\t\t\t\t\tactions: this.creatableEntityTypes?.length > 0\r\n\t\t\t\t\t\t? [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\t\t\t\tcommand: async (event: any) => {\r\n\t\t\t\t\t\t\t\t\tawait this.navigateToWizard();\r\n\t\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\t\t\tSecurityRightCategory.Action,\r\n\t\t\t\t\t\t\t\tsecurityRightPath:\r\n\t\t\t\t\t\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t\t\t\t\tsecurityRightType:\r\n\t\t\t\t\t\t\t\t\tSecurityRightType.execute\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t\t: [],\r\n\t\t\t\t\tfilters: listFilters,\r\n\t\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\t\tthis.filterChanged(source, filters),\r\n\t\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the create wizard.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @returns\r\n\t * An empty promise.\r\n\t * @member CommisionsListComponent\r\n\t */\r\n\tpublic async navigateToWizard(): Promise\r\n\t{\r\n\t\tconst organization: IEntityInstance =\r\n\t\t\t(this.context.source).entityInstance;\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\t(this.context.source).entityType;\r\n\r\n\t\tconst activeExists: boolean = await this.activeDisbursementExists();\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.organizations}/entities`\r\n\t\t\t\t\t+ '/display/'\r\n\t\t\t\t\t+ 'BasePage.Wizard.InsuranceCompany'\r\n\t\t\t\t\t+ '.CreateCommissionDisbursement/'\r\n\t\t\t\t\t+ AppConstants.viewTypes.create\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tskipLocationChange: true,\r\n\t\t\t\tqueryParams:\r\n\t\t\t\t{\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\torganizationName:\r\n\t\t\t\t\t\t\t\t\torganization.data.name.legalName,\r\n\t\t\t\t\t\t\t\t\torganizationId: organization.id,\r\n\t\t\t\t\t\t\t\t\torganizationType: entityType.name,\r\n\t\t\t\t\t\t\t\t\torganizationGroup: entityType.group,\r\n\t\t\t\t\t\t\t\t\tactiveSnapshotExists: activeExists,\r\n\t\t\t\t\t\t\t\t\tcancelRoute: this.router.url\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if there is an existing disbursement pending.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @returns\r\n\t * The result true if there are pending disbursements.\r\n\t * @member CommisionsListComponent\r\n\t */\r\n\tpublic async activeDisbursementExists(): Promise\r\n\t{\r\n\t\tconst organization: IEntityInstance =\r\n\t\t\t(this.context.source).entityInstance;\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\t(this.context.source).entityType;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityType.group;\r\n\r\n\t\tconst activeDisbursements = await this.entityInstanceApiService\r\n\t\t\t.getChildren(\r\n\t\t\t\torganization.id,\r\n\t\t\t\t`status eq \"${CommissionDisbursementStatus.Pending}\"`,\r\n\t\t\t\t'Id Desc',\r\n\t\t\t\t0,\r\n\t\t\t\t1,\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t.commissionDisbursements);\r\n\r\n\t\treturn activeDisbursements.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a full data set of creators.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @returns\r\n\t * all creators of the disbursments.\r\n\t * @member CommisionsListComponent\r\n\t */\r\n\tpublic getFullCreatorDataSet(\r\n\t\tcreatedByFilter: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\treturn ApiHelper.getFullDataSet(\r\n\t\t\tthis.entityInstanceApiService,\r\n\t\t\tcreatedByFilter,\r\n\t\t\tAppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a list item that represents\r\n\t * a commission disbursement instance.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance to be mapped into a list item.\r\n\t * @returns {ICommonListItem}\r\n\t * The common list item to display that represents this entity instance.\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\tentityInstance: IEntityInstance):\r\n\t\tICommonListItem\r\n\t{\r\n\t\tconst createDate: string =\r\n\t\t\tDateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tentityInstance.createDate),\r\n\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\r\n\t\tconst decisionDate: string =\r\n\t\t\tDateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tentityInstance.data.decisionDate),\r\n\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\r\n\t\tconst createdBy: IEntityInstance =\r\n\t\t\tthis.createdByList.find(\r\n\t\t\t\titem => item.id === entityInstance.createdById);\r\n\r\n\t\tconst decidedBy: IEntityInstance =\r\n\t\t\tAnyHelper.isNullOrEmpty(entityInstance.data.decidedBy)\r\n\t\t\t\t? null\r\n\t\t\t\t: this.createdByList.find(\r\n\t\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\t\tuser.resourceIdentifier\r\n\t\t\t\t\t\t\t=== entityInstance.data.decidedBy);\r\n\r\n\t\tconst createdByName =\r\n\t\t\tStringHelper.toNameString(\r\n\t\t\t\tcreatedBy.data.firstName,\r\n\t\t\t\tcreatedBy.data.lastName);\r\n\r\n\t\tconst decidedByName = AnyHelper.isNull(decidedBy)\r\n\t\t\t? null\r\n\t\t\t: StringHelper.toNameString(\r\n\t\t\t\tdecidedBy.data.firstName,\r\n\t\t\t\tdecidedBy.data.lastName);\r\n\r\n\t\tlet statusColor: string = AppConstants.empty;\r\n\t\tswitch (entityInstance.data.status) {\r\n\r\n\t\t\tcase CommissionDisbursementStatus.Pending:\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CommissionDisbursementStatus.Approved:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textSuccessColor;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CommissionDisbursementStatus.Rejected:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textErrorColor;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\titem: entityInstance,\r\n\t\t\t\tdescriptionLineFormat:\r\n\t\t\t\t\t`'\r\n\t\t\t\t\t+ `**${entityInstance.data.status} Disbursement**
    `\r\n\t\t\t\t\t+ (entityInstance.data.status ===\r\n\t\t\t\t\t\t\tCommissionDisbursementStatus.Pending\r\n\t\t\t\t\t\t? `Create Date: ${createDate}`\r\n\t\t\t\t\t\t: `Decision Date: ${decisionDate}`),\r\n\t\t\t\tinformationLineFormat:\r\n\t\t\t\t\tAnyHelper.isNull(decidedBy)\r\n\t\t\t\t\t\t? `Created By: ${createdByName}`\r\n\t\t\t\t\t\t: `Decision By: ${decidedByName}`,\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions: SecurityHelper.scrubMenuItems(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ticon: 'fa fa-pencil',\r\n\t\t\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\t\t\tthis.navigateToComissionDisbursementPage(\r\n\t\t\t\t\t\t\t\t\tentityInstance.id);\r\n\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.update\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tentityInstance.entityType,\r\n\t\t\t\t\tthis.securityDefinitions)\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the the commission disbursement page.\r\n\t *\r\n\t * @param {number} id\r\n\t * The id of the commission disbursement.\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tprivate navigateToComissionDisbursementPage(\r\n\t\tid: number)\r\n\t{\r\n\t\tconst typeGroup: string =\r\n\t\t\tInsuranceConstants\r\n\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t.commissionDisbursements;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${AppConstants.moduleNames.organizations}/entities`\r\n\t\t\t\t\t+ `/${typeGroup}/`\r\n\t\t\t\t\t+ AppConstants.viewTypes.edit\r\n\t\t\t\t\t+ '/' + id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter changed event.\r\n\t *\r\n\t * @param {any} source\r\n\t * The context sourse.\r\n\t * @param { ICommonListFilter[]} filters\r\n\t * the filters.\r\n\t *\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tprivate filterChanged(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[])\r\n\t{\r\n\t\tconst searchfilters = filters\r\n\t\t\t.filter((filter: ICommonListFilter) =>\r\n\t\t\t\tfilter.value === this.searchFlag);\r\n\r\n\t\tfor (const filter of searchfilters) {\r\n\t\t\tconst searchTerm: string =\r\n\t\t\t\tfilter.name.toUpperCase();\r\n\r\n\t\t\tconst createdByMatch =\r\n\t\t\t\tthis.createdByList\r\n\t\t\t\t\t.find(creator => {\r\n\t\t\t\t\t\tconst textToSearch: string =\r\n\t\t\t\t\t\t\t`${creator.data.userName} `\r\n\t\t\t\t\t\t\t+ `${creator.data.firstName} `\r\n\t\t\t\t\t\t\t+ `${creator.data.lastName} `;\r\n\r\n\t\t\t\t\t\tconst matchIndex: number =\r\n\t\t\t\t\t\t\ttextToSearch\r\n\t\t\t\t\t\t\t\t.toUpperCase()\r\n\t\t\t\t\t\t\t\t.search(searchTerm);\r\n\r\n\t\t\t\t\t\treturn matchIndex > -1;\r\n\t\t\t\t\t});\r\n\r\n\t\t\tfilter.value =\r\n\t\t\t\tAnyHelper.isNullOrEmpty(createdByMatch)\r\n\t\t\t\t\t? 'CreatedById eq 0'\r\n\t\t\t\t\t: `CreatedById eq ${createdByMatch.id}`;\r\n\t\t}\r\n\r\n\t\tthis.handleFilterChange(\r\n\t\t\tsource,\r\n\t\t\tfilters);\r\n\t}\r\n}","\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t\t\r\n\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit,\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tISecurityDefinitionDto\r\n} from '@api/interfaces/security/security-definition.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport { DocumentHelper } from '@shared/helpers/document.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n@Component({\r\n\tselector: 'app-commissions-schedule-update',\r\n\ttemplateUrl: './commissions-schedule-update.component.html',\r\n\tstyleUrls: [\r\n\t\t'./commissions-schedule-update.component.scss'\r\n\t]\r\n})\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A component representing commission schedule update view.\r\n *\r\n * @export\r\n * @class CommissionsScheduleUpdateComponent\r\n * @extends {CommissionsScheduleDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class CommissionsScheduleUpdateComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the commission schedule update list\r\n\t * component.\r\n\t *\r\n\t * @param {Location} location\r\n\t * The location service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Router} router\r\n\t * The router for navigation.\r\n\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic location: Location,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instacne to be displayed within the drawer view.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\t @Input() public entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the current display mode is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is saving.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the valid saving commissions data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic shouldSave: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout used in implementing components.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the allowed user access.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic allowedUserAccess: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the policy term commissions data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic commissionsData: { data: any } =\r\n\t\t{ data: { commissions: [] }};\r\n\r\n\t/**\r\n\t * Gets or sets the initial data displayed in the commissions drawer.\r\n\t *\r\n\t * @type {{ data: any }}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic archivedCommissionsData: { data: any } =\r\n\t\t{ data: { commissions: [] }};\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the access denied url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic resources: string[] =\r\n\t\t[\r\n\t\t\t'Security.AccessPolicyDefinition'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the client message if insufficient resources exist.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Policy term commissions array access is required.';\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance component associated to this drawer\r\n\t * component.\r\n\t *\r\n\t * @type {EntityInstanceComponent}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic entityInstanceComponent: EntityInstanceComponent;\r\n\r\n\t/**\r\n\t * Gets the workflow action being executed to update the PolicyTerm\r\n\t * commissions array for corrections.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate readonly workflowActionName: string =\r\n\t\t'CreateCommissionsCorrections';\r\n\r\n\t/**\r\n\t * Gets or sets the product commission schedules promise array.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t*/\r\n\tprivate productCommissionSchedules: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets an EntityType representing the selected entity type to\r\n\t * update.\r\n\t *\r\n\t * @type {IEntityTypeDto}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the commissions schedules path.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate readonly commissionsSchedulesPath: string =\r\n\t\t'$.data.accounting.commissions';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceComponent =\r\n\t\t\t this.context.source;\r\n\r\n\t\tthis.entityInstance =\r\n\t\t\tthis.entityInstanceComponent.entityInstance;\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tentityInstance: this.entityInstance\r\n\t\t\t};\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(this.entityType))\r\n\t\t{\r\n\t\t\tthis.entityType =\r\n\t\t\t\tawait this.entityTypeApiService.getSingleQueryResult(\r\n\t\t\t\t\t`Name eq '${this.entityInstance.entityType}'`, 'Id');\r\n\t\t}\r\n\r\n\t\tthis.productCommissionSchedules =\r\n\t\t\tawait this.getProductCommissionSchedules();\r\n\r\n\t\tawait this.setCommissions();\r\n\r\n\t\tawait this.performPostInitActions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the policy term commissions data ordered in reverse mode to\r\n\t * display fist the agency that created the current policy (Direct).\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic async setCommissions(): Promise\r\n\t{\r\n\t\tthis.commissionsData.data.commissions =\r\n\t\t\tthis.entityInstance\r\n\t\t\t\t.data\r\n\t\t\t\t.accounting\r\n\t\t\t\t.commissions\r\n\t\t\t\t.slice()\r\n\t\t\t\t.reverse();\r\n\r\n\t\tawait this.setAgenciesName();\r\n\r\n\t\tthis.archivedCommissionsData =\r\n\t\t\tcloneDeep(this.commissionsData);\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate drawer ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this drawer.\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityInstanceComponent.entityTypeGroup;\r\n\r\n\t\tconst userEffectivePermissions: ISecurityDefinitionDto =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getPermissions(entityInstanceComponent.entityInstance.id);\r\n\r\n\t\tthis.allowedUserAccess = SecurityHelper\r\n\t\t\t.getDataSecurityRights(\r\n\t\t\t\tthis.commissionsSchedulesPath,\r\n\t\t\t\tuserEffectivePermissions.data)\r\n\t\t\t.rights\r\n\t\t\t.update;\r\n\r\n\t\treturn this.allowedUserAccess;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the existing entity instance values into the database for\r\n\t * the current commissions schedules in the drawer and creates the\r\n\t * commissions corrections.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic async applyCommissionsCorrections(): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.entityInstance\r\n\t\t\t.data\r\n\t\t\t.accounting\r\n\t\t\t.commissions = this.commissionsData.data.commissions;\r\n\r\n\t\tfor (const commissionSchedule of\r\n\t\t\tthis.entityInstance\r\n\t\t\t\t.data\r\n\t\t\t\t.accounting\r\n\t\t\t\t.commissions)\r\n\t\t{\r\n\t\t\tdelete commissionSchedule.agencyName;\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any, _reject: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t\t\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tthis.entityType.group;\r\n\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.executeAction(\r\n\t\t\t\t\t\t\t\tthis.entityInstance.id,\r\n\t\t\t\t\t\t\t\tthis.workflowActionName,\r\n\t\t\t\t\t\t\t\tthis.entityInstance);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\r\n\t\t\t\t\t\tawait this.entityInstanceComponent.reloadEntity();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Updating Commission Schedules',\r\n\t\t\t\t'Updated Commission Schedules',\r\n\t\t\t\t'Commission Schedules was updated.',\r\n\t\t\t\t'Commission Schedules has been not updated.'));\r\n\r\n\t\tthis.saving = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event of the contained dynamic form.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The sent validity value of the dynamic form.\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic validityChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tif (this.commissionsData.data.commissions.length === 0)\r\n\t\t{\r\n\t\t\tthis.shouldSave = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.shouldSave = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the commissions values changed event sent from the child dynamic\r\n\t * formly component. This will notify the component of changes to\r\n\t * data in the formly display.\r\n\t *\r\n\t * @param {boolean} changed\r\n\t * The changed truthy of the current displayed filter set.\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tpublic commissionsValuesChanged(\r\n\t\tchanged: boolean): void\r\n\t{\r\n\t\tthis.shouldSave = changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets product commission schedules associated to the current policy term\r\n\t * instance.\r\n\t *\r\n\t * @async\r\n\t * @return {IDropdownOption[]}\r\n\t * The commission schedules converted to a IDropdownOption array.\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate async getProductCommissionSchedules(): Promise\r\n\t{\r\n\t\tconst productName: string =\r\n\t\t\tthis.entityInstance.data.productName;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst productEntityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\t`name eq '${productName}'`, 'Id');\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\r\n\t\tconst commissionSchedules: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tproductEntityInstance.id,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ AppConstants.sortDirections.ascending,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t.commissionsSchedules);\r\n\r\n\t\treturn commissionSchedules.map(\r\n\t\t\t(commissionSchedule: IEntityInstance) =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: commissionSchedule.data.name,\r\n\t\t\t\t\tvalue: commissionSchedule.data.name\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the agency name to each commission schedules associated to the\r\n\t * current policy term instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate async setAgenciesName(): Promise\r\n\t{\r\n\t\tconst promiseArray: Promise[] = [];\r\n\r\n\t\tfor (const commissionSchedule of this.commissionsData.data.commissions)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\t(async () =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t.agencies;\r\n\r\n\t\t\t\t\tconst agencyEntityInstance: IEntityInstance =\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t'resourceIdentifier eq '\r\n\t\t\t\t\t\t\t\t\t+ `'${commissionSchedule.agencyId}'`,\r\n\t\t\t\t\t\t\t\t'Id');\r\n\r\n\t\t\t\t\tcommissionSchedule.agencyName =\r\n\t\t\t\t\t\tagencyEntityInstance.data?.name?.legalName;\r\n\t\t\t\t})());\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promiseArray);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the current policy term instance is active.\r\n\t *\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate isPolicyTermActive(): boolean\r\n\t{\r\n\t\treturn this.entityInstance.data.status ===\r\n\t\t\tInsuranceConstants.policyTermStatusTypes.active;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the post initialization action.\r\n\t * This will create the dynamic formly layout for display component creation\r\n\t * and permissions.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsScheduleUpdateComponent\r\n\t */\r\n\tprivate async performPostInitActions(): Promise\r\n\t{\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.commissions',\r\n\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t.customControls.customRepeater,\r\n\t\t\t\t\tdefaultValue: [],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Commission Schedules',\r\n\t\t\t\t\t\thideSingularIdentifier: true,\r\n\t\t\t\t\t\ttitleFormat: '{agencyName}',\r\n\t\t\t\t\t\tdisabled: !this.isPolicyTermActive(),\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\tinitialItemValue: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfieldArray: {\r\n\t\t\t\t\t\tfieldGroup: [\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'scheduleName',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tplaceholder: 'Select an Option',\r\n\t\t\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\t\t\toptions: this.productCommissionSchedules\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.label':\r\n\t\t\t\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.scheduleType)\r\n\t\t\t\t\t\t\t\t\t\t\t\t? 'Commision Schedule'\r\n\t\t\t\t\t\t\t\t\t\t\t\t: field.model.scheduleType\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ ' Commission Schedule'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'agencyName',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Agency Name'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\thide: 'true'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\n\r\n@Component({\r\n\tselector: 'app-commissions',\r\n\ttemplateUrl: './commissions.component.html',\r\n\tstyleUrls: [\r\n\t\t'./commissions.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level work items.\r\n *\r\n * @export\r\n * @class RulesComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class CommissionsComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work items component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof CommissionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the group wildcard type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommisionsListComponent\r\n\t */\r\n\tpublic groupWildCard: string = InsuranceConstants\r\n\t\t.insuranceEntityTypeGroups\r\n\t\t.commissionDisbursements;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof CommissionsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityDisplayName = 'Commission Disbursements';\r\n\t\tthis.wildcardChildFilter = InsuranceConstants\r\n\t\t\t.insuranceEntityTypes\r\n\t\t\t.commissionDisbursement;\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed()) {\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\tthis.wildcardChildFilter\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to at least one commission '\r\n\t\t\t\t\t+ 'disbursement item entity type and version.';\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t* Implements the ownership guard interface.\r\n\t* This will calculate drawer ownership permissions.\r\n\t*\r\n\t* @async\r\n\t* @returns {Promise}\r\n\t* A value signifying whether or not access is allowed to this drawer.\r\n\t* @memberof WorkItemsComponent\r\n\t*/\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst commissionTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\tAppConstants.commonProperties.group\r\n\t\t\t\t+ `.StartsWith('${this.groupWildCard}') eq true`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (commissionTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tcommissionTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the entity altered event which is sent to this component when\r\n\t * the drawer entity update or entity create components have altered this\r\n\t * lists data. This method will refresh the badge promise to match the\r\n\t * updated information.\r\n\t *\r\n\t * @memberof WorkItemsComponent\r\n\t */\r\n\tpublic entityAltered()\r\n\t{\r\n\t\tEventHelper.dispatchRefreshBadgePromiseEvent(\r\n\t\t\tDynamicComponentLookup.supportedTypes.workItemsComponent,\r\n\t\t\tDynamicComponentLookup.targetComponents.utilityMenuComponent);\r\n\t}\r\n}","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t 0\">\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t+\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t 0\"\r\n\t\tclass=\"ui-g-12 no-padding text-left filters p-chips p-component\">\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{enabledFilter.name}}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t
    1\"\r\n\t\tclass=\"multiple-filters-warning theme-color-gray text-center font-italic\">\r\n\t\tItems have to meet all conditions to be returned.\r\n\t
    \r\n\r\n\t 0\"\r\n\t\tclass=\"ui-g-9 text-left no-padding sorter\"\r\n\t\t[ngClass]=\"{\r\n\t\t\t'filter-items-displayed': (enabledFilters?.length > 0)\r\n\t\t}\">\r\n\t\t\r\n\t\t\t{{selectedSorter.name}}\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t 0\"\r\n\t\t\t[ngIfElse]=\"NoResults\">\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{interpolate(item.descriptionLineFormat, item.item)}}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t(More)\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{interpolate(item.informationLineRelativeDateTime, item.item) | dateTimeFromIso | dateTimeToRelative:{ style: 'long' } }}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{{interpolate(item.informationLineFormat, item.item)}}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{noResultsMessage}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInput,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n@Component({\r\n\tselector: 'common-list',\r\n\ttemplateUrl: './common-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./common-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a list for displaying summary details\r\n * of objects.\r\n *\r\n * @export\r\n * @class CommonListComponent\r\n * @implements {OnInit}\r\n */\r\nexport class CommonListComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a collection of enabled list filters to display chips\r\n\t * for within the filter section of the common list view and also used\r\n\t * as the event value for the onFilterChange context method.\r\n\t *\r\n\t * @type {ICommonListFilter[]}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\t@Input()\r\n\tpublic enabledFilters: ICommonListFilter[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t\t\tComponent,\r\n\t\t\tICommonListContext[]>>}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\t@Input() public context:\r\n\t\tIDynamicComponentContext<\r\n\t\t\tComponent,\r\n\t\t\tICommonListContext[]>>;\r\n\r\n\t/**\r\n\t * Gets or sets the filter chips container.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\t@ViewChild('FilterChipsContainer')\r\n\tpublic filterChipsContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the sort menu container.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\t@ViewChild('SortMenuContainer')\r\n\tpublic sortMenuContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets an offset amount used to calculate remaining screen height\r\n\t * for a full screen height list.\r\n\t * @note\r\n\t * This value defaults to the reserved drawer height value of 126px. This\r\n\t * is the value reserved in larger than tablet mode as mobile calculations\r\n\t * are handled in code.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\t@Input()\r\n\tpublic listOffset: number = 124;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether this component is loading data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of quick filter menu items to display within\r\n\t * the common list level quick filter menu.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic quickFilterMenuItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a collection of menu items to add to the context menu\r\n\t * pop out for ordering and sorting.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic sorterMenuItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected and active sorter for the common list view.\r\n\t * Also used as the event value for the onSortChange context method.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic selectedSorter: ICommonListSort;\r\n\r\n\t/**\r\n\t * Gets or sets the no results found message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic noResultsMessage: string = AppConstants.noResultsFoundMessage;\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the item container query selector.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly itemContainerSelector: string = 'div.item-container';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the more details query selector.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly moreSelector: string = '.more';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the common list container selector.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly commonListSelector: string = '.common-list';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the line one common list item\r\n\t * selector.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly line1Selector: string = '.line1';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the theme color for\r\n\t * highlighting.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly themeHighlightColor: string = 'primary';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the theme color opacity for\r\n\t * highlighting.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly themeHighlightColorOpacity: string = '.1';\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the selected style class name.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate readonly selectedClass: string = 'selected';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\t// Map filters to our quick filter menu items.\r\n\t\tthis.context.data.filters\r\n\t\t\t?.forEach((item: ICommonListFilter) =>\r\n\t\t\t\tthis.addQuickFilter(item));\r\n\r\n\t\t// Map sorters to our sorting menu items.\r\n\t\tif (this.context.data.sortable === true\r\n\t\t\t&& (this.context.data.sorters?.length || 0) > 0)\r\n\t\t{\r\n\t\t\tthis.selectedSorter = this.context.data.sorters[0];\r\n\r\n\t\t\tthis.context.data.sorters\r\n\t\t\t\t.forEach((sorter: ICommonListSort) =>\r\n\t\t\t\t\tthis.addSorter(sorter));\r\n\t\t}\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to handle the sort change event.\r\n\t *\r\n\t * @param {Event} event\r\n\t * A value representing the event that the triggered the sort change.\r\n\t * @param {string} name\r\n\t * A value representing the name of the sorter to change to.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic handleSortChangeEvent(\r\n\t\tevent: Event,\r\n\t\tname: string): void\r\n\t{\r\n\t\tevent\r\n\t\t\t.stopImmediatePropagation();\r\n\r\n\t\tthis.changeSort(name);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to handle the add filter event.\r\n\t *\r\n\t * @param {Event} event\r\n\t * A value representing the event that triggered the add filter action.\r\n\t * @param {string} name\r\n\t * A value representing the name of the filter to add to the active filter\r\n\t * list.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic handleAddFilterEvent(\r\n\t\tevent: Event,\r\n\t\tname: string): void\r\n\t{\r\n\t\tevent\r\n\t\t\t.stopImmediatePropagation();\r\n\r\n\t\tthis.addFilter(\r\n\t\t\tname,\r\n\t\t\tnull);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to handle the remove filter event.\r\n\t *\r\n\t * @param {Event} event\r\n\t * A value representing the event that triggered the remove filter action.\r\n\t * @param {string} name\r\n\t * A value representing the name of the filter to remove from the active\r\n\t * filter list.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic handleRemoveFilterEvent(\r\n\t\tevent: Event,\r\n\t\tname: string): void\r\n\t{\r\n\t\tevent\r\n\t\t\t.stopImmediatePropagation();\r\n\r\n\t\tthis.removeFilter(\r\n\t\t\tname);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to handle the event of adding a new user input custom\r\n\t * filter to the enabled filters list.\r\n\t *\r\n\t * @note\r\n\t * If a searchFilterFormat is provided, the input value will be interpolated\r\n\t * into that format as the filter value. Otherwise, a default format that\r\n\t * search Keywords column is utilized as the filter value.\r\n\t *\r\n\t * @param {HTMLInputElement} element\r\n\t * A value representing the input box element.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic handleSearchTextAdd(\r\n\t\telement: HTMLInputElement): void\r\n\t{\r\n\t\tconst inputValue: string = element.value;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(inputValue))\r\n\t\t{\r\n\t\t\telement.focus();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.data.searchFilterFormat) === true)\r\n\t\t{\r\n\t\t\tthis.addFilter(\r\n\t\t\t\tinputValue,\r\n\t\t\t\t`Keywords.Contains('${inputValue}') eq true`);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.addFilter(\r\n\t\t\t\tinputValue,\r\n\t\t\t\tthis.interpolate(\r\n\t\t\t\t\tthis.context.data.searchFilterFormat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinputValue: inputValue\r\n\t\t\t\t\t}));\r\n\t\t}\r\n\r\n\t\telement.value = null;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to select an individual list item row and apply styling changes.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * A value representing the event that triggered the selected item change.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic selectItem(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tconst target: Element\r\n\t\t\t= event.target as Element;\r\n\t\tconst itemContainer: HTMLElement\r\n\t\t\t= target.closest(this.itemContainerSelector);\r\n\t\tconst commonListContainer: HTMLElement\r\n\t\t\t= itemContainer.closest(this.commonListSelector);\r\n\t\tconst line1Container: HTMLElement\r\n\t\t\t= itemContainer.querySelector(this.line1Selector);\r\n\r\n\t\tconst alreadySelected: boolean\r\n\t\t\t= itemContainer.classList.contains(this.selectedClass);\r\n\r\n\t\tthis.deselectItems(commonListContainer);\r\n\r\n\t\tif (alreadySelected === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\titemContainer.classList.add(this.selectedClass);\r\n\t\titemContainer.style.backgroundColor\r\n\t\t\t= this.getThemeColor(\r\n\t\t\t\tthis.themeHighlightColor,\r\n\t\t\t\tthis.themeHighlightColorOpacity);\r\n\r\n\t\tconst maxLine1Height: number = 75;\r\n\t\tif (line1Container.clientHeight === maxLine1Height)\r\n\t\t{\r\n\t\t\t// Show more if line one is larger than 4 lines.\r\n\t\t\tline1Container\r\n\t\t\t\t.querySelector(this.moreSelector)\r\n\t\t\t\t.classList\r\n\t\t\t\t.remove(AppConstants.cssClasses.displayNone);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method to deselect all selected list items from within the common list.\r\n\t *\r\n\t * @param {HTMLElement} commonListElement\r\n\t * A value representing the common list element.\r\n\t * @returns {void}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic deselectItems(\r\n\t\tcommonListElement: HTMLElement): void\r\n\t{\r\n\t\tcommonListElement\r\n\t\t\t.querySelectorAll(this.itemContainerSelector)\r\n\t\t\t.forEach((item: Element) =>\r\n\t\t\t{\r\n\t\t\t\tconst element: HTMLElement = item as HTMLElement;\r\n\t\t\t\telement.style.backgroundColor = null;\r\n\t\t\t\telement.classList.remove(this.selectedClass);\r\n\t\t\t\telement\r\n\t\t\t\t\t.querySelector(this.moreSelector)\r\n\t\t\t\t\t.classList\r\n\t\t\t\t\t.add(AppConstants.cssClasses.displayNone);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method to perform string interpolation based on a input format\r\n\t * and an object.\r\n\t *\r\n\t * @param {string} format\r\n\t * A value representing a string interpolation format to resolve using the\r\n\t * inputted item values.\r\n\t * @param {*} item\r\n\t * A value representing the object to resolve the interpolation format with.\r\n\t * @returns {string}\r\n\t * A fully resolved string interpolation value.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic interpolate(\r\n\t\tformat: string,\r\n\t\titem: any): string\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.interpolate(\r\n\t\t\t\tformat,\r\n\t\t\t\titem);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles changes in the displayed data post data load\r\n\t * or refresh. This will calculate and display the list\r\n\t * in an accurate scroll panel based on filter changes.\r\n\t *\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic performPostLoadActions(): void\r\n\t{\r\n\t\tconst mobileOffset: number = 48;\r\n\t\tconst chipRowHeight: number = 30;\r\n\t\tconst firstRowOffset: number = 5;\r\n\t\tconst emptyChipRowOffset: number = 18;\r\n\t\tconst commonListContainerSelector: string =\r\n\t\t\t'.common-list-container';\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tconst offsetHeight =\r\n\t\t\t\tthis.filterChipsContainer\r\n\t\t\t\t\t?.nativeElement.clientHeight\r\n\t\t\t\t\t\t|| 0;\r\n\t\t\tconst chipRowCount: number =\r\n\t\t\t\tMath.ceil(offsetHeight / chipRowHeight);\r\n\t\t\tconst newOffset: number =\r\n\t\t\t\t(chipRowCount === 1\r\n\t\t\t\t\t? firstRowOffset\r\n\t\t\t\t\t: 0)\r\n\t\t\t\t\t+ (chipRowCount * emptyChipRowOffset);\r\n\r\n\t\t\t// Set the scroll panel height.\r\n\t\t\tconst initialListOffset: number =\r\n\t\t\t\tthis.siteLayoutService.displayTabletView\r\n\t\t\t\t\t? this.listOffset + mobileOffset\r\n\t\t\t\t\t: this.listOffset;\r\n\t\t\tconst scrollPanel: HTMLElement =\r\n\t\t\t\tdocument.querySelector(\r\n\t\t\t\t\tcommonListContainerSelector);\r\n\r\n\t\t\tif (!AnyHelper.isNull(scrollPanel))\r\n\t\t\t{\r\n\t\t\t\tscrollPanel.style.height =\r\n\t\t\t\t\t`calc(100vh - ${initialListOffset + newOffset}px)`;\r\n\t\t\t}\r\n\t\t},\r\n\t\tthis.siteLayoutService.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Translates a list item into a context ready for use in the sent\r\n\t * listItemComponent.\r\n\t *\r\n\t * @param {any} listItem\r\n\t * The list item to create a context for.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * The dynamic component context for the list item.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic getItemContext(\r\n\t\tlistItem: any): IDynamicComponentContext<\r\n\t\t\tComponent,\r\n\t\t\tany>\r\n\t{\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tdata: listItem,\r\n\t\t\t\tsource: this.context.source\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Allows a click through event to be sent beyond the container handling\r\n\t * this click action.\r\n\t *\r\n\t * @param {any} event\r\n\t * The click event sent from the control.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic allowClickThrough(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a themed color value computed from the color swatch based\r\n\t * on the current theme colors.\r\n\t *\r\n\t * @param {string} color\r\n\t * The theme based color value to get the computed rgba based\r\n\t * color value of. See: ChartConstants.themeColors.\r\n\t * @returns {string}\r\n\t * The rgba theme color computed from the supplied theme color.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate getThemeColor(\r\n\t\tcolor: string,\r\n\t\topacity: string = '1'): string\r\n\t{\r\n\t\tlet rawColor: string = getComputedStyle(\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`.theme-color-${color}`))\r\n\t\t\t.color;\r\n\r\n\t\trawColor = StringHelper.trimRight(rawColor, ')')\r\n\t\t\t+ `, ${opacity})`;\r\n\r\n\t\treturn rawColor;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that adds a ICommonListSort object as a MenuItem\r\n\t * to the sorter menu items collection.\r\n\t *\r\n\t * @param {ICommonListSort} sorter\r\n\t * A value to convert to a menu item and add to the sorter menu items\r\n\t * collection.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate addSorter(\r\n\t\tsorter: ICommonListSort): void\r\n\t{\r\n\t\tthis.sorterMenuItems.push(\r\n\t\t\t{\r\n\t\t\t\tlabel: sorter.name,\r\n\t\t\t\tcommand: (sortEvent: any) =>\r\n\t\t\t\t\tthis.handleSortChangeEvent(\r\n\t\t\t\t\t\tsortEvent.originalEvent,\r\n\t\t\t\t\t\tsortEvent.item.label)\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that changes the selected sorter for the common list based\r\n\t * on the name of the sorter.\r\n\t *\r\n\t * On sorter change and if specified within the context, the onSortChange\r\n\t * event method will be called with the newly changed selected sorter value.\r\n\t *\r\n\t * @note\r\n\t * If the already selected sorter matches the provided sorter name, then the\r\n\t * direction of the selected sorter is flipped.\r\n\t *\r\n\t * @private\r\n\t * @param {string} name\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate changeSort(\r\n\t\tname: string): void\r\n\t{\r\n\t\tif (this.selectedSorter.name === name)\r\n\t\t{\r\n\t\t\t// just flip the direction\r\n\t\t\tthis.selectedSorter.direction\r\n\t\t\t\t= this.selectedSorter.direction ===\r\n\t\t\t\t\tAppConstants.sortDirections.ascending\r\n\t\t\t\t\t? AppConstants.sortDirections.descending\r\n\t\t\t\t\t: AppConstants.sortDirections.ascending;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.selectedSorter = this.context.data.sorters.find(\r\n\t\t\t\t(item: ICommonListSort) =>\r\n\t\t\t\t\titem.name === name)\r\n\t\t\t\t|| this.context.data.sorters[0];\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isFunction(\r\n\t\t\tthis.context.data.onSortChange))\r\n\t\t{\r\n\t\t\tthis.context.data.onSortChange(\r\n\t\t\t\tthis,\r\n\t\t\t\tthis.selectedSorter);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that adds a ICommonListFilter to the quick filter\r\n\t * menu items.\r\n\t *\r\n\t * @private\r\n\t * @param {ICommonListFilter} filter\r\n\t * A value to add to the quick filter menu items.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate addQuickFilter(\r\n\t\tfilter: ICommonListFilter): void\r\n\t{\r\n\t\tthis.quickFilterMenuItems.push(\r\n\t\t\t{\r\n\t\t\t\tlabel: filter.name,\r\n\t\t\t\tcommand: (actionEvent: any) =>\r\n\t\t\t\t\tthis.handleAddFilterEvent(\r\n\t\t\t\t\t\tactionEvent.originalEvent,\r\n\t\t\t\t\t\tactionEvent.item.label)\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method that adds a new filter to the enabled filters list based on the\r\n\t * filter name, or filter name and value specified.\r\n\t *\r\n\t * @note\r\n\t * If a value is not provided, then a lookup will be performed on the\r\n\t * context filters for a filter that matches the provided name. If one is\r\n\t * found (in the case of a quick filter for instance), then that filter will\r\n\t * be added to the enabled filters list with the quick filter value.\r\n\t *\r\n\t * @note\r\n\t * If the context onFilterChange method is specified, this method will\r\n\t * trigger it with the latest collection of enabled filters.\r\n\t *\r\n\t * @private\r\n\t * @param {string} name\r\n\t * A value representing the filter name to add to the enabled filters list.\r\n\t * @param {string} [value]\r\n\t * A value representing the filter value. If not provided, an attempt is\r\n\t * made to find the proper value.\r\n\t * @returns\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate addFilter(\r\n\t\tname: string,\r\n\t\tvalue?: string): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tthis.enabledFilters.find((item: ICommonListFilter) =>\r\n\t\t\t\titem.name === name)))\r\n\t\t{\r\n\t\t\t// Item already exists in the filter array.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet filterValue: string = value;\r\n\t\tif (value === null)\r\n\t\t{\r\n\t\t\tfilterValue = this.context.data.filters\r\n\t\t\t\t.filter(((item: ICommonListFilter) =>\r\n\t\t\t\t\titem.name === name))[0]?.value;\r\n\t\t}\r\n\r\n\t\tthis.enabledFilters.push(\r\n\t\t\t{\r\n\t\t\t\tname: name,\r\n\t\t\t\tvalue: filterValue\r\n\t\t\t});\r\n\r\n\t\tif (AnyHelper.isFunction(\r\n\t\t\tthis.context.data.onFilterChange))\r\n\t\t{\r\n\t\t\tthis.context.data.onFilterChange(\r\n\t\t\t\tthis,\r\n\t\t\t\tthis.enabledFilters);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method to remove a specific filter from the enabled filters list.\r\n\t *\r\n\t * @note\r\n\t * If the context onFilterChange method is specified, this method will\r\n\t * trigger it with the latest collection of enabled filters.\r\n\t *\r\n\t * @private\r\n\t * @param {string} name\r\n\t * A value representing the name of the filter to remove from the enabled\r\n\t * filter list.\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tprivate removeFilter(\r\n\t\tname: string): void\r\n\t{\r\n\t\tthis.enabledFilters\r\n\t\t\t= this.enabledFilters.filter(\r\n\t\t\t\t(item: ICommonListFilter) =>\r\n\t\t\t\t\titem.name !== name);\r\n\r\n\t\tif (AnyHelper.isFunction(\r\n\t\t\tthis.context.data.onFilterChange))\r\n\t\t{\r\n\t\t\tthis.context.data.onFilterChange(\r\n\t\t\t\tthis,\r\n\t\t\t\tthis.enabledFilters);\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-common-table',\r\n\ttemplateUrl: './dynamic-common-table.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wrapper to pass context to a common table.\r\n *\r\n * @export\r\n * @class DynamicCommonTableComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class DynamicCommonTableComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicCommonTableComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n}\r\n","\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tType\r\n} from '@angular/core';\r\n\r\n/**\r\n * A lookup to be shared across the application used\r\n * for accessing site level dynamic components.\r\n *\r\n * @export\r\n * @class DynamicComponentLookup\r\n */\r\nexport class DynamicComponentLookup\r\n{\r\n\t/**\r\n\t * A static constant set representing component types that\r\n\t * are currently available in this lookup.\r\n\t *\r\n\t * @static\r\n\t * @type {object}\r\n\t * @memberof DynamicComponentLookup\r\n\t */\r\n\tpublic static readonly supportedTypes: {\r\n\t\tactivityListComponent: string;\r\n\t\taddClaimPaymentComponent: string;\r\n\t\taddressListComponent: string;\r\n\t\taddExposureClaimComponent: string;\r\n\t\tadjustmentDetailsComponent: string;\r\n\t\tadjustmentSummaryComponent: string;\r\n\t\tadjustmentWriteOffAmountComponent: string;\r\n\t\tadjustmentWriteOffCommentsComponent: string;\r\n\t\tadjustReservesClaimComponent: string;\r\n\t\tapplicationSearchComponent: string;\r\n\t\tapproveClaimPaymentClaimComponent: string;\r\n\t\tassociatedEntityListComponent: string;\r\n\t\tassociatedKeyContactsComponent: string;\r\n\t\tassociatedOrganizationComponent: string;\r\n\t\tchartComponent: string;\r\n\t\tcommissionsComponent: string;\r\n\t\tcommissionDisbursementSummaryComponent: string;\r\n\t\tcommissionDisbursementDetailsComponent: string;\r\n\t\tcommissionDisbursementListExpandComponent: string;\r\n\t\tcommissionsListComponent: string;\r\n\t\tcommissionsScheduleUpdateComponent: string;\r\n\t\tcommonListComponent: string;\r\n\t\tclonePowerBiReportComponent: string;\r\n\t\tbindTransactionComponent: string;\r\n\t\tclaimPaymentAdditionalPayeesComponent: string;\r\n\t\tclaimPaymentPayeeComponent: string;\r\n\t\tcloudChatComponent: string;\r\n\t\tcreateClaimComponent: string;\r\n\t\tcreateQuoteOrClaimComponent: string;\r\n\t\tcreateTransactionComponent: string;\r\n\t\tdynamicCommonTableComponent: string;\r\n\t\tdynamicFormlyWrapperComponent: string;\r\n\t\tdynamicReallySimpleSyndicationFeedReaderComponent: string;\r\n\t\tdynamicSummaryCardComponent: string;\r\n\t\tdynamicWeatherCardComponent: string;\r\n\t\tdynamicWizardComponent: string;\r\n\t\texposureOutstandingReservesComponent: string;\r\n\t\texposurePaymentsComponent: string;\r\n\t\texposureRecoveriesComponent: string;\r\n\t\texternalReportComponent: string;\r\n\t\tfilesComponent: string;\r\n\t\tfinalWizardLayoutStepComponent: string;\r\n\t\tfortePaymentMethodComponent: string;\r\n\t\tgenericBasePageComponent: string;\r\n\t\tgenericDashboardComponent: string;\r\n\t\thistoryComponent: string;\r\n\t\tmakePaymentComponent: string;\r\n\t\tmanagePaymentMethodComponent: string;\r\n\t\tmakePaymentReceiptComponent: string;\r\n\t\tmanageAdditionalPayeesClaimComponent: string;\r\n\t\tmanageClaimOwnerClaimComponent: string;\r\n\t\tmanageExposurePartiesClaimComponent: string;\r\n\t\tmanagePartiesConfirmationClaimComponent: string;\r\n\t\tnextPaymentInstallmentDetailsComponent: string;\r\n\t\tnonRenewPolicyComponent: string;\r\n\t\tnotesComponent: string;\r\n\t\tpaymentBatchApproveComponent: string;\r\n\t\tpaymentBatchComponent: string;\r\n\t\tpaymentBatchCreateComponent: string;\r\n\t\tpaymentDetailsComponent: string;\r\n\t\tparentSelectionComponent: string;\r\n\t\tpaymentMethodProcessorComponent: string;\r\n\t\tpaymentReversalConfirmationComponent: string;\r\n\t\trefundConfirmationComponent: string;\r\n\t\tpaymentReversalSelectionComponent: string;\r\n\t\tpolicyAndClaimQuickSearchComponent: string;\r\n\t\tpolicyDetailsComponent: string;\r\n\t\tprocessOnePaymentMethodComponent: string;\r\n\t\tproductSettingsComponent: string;\r\n\t\tproductSettingListComponent: string;\r\n\t\trejectClaimPaymentClaimComponent: string;\r\n\t\trescindNonRenewPolicyComponent: string;\r\n\t\trulesComponent: string;\r\n\t\truleListItemComponent: string;\r\n\t\tselectDisbursementOrganizationsComponent: string;\r\n\t\tselectExistingPowerBiReportComponent: string;\r\n\t\tselectClaimTypeComponent: string;\r\n\t\tstonlyHelpComponent: string;\r\n\t\ttermAlterPaymentPlanComponent: string;\r\n\t\ttransactionAccountingDetailsComponent: string;\r\n\t\ttransactionAssetsComponent: string;\r\n\t\ttransactionCancelEffectiveDateComponent: string;\r\n\t\ttransactionCancelReasonsComponent: string;\r\n\t\ttransactionCancelReinstateCommentsComponent: string;\r\n\t\ttransactionCoveragesDeductiblesComponent: string;\r\n\t\ttransactionFormsComponent: string;\r\n\t\ttransactionEndorseIssueDifferencesComponent: string;\r\n\t\ttransactionEndorseIssueSummaryComponent: string;\r\n\t\ttransactionEndorseReasonsComponent: string;\r\n\t\ttransactionEndorseStatusEffectiveDateComponent: string;\r\n\t\ttransactionInterestsComponent: string;\r\n\t\ttransactionReasonsComponent: string;\r\n\t\ttransactionRescindCancelComponent: string;\r\n\t\ttransactionRescindEndorseComponent: string;\r\n\t\tupdateClaimExposureStatusClaimComponent: string;\r\n\t\tupdateClaimStatusClaimComponent: string;\r\n\t\tverifyCoverageClaimComponent: string;\r\n\t\tworkItemsComponent: string;\r\n\t\tworkItemListComponent: string;\r\n\t\ttransactionDeclineReasonsComponent: string;\r\n\t\tbiReportComponent: string;\r\n\t} = {\r\n\t\t\tactivityListComponent: 'ActivityListComponent',\r\n\t\t\taddClaimPaymentComponent: 'AddClaimPaymentComponent',\r\n\t\t\taddressListComponent: 'AddressListComponent',\r\n\t\t\taddExposureClaimComponent: 'AddExposureClaimComponent',\r\n\t\t\tadjustmentDetailsComponent: 'AdjustmentDetailsComponent',\r\n\t\t\tadjustmentSummaryComponent: 'AdjustmentSummaryComponent',\r\n\t\t\tadjustmentWriteOffAmountComponent:\r\n\t\t\t\t'AdjustmentWriteOffAmountComponent',\r\n\t\t\tadjustmentWriteOffCommentsComponent:\r\n\t\t\t\t'AdjustmentWriteOffCommentsComponent',\r\n\t\t\tadjustReservesClaimComponent: 'AdjustReservesClaimComponent',\r\n\t\t\tapplicationSearchComponent: 'ApplicationSearchComponent',\r\n\t\t\tapproveClaimPaymentClaimComponent:\r\n\t\t\t\t'ApproveClaimPaymentClaimComponent',\r\n\t\t\tassociatedEntityListComponent: 'AssociatedEntityListComponent',\r\n\t\t\tassociatedKeyContactsComponent: 'AssociatedKeyContactsComponent',\r\n\t\t\tassociatedOrganizationComponent: 'AssociatedOrganizationComponent',\r\n\t\t\tchartComponent: 'ChartComponent',\r\n\t\t\tcloudChatComponent: 'CloudChatComponent',\r\n\t\t\tcommissionDisbursementSummaryComponent:\r\n\t\t\t\t\t'CommissionDisbursementSummaryComponent',\r\n\t\t\tcommissionDisbursementDetailsComponent:\r\n\t\t\t\t\t'CommissionDisbursementDetailsComponent',\r\n\t\t\tcommissionDisbursementListExpandComponent:\r\n\t\t\t\t'CommissionDisbursementListExpandComponent',\r\n\t\t\tcommissionsComponent: 'CommissionsComponent',\r\n\t\t\tcommissionsListComponent: 'CommissionsListComponent',\r\n\t\t\tcommonListComponent: 'CommonListComponent',\r\n\t\t\tcommissionsScheduleUpdateComponent: 'CommissionsScheduleUpdateComponent',\r\n\t\t\tclonePowerBiReportComponent: 'ClonePowerBiReportComponent',\r\n\t\t\tbindTransactionComponent: 'BindTransactionComponent',\r\n\t\t\tclaimPaymentAdditionalPayeesComponent:\r\n\t\t\t\t'ClaimPaymentAdditionalPayeesComponent',\r\n\t\t\tclaimPaymentPayeeComponent: 'ClaimPaymentPayeeComponent',\r\n\t\t\tcreateClaimComponent: 'CreateClaimComponent',\r\n\t\t\tcreateQuoteOrClaimComponent: 'CreateQuoteOrClaimComponent',\r\n\t\t\tcreateTransactionComponent: 'CreateTransactionComponent',\r\n\t\t\tfinalWizardLayoutStepComponent: 'FinalWizardLayoutStepComponent',\r\n\t\t\tfilesComponent: 'FilesComponent',\r\n\t\t\tdynamicCommonTableComponent: 'DynamicCommonTableComponent',\r\n\t\t\tdynamicFormlyWrapperComponent: 'DynamicFormlyWrapperComponent',\r\n\t\t\tdynamicReallySimpleSyndicationFeedReaderComponent:\r\n\t\t\t\t'DynamicReallySimpleSyndicationFeedReaderComponent',\r\n\t\t\tdynamicSummaryCardComponent: 'DynamicSummaryCardComponent',\r\n\t\t\tdynamicWeatherCardComponent: 'DynamicWeatherCardComponent',\r\n\t\t\tdynamicWizardComponent: 'DynamicWizardComponent',\r\n\t\t\texposureOutstandingReservesComponent:\r\n\t\t\t\t'ExposureOutstandingReservesComponent',\r\n\t\t\texposurePaymentsComponent:\r\n\t\t\t\t'ExposurePaymentsComponent',\r\n\t\t\texposureRecoveriesComponent:\r\n\t\t\t\t'ExposureRecoveriesComponent',\r\n\t\t\texternalReportComponent: 'ExternalReportComponent',\r\n\t\t\tfortePaymentMethodComponent: 'FortePaymentMethodComponent',\r\n\t\t\tgenericBasePageComponent: 'GenericBasePageComponent',\r\n\t\t\tgenericDashboardComponent: 'GenericDashboardComponent',\r\n\t\t\thistoryComponent: 'HistoryComponent',\r\n\t\t\tmakePaymentComponent: 'MakePaymentComponent',\r\n\t\t\tmakePaymentReceiptComponent: 'MakePaymentReceiptComponent',\r\n\t\t\tmanageAdditionalPayeesClaimComponent:\r\n\t\t\t\t'ManageAdditionalPayeesClaimComponent',\r\n\t\t\tmanageClaimOwnerClaimComponent:\r\n\t\t\t\t'ManageClaimOwnerClaimComponent',\r\n\t\t\tmanageExposurePartiesClaimComponent:\r\n\t\t\t\t'ManageExposurePartiesClaimComponent',\r\n\t\t\tmanagePaymentMethodComponent: 'ManagePaymentMethodComponent',\r\n\t\t\tmanagePartiesConfirmationClaimComponent:\r\n\t\t\t\t'ManagePartiesConfirmationClaimComponent',\r\n\t\t\tnextPaymentInstallmentDetailsComponent:\r\n\t\t\t\t'NextPaymentInstallmentDetailsComponent',\r\n\t\t\tnonRenewPolicyComponent: 'NonRenewPolicyComponent',\r\n\t\t\tnotesComponent: 'NotesComponent',\r\n\t\t\tpaymentDetailsComponent: 'PaymentDetailsComponent',\r\n\t\t\tparentSelectionComponent: 'ParentSelectionComponent',\r\n\t\t\tpaymentBatchApproveComponent: 'PaymentBatchApproveComponent',\r\n\t\t\tpaymentBatchComponent: 'PaymentBatchComponent',\r\n\t\t\tpaymentBatchCreateComponent: 'PaymentBatchCreateComponent',\r\n\t\t\tpaymentMethodProcessorComponent: 'PaymentMethodProcessorComponent',\r\n\t\t\tpaymentReversalConfirmationComponent:\r\n\t\t\t\t'PaymentReversalConfirmationComponent',\r\n\t\t\tpolicyAndClaimQuickSearchComponent:\r\n\t\t\t\t'PolicyAndClaimQuickSearchComponent',\r\n\t\t\trefundConfirmationComponent:\r\n\t\t\t\t'RefundConfirmationComponent',\r\n\t\t\tpaymentReversalSelectionComponent:\r\n\t\t\t\t'PaymentReversalSelectionComponent',\r\n\t\t\tpolicyDetailsComponent: 'PolicyDetailsComponent',\r\n\t\t\tprocessOnePaymentMethodComponent:\r\n\t\t\t\t'ProcessOnePaymentMethodComponent',\r\n\t\t\tproductSettingsComponent: 'ProductSettingsComponent',\r\n\t\t\tproductSettingListComponent: 'ProductSettingListComponent',\r\n\t\t\trejectClaimPaymentClaimComponent:\r\n\t\t\t\t'RejectClaimPaymentClaimComponent',\r\n\t\t\trulesComponent: 'RulesComponent',\r\n\t\t\truleListItemComponent: 'RuleListItemComponent',\r\n\t\t\trescindNonRenewPolicyComponent: 'RescindNonRenewPolicyComponent',\r\n\t\t\tselectDisbursementOrganizationsComponent:\r\n\t\t\t\t'SelectDisbursementOrganizationsComponent',\r\n\t\t\tselectExistingPowerBiReportComponent:\r\n\t\t\t\t'SelectExistingPowerBiReportComponent',\r\n\t\t\tselectClaimTypeComponent:\r\n\t\t\t\t'SelectClaimTypeComponent',\r\n\t\t\tstonlyHelpComponent: 'StonlyHelpComponent',\r\n\t\t\ttermAlterPaymentPlanComponent: 'TermAlterPaymentPlanComponent',\r\n\t\t\ttransactionAccountingDetailsComponent:\r\n\t\t\t\t'TransactionAccountingDetailsComponent',\r\n\t\t\ttransactionAssetsComponent: 'TransactionAssetsComponent',\r\n\t\t\ttransactionCancelEffectiveDateComponent:\r\n\t\t\t\t'TransactionCancelEffectiveDateComponent',\r\n\t\t\ttransactionCancelReasonsComponent:\r\n\t\t\t\t'TransactionCancelReasonsComponent',\r\n\t\t\ttransactionCancelReinstateCommentsComponent:\r\n\t\t\t\t'TransactionCancelReinstateCommentsComponent',\r\n\t\t\ttransactionCoveragesDeductiblesComponent:\r\n\t\t\t\t'TransactionCoveragesDeductiblesComponent',\r\n\t\t\ttransactionFormsComponent:\r\n\t\t\t\t'transactionFormsComponent',\r\n\t\t\ttransactionEndorseIssueDifferencesComponent:\r\n\t\t\t\t'TransactionEndorseIssueDifferencesComponent',\r\n\t\t\ttransactionEndorseIssueSummaryComponent:\r\n\t\t\t\t'TransactionEndorseIssueSummaryComponent',\r\n\t\t\ttransactionEndorseReasonsComponent:\r\n\t\t\t\t'TransactionEndorseReasonsComponent',\r\n\t\t\ttransactionEndorseStatusEffectiveDateComponent:\r\n\t\t\t\t'TransactionEndorseStatusEffectiveDateComponent',\r\n\t\t\ttransactionInterestsComponent: 'TransactionInterestsComponent',\r\n\t\t\ttransactionReasonsComponent: 'TransactionReasonsComponent',\r\n\t\t\ttransactionRescindCancelComponent:\r\n\t\t\t\t'TransactionRescindCancelComponent',\r\n\t\t\ttransactionRescindEndorseComponent:\r\n\t\t\t\t'TransactionRescindEndorseComponent',\r\n\t\t\ttransactionDeclineReasonsComponent:\r\n\t\t\t\t'TransactionDeclineReasonsComponent',\r\n\t\t\tupdateClaimExposureStatusClaimComponent:\r\n\t\t\t\t'UpdateClaimExposureStatusClaimComponent',\r\n\t\t\tupdateClaimStatusClaimComponent:\r\n\t\t\t\t'UpdateClaimStatusClaimComponent',\r\n\t\t\tverifyCoverageClaimComponent : 'VerifyCoverageClaimComponent',\r\n\t\t\tworkItemsComponent: 'WorkItemsComponent',\r\n\t\t\tworkItemListComponent: 'WorkItemListComponent',\r\n\t\t\tbiReportComponent: 'BIReportComponent',\r\n\t\t};\r\n\r\n\t/**\r\n\t * A static constant set representing component types that\r\n\t * are currently capable of displaying dynamic components.\r\n\t *\r\n\t * @static\r\n\t * @type {object}\r\n\t * @memberof DynamicComponentLookup\r\n\t */\r\n\tpublic static readonly targetComponents: {\r\n\t\tutilityMenuComponent: string;\r\n\t} = {\r\n\t\t\tutilityMenuComponent: 'UtilityMenuComponent'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Dictionary to be used for string based resolution of\r\n\t * dynamic components in Ivy.\r\n\t *\r\n\t * @static\r\n\t * @memberof DynamicComponentLookup\r\n\t */\r\n\tpublic static readonly components =\r\n\t\t{\r\n\t\t\t'ActivityListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/activity-list'\r\n\t\t\t\t\t\t+ '/activity-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ActivityListComponent),\r\n\t\t\t'AddClaimPaymentComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/add-claim-payment'\r\n\t\t\t\t\t\t+ '/add-claim-payment.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AddClaimPaymentComponent),\r\n\t\t\t'AddressListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/address-list'\r\n\t\t\t\t\t\t+ '/address-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AddressListComponent),\r\n\t\t\t'AddExposureClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/add-exposure-claim'\r\n\t\t\t\t\t\t+ '/add-exposure-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AddExposureClaimComponent),\r\n\t\t\t'AdjustmentDetailsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/organization'\r\n\t\t\t\t\t\t+ '/commissions'\r\n\t\t\t\t\t\t+ '/adjustment-details'\r\n\t\t\t\t\t\t+ '/adjustment-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AdjustmentDetailsComponent),\r\n\t\t\t'AdjustmentSummaryComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/organization'\r\n\t\t\t\t\t\t+ '/commissions'\r\n\t\t\t\t\t\t+ '/adjustment-summary'\r\n\t\t\t\t\t\t+ '/adjustment-summary.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AdjustmentSummaryComponent),\r\n\t\t\t'AdjustmentWriteOffAmountComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/adjustment-write-off-amount'\r\n\t\t\t\t\t\t+ '/adjustment-write-off-amount.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AdjustmentWriteOffAmountComponent),\r\n\t\t\t'AdjustmentWriteOffCommentsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/adjustment-write-off-comments'\r\n\t\t\t\t\t\t+ '/adjustment-write-off-comments.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AdjustmentWriteOffCommentsComponent),\r\n\t\t\t'AdjustReservesClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/adjust-reserves-claim'\r\n\t\t\t\t\t\t+ '/adjust-reserves-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AdjustReservesClaimComponent),\r\n\t\t\t'ApplicationSearchComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/application-search'\r\n\t\t\t\t\t\t+ '/application-search.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ApplicationSearchComponent),\r\n\t\t\t'ApproveClaimPaymentClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/approve-claim-payment'\r\n\t\t\t\t\t\t+ '/approve-claim-payment-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ApproveClaimPaymentClaimComponent),\r\n\t\t\t'AssociatedEntityListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/associated-entity-list'\r\n\t\t\t\t\t\t+ '/associated-entity-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AssociatedEntityListComponent),\r\n\t\t\t'AssociatedKeyContactsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/associated-entity-list'\r\n\t\t\t\t\t\t+ '/associated-key-contacts/'\r\n\t\t\t\t\t\t+ 'associated-key-contacts.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AssociatedKeyContactsComponent),\r\n\t\t\t'AssociatedOrganizationComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/associated-entity-list'\r\n\t\t\t\t\t\t+ '/associated-organization/'\r\n\t\t\t\t\t\t+ 'associated-organization.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.AssociatedOrganizationComponent),\r\n\t\t\t'ChartComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/chart/chart.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ChartComponent),\r\n\t\t\t'ClonePowerBiReportComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@bi/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/clone-power-bi-report'\r\n\t\t\t\t\t\t+ '/clone-power-bi-report.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ClonePowerBiReportComponent),\r\n\t\t\t'BIReportComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport(\r\n\t\t\t\t\t\t'@shared/dynamic-components/bi-report-settings'\r\n\t\t\t\t\t\t+ '/bi-report-settings.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.BIReportComponent),\r\n\t\t\t'BindTransactionComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/bind-transaction/bind-transaction.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.BindTransactionComponent),\r\n\t\t\t'ClaimPaymentAdditionalPayeesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components'\r\n\t\t\t\t\t\t+ '/claim-payment-additional-payees'\r\n\t\t\t\t\t\t+ '/claim-payment-additional-payees.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ClaimPaymentAdditionalPayeesComponent),\r\n\t\t\t'ClaimPaymentPayeeComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components'\r\n\t\t\t\t\t\t+ '/claim-payment-payee/claim-payment-payee.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ClaimPaymentPayeeComponent),\r\n\t\t\t'CloudChatComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/cloud-chat/'\r\n\t\t\t\t\t\t+ 'cloud-chat.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CloudChatComponent),\r\n\t\t\t'CreateClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/create-claim/create-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CreateClaimComponent),\r\n\t\t\t'CreateQuoteOrClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/create-quote-or-claim'\r\n\t\t\t\t\t\t+ '/create-quote-or-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CreateQuoteOrClaimComponent),\r\n\t\t\t'CreateTransactionComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/create-transaction'\r\n\t\t\t\t\t\t+ '/create-transaction.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CreateTransactionComponent),\r\n\t\t\t'CommissionsComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/commissions/'\r\n\t\t\t\t\t\t+ 'commissions.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommissionsComponent),\r\n\t\t\t'CommissionsScheduleUpdateComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/commissions/'\r\n\t\t\t\t\t\t+ 'commissions-schedule-update/'\r\n\t\t\t\t\t\t+ 'commissions-schedule-update.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommissionsScheduleUpdateComponent),\r\n\t\t\t'CommonListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/common-list'\r\n\t\t\t\t\t\t+ '/common-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommonListComponent),\r\n\t\t\t'DynamicCommonTableComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/dynamic-common-table'\r\n\t\t\t\t\t\t+ '/dynamic-common-table.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.DynamicCommonTableComponent),\r\n\t\t\t'DynamicFormlyWrapperComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/dynamic-formly-wrapper'\r\n\t\t\t\t\t\t+ '/dynamic-formly-wrapper.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.DynamicFormlyWrapperComponent),\r\n\t\t\t'DynamicReallySimpleSyndicationFeedReaderComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components'\r\n\t\t\t\t\t\t+ '/dynamic-really-simple-syndication-feed-reader'\r\n\t\t\t\t\t\t+ '/dynamic-really-simple-syndication-feed'\r\n\t\t\t\t\t\t\t+ '-reader.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource\r\n\t\t\t\t\t\t\t\t.DynamicReallySimpleSyndicationFeedReaderComponent),\r\n\t\t\t'DynamicSummaryCardComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/dynamic-summary-card'\r\n\t\t\t\t\t\t+ '/dynamic-summary-card.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.DynamicSummaryCardComponent),\r\n\t\t\t'DynamicWeatherCardComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/dynamic-weather-card'\r\n\t\t\t\t\t\t+ '/dynamic-weather-card.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.DynamicWeatherCardComponent),\r\n\t\t\t'DynamicWizardComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/dynamic-wizard'\r\n\t\t\t\t\t\t+ '/dynamic-wizard.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.DynamicWizardComponent),\r\n\t\t\t'ExposureOutstandingReservesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components'\r\n\t\t\t\t\t\t+ '/exposure-outstanding-reserves'\r\n\t\t\t\t\t\t+ '/exposure-outstanding-reserves.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ExposureOutstandingReservesComponent),\r\n\t\t\t'ExposurePaymentsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components'\r\n\t\t\t\t\t\t+ '/exposure-payments'\r\n\t\t\t\t\t\t+ '/exposure-payments.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ExposurePaymentsComponent),\r\n\t\t\t'ExposureRecoveriesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components'\r\n\t\t\t\t\t\t+ '/exposure-recoveries'\r\n\t\t\t\t\t\t+ '/exposure-recoveries.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ExposureRecoveriesComponent),\r\n\t\t\t'ExternalReportComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/external-report'\r\n\t\t\t\t\t\t+ '/external-report.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ExternalReportComponent),\r\n\t\t\t'FinalWizardLayoutStepComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/final-wizard-layout-step'\r\n\t\t\t\t\t\t+ '/final-wizard-layout-step.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.FinalWizardLayoutStepComponent),\r\n\t\t\t'FilesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/files'\r\n\t\t\t\t\t\t+ '/files.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.FilesComponent),\r\n\t\t\t'FortePaymentMethodComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/manage-payment-method/forte/'\r\n\t\t\t\t\t\t+ 'forte-payment-method.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.FortePaymentMethodComponent),\r\n\t\t\t'HistoryComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/history'\r\n\t\t\t\t\t\t+ '/history.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.HistoryComponent),\r\n\t\t\t'MakePaymentComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/make-payment/make-payment.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.MakePaymentComponent),\r\n\t\t\t'MakePaymentReceiptComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/make-payment-receipt'\r\n\t\t\t\t\t\t+ '/make-payment-receipt.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.MakePaymentReceiptComponent),\r\n\t\t\t'ManageAdditionalPayeesClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/manage-additional-payees-claim'\r\n\t\t\t\t\t\t+ '/manage-additional-payees-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ManageAdditionalPayeesClaimComponent),\r\n\t\t\t'ManageClaimOwnerClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/manage-claim-owner'\r\n\t\t\t\t\t\t+ '/manage-claim-owner-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ManageClaimOwnerClaimComponent),\r\n\t\t\t'ManageExposurePartiesClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/manage-exposure-parties-claim'\r\n\t\t\t\t\t\t+ '/manage-exposure-parties-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ManageExposurePartiesClaimComponent),\r\n\t\t\t'ManagePartiesConfirmationClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/manage-parties-confirmation-claim'\r\n\t\t\t\t\t\t+ '/manage-parties-confirmation-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ManagePartiesConfirmationClaimComponent),\r\n\t\t\t'ManagePaymentMethodComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/manage-payment-method/'\r\n\t\t\t\t\t\t+ 'manage-payment-method.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ManagePaymentMethodComponent),\r\n\t\t\t'NonRenewPolicyComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/non-renew-policy/non-renew-policy.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.NonRenewPolicyComponent),\r\n\t\t\t'TransactionDeclineReasonsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/transaction-decline-reasons'\r\n\t\t\t\t\t\t+ '/transaction-decline-reasons.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionDeclineReasonsComponent),\r\n\t\t\t'NextPaymentInstallmentDetailsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/next-payment-installment-details'\r\n\t\t\t\t\t\t+ '/next-payment-installment-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.NextPaymentInstallmentDetailsComponent),\r\n\t\t\t'NotesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/notes/notes.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.NotesComponent),\r\n\t\t\t'PaymentDetailsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/payment-details'\r\n\t\t\t\t\t\t+ '/payment-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentDetailsComponent),\r\n\t\t\t'ParentSelectionComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@entity/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/parent-selection/parent-selection.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ParentSelectionComponent),\r\n\t\t\t'PaymentBatchApproveComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/payment-batch-approve'\r\n\t\t\t\t\t\t+ '/payment-batch-approve.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentBatchApproveComponent),\r\n\t\t\t'PaymentBatchComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/payment-batch'\r\n\t\t\t\t\t\t\t+ '/payment-batch.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentBatchComponent),\r\n\t\t\t'PaymentBatchCreateComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/payment-batch-create'\r\n\t\t\t\t\t\t+ '/payment-batch-create.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentBatchCreateComponent),\r\n\t\t\t'PaymentMethodProcessorComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/manage-payment-method/'\r\n\t\t\t\t\t\t+ 'payment-method-processor.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentMethodProcessorComponent),\r\n\t\t\t'PaymentReversalConfirmationComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/payment-reversal/'\r\n\t\t\t\t\t\t+ 'payment-reversal-confirmation.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentReversalConfirmationComponent),\r\n\t\t\t'RefundConfirmationComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/generate-refund/'\r\n\t\t\t\t\t\t+ 'refund-confirmation.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.RefundConfirmationComponent),\r\n\t\t\t'PaymentReversalSelectionComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/payment-reversal/'\r\n\t\t\t\t\t\t+ 'payment-reversal-selection.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PaymentReversalSelectionComponent),\r\n\t\t\t'PolicyAndClaimQuickSearchComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components'\r\n\t\t\t\t\t\t+ '/policy-and-claim-quick-search'\r\n\t\t\t\t\t\t+ '/policy-and-claim-quick-search.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PolicyAndClaimQuickSearchComponent),\r\n\t\t\t'PolicyDetailsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/dynamic-components/policy-details'\r\n\t\t\t\t\t\t\t+ '/policy-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.PolicyDetailsComponent),\r\n\t\t\t'ProcessOnePaymentMethodComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/manage-payment-method/process-one/'\r\n\t\t\t\t\t\t+ 'process-one-payment-method.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ProcessOnePaymentMethodComponent),\r\n\t\t\t'ProductSettingsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/product-settings/'\r\n\t\t\t\t\t+ 'product-settings.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ProductSettingsComponent),\r\n\t\t\t'ProductSettingListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/product-settings/'\r\n\t\t\t\t\t+ 'product-setting-list/product-setting-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.ProductSettingListComponent),\r\n\t\t\t'RejectClaimPaymentClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/reject-claim-payment'\r\n\t\t\t\t\t\t+ '/reject-claim-payment-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.RejectClaimPaymentClaimComponent),\r\n\t\t\t'RescindNonRenewPolicyComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/rescind-non-renew-policy'\r\n\t\t\t\t\t\t+ '/rescind-non-renew-policy.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.RescindNonRenewPolicyComponent),\r\n\t\t\t'RulesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/rules/rules.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.RulesComponent),\r\n\t\t\t'RuleListItemComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/rules/'\r\n\t\t\t\t\t\t+ 'rule-list-item/rule-list-item.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.RuleListItemComponent),\r\n\t\t\t'SelectDisbursementOrganizationsComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/organization/commissions/'\r\n\t\t\t\t\t\t+ 'select-disbursement-organizations'\r\n\t\t\t\t\t\t+ '/select-disbursement-organizations.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.SelectDisbursementOrganizationsComponent),\r\n\t\t\t'CommissionDisbursementSummaryComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-list/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-summary.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommissionDisbursementSummaryComponent),\r\n\t\t\t'CommissionDisbursementDetailsComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-list/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommissionDisbursementDetailsComponent),\r\n\t\t\t'CommissionDisbursementListExpandComponent':\r\n\t\t\t\tasync (): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-list/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-list-expand/'\r\n\t\t\t\t\t\t+ 'commission-disbursement-list-expand.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.CommissionDisbursementListExpandComponent),\r\n\t\t\t'SelectExistingPowerBiReportComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@bi/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/select-existing-power-bi-report/'\r\n\t\t\t\t\t\t+ 'select-existing-power-bi-report.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.SelectExistingPowerBiReportComponent),\r\n\t\t\t'SelectClaimTypeComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/select-claim-type'\r\n\t\t\t\t\t\t+ '/select-claim-type.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.SelectClaimTypeComponent),\r\n\t\t\t'StonlyHelpComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/stonly-help'\r\n\t\t\t\t\t\t+ '/stonly-help.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.StonlyHelpComponent),\r\n\t\t\t'TermAlterPaymentPlanComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/term-alter-payment-plan'\r\n\t\t\t\t\t\t+ '/term-alter-payment-plan.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TermAlterPaymentPlanComponent),\r\n\t\t\t'TransactionAccountingDetailsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-accounting-details'\r\n\t\t\t\t\t\t+ '/transaction-accounting-details.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionAccountingDetailsComponent),\r\n\t\t\t'TransactionAssetsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-assets/transaction-assets.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionAssetsComponent),\r\n\t\t\t'TransactionCancelEffectiveDateComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-cancel-effective-date'\r\n\t\t\t\t\t\t+ '/transaction-cancel-effective-date.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionCancelEffectiveDateComponent),\r\n\t\t\t'TransactionCancelReasonsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-cancel-reasons'\r\n\t\t\t\t\t\t+ '/transaction-cancel-reasons.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionCancelReasonsComponent),\r\n\t\t\t'TransactionCancelReinstateCommentsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-cancel-reinstate-comments'\r\n\t\t\t\t\t\t+ '/transaction-cancel-reinstate-comments.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionCancelReinstateCommentsComponent),\r\n\t\t\t'TransactionCoveragesDeductiblesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-coverages-deductibles'\r\n\t\t\t\t\t\t+ '/transaction-coverages-deductibles.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionCoveragesDeductiblesComponent),\r\n\t\t\t'TransactionFormsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-forms/transaction-forms.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionFormsComponent),\r\n\t\t\t'TransactionEndorseIssueDifferencesComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy/'\r\n\t\t\t\t\t\t+ 'transaction-endorse-issue-differences'\r\n\t\t\t\t\t\t+ '/transaction-endorse-issue-differences'\r\n\t\t\t\t\t\t+ '.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionEndorseIssueDifferencesComponent),\r\n\t\t\t'TransactionEndorseIssueSummaryComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-endorse-issue-summary'\r\n\t\t\t\t\t\t+ '/transaction-endorse-issue-summary'\r\n\t\t\t\t\t\t+ '.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionEndorseIssueSummaryComponent),\r\n\t\t\t'TransactionEndorseReasonsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/policy/transaction-endorse-reasons'\r\n\t\t\t\t\t\t+ '/transaction-endorse-reasons.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionEndorseReasonsComponent),\r\n\t\t\t'TransactionEndorseStatusEffectiveDateComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components'\r\n\t\t\t\t\t\t+ '/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-endorse-status-effective-date'\r\n\t\t\t\t\t\t+ '/transaction-endorse-status-effective-date.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionEndorseStatusEffectiveDateComponent),\r\n\t\t\t'TransactionInterestsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-interests/transaction-interests.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionInterestsComponent),\r\n\t\t\t'TransactionReasonsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/dynamic-components/associated-entity-list'\r\n\t\t\t\t\t\t+ '/transaction-reasons/transaction-reasons.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionReasonsComponent),\r\n\t\t\t'TransactionRescindCancelComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-rescind-cancel'\r\n\t\t\t\t\t\t+ '/transaction-rescind-cancel.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionRescindCancelComponent),\r\n\t\t\t'TransactionRescindEndorseComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@insurance/components/wizard-steps/policy'\r\n\t\t\t\t\t\t+ '/transaction-rescind-endorse'\r\n\t\t\t\t\t\t+ '/transaction-rescind-endorse.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.TransactionRescindEndorseComponent),\r\n\t\t\t'UpdateClaimExposureStatusClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/update-claim-exposure-status'\r\n\t\t\t\t\t\t+ '/update-claim-exposure-status-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.UpdateClaimExposureStatusClaimComponent),\r\n\t\t\t'UpdateClaimStatusClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/update-claim-status'\r\n\t\t\t\t\t\t+ '/update-claim-status-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.UpdateClaimStatusClaimComponent),\r\n\t\t\t'VerifyCoverageClaimComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@claims/components/wizard-steps'\r\n\t\t\t\t\t\t+ '/claim/verify-coverage-claim'\r\n\t\t\t\t\t\t+ '/verify-coverage-claim.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.VerifyCoverageClaimComponent),\r\n\t\t\t'WorkItemListComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/work-items/work-item-list/'\r\n\t\t\t\t\t\t+ 'work-item-list.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.WorkItemListComponent),\r\n\t\t\t'WorkItemsComponent':\r\n\t\t\t\tasync(): Promise> =>\r\n\t\t\t\t\timport('@shared/dynamic-components/work-items/'\r\n\t\t\t\t\t\t+ 'work-items.component')\r\n\t\t\t\t\t\t.then((source) =>\r\n\t\t\t\t\t\t\tsource.WorkItemsComponent)\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIDynamicLayoutConfiguration\r\n} from '@shared/interfaces/application-objects/dynamic-layout-configuration.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-formly-wrapper',\r\n\ttemplateUrl: './dynamic-formly-wrapper.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wrapper to pass context to a dynamic formly\r\n * display.\r\n *\r\n * @export\r\n * @class DynamicFormlyWrapperComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class DynamicFormlyWrapperComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicFormlyWrapperComponent\r\n\t */\r\n\tpublic context:\r\n\t\tIDynamicComponentContext<\r\n\t\t\tComponent,\r\n\t\t\tIDynamicLayoutConfiguration>;\r\n}\r\n","
    \r\n\t\r\n\t\r\n
    ","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\"Feed\"\r\n\t\t\t\t\t\t[src]=\"feedContent.image.url\"\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{{feedItem.publicationDate | dateTimeFromRfc2822 | dateTimeToTrueLocal | dateTimeToFormat:'d MMM. yyyy, h:mm a' }}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIChannelFeed\r\n} from '@shared/interfaces/really-simple-syndication/channel-feed.interface';\r\nimport {\r\n\tIItemFeed\r\n} from '@shared/interfaces/really-simple-syndication/item-feed.interface';\r\nimport {\r\n\tReallySimpleSyndicationFeedReaderService\r\n} from '@shared/services/really-simple-syndication-feed-reader.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-really-simple-syndication-feed-reader',\r\n\ttemplateUrl: './really-simple-syndication-feed-reader.component.html',\r\n\tstyleUrls: [\r\n\t\t'./really-simple-syndication-feed-reader.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * really simple syndication feed reader component.\r\n *\r\n * @export\r\n * @class ReallySimpleSyndicationFeedReaderComponent\r\n * @implements {OnInit}\r\n * The data type returned in the data promise.\r\n */\r\nexport class ReallySimpleSyndicationFeedReaderComponent\r\nimplements OnInit\r\n{\r\n\t/** Initializes a new instance of the ReallySimpleSyndicationFeedReaderComponent.\r\n\t *\r\n\t * @param {ReallySimpleSyndicationFeedReaderService}\r\n\t * ReallySimpleSyndicationFeedReaderService\r\n\t * The reader service to get really simple syndication feed data\r\n\t * from an standardized xml feed.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to handle responsive views.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tpublic constructor(\r\n\t\tpublic reallySimpleSyndicationFeedReaderService:\r\n\t\t\tReallySimpleSyndicationFeedReaderService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the feed Source url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\t@Input() public feedSourceUrl: string;\r\n\r\n\t/**\r\n\t * Gets or sets the feed content.\r\n\t *\r\n\t * @type {IChannelFeed}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tpublic feedContent: IChannelFeed;\r\n\r\n\t/**\r\n\t * Gets or sets the feed item groups.\r\n\t *\r\n\t * @type {IItemFeed[]}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tpublic feedItemGroups: IItemFeed[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading truthy of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the feed items chunk size.\r\n\t *\r\n\t * @type {{\r\n\t\tlarge: number;\r\n\t\tmedium: number;\r\n\t\tsmall: number;\r\n\t}}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate readonly feedItemsChunkSize: {\r\n\t\tlarge: number;\r\n\t\tmedium: number;\r\n\t\tsmall: number;\r\n\t} = {\r\n\t\t\tlarge: 8,\r\n\t\t\tmedium: 4,\r\n\t\t\tsmall: 2,\r\n\t\t};\r\n\r\n\t/**\r\n\t * Handles the site layout changes.\r\n\t * This will set the feed item groups\r\n\t * based on the available sceen width breakpoints.\r\n\t *\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.loading === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loading = true;\r\n\t\tthis.setFeedItemGroups();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initilazation event for this component.\r\n\t * This will retrieve the standardized rss feed data and\r\n\t * split the data into chunks for the carousel type of view.\r\n\t *\r\n\t * @async\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.feedContent =\r\n\t\t\tawait this.reallySimpleSyndicationFeedReaderService\r\n\t\t\t\t.readFeedContent(this.feedSourceUrl);\r\n\t\tthis.setFeedImage();\r\n\t\tthis.setFeedItemGroups();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the card click event to open the feed item url\r\n\t * in a new browser tab.\r\n\t *\r\n\t * @param {IItemFeed} feedItem\r\n\t * The feed item clicked.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tpublic cardClicked(feedItem: IItemFeed): void\r\n\t{\r\n\t\twindow.open(\r\n\t\t\tfeedItem.link,\r\n\t\t\tAppConstants.windowTargets.blank);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the feed item groups to be ready to displayed\r\n\t * into the carousel cards.\r\n\t *\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate setFeedItemGroups(): void\r\n\t{\r\n\t\tconst itemGroupChunkSize: number =\r\n\t\t\tthis.getItemGroupChunkSize();\r\n\r\n\t\tthis.feedItemGroups = [];\r\n\r\n\t\tfor (let index = 0;\r\n\t\t\tindex < this.feedContent.items.length;\r\n\t\t\tindex += itemGroupChunkSize)\r\n\t\t{\r\n\t\t\tconst feedItemGroup: any =\r\n\t\t\t\tthis.feedContent.items\r\n\t\t\t\t\t.slice(\r\n\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\tindex + itemGroupChunkSize);\r\n\r\n\t\t\tthis.feedItemGroups.push(feedItemGroup);\r\n\t\t}\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the feed image.\r\n\t *\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate setFeedImage(): void\r\n\t{\r\n\t\tthis.feedContent.image.url =\r\n\t\t\t(!AnyHelper.isNullOrEmpty(this.feedContent.image.url))\r\n\t\t\t\t? this.feedContent.image.url\r\n\t\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the item group chunk size.\r\n\t *\r\n\t * @returns {number}\r\n\t * The chunk size number of items that will be contained\r\n\t * on each carrousel view.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate getItemGroupChunkSize(): number\r\n\t{\r\n\t\tif (this.getExtraLargeScreen() === true)\r\n\t\t{\r\n\t\t\treturn this.feedItemsChunkSize.large;\r\n\t\t}\r\n\r\n\t\treturn this.getLargeScreen()\r\n\t\t\t? this.feedItemsChunkSize.medium\r\n\t\t\t: this.feedItemsChunkSize.small;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the large screen truthy.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * truthy if the screen is defined as large based on the\r\n\t * available width breakpoint.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate getLargeScreen(): boolean\r\n\t{\r\n\t\treturn this.siteLayoutService.contentWidth\r\n\t\t\t> AppConstants.layoutBreakpoints.phone;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the extra large screen truthy.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * truthy if the screen is defined as large based on the\r\n\t * available width breakpoint.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderComponent\r\n\t*/\r\n\tprivate getExtraLargeScreen(): boolean\r\n\t{\r\n\t\treturn this.siteLayoutService.contentWidth\r\n\t\t\t> AppConstants.layoutBreakpoints.largeDesktop;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-really-simple-syndication-feed-reader',\r\n\ttemplateUrl:\r\n\t\t'./dynamic-really-simple-syndication-feed-reader.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wrapper to pass context to a\r\n * dynamic really simple syndication feed reader component.\r\n *\r\n * @export\r\n * @class DynamicReallySimpleSyndicationFeedReaderComponent\r\n * @implements {IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext;\r\n}\r\n","\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-summary-card',\r\n\ttemplateUrl: './dynamic-summary-card.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wrapper to pass context to a summary card display.\r\n *\r\n * @export\r\n * @class DynamicSummaryCardComponent\r\n * @implements {IDynamicComponent>}\r\n */\r\nexport class DynamicSummaryCardComponent\r\nimplements IDynamicComponent>\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext>}\r\n\t * @memberof DynamicSummaryCardComponent\r\n\t */\r\n\tpublic context:\r\n\t\tIDynamicComponentContext>;\r\n}\r\n","\r\n","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\tWe need your permission to use your location in order to display your local weather. Click \"Allow\" to enable.\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\tYou have blocked the permission to use your location.\r\n\t\t\tWe need your permission to use your location in order to display your local weather.\r\n\t\t\tPlease go to the browser settings to allow permission.\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{{geographicLocation}}\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{{currentWeatherForecast.temperature}}°\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{currentWeatherForecast.currentUtcDateTime | dateTimeFromIso | dateTimeToTrueLocal | dateTimeToFormat:'ccc' }}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{currentWeatherForecast.currentUtcDateTime | dateTimeFromIso | dateTimeToTrueLocal | dateTimeToFormat:'cccc' }}\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{{currentWeatherForecast.currentUtcDateTime | dateTimeFromIso | dateTimeToTrueLocal | dateTimeToFormat:'d' }}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{{currentWeatherForecast.windSpeed}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{weatherDescription}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{{currentWeatherForecast.humidity}}\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{hourly.currentUtcDateTime | dateTimeFromIso | dateTimeToTrueLocal | dateTimeToFormat:'h a' }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{hourly.temperature}}°\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{daily.currentUtcDateTime | dateTimeFromIso | dateTimeToTrueLocal | dateTimeToFormat:'ccc' }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{daily.temperature.max}}°\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{daily.temperature.min}}°\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\tYour local weather is not available at this time,\r\n\t\t\t
    \r\n\t\t\tClick \"Retry\" to enable.\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIWeatherForecast\r\n} from '@shared/interfaces/weather/weather-forecast.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tWeatherForecastService\r\n} from '@shared/services/weather-forecast.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-weather-forecast',\r\n\ttemplateUrl: './weather-forecast.component.html',\r\n\tstyleUrls: [\r\n\t\t'./weather-forecast.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * weather forecast component.\r\n *\r\n * @export\r\n * @class WeatherForecastComponent\r\n * @implements {OnInit}\r\n * The data type returned in the data promise.\r\n */\r\nexport class WeatherForecastComponent\r\nimplements OnInit\r\n{\r\n\t/** Initializes a new instance of the WeatherForecastComponent.\r\n\t *\r\n\t * @param {WeatherForecastService} weatherForecastService\r\n\t * The weather forecast service to get the data for this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to handle responsive views.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic weatherForecastService: WeatherForecastService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the current weather forecast.\r\n\t *\r\n\t * @type {IWeatherForecast}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic currentWeatherForecast: IWeatherForecast;\r\n\r\n\t/**\r\n\t * Gets or sets the formatted weather description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic weatherDescription: string;\r\n\r\n\t/**\r\n\t * Gets or sets the hourly weather forecast.\r\n\t *\r\n\t * @type {IWeatherForecast[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic hourlyWeatherForecast: IWeatherForecast[];\r\n\r\n\t/**\r\n\t * Gets or sets the hourly split out.\r\n\t *\r\n\t * @type {IWeatherForecast[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic hourlySplitOut: IWeatherForecast[];\r\n\r\n\t/**\r\n\t * Gets or sets the daily weather forecast.\r\n\t *\r\n\t * @type {IWeatherForecast[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic dailyWeatherForecast: IWeatherForecast[];\r\n\r\n\t/**\r\n\t * Gets or sets the daily split out.\r\n\t *\r\n\t * @type {IWeatherForecast[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic dailySplitOut: IWeatherForecast[];\r\n\r\n\t/**\r\n\t * Gets or sets the geographic location response.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic geographicLocation: string;\r\n\r\n\t/**\r\n\t * Gets or sets the loading truthy for this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the permissions granted truthy.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic permissionGranted: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets if something went wrong.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic somethingWentWrong: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets allow location menu\r\n\t * item action.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic allowLocationAction: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets retry action menu iem.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic retryAction: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the current location permission state\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic locationPermissionsState: string;\r\n\r\n\t/**\r\n\t * Sets the location permission available states.\r\n\t *\r\n\t * @type {{\r\n\t\tprompt: string;\r\n\t\tgranted: string;\r\n\t\tdenied: string;\r\n\t\tunknown: string;\r\n\t}}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic readonly locationPermissionStates:\r\n\t{\r\n\t\tprompt: string;\r\n\t\tgranted: string;\r\n\t\tdenied: string;\r\n\t\tunknown: string;\r\n\t} = {\r\n\t\t\tprompt: 'prompt',\r\n\t\t\tgranted: 'granted',\r\n\t\t\tdenied: 'denied',\r\n\t\t\tunknown: 'unknown'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets the daily splitout end index.\r\n\t *\r\n\t * @type {{\r\n\t\tsmall: number;\r\n\t\tlarge: number;\r\n\t}}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate readonly dailySplitoutEndIndex:\r\n\t{\r\n\t\tsmall: number;\r\n\t\tlarge: number;\r\n\t} = {\r\n\t\t\tsmall: 3,\r\n\t\t\tlarge: 6\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets the hourly splitout end index.\r\n\t *\r\n\t * @type {{\r\n\t\tsmall: number;\r\n\t\tlarge: number;\r\n\t}}\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate readonly hourlySplitoutEndIndex:\r\n\t{\r\n\t\tsmall: number;\r\n\t\tlarge: number;\r\n\t} = {\r\n\t\t\tsmall: 4,\r\n\t\t\tlarge: 7\r\n\t\t};\r\n\r\n\t/**\r\n\t * Handles the site layout changes.\r\n\t * This will slice the hourly and daily objects\r\n\t * based on the available breakpoint width.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.setHourlySplitOut();\r\n\t\tthis.setDailySplitOut();\r\n\t}\r\n\r\n\t /**\r\n\t * Handles the on initilazation event for this component.\r\n\t * This will set the current, hourly and\r\n\t * daily forecast data.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.setAllowLocationMenuAction();\r\n\t\tawait this.handleLocationPermissions();\r\n\t\tif (this.permissionGranted !== true)\r\n\t\t{\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.buildWeatherContent();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the location permissions for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate setAllowLocationMenuAction(): void\r\n\t{\r\n\t\tconst commandAction: () => {} =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tthis.loading = true;\r\n\t\t\t\tawait this.buildWeatherContent();\r\n\t\t\t};\r\n\t\tthis.allowLocationAction =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Allow',\r\n\t\t\t\t\tid: 'allowLocationAction',\r\n\t\t\t\t\tcommand: commandAction\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.retryAction =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Retry',\r\n\t\t\t\t\tid: 'retryAction',\r\n\t\t\t\t\tcommand: commandAction\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the location permissions for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t*/\r\n\tprivate async handleLocationPermissions(\r\n\t\tstate = AppConstants.navigatorPermissionStates.unknown): Promise\r\n\t{\r\n\t\tthis.locationPermissionsState =\r\n\t\t\tawait this.weatherForecastService.getGeolocationPermissions(state);\r\n\r\n\t\tthis.permissionGranted =\r\n\t\t\tthis.locationPermissionsState ===\r\n\t\t\t\tthis.locationPermissionStates.granted;\r\n\t}\r\n\r\n\t /**\r\n\t * Builds the weather content for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate async buildWeatherContent(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tawait this.setCurrentForecast();\r\n\t\t\tawait this.setDailyForecast();\r\n\t\t\tawait this.setHourlyForecast();\r\n\t\t\tthis.weatherDescription =\r\n\t\t\t\tStringHelper.capitalizeAllWords(\r\n\t\t\t\t\tthis.currentWeatherForecast.weatherDescription);\r\n\t\t\tconst geographicLocations: any =\r\n\t\t\t\tawait this.weatherForecastService\r\n\t\t\t\t\t.getGeographicLocation();\r\n\t\t\tthis.geographicLocation =\r\n\t\t\t\tgeographicLocations.length > -1\r\n\t\t\t\t\t? geographicLocations[0]?.name\r\n\t\t\t\t\t: 'unknown';\r\n\r\n\t\t\tawait this.handleLocationPermissions(\r\n\t\t\t\tthis.locationPermissionStates.granted);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tawait this.handleLocationPermissions(\r\n\t\t\t\tthis.locationPermissionStates.denied);\r\n\t\t}\r\n\r\n\t\tthis.somethingWentWrong =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.currentWeatherForecast)\r\n\t\t\t\t|| AnyHelper.isNullOrEmpty(this.geographicLocation)\r\n\t\t\t\t|| AnyHelper.isNullOrEmpty(this.hourlySplitOut)\r\n\t\t\t\t|| AnyHelper.isNullOrEmpty(this.dailySplitOut);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t /**\r\n\t * Sets the current forecast.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate async setCurrentForecast(): Promise\r\n\t{\r\n\t\tthis.currentWeatherForecast =\r\n\t\t\tawait this.weatherForecastService.getCurrentForecast();\r\n\r\n\t\tthis.currentWeatherForecast.iconSource =\r\n\t\t\tthis.weatherForecastService.getWeatherIconSource(\r\n\t\t\t\tthis.currentWeatherForecast.weatherIcon,\r\n\t\t\t\tAppConstants.sizeIdentifiers.medium);\r\n\r\n\t\tthis.currentWeatherForecast.temperature =\r\n\t\t\tparseInt(\r\n\t\t\t\tthis.currentWeatherForecast.temperature.toFixed(0),\r\n\t\t\t\tAppConstants.parseRadix);\r\n\t}\r\n\r\n\t /**\r\n\t * Sets the hourly forecast.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate async setHourlyForecast(): Promise\r\n\t{\r\n\t\tthis.hourlyWeatherForecast =\r\n\t\t\tawait this.weatherForecastService.getHourlyForecast();\r\n\r\n\t\tfor (const hourlyForecast of this.hourlyWeatherForecast)\r\n\t\t{\r\n\t\t\thourlyForecast.iconSource =\r\n\t\t\t\tthis.weatherForecastService.getWeatherIconSource(\r\n\t\t\t\t\thourlyForecast.weatherIcon);\r\n\r\n\t\t\thourlyForecast.temperature =\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\thourlyForecast.temperature.toFixed(0),\r\n\t\t\t\t\tAppConstants.parseRadix);\r\n\t\t}\r\n\r\n\t\tthis.setHourlySplitOut();\r\n\t}\r\n\r\n\t /**\r\n\t * Sets the daily forecast.\r\n\t *\r\n\t * @async\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate async setDailyForecast(): Promise\r\n\t{\r\n\t\tthis.dailyWeatherForecast =\r\n\t\t\tawait this.weatherForecastService.getDailyForecast();\r\n\r\n\t\tfor (const dailyForecast of this.dailyWeatherForecast)\r\n\t\t{\r\n\t\t\tdailyForecast.iconSource =\r\n\t\t\t\tthis.weatherForecastService.getWeatherIconSource(\r\n\t\t\t\t\tdailyForecast.weatherIcon);\r\n\r\n\t\t\tdailyForecast.temperature.min =\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tdailyForecast.temperature.min.toFixed(0),\r\n\t\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\t\tdailyForecast.temperature.max =\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tdailyForecast.temperature.max.toFixed(0),\r\n\t\t\t\t\tAppConstants.parseRadix);\r\n\t\t}\r\n\r\n\t\tthis.setDailySplitOut();\r\n\t}\r\n\r\n\t /**\r\n\t * Sets the daily split out.\r\n\t *\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate setDailySplitOut(): void\r\n\t{\r\n\t\tconst dailyForecastEndIndex =\r\n\t\t\tthis.getForecastEndIndex(\r\n\t\t\t\tthis.dailySplitoutEndIndex.small,\r\n\t\t\t\tthis.dailySplitoutEndIndex.large);\r\n\r\n\t\tthis.dailySplitOut =\r\n\t\t\tthis.dailyWeatherForecast?.slice(\r\n\t\t\t\t0,\r\n\t\t\t\tdailyForecastEndIndex);\r\n\t}\r\n\r\n\t /**\r\n\t * Sets the hourly split out.\r\n\t *\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate setHourlySplitOut(): void\r\n\t{\r\n\t\tconst hourlyForecastEndIndex =\r\n\t\t\tthis.getForecastEndIndex(\r\n\t\t\t\tthis.hourlySplitoutEndIndex.small,\r\n\t\t\t\tthis.hourlySplitoutEndIndex.large);\r\n\r\n\t\tthis.hourlySplitOut =\r\n\t\t\tthis.hourlyWeatherForecast?.slice(\r\n\t\t\t\t1,\r\n\t\t\t\thourlyForecastEndIndex);\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the forecast end index.\r\n\t * This is calculated based on the available screen width.\r\n\t *\r\n\t * @param {number} smallIndex\r\n\t * The lowest numberic index.\r\n\t * @param {number} largeIndex\r\n\t * The largest numberic index.\r\n\t * @returns {number}\r\n\t * The numeric end index.\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate getForecastEndIndex(\r\n\t\tsmallIndex: number,\r\n\t\tlargeIndex: number): number\r\n\t{\r\n\t\treturn this.smallWidgetDisplay() === true\r\n\t\t\t? smallIndex\r\n\t\t\t: largeIndex;\r\n\t}\r\n\r\n\t /**\r\n\t * The truthy definition of a small widget display.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * True or false if the widget is small or not to display.\r\n\t * @memberof WeatherForecastComponent\r\n\t */\r\n\tprivate smallWidgetDisplay(): boolean\r\n\t{\r\n\t\treturn (this.siteLayoutService.breakpointWidth\r\n\t\t\t< AppConstants.layoutBreakpoints.desktop\r\n\t\t\t\t&& this.siteLayoutService.displayTabletView !== true\r\n\t\t\t\t&& this.siteLayoutService.contextMenuCapturedWidth === 0)\r\n\t\t\t|| (this.siteLayoutService.breakpointWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.pinnableDrawerWidth\r\n\t\t\t\t&& (this.siteLayoutService.breakpointWidth\r\n\t\t\t\t\t> AppConstants.layoutBreakpoints.widgetfullWidth)\r\n\t\t\t\t&& this.siteLayoutService.contextMenuCapturedWidth > 0)\r\n\t\t\t|| this.siteLayoutService.breakpointWidth\r\n\t\t\t\t< AppConstants.layoutBreakpoints.phone;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-weather-card',\r\n\ttemplateUrl: './dynamic-weather-card.component.html'\r\n})\r\n\r\n/**\r\n * A component representing a wrapper to pass context to a weather card display.\r\n *\r\n * @export\r\n * @class DynamicWeatherCardComponent\r\n * @implements {IDynamicComponent>}\r\n */\r\nexport class DynamicWeatherCardComponent\r\nimplements IDynamicComponent>\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext>}\r\n\t * @memberof DynamicWeatherCardComponent\r\n\t */\r\n\tpublic context:\r\n\t\tIDynamicComponentContext>;\r\n}\r\n","\r\n","
    \r\n\t
    \r\n\t\t{{context.data.label}}\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t{{activeWizardStep.stepDefinition.title}}\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{activeWizardStep.clientMessage}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{activeWizardStep.backLabel}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tAfterContentChecked,\r\n\tAfterViewInit,\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tBooleanFadeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardStepMenuItem\r\n} from '@shared/interfaces/application-objects/wizard-step-menu-item.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIWizardStep\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-step-context.interface';\r\nimport {\r\n\tIReportDataDetails\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.details.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisEqual\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable,\r\n\tSubscription\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dynamic-wizard',\r\n\ttemplateUrl: './dynamic-wizard.component.html',\r\n\tstyleUrls: [\r\n\t\t'./dynamic-wizard.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tBooleanFadeAnimation\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\n/**\r\n * A component representing a context level dynamic step wizard.\r\n *\r\n * @export\r\n * @class DynamicWizardComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {AfterContentChecked}\r\n * @implements {IDynamicComponent}\r\n * @implements {AppCanDeactivateGuard}\r\n */\r\nexport class DynamicWizardComponent\r\nimplements OnInit, AfterViewInit, AfterContentChecked,\r\n\t\tIDynamicComponent,\r\n\t\tAppCanDeactivateGuard\r\n{\r\n\t/**\r\n\t * Creates in instance of a dynamic wizard component.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The route used in this component.\r\n\t * @param {Router} router\r\n\t * The router used in this component.\r\n\t * @param {Location} location\r\n\t * The Angular common location service used for url interaction.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for generic lookups.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\t@Input() public context:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the element reference for the wizard viewport.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\t@ViewChild('WizardViewport', { read: ElementRef })\r\n\tpublic wizardViewport: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the page source that contains this dynamic component.\r\n\t *\r\n\t * @type {Component}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic pageSource: Component;\r\n\r\n\t/**\r\n\t * Gets or sets the active step index for the step display.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic activeStepIndex: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the valid value of the contained dynamic form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the changed value of the form data. This is\r\n\t * used to define if the next button is available due to new data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic valueChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the redraw value of the nested dynamic form. This will\r\n\t * cause a redraw and run validation on the form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic redraw: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a truthy defining if the wizard has most recently stepped\r\n\t * forward.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic forwardStepDirection: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the initial data value of this wizard. This is used for\r\n\t * can deactivate guard logic.\r\n\t *\r\n\t * @type {{ data: object } }\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic initialData: { data: object } = { data: {} };\r\n\r\n\t/**\r\n\t * Gets or sets the display value for the left mask.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic displayLeftMask: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the display value for the right mask.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic displayRightMask: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets or sets the mapped route data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic mappedRouteData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the allowed to continue.\r\n\t * If false will display the not allowed message,\r\n\t * and not allow to continue processing the active wizard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic allowedToContinue: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the report Data info.\r\n\t *\r\n\t * @type {IReportDataDetails}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic reportData: IReportDataDetails;\r\n\r\n\t/**\r\n\t * Gets or sets the pageContext info.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the base page display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic basePageInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets the active menu item.\r\n\t *\r\n\t * @type {IWizardStepMenuItem}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic get activeMenuItem(): IWizardStepMenuItem\r\n\t{\r\n\t\treturn this.context.data.displayedWizardMenuItems[this.activeStepIndex];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the active wizard display component.\r\n\t *\r\n\t * @type {IWizardStepMenuItem}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic get activeWizardStep(): IWizardStep\r\n\t{\r\n\t\treturn this.context.data.displayedWizardSteps[this.activeStepIndex];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or the draggable value on whether or nor additional\r\n\t * content exists and is not displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic get draggable(): boolean\r\n\t{\r\n\t\treturn this.displayLeftMask === true\r\n\t\t\t|| this.displayRightMask === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the step loading value of this wizard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic get wizardStepLoading()\r\n\t{\r\n\t\treturn this._wizardStepLoading;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the step loading value of this wizard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic set wizardStepLoading(\r\n\t\tvalue: boolean)\r\n\t{\r\n\t\tthis._wizardStepLoading = value;\r\n\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the private step loading value of this wizard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate _wizardStepLoading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the debounce delay for allowing a loaded\r\n\t * view and calculating the masks.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate readonly afterViewInitDebounceDelay: number = 250;\r\n\r\n\t/**\r\n\t * Gets the debounce delay for validating proper arrow displays\r\n\t * following layout changes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate readonly layoutChangedDebounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Gets the multiplier for the drag scroll event.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate readonly scrollMultiplier: number = 2.5;\r\n\r\n\t/**\r\n\t * Gets the identifier used to style the wizard component step.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate readonly stepIdentifier: string = '.p-menuitem-link';\r\n\r\n\t/**\r\n\t * Gets the identifier used to store the current step into the page data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate readonly currentStepLabelIdentifier: string = 'currentStepLabel';\r\n\r\n\t/**\r\n\t * Handles the before unload event sent from the current window based\r\n\t * on any action that will change the page.\r\n\t *\r\n\t * @returns {Observable | boolean}\r\n\t * The value that will allow the router to know if the data in this form\r\n\t * is altered or not saved to the database. This implements the\r\n\t * AppCanDeactivateGuard interface.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.beforeUnloadEvent)\r\n\tpublic canDeactivate(): Observable | boolean\r\n\t{\r\n\t\t// Ensure auto step changes do not count as a blocking change.\r\n\t\tconst cleanedInitialData: { data: object } =\r\n\t\t\t{ data: {...this.initialData.data} };\r\n\t\tdelete cleanedInitialData.data[this.currentStepLabelIdentifier];\r\n\r\n\t\t// Ensure non-selections on a new step do not halt deactivation.\r\n\t\tconst cleanedData: { data: object } = { data: {} };\r\n\t\tObject.keys(this.activeMenuItem.currentData.data)\r\n\t\t\t.forEach(\r\n\t\t\t\t(key: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst currentValue: any =\r\n\t\t\t\t\t\tthis.activeMenuItem.currentData.data[key];\r\n\t\t\t\t\tif (!AnyHelper.isNull(currentValue)\r\n\t\t\t\t\t\t&& key !== this.currentStepLabelIdentifier)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcleanedData.data[key] = currentValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\treturn isEqual(\r\n\t\t\tcleanedInitialData.data,\r\n\t\t\tcleanedData.data);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the site layout change event.\r\n\t * This will set the scroll masks on layout changes and hide the\r\n\t * overlay.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.wizardViewport)\r\n\t\t\t&& !AnyHelper.isNull(this.wizardViewport.nativeElement))\r\n\t\t{\r\n\t\t\tthis.scrollWizardViewportTo(\r\n\t\t\t\tthis.wizardViewport.nativeElement.scrollLeft);\r\n\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setScrollMasks(\r\n\t\t\t\t\t\tthis.wizardViewport.nativeElement.scrollLeft);\r\n\t\t\t\t},\r\n\t\t\t\tthis.layoutChangedDebounceDelay);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will re-align the sent context to have a source of this wizard\r\n\t * component and continue offering the calling source as the page source\r\n\t * property.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.pageSource = this.context.source;\r\n\t\tthis.context.source = this;\r\n\r\n\t\tif (!AnyHelper.isNull(this.route.queryParams))\r\n\t\t{\r\n\t\t\tthis.subscriptions.add(\r\n\t\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.mappedRouteData =\r\n\t\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\t\tparameters);\r\n\t\t\t\t}));\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.context.data.label)\r\n\t\t\t&& !AnyHelper.isNull(this.activeMenuItem)\r\n\t\t\t&& !AnyHelper.isNull(this.activeMenuItem.currentData))\r\n\t\t{\r\n\t\t\tthis.context.data.label =\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tthis.context.data.label,\r\n\t\t\t\t\tthis.activeMenuItem.currentData.data);\r\n\t\t}\r\n\r\n\t\tthis.displayComponentFactory\r\n\t\t\t.initializeWizardStepFunctions(\r\n\t\t\t\tthis.context.data.wizardSteps,\r\n\t\t\t\tthis.context);\r\n\t\tthis.calculateWizardStepDisplayValues();\r\n\r\n\t\tif (this.context.data.wizardSteps.length === 0\r\n\t\t\t|| this.context.data.wizardMenuItems.length === 0\r\n\t\t\t|| this.context.data.wizardSteps.every(\r\n\t\t\t\t(wizardStep: IWizardStep) =>\r\n\t\t\t\t\twizardStep.stepDisplay() === false))\r\n\t\t{\r\n\t\t\tconst pageSource: GenericBasePageComponent =\r\n\t\t\t\tthis.pageSource;\r\n\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\tpageSource.displayComponentName,\r\n\t\t\t\t\tpageSource.displayComponentInstance.name,\r\n\t\t\t\t\t...pageSource\r\n\t\t\t\t\t\t.displayComponentInstance\r\n\t\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition\r\n\t\t\t\t\t\t.wizardSteps.map(\r\n\t\t\t\t\t\t\t(wizardStep: any) =>\r\n\t\t\t\t\t\t\t\twizardStep.displayComponent)\r\n\t\t\t\t]);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.updateGuardComparisonData();\r\n\r\n\t\tif (this.activeWizardStep.alwaysVerify === true)\r\n\t\t{\r\n\t\t\tthis.handleStepLayoutRefresh();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the after view init event.\r\n\t * This will set the scroll masks on initial load.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setScrollMasks(\r\n\t\t\t\t\tthis.wizardViewport.nativeElement.scrollLeft);\r\n\t\t\t},\r\n\t\t\tthis.afterViewInitDebounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the after content checked event.\r\n\t * This will allow the local change detector to handle changes without\r\n\t * firing an expression changes after checked error.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic ngAfterContentChecked(): void\r\n\t{\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Udpates the wizard initial data which is used for comparisons when\r\n\t * refreshing the page. This value should be called when the initial\r\n\t * data of the page is completely set.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic updateGuardComparisonData(): void\r\n\t{\r\n\t\tthis.initialData.data =\r\n\t\t\t<{ data: any }>\r\n\t\t\t{\r\n\t\t\t\t...this.activeMenuItem.currentData.data\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the current active step data to include the sent data definitions.\r\n\t *\r\n\t * @param {object} data\r\n\t * The object data to append to the current step's data.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic addOrUpdateStepData(\r\n\t\tdata: object): void\r\n\t{\r\n\t\tthis.activeMenuItem.currentData.data =\r\n\t\t\t{\r\n\t\t\t\t...this.activeMenuItem.currentData.data,\r\n\t\t\t\t...data\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the current wizard data into the url query parameters when\r\n\t * steps are altered.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic storeData(\r\n\t\tcurrentData: { data: any }): void\r\n\t{\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trelativeTo: this.route,\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\tcurrentData)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the displayed wizard label.\r\n\t *\r\n\t * @param {string} updatedLabel\r\n\t * The desired wizard label, or the value to append to the existing wizard\r\n\t * label based on the append to current parameter.\r\n\t * @param {boolean} appendToCurrent\r\n\t * If sent this will add the sent updated label to the existing wizard\r\n\t * label. This value defaults to false.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic updateWizardLabel(\r\n\t\tupdatedLabel: string,\r\n\t\tappendToCurrent: boolean = false): void\r\n\t{\r\n\t\tthis.context.data.label =\r\n\t\t\tappendToCurrent === true\r\n\t\t\t\t? `${this.context.data.label\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tupdatedLabel,\r\n\t\t\t\t\t\tAppConstants.empty)} `\r\n\t\t\t\t\t+ updatedLabel\r\n\t\t\t\t: updatedLabel;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a component method to the current validation set for the active\r\n\t * step.\r\n\t *\r\n\t * @param {Function} functionToAdd\r\n\t * The truthy valued function to add when running validation on the step.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic addToValidator(\r\n\t\tfunctionToAdd: Function): void\r\n\t{\r\n\t\tconst translatedValidationAction: Function =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.activeWizardStep.validatorRaw)\r\n\t\t\t\t? () => true\r\n\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\tthis.activeWizardStep.validatorRaw,\r\n\t\t\t\t\tthis.context);\r\n\t\tthis.activeWizardStep.validator =\r\n\t\t\t() =>\r\n\t\t\t\tfunctionToAdd() === true\r\n\t\t\t\t\t&& translatedValidationAction() === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a component method to the next function for the active step.\r\n\t *\r\n\t * @param {Function} functionToAdd\r\n\t * The component function to also perform when hitting next.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic addToNext(\r\n\t\tfunctionToAdd: Function): void\r\n\t{\r\n\t\tconst translatedNextAction: Function =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.activeWizardStep.nextActionRaw)\r\n\t\t\t\t? () => {\r\n\t\t\t\t\t// No implementation.\r\n\t\t\t\t}\r\n\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\tthis.activeWizardStep.nextActionRaw,\r\n\t\t\t\t\tthis.context);\r\n\t\tthis.activeWizardStep.nextAction =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait functionToAdd();\r\n\t\t\t\ttranslatedNextAction();\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the back action sent from the wizard step display.\r\n\t *\r\n\t * @async\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic async back(): Promise\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.wizardStepLoading = true;\r\n\t\t});\r\n\r\n\t\tawait this.activeWizardStep.backAction();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the next action sent from the wizard step display.\r\n\t *\r\n\t * @async\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic async next(): Promise\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.wizardStepLoading = true;\r\n\t\t});\r\n\r\n\t\tawait this.activeWizardStep.nextAction();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the step to command used to navigate to a step by it's display\r\n\t * name in the wizard menu.\r\n\t *\r\n\t * @async\r\n\t * @param {string} stepName\r\n\t * The step name to navigate to.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic stepTo(\r\n\t\tstepName: string): void\r\n\t{\r\n\t\tconst targetIndex: number =\r\n\t\t\tthis.context.data.wizardMenuItems.findIndex(\r\n\t\t\t\t(matchingWizardStepMenuItem: IWizardStepMenuItem) =>\r\n\t\t\t\t\tmatchingWizardStepMenuItem.label === stepName);\r\n\r\n\t\tconst targetWizardMenuItem: IWizardStepMenuItem =\r\n\t\t\tthis.context.data.wizardMenuItems[targetIndex];\r\n\t\tif (targetIndex < this.activeStepIndex)\r\n\t\t{\r\n\t\t\t// Reset this to last contact data.\r\n\t\t\tthis.activeMenuItem.currentData.data =\r\n\t\t\t\t{\r\n\t\t\t\t\t...this.activeMenuItem.lastContactData.data\r\n\t\t\t\t};\r\n\t\t\t// Initialize the target component.\r\n\t\t\ttargetWizardMenuItem.currentData.data =\r\n\t\t\t\t{\r\n\t\t\t\t\t...targetWizardMenuItem.lastContactData.data\r\n\t\t\t\t};\r\n\t\t\t// Reset to a valid next action to match reset data.\r\n\t\t\tthis.forwardStepDirection = false;\r\n\t\t\tthis.isValid = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Store this as last contact data.\r\n\t\t\tthis.activeMenuItem.lastContactData.data =\r\n\t\t\t\t{\r\n\t\t\t\t\t...this.activeMenuItem.currentData.data\r\n\t\t\t\t};\r\n\t\t\t// Initialize the target component.\r\n\t\t\ttargetWizardMenuItem.lastContactData.data =\r\n\t\t\t\t{\r\n\t\t\t\t\t...this.activeMenuItem.currentData.data\r\n\t\t\t\t};\r\n\t\t\ttargetWizardMenuItem.currentData.data =\r\n\t\t\t\t{\r\n\t\t\t\t\t...targetWizardMenuItem.lastContactData.data\r\n\t\t\t\t};\r\n\t\t\t// Require the next action to set it's validity.\r\n\t\t\tthis.forwardStepDirection = true;\r\n\t\t\tthis.isValid = false;\r\n\t\t}\r\n\r\n\t\tthis.displayComponentFactory\r\n\t\t\t.initializeWizardStepFunctions(\r\n\t\t\t\tthis.context.data.wizardSteps,\r\n\t\t\t\tthis.context);\r\n\t\tthis.calculateWizardStepDisplayValues();\r\n\t\tthis.activeStepIndex =\r\n\t\t\tthis.context.data.displayedWizardMenuItems.findIndex(\r\n\t\t\t\t(matchingWizardStepMenuItem: IWizardStepMenuItem) =>\r\n\t\t\t\t\tmatchingWizardStepMenuItem.label === stepName);\r\n\t\tthis.addOrUpdateStepData(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tcurrentStepLabel: stepName\r\n\t\t\t});\r\n\t\tthis.storeData(\r\n\t\t\ttargetWizardMenuItem.currentData);\r\n\t\tthis.scrollToActiveStep();\r\n\r\n\t\tthis.handleStepLayoutRefresh();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the scroll left button click event.\r\n\t * This will translate the x position of the div 100%\r\n\t * to the right.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic scrollLeft(): void\r\n\t{\r\n\t\tconst horizontalScroll: number =\r\n\t\t\tthis.wizardViewport.nativeElement.scrollLeft\r\n\t\t\t\t- this.getHorizontalScrollWidth();\r\n\r\n\t\tthis.scrollWizardViewportTo(horizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the scroll right button click event.\r\n\t * This will translate the x position of the div 100%\r\n\t * to the left.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic scrollRight(): void\r\n\t{\r\n\t\tconst horizontalScroll: number =\r\n\t\t\tthis.wizardViewport.nativeElement.scrollLeft\r\n\t\t\t\t+ this.getHorizontalScrollWidth();\r\n\r\n\t\tthis.scrollWizardViewportTo(horizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the press event sent from a hammerjs touch event.\r\n\t * This will set the active class on the wizard viewport.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic press(): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.wizardViewport.nativeElement\r\n\t\t\t\t.classList.add(AppConstants.cssClasses.active);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the press up event sent from a hammerjs touch event.\r\n\t * This will remove the active class on the wizard viewport.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic pressUp(): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.wizardViewport.nativeElement\r\n\t\t\t\t.classList.remove(AppConstants.cssClasses.active);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the swipe event sent from a hammerjs touch event.\r\n\t * This will calculate the direction and velocity of this\r\n\t * swipe action and scroll to that location.\r\n\t *\r\n\t * @param {any} event\r\n\t * The sent swipe event.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic swipe(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.scrollWizardViewportTo(\r\n\t\t\t\tthis.wizardViewport.nativeElement.scrollLeft\r\n\t\t\t\t\t- (Math.abs(event.deltaX)\r\n\t\t\t\t\t\t* event.overallVelocityX\r\n\t\t\t\t\t\t* this.scrollMultiplier));\r\n\r\n\t\t\tthis.pressUp();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the horizontal scroll width of the wizard component.\r\n\t *\r\n\t * @returns {number}\r\n\t * The calculated scroll width of the wizard items.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic getHorizontalScrollWidth(): number\r\n\t{\r\n\t\treturn this.wizardViewport.nativeElement\r\n\t\t\t.getBoundingClientRect().width;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a smooth scroll to animation on the wizard viewport.\r\n\t *\r\n\t * @param {number} horizontalScroll\r\n\t * The x translation to perform on the current wizard.\r\n\t * This is a bounds safe action and will only fire if a scroll is\r\n\t * available to this sent location.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic scrollWizardViewportTo(\r\n\t\thorizontalScroll: number): void\r\n\t{\r\n\t\tthis.wizardViewport.nativeElement\r\n\t\t\t.scrollTo(\r\n\t\t\t\t{\r\n\t\t\t\t\tleft: horizontalScroll,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\r\n\t\tthis.setScrollMasks(horizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the display values for the left and right mask based\r\n\t * on available scroll translations in the wizard.\r\n\t *\r\n\t * @param {number} horizontalScroll\r\n\t * The x translation recently scrolled to.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic setScrollMasks(\r\n\t\thorizontalScroll: number): void\r\n\t{\r\n\t\tthis.displayLeftMask =\r\n\t\t\thorizontalScroll > 0;\r\n\t\tthis.displayRightMask =\r\n\t\t\tthis.wizardViewport.nativeElement.scrollWidth >\r\n\t\t\t\thorizontalScroll\r\n\t\t\t\t\t+ this.wizardViewport.nativeElement\r\n\t\t\t\t\t\t.getBoundingClientRect().width + 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the wizard to a centered wizard step and recalculates mask\r\n\t * and scroll displays.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic scrollToActiveStep(): void\r\n\t{\r\n\t\tif (this.draggable === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst availableSteps: HTMLAnchorElement[] =\r\n\t\t\tthis.wizardViewport.nativeElement\r\n\t\t\t\t.querySelectorAll(this.stepIdentifier);\r\n\r\n\t\tconst wizardStepContainer: DOMRect =\r\n\t\t\tavailableSteps[this.activeStepIndex].getBoundingClientRect();\r\n\t\tconst horizontalScroll: number =\r\n\t\t\twizardStepContainer.x\r\n\t\t\t\t- (wizardStepContainer.width / 2)\r\n\t\t\t\t- AppConstants.staticLayoutSizes.nestedContentPadding * 2;\r\n\r\n\t\tthis.scrollWizardViewportTo(\r\n\t\t\thorizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Runs the wizard steps display method to set the display value of each\r\n\t * step based on current context data.\r\n\t *\r\n\t * @param {IWizardStep[]} wizardSteps\r\n\t * The wizard steps that require display calculations.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for the wizard component.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic calculateWizardStepDisplayValues(): void\r\n\t{\r\n\t\tconst displayedWizardSteps: IWizardStep[] = [];\r\n\t\tconst displayedWizardMenuItems: IWizardStepMenuItem[] = [];\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < this.context.data.wizardSteps.length;\r\n\t\t\tindex ++)\r\n\t\t{\r\n\t\t\tif (this.context.data.wizardSteps[index].stepDisplay() === true)\r\n\t\t\t{\r\n\t\t\t\tdisplayedWizardSteps.push(\r\n\t\t\t\t\tthis.context.data.wizardSteps[index]);\r\n\t\t\t\tdisplayedWizardMenuItems.push(\r\n\t\t\t\t\tthis.context.data.wizardMenuItems[index]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.context.data.displayedWizardSteps = displayedWizardSteps;\r\n\t\tthis.context.data.displayedWizardMenuItems = displayedWizardMenuItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed step data set.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic async validStepChanged(\r\n\t\tisValid: boolean): Promise\r\n\t{\r\n\t\tthis.isValid =\r\n\t\t\t!AnyHelper.isNull(this.activeWizardStep.validator)\r\n\t\t\t\t&& AnyHelper.isFunction(this.activeWizardStep.validator)\r\n\t\t\t\t? this.activeWizardStep.validator()\r\n\t\t\t\t: isValid;\r\n\r\n\t\tthis.allowedToContinue =\r\n\t\t\tawait this.activeWizardStep.allowedToContinue;\r\n\r\n\t\tif (this.forwardStepDirection === true\r\n\t\t\t&& this.activeWizardStep.alwaysVerify === false\r\n\t\t\t&& this.isValid === true\r\n\t\t\t&& this.allowedToContinue !== false)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.activeWizardStep.nextAction();\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t\t}\r\n\t\telse if (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.activeWizardStep.stepLayout)\r\n\t\t\t&& this.allowedToContinue === false)\r\n\t\t{\r\n\t\t\tthis.wizardStepLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the step data changed event sent from the child dynamic\r\n\t * formly component. This will notify the component of changes to\r\n\t * data in the formly display.\r\n\t *\r\n\t * @param {boolean} changed\r\n\t * The changed truthy of the current displayed data set.\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tpublic stepDataChanged(\r\n\t\tchanged: boolean): void\r\n\t{\r\n\t\tthis.valueChanged = changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the step layout refresh. This will notify the wizard step\r\n\t * loading process.\r\n\t *\r\n\t * @memberof DynamicWizardComponent\r\n\t */\r\n\tprivate handleStepLayoutRefresh()\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.activeWizardStep.stepLayout))\r\n\t\t{\r\n\t\t\tthis.redraw = true;\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.wizardStepLoading = false;\r\n\t\t\t\t\tthis.redraw = false;\r\n\r\n\t\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tPowerBiService\r\n} from '@shared/services/power-bi.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tEmbed\r\n} from 'powerbi-client';\r\nimport {\r\n\tIEventHandler\r\n} from 'service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-external-report',\r\n\ttemplateUrl: './external-report.component.html',\r\n\tstyleUrls: [\r\n\t\t'./external-report.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level external reports.\r\n *\r\n * @export\r\n * @class ExternalReportComponent\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ExternalReportComponent\r\nimplements AfterViewInit, OnDestroy,\r\n\t\tIDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the external report component.\r\n\t *\r\n\t * @param {PowerBiService} powerBiService\r\n\t * The power bi display service used for external power bi reports.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used for external power bi reports.\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic powerBiService: PowerBiService,\r\n\t\tpublic powerBiApiService: PowerBiApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the element reference container.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\t@ViewChild('ElementReferenceContainer')\r\n\tpublic elementReferenceContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the report type being displayed in this external report\r\n\t * component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic reportType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the creation mode identifier if a new report is to be\r\n\t * created and viewed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic creationMode: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the interval timer reference returned when\r\n\t * applicable authentication update timers are running.\r\n\t *\r\n\t * @type {NodeJS.Timeout}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic authenticationRefreshTimeout: NodeJS.Timeout;\r\n\r\n\t/**\r\n\t * Gets or sets the power bi embed report reference if this\r\n\t * is running a report type of power bi.\r\n\t *\r\n\t * @type {Embed}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic powerBiReportReference: Embed;\r\n\r\n\t/**\r\n\t * Gets the list of event types that are being handled in a power bi\r\n\t * external report.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tprivate readonly powerBiEventConstants:\r\n\t{\r\n\t\tdataSelected: string;\r\n\t\tloaded: string;\r\n\t\tselectionChanged: string;\r\n\t\tvisualClicked: string;\r\n\t} = {\r\n\t\t\tdataSelected: 'dataSelected',\r\n\t\t\tloaded: 'loaded',\r\n\t\t\tselectionChanged: 'selectionChanged',\r\n\t\t\tvisualClicked: 'visualClicked'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the list of event types that when sent from a power\r\n\t * bi report will call out to close overlays.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tprivate readonly closeOverlayEvents: string[] =\r\n\t\t[\r\n\t\t\tthis.powerBiEventConstants.dataSelected,\r\n\t\t\tthis.powerBiEventConstants.selectionChanged,\r\n\t\t\tthis.powerBiEventConstants.visualClicked\r\n\t\t];\r\n\r\n\t/**\r\n\t * Handles a set of click like event messages sent from a\r\n\t * power bi report iframe. This will hide overlay displays\r\n\t * as though a click occurred in the application.\r\n\t *\r\n\t * @param {{ origin: string; data: any;}} event\r\n\t * The sent post message event from a captured iFrame.\r\n\t * @returns {IEventHandler}\r\n\t * A handled event response.\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.messageEvent,\r\n\t\t[AppEventParameterConstants.event])\r\n\tpublic onMessage(\r\n\t\tevent: {\r\n\t\t\torigin: string;\r\n\t\t\tdata: any;\r\n\t\t}): void\r\n\t{\r\n\t\tif (event.origin === ReportConstants.powerBiEmbedEndpoint\r\n\t\t\t&& (!AnyHelper.isNull(event.data?.params?.eventName)\r\n\t\t\t\t&& this.closeOverlayEvents.indexOf(\r\n\t\t\t\t\tevent.data.params.eventName) !== -1))\r\n\t\t{\r\n\t\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\t\tAppConstants.empty);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On after view initialization event.\r\n\t * Handles report type logic and displays the desired external report.\r\n\t *\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tthis.reportType =\r\n\t\t\tthis.context.data.reportDefinition.externalReportType;\r\n\t\tthis.creationMode = this.context.data.createReport === true;\r\n\r\n\t\tswitch (this.reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.externalReportTypes.powerBi:\r\n\t\t\t\tthis.powerBiReportReference =\r\n\t\t\t\t\tthis.creationMode === true\r\n\t\t\t\t\t\t? this.powerBiService\r\n\t\t\t\t\t\t\t.createReport(\r\n\t\t\t\t\t\t\t\tthis.elementReferenceContainer.nativeElement,\r\n\t\t\t\t\t\t\t\tthis.context.data.reportDefinition\r\n\t\t\t\t\t\t\t\t\t.embedConfiguration)\r\n\t\t\t\t\t\t: this.powerBiService\r\n\t\t\t\t\t\t\t.embed(\r\n\t\t\t\t\t\t\t\tthis.elementReferenceContainer.nativeElement,\r\n\t\t\t\t\t\t\t\tthis.context.data.reportDefinition\r\n\t\t\t\t\t\t\t\t\t.embedConfiguration);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`'${this.reportType}' external report. This requires `\r\n\t\t\t\t\t\t+ AppConstants.messages.switchCaseNotHandled);\r\n\t\t}\r\n\r\n\t\tthis.setAuthenticationUpdates();\r\n\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t}\r\n\r\n\t/**\r\n\t * On after component destroy event.\r\n\t * This will clear any timer based authentication interval actions\r\n\t * running on this report.\r\n\t *\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tswitch (this.reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.externalReportTypes.powerBi:\r\n\t\t\t\tclearTimeout(\r\n\t\t\t\t\tthis.authenticationRefreshTimeout);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets intervals needed in order for any existing external report\r\n\t * to remain authenticated as long as the user is logged in and this\r\n\t * report is displayed.\r\n\t *\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic setAuthenticationUpdates(): void\r\n\t{\r\n\t\tswitch (this.reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.externalReportTypes.powerBi:\r\n\t\t\t\tthis.powerBiReportReference.on(\r\n\t\t\t\t\tthis.powerBiEventConstants.loaded,\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.updatePowerBiAuthentication();\r\n\t\t\t\t\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on load event of a current report in order to set an\r\n\t * access token update on the preconfigured authentication expiry.\r\n\t *\r\n\t * @returns {IEventHandler}\r\n\t * A handled event response.\r\n\t * @memberof ExternalReportComponent\r\n\t */\r\n\tpublic updatePowerBiAuthentication(): IEventHandler\r\n\t{\r\n\t\t// Clear any existing timers.\r\n\t\tthis.ngOnDestroy();\r\n\r\n\t\t// Find when the current access token used for embed expires.\r\n\t\tconst accessTokenRefreshDelay: number =\r\n\t\t\tthis.powerBiApiService.accessTokenExpiry\r\n\t\t\t\t.diff(\r\n\t\t\t\t\tDateTime.utc())\r\n\t\t\t\t.milliseconds;\r\n\r\n\t\t// On expiration, refresh the embed token and reset for the next azure\r\n\t\t// token expiration.\r\n\t\tthis.authenticationRefreshTimeout =\r\n\t\t\tsetTimeout(\r\n\t\t\t\tasync() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst reportDefinition: IPowerBiReportDefinition =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tthis.context.data.reportDefinition;\r\n\r\n\t\t\t\t\tconst embedToken: any =\r\n\t\t\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t\t\t.generateEmbedToken(\r\n\t\t\t\t\t\t\t\treportDefinition.reportId,\r\n\t\t\t\t\t\t\t\treportDefinition.groupId,\r\n\t\t\t\t\t\t\t\treportDefinition.datasetId,\r\n\t\t\t\t\t\t\t\treportDefinition.datasetGroupId,\r\n\t\t\t\t\t\t\t\treportDefinition.reportType,\r\n\t\t\t\t\t\t\t\treportDefinition.tileId,\r\n\t\t\t\t\t\t\t\treportDefinition.viewOnly);\r\n\r\n\t\t\t\t\tawait this.powerBiReportReference\r\n\t\t\t\t\t\t.setAccessToken(embedToken.token);\r\n\r\n\t\t\t\t\tthis.updatePowerBiAuthentication();\r\n\t\t\t\t},\r\n\t\t\t\taccessTokenRefreshDelay);\r\n\r\n\t\treturn null;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A class representing static constant and read only values\r\n * for files.\r\n *\r\n * @export\r\n * @const FileConstants\r\n */\r\nexport class FileConstants {\r\n\tpublic static readonly fileTypes:\r\n\t{\r\n\t\tattachment: string;\r\n\t\tdocument: string;\r\n\t\tform: string;\r\n\t} = {\r\n\t\t\tattachment: 'Attachment',\r\n\t\t\tdocument: 'Document',\r\n\t\t\tform: 'Form',\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tDirective,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFileCategory\r\n} from '@dynamicComponents/files/file-category/file-category';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[File]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with files.\r\n *\r\n * @export\r\n * @class FileDirective\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class FileDirective\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the file directive.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the selected file entity.\r\n\t *\r\n\t * @type {IFileEntity}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t@Input() public fileEntity: IFileEntity;\r\n\r\n\t/**\r\n\t * Gets or sets the categories.\r\n\t *\r\n\t * @type {FileCategory[]}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t@Input() public categories: FileCategory[];\r\n\r\n\t/**\r\n\t * Gets or sets the sub types.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t@Input() public subTypes: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the navigate event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the menu items.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic itemActions: MenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic loadingTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the print and mail history\r\n\t * standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic printAndMailHistoryTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the children entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic childrenEntityTypeGroup: string =\r\n\t\t'DistributionRequest.PrintAndMails';\r\n\r\n\t/**\r\n\t * Gets or sets a value indictaing whether to show\r\n\t * the progress component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic progressVisible: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the display mode of the progress component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic progressMode: string = 'spinner';\r\n\r\n\t/**\r\n\t * Gets or sets the progress amount.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic progressAmount: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the display message for the progress component errors.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic errorMessage: string;\r\n\r\n\t/**\r\n\t * Gets the set of available item view modes.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic readonly viewModes:\r\n\t{\r\n\t\tadd: string;\r\n\t\tdownload: string;\r\n\t\tdetails: string;\r\n\t\tedit: string;\r\n\t\tlist: string;\r\n\t\tremove: string;\r\n\t} = {\r\n\t\t\tadd: 'add',\r\n\t\t\tdownload: 'download',\r\n\t\t\tdetails: 'details',\r\n\t\t\tedit: 'edit',\r\n\t\t\tremove: 'remove',\r\n\t\t\tlist: 'list'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the default file extension.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic readonly defaultFileExtension: string = 'ext';\r\n\r\n\t/**\r\n\t * Gets the default required value message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic readonly requiredValueMessage: string =\r\n\t\tAppConstants.messages.requiredValueMessage;\r\n\r\n\t/**\r\n\t * Gets the default required value custom metadata.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic customMetadata: any[];\r\n\r\n\t/**\r\n\t * Gets the storage type\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get storageType(): StorageType\r\n\t{\r\n\t\treturn this.fileEntity\r\n\t\t\t.data\r\n\t\t\t.storage\r\n\t\t\t.storageType;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t public get category(): string\r\n\t {\r\n\t\t return FileHelper\r\n\t\t\t .getCategoryFromType(\r\n\t\t\t\tthis.fileEntity.entityType);\r\n\t }\r\n\r\n\t/**\r\n\t * Gets the file extension.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get fileExtension(): string\r\n\t{\r\n\t\treturn this.fileEntity\r\n\t\t\t.data?.metadata?.extension\r\n\t\t\t\t|| this.defaultFileExtension;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get fileTypeGroup(): string\r\n\t{\r\n\t\treturn this.categories\r\n\t\t\t.find((element: FileCategory) =>\r\n\t\t\t\telement.value === this.fileEntity.entityType)\r\n\t\t\t.entityType\r\n\t\t\t.group;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\t public get fileCategory(): string\r\n\t {\r\n\t\t return this.categories\r\n\t\t\t .find((element: FileCategory) =>\r\n\t\t\t\t element.value === this.fileEntity .entityType)\r\n\t\t\t .label;\r\n\t }\r\n\r\n\t/**\r\n\t * Gets the file sub type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get subType(): string\r\n\t{\r\n\t\treturn AnyHelper.isNullOrWhitespace(this.fileEntity?.data?.subType)\r\n\t\t\t? 'None'\r\n\t\t\t: this.fileEntity.data.subType;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file size in bytes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get sizeInBytes(): number\r\n\t{\r\n\t\treturn this.fileEntity\r\n\t\t\t.data\r\n\t\t\t.metadata\r\n\t\t\t.sizeInBytes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets thesize in bytes formatted to Bytes,\r\n\t * Kilobytes, or Megabytes.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get sizeFormatted(): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.sizeInBytes))\r\n\t\t{\r\n\t\t\treturn '0 Bytes';\r\n\t\t}\r\n\t\tif (this.sizeInBytes < FileHelper.oneKilobyte)\r\n\t\t{\r\n\t\t\treturn `${this.sizeInBytes} Bytes`;\r\n\t\t}\r\n\r\n\t\tif (this.sizeInBytes < FileHelper.oneMegabyte)\r\n\t\t{\r\n\t\t\treturn `${(this.sizeInBytes / FileHelper.oneKilobyte)\r\n\t\t\t\t.toFixed(1)} KB`;\r\n\t\t}\r\n\r\n\t\treturn `${(this.sizeInBytes / FileHelper.oneMegabyte)\r\n\t\t\t.toFixed(2)} MB`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a the create date.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic get createDate(): string\r\n\t{\r\n\t\tconst date: DateTime =\r\n\t\t\tDateTime.fromISO(this.fileEntity.createDate);\r\n\r\n\t\treturn DateHelper.formatDate(\r\n\t\t\tdate,\r\n\t\t\t'ccc MMM dd yyyy');\r\n\t}\r\n\r\n\t/**\r\n\t * Handles initialization event.\r\n\t * Sets the custom metadata.\r\n\t *\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setCustomMetadata();\r\n\t\tthis.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.setItemActions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page variables needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createDate',\r\n\t\t\t\t\tcolumnHeader: 'Request Date',\r\n\t\t\t\t\tdataFormatType: 'ShortDate',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.result.date',\r\n\t\t\t\t\tcolumnHeader: 'Printed Date',\r\n\t\t\t\t\tdataFormatType: 'ShortDate',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.status',\r\n\t\t\t\t\tcolumnHeader: 'Status',\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the distribution request print and mail hitory table definitions\r\n\t *\r\n\t * @memberof FileDirective\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.printAndMailHistoryTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Print and Mail History',\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(_objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst entityType: IEntityType =\r\n\t\t\t\t\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t\t`name eq '${this.fileEntity.entityType}'`,\r\n\t\t\t\t\t\t\t\t\t`name ${AppConstants\r\n\t\t\t\t\t\t\t\t\t\t.sortDirections.ascending}`);\r\n\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tentityType.group;\r\n\t\t\t\t\t\tconst entityInstances: IEntityInstance[] =\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\t\t\t\tthis.fileEntity.id,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\t\t\tthis.childrenEntityTypeGroup);\r\n\r\n\t\t\t\t\t\treturn entityInstances;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of strings representing note types filtered from the\r\n\t * list of input types.\r\n\t *\r\n\t * @protected\r\n\t * @param {number} parentId\r\n\t * The parent id of the note.\r\n\t * @param {string} parentTypeGroup\r\n\t * the parent type group.\r\n\t * @param {EntityDefinition} parentEntityDefinition\r\n\t * The parent Entity Definition.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * the entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The Entity Type API service.\r\n\t * @returns {Promise}\r\n\t * A collection of suppported and authorized entity types notes.\r\n\t * @memberof FileDirective\r\n\t */\r\n\tprotected async setSecurityDefinitions(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tparentEntityDefinition: EntityDefinition,\r\n\t\tentityInstanceApiService: EntityInstanceApiService,\r\n\t\tentityTypeApiService: EntityTypeApiService):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.securityDefinitions =\r\n\t\t\tawait SecurityHelper\r\n\t\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tparentTypeGroup,\r\n\t\t\t\t\t'File.*',\r\n\t\t\t\t\tparentEntityDefinition,\r\n\t\t\t\t\tentityInstanceApiService,\r\n\t\t\t\t\tentityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the authorized item actions.\r\n\t *\r\n\t * @memberof FileDirective\r\n\t */\r\n\tprivate setItemActions(): void\r\n\t{\r\n\t\t/**\r\n\t\t * For consistency, this method should be refactored to use\r\n\t\t * ISecureMenuItem with SecurityHelper.scrubMenuItems\r\n\t\t * (see other drawers).\r\n\t\t */\r\n\r\n\t\tconst authorizedActions: MenuItem[] = [];\r\n\r\n\t\tif (SecurityHelper.HasRight(\r\n\t\t\tSecurityRightType.read,\r\n\t\t\tthis.fileEntity.entityType,\r\n\t\t\tthis.securityDefinitions))\r\n\t\t{\r\n\t\t\tauthorizedActions.push(\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-info-circle',\r\n\t\t\t\t\tid: this.viewModes.details,\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tthis.viewModes.details);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (SecurityHelper.actionAuthorized(\r\n\t\t\tthis.fileEntity.entityType,\r\n\t\t\tAppConstants.apiMethods.update,\r\n\t\t\tthis.securityDefinitions))\r\n\t\t{\r\n\t\t\tauthorizedActions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-pencil',\r\n\t\t\t\t\tid: this.viewModes.edit,\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tthis.viewModes.edit);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (SecurityHelper.actionAuthorized(\r\n\t\t\tthis.fileEntity.entityType,\r\n\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\tthis.securityDefinitions))\r\n\t\t{\r\n\t\t\tauthorizedActions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-trash',\r\n\t\t\t\t\tid: this.viewModes.remove,\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tthis.viewModes.remove);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (SecurityHelper.actionAuthorized(\r\n\t\t\tthis.fileEntity.entityType,\r\n\t\t\tAppConstants.workflowActions.fileDownload,\r\n\t\t\tthis.securityDefinitions))\r\n\t\t{\r\n\t\t\tauthorizedActions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-cloud-download',\r\n\t\t\t\t\tid: this.viewModes.download,\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tthis.viewModes.download);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.itemActions = authorizedActions;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the custom metadata.\r\n\t *\r\n\t * @memberof FileDirective\r\n\t */\r\n\tprivate setCustomMetadata(): void\r\n\t{\r\n\t\tthis.customMetadata = FileHelper\r\n\t\t\t.getCustomMetadata(\r\n\t\t\t\tthis.fileEntity,\r\n\t\t\t\tnull);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tISecurityDefinitionDto\r\n} from '@api/interfaces/security/security-definition.dto.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinitionDto\r\n} from '@api/interfaces/security/security-entity-type-definition.dto.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\n\r\n/**\r\n * A class that represents file categories\r\n *\r\n * @class FileCategory\r\n * @export\r\n */\r\nexport class FileCategory\r\n{\r\n\t/**\r\n\t * Initializes a new instance of this class\r\n\t * @param {IEntityTypeDto} entityType\r\n\t * An entity type.\r\n\t * @param {EntityDefinition} definition\r\n\t * The entity definition for this entity type.\r\n\t * @param {ISecurityEntityTypeDefinitionDto} entityTypeSecurityDefinition\r\n\t * The entity type security definition.\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic readonly entityType: IEntityTypeDto,\r\n\t\tpublic readonly definition: EntityDefinition,\r\n\t\tentityTypeSecurityDefinition: ISecurityEntityTypeDefinitionDto)\r\n\t{\r\n\t\tthis.name = FileHelper\r\n\t\t\t.getCategoryFromType(this\r\n\t\t\t\t.entityType\r\n\t\t\t\t.name);\r\n\r\n\t\tthis.subTypes = \r\n\t\t\tthis.definition\r\n\t\t\t\t.properties\r\n\t\t\t\t.find(prop =>\r\n\t\t\t\t\tprop.key === AppConstants.commonProperties.subType)\r\n\t\t\t\t.value\r\n\t\t\t\t.enum ?? [];\r\n\r\n\t\tthis.securityDefinition =\r\n\t\t\tentityTypeSecurityDefinition.securityDefinition;\r\n\t}\r\n\r\n\t/**\r\n\t * A name of the category\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic readonly name: string;\r\n\r\n\t/**\r\n\t * A sub types/categories\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic readonly subTypes: string[];\r\n\r\n\t/**\r\n\t * The security definition.\r\n\t *\r\n\t * @type {ISecurityDefinitionDto}\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic readonly securityDefinition: ISecurityDefinitionDto;\r\n\r\n\t/**\r\n\t * The label display name of the category\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic get label(): string\r\n\t{\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\t/**\r\n\t * The value (entity type)\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileCategory\r\n\t */\r\n\tpublic get value(): string\r\n\t{\r\n\t\treturn this.entityType.name;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for designating file progress types.\r\n */\r\nexport enum FileProgressType\r\n{\r\n\t/**\r\n\t * An unhandled file action process.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileProgressType\r\n\t */\r\n\tUnhandled = 'Unhandled',\r\n\r\n\t/**\r\n\t * A file is being created.\r\n\t */\r\n\tCreatingEntity = 'CreatingEntity',\r\n\r\n\t/**\r\n\t * A file entity has been created and a new id returned.\r\n\t */\r\n\tEntityCreated = 'EntityCreated',\r\n\r\n\t/**\r\n\t * A file entity is being updated.\r\n\t */\r\n\tUpdatingEntity = 'UpdatingEntity',\r\n\r\n\t/**\r\n\t * A file entity has been updataed (just the data).\r\n\t */\r\n\tEntityUpdated = 'EntityUpdated',\r\n\r\n\t/**\r\n\t * An upload has been initiated.\r\n\t */\r\n\tUploadStarted = 'UploadStarted',\r\n\r\n\t/**\r\n\t * Some or all bytes have been upload.\r\n\t */\r\n\tUploadProgress = 'UploadProgress',\r\n\r\n\t/**\r\n\t * a download of data has started.\r\n\t */\r\n\tDownloadStarted = 'DownloadStarted',\r\n\r\n\t/**\r\n\t * Some or all bytes have been downloaded..\r\n\t */\r\n\tDownloadProgress = 'DownloadProgress',\r\n\r\n\t/**\r\n\t * The file is being processed by the server.\r\n\t */\r\n\tProcessing = 'Processing',\r\n\r\n\t/**\r\n\t * A success, filaure, etc... status has been returned.\r\n\t */\r\n\tResponseStatus = 'ResponseStatus',\r\n\r\n\t/**\r\n\t * A final response has been returned.\r\n\t */\r\n\tResponse = 'Response',\r\n\r\n\t/**\r\n\t *\tThe file operation is complete.\r\n\t */\r\n\tComplete = 'Complete',\r\n\r\n\t/**\r\n\t * There has been one or more errors.\r\n\t */\r\n\tError = 'Error'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpEventType\r\n} from '@angular/common/http';\r\nimport {\r\n\tFileProgressType\r\n} from '@shared/constants/enums/file-progress-type.enum';\r\nimport {\r\n\tIFileProgress\r\n} from '@shared/interfaces/files/file-progress.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tSubscriber\r\n} from 'rxjs';\r\n\r\n/**\r\n * Send progress data to the subsriber that includes server responses.\r\n * This is required for real time reporting.\r\n */\r\nexport class FileProgressReporter\r\n{\r\n\t/**\r\n\t * Sends a progress report to the subscriber.\r\n\t *\r\n\t * @param {HttpEvent} event\r\n\t * The http event from the http client request.\r\n\t * @param {Subscriber} subscriber\r\n\t * A subscriber to which the report should be sent.\r\n\t * @param {string} message\r\n\t * A message.\r\n\t * @memberof FileProgressReporter\r\n\t */\r\n\tpublic reportEvent(\r\n\t\tevent: HttpEvent,\r\n\t\tsubscriber: Subscriber,\r\n\t\tmessage?: string): void\r\n\t{\r\n\t\tconst fileProgress: IFileProgress =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttype: null,\r\n\t\t\t\tmessage: null,\r\n\t\t\t\tvalue: event\r\n\t\t\t};\r\n\r\n\t\tswitch (event.type)\r\n\t\t{\r\n\t\t\tcase HttpEventType.Sent:\r\n\r\n\t\t\t\tfileProgress.type =\r\n\t\t\t\t\tFileProgressType.UploadStarted;\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t'Upload Started';\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HttpEventType.UploadProgress:\r\n\r\n\t\t\t\tfileProgress.type = FileProgressType\r\n\t\t\t\t\t.UploadProgress;\r\n\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t'Upload progress update';\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HttpEventType.DownloadProgress:\r\n\r\n\t\t\t\tfileProgress.type = FileProgressType\r\n\t\t\t\t\t.DownloadProgress;\r\n\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t'Download progress update';\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HttpEventType.ResponseHeader:\r\n\r\n\t\t\t\tfileProgress.type = FileProgressType\r\n\t\t\t\t\t.ResponseStatus;\r\n\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t`${event.status}:${event.statusText}`;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HttpEventType.Response:\r\n\r\n\t\t\t\tfileProgress.type = FileProgressType\r\n\t\t\t\t\t.Response;\r\n\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t'Response returned.';\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tfileProgress.type = FileProgressType\r\n\t\t\t\t\t.Unhandled;\r\n\r\n\t\t\t\tfileProgress.message = message ??\r\n\t\t\t\t\t'Unhandled http event';\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tsubscriber\r\n\t\t\t.next(fileProgress);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpEvent\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIQueryParameters\r\n} from '@api/interfaces/common/queryparameters.interface';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tIActionResponseDto\r\n} from '@api/interfaces/workflow/action-response.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFileCategory\r\n} from '@dynamicComponents/files/file-category/file-category';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEmbeddedFileEncoding\r\n} from '@shared/constants/enums/embedded-file-encoding.enum';\r\nimport {\r\n\tFileProgressType\r\n} from '@shared/constants/enums/file-progress-type.enum';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tIFileProgress\r\n} from '@shared/interfaces/files/file-progress.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tFileProgressReporter\r\n} from '@shared/services/files/file-progress-reporter';\r\nimport {\r\n\tObservable,\r\n\tSubscriber\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the logic and services for files.\r\n *\r\n * @export\r\n * @class\r\n */\r\n@Injectable(\r\n\t{\r\n\t\tprovidedIn: 'root'\r\n\t}\r\n)\r\nexport class FileService\r\n{\r\n\t/**\r\n\t * Initializes a enw instance of this class.\r\n\t *\r\n\t * @param {EntityInstanceApiService} instanceService\r\n\t * Provides access to the Entity Instances.\r\n\t * @param {EntityTypeApiService} typeApiService\r\n\t * Provides access to the entity types.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic instanceService: EntityInstanceApiService,\r\n\t\tprivate readonly typeApiService: EntityTypeApiService,\r\n\t\tprivate readonly definitionApiService: EntityDefinitionApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * The default entity instance type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic defaultTypeGroup: 'Files';\r\n\r\n\t/**\r\n\t * The default entity instance type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic defaultType: string = AppConstants\r\n\t\t.fileBaseType;\r\n\r\n\t/**\r\n\t * Uploads a new file and creates a file entity instance.\r\n\t *\r\n\t * @param {StorageType} storageType\r\n\t * The type of storage for the file.\r\n\t * @param {number} parentId\r\n\t * The id for the parent entity.\r\n\t * @param {string} parentTypeGroup\r\n\t * The entity type gorup of the parent.\r\n\t * @param {string} referenceUrl\r\n\t * The url to the file being refernced.\r\n\t * @param {EmbeddedFileEncoding} encoding\r\n\t * The type of encoding to use if embedding the file.\r\n\t * @param {File} file\r\n\t * The file to upload.\r\n\t * @param {string} name\r\n\t * Optional new file name.\r\n\t * @param {string} description\r\n\t * An optional file description.\r\n\t * @param {string} fileEntityType\r\n\t * The entity instance type of the file instance to create.\r\n\t * @param {string} fileEntityGroup\r\n\t * The entity instance type group of the file instance to create.\r\n\t * @param {string} fileSubType\r\n\t * The sub type of the file instance to create.\r\n\t * @param {FileState} fileState\r\n\t * The file state of the file instance to create.\r\n\t * @returns {Observable}\r\n\t * A observable progress report of the operation, including any returned\r\n\t * values, headers, body, statuses, etc...\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic addNewFile(\r\n\t\tstorageType: StorageType,\r\n\t\tparentId?: number,\r\n\t\tparentTypeGroup?: string,\r\n\t\treferenceUrl?: string,\r\n\t\tencoding?: EmbeddedFileEncoding,\r\n\t\tfile?: File,\r\n\t\tname?: string,\r\n\t\tdescription?: string,\r\n\t\tfileEntityType: string = this.defaultType,\r\n\t\tfileEntityGroup: string = this.defaultTypeGroup,\r\n\t\tfileSubType: string = null,\r\n\t\tfileState: FileState = FileState.Active):\r\n\t\tObservable\r\n\t{\r\n\t\tconst entityName: string = AnyHelper\r\n\t\t\t.isNullOrEmpty(name)\r\n\t\t\t? file?.name\r\n\t\t\t: name;\r\n\r\n\t\tconst fileInstance: IEntityInstanceDto =\r\n\t\t\tthis.generateEntity(\r\n\t\t\t\tstorageType,\r\n\t\t\t\tentityName,\r\n\t\t\t\tdescription,\r\n\t\t\t\treferenceUrl,\r\n\t\t\t\tencoding,\r\n\t\t\t\tfileEntityType,\r\n\t\t\t\tfileSubType,\r\n\t\t\t\tfileState);\r\n\r\n\t\tlet formData: FormData = new FormData();\r\n\t\tif (!AnyHelper.isNullOrEmpty(file))\r\n\t\t{\r\n\t\t\tformData\r\n\t\t\t\t.append(\r\n\t\t\t\t\t'newFile',\r\n\t\t\t\t\tfile);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tformData = null;\r\n\t\t}\r\n\r\n\t\treturn new Observable(\r\n\t\t\t(progressSubscriber: Subscriber) =>\r\n\t\t\t{\r\n\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: FileProgressType.CreatingEntity,\r\n\t\t\t\t\t\tmessage: 'Creating file entity'\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.instanceService\r\n\t\t\t\t\t.entityInstanceTypeGroup = fileEntityGroup;\r\n\r\n\t\t\t\tthis.instanceService\r\n\t\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\t\tfileInstance,\r\n\t\t\t\t\t\tparentTypeGroup,\r\n\t\t\t\t\t\tparentId)\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\t(id: number) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t.next(\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: FileProgressType.EntityCreated,\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'File entity created',\r\n\t\t\t\t\t\t\t\t\t\tvalue: id\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tconst reporter: FileProgressReporter =\r\n\t\t\t\t\t\t\t\tnew FileProgressReporter();\r\n\r\n\t\t\t\t\t\t\tthis.instanceService\r\n\t\t\t\t\t\t\t\t.entityInstanceTypeGroup = fileEntityGroup;\r\n\r\n\t\t\t\t\t\t\tthis.instanceService\r\n\t\t\t\t\t\t\t\t.uploadFile(\r\n\t\t\t\t\t\t\t\t\tid,\r\n\t\t\t\t\t\t\t\t\tformData)\r\n\t\t\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tnext(event:\r\n\t\t\t\t\t\t\t\t\t\t\tHttpEvent)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\treporter.reportEvent(\r\n\t\t\t\t\t\t\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber);\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tasync error(error: any)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tFileProgressType.Error,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'An error occured. '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'See value.',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: error\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.complete();\r\n\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tcomplete()\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif (!progressSubscriber.closed)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFileProgressType\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.Complete,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'File action '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'completed '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'successfully'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.complete();\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: FileProgressType.Error,\r\n\t\t\t\t\t\t\tmessage: 'Error creating entity. No file was '\r\n\t\t\t\t\t\t\t\t+ 'uploaded. See value for error.',\r\n\t\t\t\t\t\t\tvalue: error\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tprogressSubscriber.complete();\r\n\t\t\t\t\t\tprogressSubscriber.unsubscribe();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a file.\r\n\t *\r\n\t * @param {number} id\r\n\t * The file id.\r\n\t * @param {string} typeGroup\r\n\t * The entity type group of the file.\r\n\t * @param {string} downloadAction\r\n\t * The download action name.\r\n\t * @returns {Observable>}\r\n\t * An observable of Http events which, if successful, will\r\n\t * complete with a response event containing a file.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic download(\r\n\t\tid: number,\r\n\t\ttypeGroup: string,\r\n\t\tdownloadAction: string = AppConstants\r\n\t\t\t.workflowActions.fileDownload): Observable>\r\n\t{\r\n\t\tthis.instanceService\r\n\t\t\t.entityInstanceTypeGroup = typeGroup;\r\n\r\n\t\treturn this.instanceService\r\n\t\t\t.downloadFile(\r\n\t\t\t\tid,\r\n\t\t\t\tdownloadAction);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a list of all available file type.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The resulting set of entity types.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic async getSupportedFileTypes(\r\n\t\tfileParentEntityDefinition: IEntityDefinition): Promise\r\n\t{\r\n\t\tconst supportedTypes: string[] =\r\n\t\t\tnew EntityDefinition(fileParentEntityDefinition)\r\n\t\t\t\t.supportedChildTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(type: string) =>\r\n\t\t\t\t\t\ttype === AppConstants.fileBaseType\r\n\t\t\t\t\t\t|| type.startsWith(`${AppConstants.fileBaseType}.`));\r\n\r\n\t\tconst fileEntityTypes: IEntityType[] = await this.typeApiService\r\n\t\t\t.query(\r\n\t\t\t\t`name.StartsWith('${AppConstants.fileBaseType}') eq true`,\r\n\t\t\t\t'name');\r\n\r\n\t\treturn fileEntityTypes\r\n\t\t\t.filter(\r\n\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\tsupportedTypes.includes(entityType.name));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the categories/types the user is authorized to access\r\n\t * (read and download).\r\n\t *\r\n\t * @param {number} parentId\r\n\t * the files parent.\r\n\t * @param {string} parentTypeGroup\r\n\t * the files parent type group.\r\n\t * @returns {Promise}\r\n\t * The file categories the user is authorized to read and download.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic async getAuthorizedCategories(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tfileParentEntityDefinition: IEntityDefinition): Promise\r\n\t{\r\n\t\tconst categories: FileCategory[] = [];\r\n\r\n\t\tconst permissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait this.getSupportedFilePermissions(\r\n\t\t\t\tparentId,\r\n\t\t\t\tparentTypeGroup,\r\n\t\t\t\tfileParentEntityDefinition);\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(permissions))\r\n\t\t{\r\n\t\t\treturn categories;\r\n\t\t}\r\n\r\n\t\tconst typeFilter: string =\r\n\t\t\tApiFilterHelper.getEnumerationFilter(\r\n\t\t\t\tAppConstants.commonProperties.typeId,\r\n\t\t\t\tpermissions.map(\r\n\t\t\t\t\t(permission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\t\t`${permission.entityTypeId}`));\r\n\r\n\t\tconst definitions: EntityDefinition[] =\r\n\t\t\t(await this.definitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\ttypeFilter,\r\n\t\t\t\t\t'Id'))\r\n\t\t\t\t.map(dto => new EntityDefinition(dto));\r\n\r\n\t\tpermissions\r\n\t\t\t.forEach((permission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tconst matchingDefinition: EntityDefinition =\r\n\t\t\t\t\tdefinitions.find(item =>\r\n\t\t\t\t\t\titem.typeId === permission.entityTypeId);\r\n\r\n\t\t\t\tcategories\r\n\t\t\t\t\t.push(\r\n\t\t\t\t\t\tnew FileCategory(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: permission.entityTypeId,\r\n\t\t\t\t\t\t\t\tname: permission.entityTypeName,\r\n\t\t\t\t\t\t\t\tgroup: permission.entityTypeGroup\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tmatchingDefinition,\r\n\t\t\t\t\t\t\tpermission));\r\n\t\t\t});\r\n\r\n\t\treturn Promise\r\n\t\t\t.resolve(categories);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the categories/types the user is authorized to access\r\n\t * (read and download).\r\n\t *\r\n\t * @param {number} parentId\r\n\t * the files parent.\r\n\t * @param {string} parentTypeGroup\r\n\t * the files parent type group.\r\n\t * * @param {IEntityDefinition} entityDefinition\r\n\t * The parent entity definition.\r\n\t * @returns {Promise}\r\n\t * The file categories the user is authorized to read and download.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic async getSupportedFilePermissions(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tentityDefinition: IEntityDefinition):\r\n\t\tPromise\r\n\t{\r\n\t\tconst availableTypes: IEntityType[] =\r\n\t\t\tawait this.getSupportedFileTypes(entityDefinition);\r\n\r\n\t\tthis.instanceService.entityInstanceTypeGroup = parentTypeGroup;\r\n\r\n\t\tconst permissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait this.instanceService\r\n\t\t\t\t.getHierarchyPermissions(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tavailableTypes.map(\r\n\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\tentityType.group));\r\n\r\n\t\treturn permissions\r\n\t\t\t.filter(\r\n\t\t\t\t(definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\tdefinition.entityTypeName === AppConstants.fileBaseType\r\n\t\t\t\t\t|| definition.entityTypeName\r\n\t\t\t\t\t\t.startsWith(`${AppConstants.fileBaseType}.`))\r\n\t\t\t.map(permission =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\t...permission,\r\n\t\t\t\t\tentityType: availableTypes\r\n\t\t\t\t\t\t.find((entityType: IEntityType) =>\r\n\t\t\t\t\t\t\tentityType.id === permission.entityTypeId)\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a list of all files.\r\n\t *\r\n\t * @param {string} filter\r\n\t * A string representing the filter for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order to list the files.\r\n\t * @param {number} limit\r\n\t * A number representing the top limit count.\r\n\t * @param {number} offset\r\n\t * A number representing the skip offset (used for paging).\r\n\t * @param {number} last\r\n\t * A number representing the last count.\r\n\t * @param {number} parentId\r\n\t * The id of the parent entity that the file belongs to.\r\n\t * @param {string} fileTypeGroup\r\n\t * The type group of the file. The defaut is \"Files.\"\r\n\t * @returns {Promise}\r\n\t * The resulting file instances form the query.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic getFiles(\r\n\t\tparameters: IQueryParameters,\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tfileTypeGroups?: string[]): Observable\r\n\t{\r\n\t\tthis.instanceService\r\n\t\t\t.entityInstanceTypeGroup = parentTypeGroup;\r\n\r\n\t\tif (AnyHelper.isNull(fileTypeGroups))\r\n\t\t{\r\n\t\t\treturn this.getFilesOfAllTypes(\r\n\t\t\t\tparameters,\r\n\t\t\t\tparentId,\r\n\t\t\t\tparentTypeGroup);\r\n\t\t}\r\n\r\n\t\tconst observable: Observable =\r\n\t\t\tnew Observable(\r\n\t\t\t\t(subscriber: Subscriber) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet count: number = 0;\r\n\r\n\t\t\t\t\tfileTypeGroups\r\n\t\t\t\t\t\t.forEach(\r\n\t\t\t\t\t\t\t(typeGroup: string) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.instanceService\r\n\t\t\t\t\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\t\t\t\t\tparentId,\r\n\t\t\t\t\t\t\t\t\t\tparameters.filter,\r\n\t\t\t\t\t\t\t\t\t\tparameters.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tparameters.offset,\r\n\t\t\t\t\t\t\t\t\t\tparameters.limit,\r\n\t\t\t\t\t\t\t\t\t\ttypeGroup)\r\n\t\t\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\t\t\t(instances: IEntityInstanceDto[]) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tsubscriber.next(instances);\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.catch(\r\n\t\t\t\t\t\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tsubscriber.error(error);\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.finally(\r\n\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif (++count ===\r\n\t\t\t\t\t\t\t\t\t\t\t\tfileTypeGroups.length)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tsubscriber.complete();\r\n\t\t\t\t\t\t\t\t\t\t\t\tsubscriber.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\t/**\r\n\t * Update a file.\r\n\t *\r\n\t * @param {IFileEntity} modifiedEntity\r\n\t * The modified entity.\r\n\t * @param {string} typeGroup\r\n\t * The entity type group.\r\n\t * @param {File} file\r\n\t * An optional replacement file\r\n\t * @param {boolean} storageTypeChanged\r\n\t * An optional value indicating whetherthe storage type has changed.\r\n\t * @param {boolean} fileChanged\r\n\t * An optional value indicating whetherthe storage type has changed.\r\n\t * @memberof FileService\r\n\t * @returns {Observable}\r\n\t * An observable of file progress with http events.\r\n\t */\r\n\tpublic updateFile(\r\n\t\tmodifiedEntity: IFileEntity,\r\n\t\ttypeGroup: string,\r\n\t\tfile?: File,\r\n\t\tstorageTypeChanged: boolean = false,\r\n\t\tfileChanged: boolean = false): Observable\r\n\t{\r\n\t\tconst successMessage: string =\r\n\t\t\t'File action completed successfully';\r\n\t\tlet formData: FormData = new FormData();\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(file))\r\n\t\t{\r\n\t\t\tformData\r\n\t\t\t\t.append(\r\n\t\t\t\t\t'updateFile',\r\n\t\t\t\t\tfile);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tformData = null;\r\n\t\t}\r\n\r\n\t\treturn new Observable(\r\n\t\t\t(progressSubscriber: Subscriber) =>\r\n\t\t\t{\r\n\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FileProgressType.UpdatingEntity,\r\n\t\t\t\t\tmessage: 'Updating file Data.'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.instanceService\r\n\t\t\t\t\t.entityInstanceTypeGroup = typeGroup;\r\n\r\n\t\t\t\tthis.instanceService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tmodifiedEntity.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: modifiedEntity.id,\r\n\t\t\t\t\t\t\tresourceIdentifier: modifiedEntity\r\n\t\t\t\t\t\t\t\t.resourceIdentifier,\r\n\t\t\t\t\t\t\tversionNumber: modifiedEntity.versionNumber,\r\n\t\t\t\t\t\t\tdata: modifiedEntity.data,\r\n\t\t\t\t\t\t\tentityType: modifiedEntity.entityType,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\t(response: object) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t.next(\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: FileProgressType.EntityUpdated,\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'File data updated.',\r\n\t\t\t\t\t\t\t\t\t\tvalue: response\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tconst reporter: FileProgressReporter =\r\n\t\t\t\t\t\t\t\tnew FileProgressReporter();\r\n\r\n\t\t\t\t\t\t\tif (!fileChanged\r\n\t\t\t\t\t\t\t\t&& !storageTypeChanged)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: FileProgressType.Complete,\r\n\t\t\t\t\t\t\t\t\t\tmessage: successMessage\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tprogressSubscriber.complete();\r\n\t\t\t\t\t\t\t\tprogressSubscriber.unsubscribe();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst instanceService:\r\n\t\t\t\t\t\t\t\t\tEntityInstanceApiService =\r\n\t\t\t\t\t\t\t\t\t\tthis.instanceService;\r\n\t\t\t\t\t\t\t\tthis.instanceService\r\n\t\t\t\t\t\t\t\t\t.entityInstanceTypeGroup = typeGroup;\r\n\t\t\t\t\t\t\t\tthis.instanceService\r\n\t\t\t\t\t\t\t\t\t.uploadFile(\r\n\t\t\t\t\t\t\t\t\t\tmodifiedEntity.id,\r\n\t\t\t\t\t\t\t\t\t\tformData)\r\n\t\t\t\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tnext(event: HttpEvent<\r\n\t\t\t\t\t\t\t\t\t\t\t\tIActionResponseDto>)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\treporter.reportEvent(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber);\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\terror(error: any)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFileProgressType\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.Error,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'An error occured. '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'See value.',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: error\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.complete();\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\tcomplete()\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Refresh the cache for this\r\n\t\t\t\t\t\t\t\t\t\t\t\t// uploaded instance.\r\n\t\t\t\t\t\t\t\t\t\t\t\tinstanceService\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeGroup;\r\n\t\t\t\t\t\t\t\t\t\t\t\tinstanceService\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.get(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodifiedEntity.id);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!progressSubscriber.closed)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFileProgressType\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.Complete,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsuccessMessage\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.complete();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprogressSubscriber\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.unsubscribe();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tprogressSubscriber.next(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FileProgressType.Error,\r\n\t\t\t\t\t\t\t\tmessage: 'Error modifying entity. '\r\n\t\t\t\t\t\t\t\t\t+ 'See value for error.',\r\n\t\t\t\t\t\t\t\tvalue: error\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tprogressSubscriber.complete();\r\n\t\t\t\t\t\tprogressSubscriber.unsubscribe();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Changes a file's status to \"Removed\"\r\n\t *\r\n\t * @param {IFileEntity} fileEntity\r\n\t * the file entity to remove.\r\n\t * @param {string} reason\r\n\t * The reason for the removal.\r\n\t * @param {string} typeGroup\r\n\t * The entity type group.\r\n\t * @returns {Observable}\r\n\t * An observable that reporst the removal progress.\r\n\t * @memberof FileService\r\n\t */\r\n\tpublic remove(\r\n\t\tfileEntity: IFileEntity,\r\n\t\treason: string,\r\n\t\ttypeGroup: string): Observable\r\n\t{\r\n\t\tfileEntity.data\r\n\t\t\t.status\r\n\t\t\t.state = FileState.Removed;\r\n\r\n\t\tfileEntity.data\r\n\t\t\t.status\r\n\t\t\t.stateChangeReason = reason;\r\n\r\n\t\treturn this.updateFile(\r\n\t\t\tfileEntity,\r\n\t\t\ttypeGroup);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all file entity types (categories) for supplied parent.\r\n\t *\r\n\t * @param {IQueryParameters} parameters\r\n\t * The query parameters for the search.\r\n\t * @param {number} parentId\r\n\t * The id of the file's parent entity\r\n\t * @param {string} parentTypeGroup\r\n\t * The entity type group of the file's parent.\r\n\t * @memberof FileService\r\n\t */\r\n\tprivate getFilesOfAllTypes(\r\n\t\tparameters: IQueryParameters,\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string): Observable\r\n\t{\r\n\t\tthis.instanceService\r\n\t\t\t.entityInstanceTypeGroup = parentTypeGroup;\r\n\r\n\t\treturn new Observable(\r\n\t\t\t(subscriber: Subscriber) =>\r\n\t\t\t{\r\n\t\t\t\tthis.instanceService\r\n\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\tparentId,\r\n\t\t\t\t\t\tparameters.filter,\r\n\t\t\t\t\t\tparameters.orderBy,\r\n\t\t\t\t\t\tparameters.offset,\r\n\t\t\t\t\t\tparameters.limit,\r\n\t\t\t\t\t\tnull)\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\t(instances: IEntityInstanceDto[]) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsubscriber.next(instances);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.catch(\r\n\t\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsubscriber.error(error);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.finally(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsubscriber.complete();\r\n\t\t\t\t\t\t\tsubscriber.unsubscribe();\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a file entity instance.\r\n\t *\r\n\t * @param {StorageType} storageType\r\n\t * The type of storage for the file.\r\n\t * @param {string} name\r\n\t * Optional new file name.\r\n\t * @param {string} description\r\n\t * An optional file description.\r\n\t * @param {string} referenceUrl\r\n\t * The url to the file being refernced.\r\n\t * @param {EmbeddedFileEncoding} encoding\r\n\t * The type of encoding to use if embedding the file.\r\n\t * @param {string} fileEntityType\r\n\t * The entity instance type of the file instance to create.\r\n\t * @param {string} subType\r\n\t * The subtype of the file instance to create.\r\n\t * @param {FileState} fileState\r\n\t * The file state of the file instance to create.\r\n\t * @returns {IEntityInstanceDto}\r\n\t * An instance of the file type requested.\r\n\t * @memberof FileService\r\n\t */\r\n\tprivate generateEntity(\r\n\t\tstorageType: StorageType,\r\n\t\tname: string,\r\n\t\tdescription: string,\r\n\t\treferenceUrl?: string,\r\n\t\tencoding?: EmbeddedFileEncoding,\r\n\t\tfileEntityType: string = this.defaultType,\r\n\t\tsubType: string = null,\r\n\t\tfileState: FileState = FileState.Active): IEntityInstanceDto\r\n\t{\r\n\t\tswitch (storageType)\r\n\t\t{\r\n\t\t\tcase StorageType.Persisted:\r\n\t\t\t\treturn \r\n\t\t\t\t{\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\tversionNumber: 1,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\tsubType: subType,\r\n\t\t\t\t\t\tdescription: description,\r\n\t\t\t\t\t\tstatus: {\r\n\t\t\t\t\t\t\tstate: fileState\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstorage: {\r\n\t\t\t\t\t\t\tstorageType: storageType\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tentityType: fileEntityType\r\n\t\t\t\t};\r\n\t\t\tcase StorageType.Embedded:\r\n\t\t\t\treturn \r\n\t\t\t\t{\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\tversionNumber: 1,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\tsubType: subType,\r\n\t\t\t\t\t\tdescription: description,\r\n\t\t\t\t\t\tstatus: {\r\n\t\t\t\t\t\t\tstate: fileState\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstorage: {\r\n\t\t\t\t\t\t\tstorageType: storageType,\r\n\t\t\t\t\t\t\tencoding: encoding\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tentityType: fileEntityType\r\n\t\t\t\t};\r\n\t\t\tcase StorageType.Referenced:\r\n\t\t\t\treturn \r\n\t\t\t\t{\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\tversionNumber: 1,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\tsubType: subType,\r\n\t\t\t\t\t\tdescription: description,\r\n\t\t\t\t\t\tstatus: {\r\n\t\t\t\t\t\t\tstate: fileState\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstorage: {\r\n\t\t\t\t\t\t\tstorageType: storageType,\r\n\t\t\t\t\t\t\tlocation: referenceUrl\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tentityType: fileEntityType\r\n\t\t\t\t};\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * The emdedded file encoding types supported.\r\n */\r\nexport enum EmbeddedFileEncoding\r\n{\r\n\t/**\r\n\t * A Base64 encoding type.\r\n\t */\r\n\tBase64 = 'Base64'\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{ message }}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{ message }}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{ message }}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{ errorMessage }}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-file-progress',\r\n\ttemplateUrl: './file-progress.component.html',\r\n\tstyleUrls: ['./file-progress.component.scss']\r\n})\r\n\r\n/**\r\n * A class for displaying server operation progress\r\n * on files.\r\n */\r\nexport class FileProgressComponent\r\n{\r\n\t/**\r\n\t * Gets or sets a header message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileProgressComponent\r\n\t */\r\n\t@Input()\r\n\tpublic header: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display Mode\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileProgressComponent\r\n\t */\r\n\t@Input()\r\n\tpublic mode: string;\r\n\r\n\t/**\r\n\t * Gets or sets the progress amount\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FileProgressComponent\r\n\t */\r\n\t@Input()\r\n\tpublic progress: number;\r\n\r\n\t/**\r\n\t * Gets or sets the progress message\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileProgressComponent\r\n\t */\r\n\t@Input()\r\n\tpublic message: string;\r\n\r\n\t/**\r\n\t * Gets or sets the error message\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FileProgressComponent\r\n\t */\r\n\t@Input()\r\n\tpublic errorMessage: string;\r\n}","
    \r\n\tNo available file types to add.\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tAdd: File\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tDrag the file here to upload\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tA file is required.\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tA valid url is required.\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t.{{extension}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{requiredValueMessage}}\r\n\t\t\t\t
    \r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    1\"\r\n\t\t\t\tclass=\"ui-g-12 custom-field-wrapper\">\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{requiredValueMessage}}\r\n\t\t\t\t
    \r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpProgressEvent,\r\n\tHttpResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup,\r\n\tValidationErrors,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFileCategory\r\n} from '@dynamicComponents/files/file-category/file-category';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEmbeddedFileEncoding\r\n} from '@shared/constants/enums/embedded-file-encoding.enum';\r\nimport {\r\n\tFileProgressType\r\n} from '@shared/constants/enums/file-progress-type.enum';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIFileProgress\r\n} from '@shared/interfaces/files/file-progress.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tFileService\r\n} from '@shared/services/files/file.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tWorkItemService\r\n} from '@workItems/services/work-item.service';\r\nimport {\r\n\tFileUpload\r\n} from 'primeng/fileupload';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-add-file',\r\n\ttemplateUrl: './add-file.component.html',\r\n\tstyleUrls: ['./add-file.component.scss']\r\n})\r\n\r\n/**\r\n * A component for adding files.\r\n *\r\n * @export\r\n * @class AddFileComponent\r\n */\r\nexport class AddFileComponent\r\n\textends FileDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of add document component.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * Handles activities and banners.\r\n\t * @param {FileService} fileService\r\n\t * A file service for working with files.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {WorkItemService} workItemService\r\n\t * The work item service used to check for file associated work items.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector used to update the view.\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly activityService: ActivityService,\r\n\t\tprivate readonly fileService: FileService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic workItemService: WorkItemService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the common list context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\t@Input()\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the file added event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\t@Output()\r\n\tpublic added: EventEmitter = new EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the file uploader.\r\n\t *\r\n\t * @type {FileUpload}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\t@ViewChild('fileUploader')\r\n\tpublic fileUploader: FileUpload;\r\n\r\n\t/**\r\n\t * Gets or sets the percentage amount of progress made\r\n\t * towards completing the add file task.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic progressPercent: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the display mode for the progress component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic progressMode: string = 'progressBar';\r\n\r\n\t/**\r\n\t * Gets or sets the display message for the progress component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic progressMessage: string = 'Starting upload...';\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the\r\n\t * add document form should display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic addDocumentVisible: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the list of storage types.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic storageTypes: object =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Save to cloud/disk',\r\n\t\t\t\tvalue: StorageType.Persisted,\r\n\t\t\t\ticon: 'fa fa-cloud',\r\n\t\t\t\ttooltip: 'Persisted'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Referenced',\r\n\t\t\t\tvalue: StorageType.Referenced,\r\n\t\t\t\ticon: 'fa fa-link',\r\n\t\t\t\ttooltip: 'Referenced'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Embedded',\r\n\t\t\t\tvalue: StorageType.Embedded,\r\n\t\t\t\ticon: 'fa fa-suitcase',\r\n\t\t\t\ttooltip: 'Embedded'\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the form control for the name field.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic nameControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(\r\n\t\t\tAppConstants.empty,\r\n\t\t\t[\r\n\t\t\t\tValidators.required,\r\n\t\t\t\tValidators.maxLength(128)\r\n\t\t\t]);\r\n\r\n\t/**\r\n\t * Gets or sets the form control for the url field\r\n\t * for a referenced file.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic urlControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(\r\n\t\t\tAppConstants.empty,\r\n\t\t\tValidators.pattern('^(http|https)://.+/.+$'));\r\n\r\n\t/**\r\n\t * Gets or sets the form control for the category field.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic categoryControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(\r\n\t\t\tAppConstants.empty,\r\n\t\t\tValidators.required);\r\n\r\n\t/**\r\n\t * Gets or sets the form control for the category field.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic subTypeControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(AppConstants.empty);\r\n\r\n\t/**\r\n\t * Gets or sets the value for the document description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic description: string;\r\n\r\n\t/**\r\n\t * The file extensions\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic extension: string = this.defaultFileExtension;\r\n\r\n\t/**\r\n\t * The subtype options\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic subTypeOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the Form group for the component\r\n\t * that need validation.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic addForm: UntypedFormGroup =\r\n\t\tnew UntypedFormGroup(\r\n\t\t\t{\r\n\t\t\t\t'nameControl': this.nameControl,\r\n\t\t\t\t'urlControl': this.urlControl,\r\n\t\t\t\t'categoryControl': this.categoryControl,\r\n\t\t\t\t'subTypeControl': this.subTypeControl\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalidators:\r\n\t\t\t\t\t(formGroup: UntypedFormGroup): ValidationErrors | null =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst url = formGroup\r\n\t\t\t\t\t\t\t.get('urlControl');\r\n\r\n\t\t\t\t\t\tswitch (this.storageType)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcase StorageType.Persisted:\r\n\t\t\t\t\t\t\tcase StorageType.Embedded:\r\n\r\n\t\t\t\t\t\t\t\turl.setErrors(null, {emitEvent: true});\r\n\r\n\t\t\t\t\t\t\t\tif (this.fileUploader?.files?.length !== 1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tfileRequired: true\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase StorageType.Referenced:\r\n\t\t\t\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(url.value))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\turl.setErrors(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\temitEvent: true\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t/**\r\n\t * Gets the entity group type of the selected document.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic get documentGroup(): string\r\n\t{\r\n\t\treturn this.categories\r\n\t\t\t.find((element: FileCategory) =>\r\n\t\t\t\telement.value === this.categoryControl.value)\r\n\t\t\t.entityType\r\n\t\t\t.group;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the storage type of the selected document.\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic get storageType(): StorageType\r\n\t{\r\n\t\treturn this._storageType;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the storage type of the selected document.\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic set storageType(value: StorageType)\r\n\t{\r\n\t\tthis._storageType = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the timer used to simulate progress\r\n\t * when extra large files are taking too long.\r\n\t *\r\n\t * @private\r\n\t * @type {any}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate fakeProgressTimer: any;\r\n\r\n\t/**\r\n\t * Gets or sets the local variable for the storage type.\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate _storageType: StorageType =\r\n\t\tStorageType.Persisted;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will validate the form on initial load.\r\n\t *\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.addForm.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file selected event.\r\n\t *\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic fileSelected(): void\r\n\t{\r\n\t\tif (this.nameControl.invalid)\r\n\t\t{\r\n\t\t\tthis.setName(\r\n\t\t\t\tthis.fileUploader\r\n\t\t\t\t\t.files[0]\r\n\t\t\t\t\t.name);\r\n\t\t}\r\n\r\n\t\tconst extension = FileHelper\r\n\t\t\t.findKnownExtension(\r\n\t\t\t\tthis.fileUploader\r\n\t\t\t\t\t.files[0].name);\r\n\r\n\t\tthis.extension = AnyHelper.isNull(extension)\r\n\t\t\t? this.defaultFileExtension\r\n\t\t\t: extension;\r\n\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the referenced file url changed event.\r\n\t *\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic fileUrlChanged(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.nameControl.value))\r\n\t\t{\r\n\t\t\tconst name: string =\r\n\t\t\t\tthis.tryGetFileName(\r\n\t\t\t\t\tthis.urlControl.value);\r\n\r\n\t\t\tthis.setName(name);\r\n\t\t}\r\n\r\n\t\tconst extension = FileHelper\r\n\t\t\t.findKnownExtension(this.urlControl.value);\r\n\r\n\t\tthis.extension = AnyHelper.isNull(extension)\r\n\t\t\t? this.defaultFileExtension\r\n\t\t\t: extension;\r\n\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file category changed event.\r\n\t * @param {string} event\r\n\t * The event\r\n\t * @async\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic async categoryChanged(event: any): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\tconst systemEntityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\tconst fileEntity: string =\r\n\t\t\tevent.value;\r\n\t\tconst systemSettings: any =\r\n\t\t\tsystemEntityInstance\r\n\t\t\t\t.data\r\n\t\t\t\t.settings\r\n\t\t\t\t.fileSubtypes;\r\n\r\n\t\tconst matchingFileSubtype: any =\r\n\t\t\tsystemSettings.find((item: any) =>\r\n\t\t\t\titem.fileType === fileEntity);\r\n\r\n\t\tthis.subTypes =\r\n\t\t\tmatchingFileSubtype?.subType\r\n\t\t\t\t?? this.categories\r\n\t\t\t\t\t.find((item: any) => item.entityType.name\r\n\t\t\t\t\t\t=== fileEntity)?.subTypes\r\n\t\t\t\t?? [];\r\n\r\n\t\tthis.subTypeOptions = [];\r\n\r\n\t\tthis.subTypes.forEach(\r\n\t\t\t(subType: string) =>\r\n\t\t\t{\r\n\t\t\t\tif(!AnyHelper.isNullOrEmpty(subType))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.subTypeOptions.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: subType,\r\n\t\t\t\t\t\t\tvalue: subType\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tif (this.subTypes.length === 0)\r\n\t\t{\r\n\t\t\tthis.subTypeControl.reset();\r\n\t\t\tthis.subTypeControl.clearValidators();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.subTypeControl.addValidators(Validators.required);\r\n\t\t}\r\n\r\n\t\tthis.subTypeControl.updateValueAndValidity();\r\n\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if there are file categories for the entity in context.\r\n\t *\r\n\t * @memberof AddFileComponent\r\n\t * @returns {boolean}\r\n\t * The result of the check.\r\n\t */\r\n\tpublic hasCategories(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNull(this.categories)\r\n\t\t\t&& this.categories.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if a form field is valid.\r\n\t *\r\n\t * @param {string} controlName\r\n\t * The name of the filed to check.\r\n\t * @memberof AddFileComponent\r\n\t * @returns {boolean}\r\n\t * The result of the check. True if the field is invalid.\r\n\t */\r\n\tpublic invalid(controlName: string): boolean\r\n\t{\r\n\t\tconst control: any = this.addForm.get(controlName);\r\n\r\n\t\treturn control.invalid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the add file button click event and\r\n\t * attempts to add a new file.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tpublic async onAddClicked(): Promise\r\n\t{\r\n\t\tif (this.addForm.invalid)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet parentId: number;\r\n\t\tlet parentTypeGroup: string;\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tparentId = this.context.source.id;\r\n\t\t\tparentTypeGroup = this.context.source.entityTypeGroup;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.addDocumentVisible = false;\r\n\t\tthis.progressVisible = true;\r\n\r\n\t\tconst file: File =\r\n\t\t\tthis.storageType !== StorageType.Referenced\r\n\t\t\t\t? this.fileUploader.files[0]\r\n\t\t\t\t: null;\r\n\r\n\t\tconst encoding: EmbeddedFileEncoding =\r\n\t\t\tthis.storageType === StorageType.Embedded\r\n\t\t\t\t? EmbeddedFileEncoding.Base64\r\n\t\t\t\t: null;\r\n\r\n\t\tconst fileRequiresReview: boolean =\r\n\t\t\tawait this.workItemService.policyFileRequiresReview(\r\n\t\t\t\tparentId,\r\n\t\t\t\tparentTypeGroup,\r\n\t\t\t\tthis.categoryControl.value,\r\n\t\t\t\tthis.subTypeControl.value);\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\t\tnew Promise((resolve, reject) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.fileService\r\n\t\t\t\t\t\t.addNewFile(\r\n\t\t\t\t\t\t\tthis.storageType,\r\n\t\t\t\t\t\t\tparentId,\r\n\t\t\t\t\t\t\tparentTypeGroup,\r\n\t\t\t\t\t\t\tthis.urlControl.value,\r\n\t\t\t\t\t\t\tencoding,\r\n\t\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\t\tthis.nameControl.value,\r\n\t\t\t\t\t\t\tthis.description,\r\n\t\t\t\t\t\t\tthis.categoryControl.value,\r\n\t\t\t\t\t\t\tthis.documentGroup,\r\n\t\t\t\t\t\t\tthis.subTypeControl.value,\r\n\t\t\t\t\t\t\tfileRequiresReview\r\n\t\t\t\t\t\t\t\t? FileState.Pending\r\n\t\t\t\t\t\t\t\t: FileState.Active)\r\n\t\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t\t(progress: IFileProgress) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.handleProgress(progress);\r\n\r\n\t\t\t\t\t\t\t\t\tif (progress.type ===\r\n\t\t\t\t\t\t\t\t\t\tFileProgressType.Error)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treject(progress.message);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (progress.type ===\r\n\t\t\t\t\t\t\t\t\t\tFileProgressType.Complete)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.context.source)\r\n\t\t\t\t\t\t\t\t\t\t\t.RefreshBusinessRules();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror:\r\n\t\t\t\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.displayError(error);\r\n\t\t\t\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tcomplete:\r\n\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t`Adding file ${this.nameControl.value}`,\r\n\t\t\t\t`Added file ${this.nameControl.value}`,\r\n\t\t\t\t`${this.nameControl.value} was successfully added.`,\r\n\t\t\t\t`Error adding ${this.nameControl.value}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the name and extenion.\r\n\t *\r\n\t * @private\r\n\t * @param {string} fileName\r\n\t * The name to set.\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate setName(fileName: string): void\r\n\t{\r\n\t\tthis.nameControl.setValue(\r\n\t\t\tfileName.split('.')[0]);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles Progress responses.\r\n\t *\r\n\t * @private\r\n\t * @param {IFileProgress} progress\r\n\t * The file progress to handle\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate handleProgress(\r\n\t\tprogress: IFileProgress): void\r\n\t{\r\n\t\tconst startingUpload: string = 'Starting upload...';\r\n\t\tconst uploading: string = 'Uploading...';\r\n\r\n\t\tswitch (progress.type)\r\n\t\t{\r\n\t\t\tcase FileProgressType.CreatingEntity:\r\n\t\t\t\tthis.progressAmount = 1;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tthis.progressMessage = startingUpload;\r\n\t\t\t\tthis.fakeProgress(\r\n\t\t\t\t\t'start',\r\n\t\t\t\t\tfalse);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.EntityCreated:\r\n\t\t\t\tthis.fakeProgress(\r\n\t\t\t\t\t'stop',\r\n\t\t\t\t\tfalse);\r\n\t\t\t\tthis.progressAmount += 67;\r\n\t\t\t\tthis.progressMessage = startingUpload;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.UploadStarted:\r\n\t\t\t\tthis.progressMode = 'progressBar';\r\n\t\t\t\tthis.progressAmount += 33;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tthis.progressMessage = uploading;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.UploadProgress:\r\n\t\t\t\tthis.progressMode = 'progressBar';\r\n\t\t\t\tthis.progressMessage = uploading;\r\n\r\n\t\t\t\tconst progressEvent: HttpProgressEvent\r\n\t\t\t\t\t= progress.value;\r\n\r\n\t\t\t\tconst amountToAdd: number = Math\r\n\t\t\t\t\t.round((progressEvent.loaded / progressEvent.total) * 100);\r\n\r\n\t\t\t\tthis.progressAmount = 100 + amountToAdd;\r\n\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\r\n\t\t\t\tif (progressEvent.loaded === progressEvent.total)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.fakeProgress('start');\r\n\r\n\t\t\t\t\tthis.progressMode = 'progressBar';\r\n\t\t\t\t\tthis.progressMessage = 'Finishing up...';\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.ResponseStatus:\r\n\t\t\t\tthis.fakeProgress('stop');\r\n\t\t\t\tthis.progressAmount += 34;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Response:\r\n\t\t\t\tconst response: HttpResponse\r\n\t\t\t\t\t= progress.value;\r\n\t\t\t\tthis.progressAmount += 33;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tif (response.ok)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.fakeProgress('stop');\r\n\t\t\t\t\tthis.added.emit(response.body.value);\r\n\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.progressMode = 'done';\r\n\t\t\t\t\t\tthis.progressMessage = 'Done!';\r\n\t\t\t\t\t},\r\n\t\t\t\t\t500);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Error:\r\n\t\t\t\tthis.fakeProgress('stop');\r\n\t\t\t\tthis.displayError(progress.message);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Complete:\r\n\t\t\t\tthis.fakeProgress('stop');\r\n\t\t\t\tthis.progressAmount = 300;\r\n\t\t\t\tthis.calculateProgressPercent();\r\n\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\tthis.viewModes.list);\r\n\t\t\t\t},\r\n\t\t\t\t3000);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the progress component display of any errors\r\n\t *\r\n\t * @private\r\n\t * @param {string} message\r\n\t * The error message to didplay.\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate displayError(\r\n\t\tmessage: string): void\r\n\t{\r\n\t\tthis.progressMessage = null;\r\n\t\tthis.errorMessage = message;\r\n\t\tthis.progressMode = 'error';\r\n\t\tthis.fakeProgress('stop');\r\n\t}\r\n\r\n\t/**\r\n\t * Attempts to get the filename from a url.\r\n\t *\r\n\t * @private\r\n\t * @param {string} url\r\n\t * The url of the file.\r\n\t * @memberof AddFileComponent\r\n\t * @return {string}\r\n\t * The file name found or null.\r\n\t */\r\n\tprivate tryGetFileName(url: string): string\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\treturn url\r\n\t\t\t\t.split('?')[0]\r\n\t\t\t\t.split('/')\r\n\t\t\t\t.reverse()[0];\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates an overall progress of the tasks involved\r\n\t * in adding a file/document.\r\n\t *\r\n\t * @private\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate calculateProgressPercent(): void\r\n\t{\r\n\t\tthis.progressPercent = Math.round((this.progressAmount / 300) * 100 );\r\n\t}\r\n\r\n\t/**\r\n\t * Starts or stops simulated progress on a set interval until\r\n\t * progress reaches 100 percent.\r\n\t *\r\n\t * @private\r\n\t * @param {string} action\r\n\t * The action of start or stop\r\n\t * @param {boolean} showRandomMessages\r\n\t * Option value to show random ening messages. Default is true.\r\n\t * @memberof AddFileComponent\r\n\t */\r\n\tprivate fakeProgress(\r\n\t\taction: string,\r\n\t\tshowRandomMessages: boolean = true)\r\n\t{\r\n\t\tif (action === 'start')\r\n\t\t{\r\n\t\t\tlet count = 0;\r\n\t\t\tthis.fakeProgressTimer =\r\n\t\t\t\tsetInterval(() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.progressAmount += 5;\r\n\t\t\t\t\tthis.calculateProgressPercent();\r\n\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t\tif (showRandomMessages)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tswitch (count)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\tthis.progressMessage =\r\n\t\t\t\t\t\t\t\t\t'Thanks for your patience...';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 6:\r\n\t\t\t\t\t\t\t\tthis.progressMessage =\r\n\t\t\t\t\t\t\t\t\t'Getting closer...';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 9:\r\n\t\t\t\t\t\t\t\tthis.progressMessage = 'Sheesh! Big file...';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 12:\r\n\t\t\t\t\t\t\t\tthis.progressMessage = 'Almost done...';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.progressPercent >= 100)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.progressMode = 'spinner';\r\n\t\t\t\t\t\tthis.progressMessage =\r\n\t\t\t\t\t\t\t'You can exit any time. '\r\n\t\t\t\t\t\t\t\t+ 'We will notify you when the process '\r\n\t\t\t\t\t\t\t\t+ 'is complete.';\r\n\t\t\t\t\t\tclearInterval(this.fakeProgressTimer);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.twoSeconds);\r\n\t\t}\r\n\t\telse if (action === 'stop')\r\n\t\t{\r\n\t\t\tclearInterval(this.fakeProgressTimer);\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tDelete: {{fileEntity.data.name}}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tAre you sure you want to delete this file?\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tReason\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNo more than 1024 characters allowed.\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileProgressType\r\n} from '@shared/constants/enums/file-progress-type.enum';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tIFileProgress\r\n} from '@shared/interfaces/files/file-progress.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tFileService\r\n} from '@shared/services/files/file.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-delete-file',\r\n\ttemplateUrl: './delete-file.component.html',\r\n\tstyleUrls: [\r\n\t\t'./delete-file.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing a component logic for deleting files.\r\n *\r\n * @export\r\n * @class DeleteFileComponent\r\n * @extends {FileDirective}\r\n */\r\nexport class DeleteFileComponent\r\n\textends FileDirective\r\n{\r\n\t/**\r\n\t * Initializes the delete file component class.\r\n\t *\r\n\t * @param {FileService} fileService\r\n\t * The file service for this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service for this component.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service for this component.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service for this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly fileService: FileService,\r\n\t\tprivate readonly activityService: ActivityService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the common list context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\t@Input()\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the file has been removed event emitter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\t@Output()\r\n\tpublic removed: EventEmitter =\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the from control that handles the required\r\n\t * reason the file is being removed.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\tpublic reasonControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl('', Validators.maxLength(1024));\r\n\r\n\t/**\r\n\t * Gets or sets a value indictaing whether the\r\n\t * remove document form should be visible.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\tpublic removeFormVisible: boolean = true;\r\n\r\n\t/**\r\n\t * Gets os sets the progress message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\tpublic progressMessage: string = 'Deleting file';\r\n\r\n\t/**\r\n\t * Handles the remove button click event.\r\n\t *\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\tpublic removeClicked(): void\r\n\t{\r\n\t\tconst entityToRemove =\r\n\t\t\tJSON.parse(\r\n\t\t\t\tJSON.stringify(\r\n\t\t\t\t\tthis.fileEntity));\r\n\r\n\t\tdelete entityToRemove.data.userName;\r\n\t\tdelete entityToRemove.data.changeDateTime;\r\n\r\n\t\tthis.removeFormVisible = false;\r\n\t\tthis.progressVisible = true;\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tnew Promise((resolve, reject) =>\r\n\t\t\t{\r\n\t\t\t\tthis.fileService\r\n\t\t\t\t\t.remove(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tentityToRemove,\r\n\t\t\t\t\t\tthis.reasonControl.value,\r\n\t\t\t\t\t\tthis.fileTypeGroup)\r\n\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t(event: IFileProgress) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tswitch (event.type)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tcase FileProgressType.Complete:\r\n\t\t\t\t\t\t\t\t\t\tthis.progressMode = 'done';\r\n\t\t\t\t\t\t\t\t\t\tthis.progressMessage = 'File deleted.';\r\n\t\t\t\t\t\t\t\t\t\tthis.removed.emit(this.fileEntity);\r\n\t\t\t\t\t\t\t\t\t\tresolve();\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (this.context.source\r\n\t\t\t\t\t\t\t\t\t\t\tinstanceof EntityInstanceComponent)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.context.source)\r\n\t\t\t\t\t\t\t\t\t\t\t\t.RefreshBusinessRules();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.viewModes.list);\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.time.oneSecond);\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\tcase FileProgressType.Error:\r\n\t\t\t\t\t\t\t\t\t\tthis.progressMode = 'error';\r\n\t\t\t\t\t\t\t\t\t\tthis.progressMessage = event.message;\r\n\t\t\t\t\t\t\t\t\t\treject(event.message);\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror:\r\n\t\t\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.progressMessage = 'Error deleting file!';\r\n\t\t\t\t\t\t\t\tthis.progressMode = 'error';\r\n\t\t\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t'Deleting file '\r\n\t\t\t\t\t+ this.fileEntity.data.name,\r\n\t\t\t\t'Deleting file '\r\n\t\t\t\t\t+ this.fileEntity.data.name,\r\n\t\t\t\t`${this.fileEntity.data.name} was successfully deleted.`,\r\n\t\t\t\t`Error deleting ${this.fileEntity.data.name}.`));\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\tDownload:\r\n\t\t\t\r\n\t\t\t\t {{fileEntity.data.name}}\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpEventType\r\n} from '@angular/common/http';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\nimport {\r\n\tFileService\r\n} from '@shared/services/files/file.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-download-file',\r\n\ttemplateUrl: './download-file.component.html',\r\n\tstyleUrls: ['./download-file.component.scss']\r\n})\r\n\r\n/**\r\n * A class for downloading files\r\n *\r\n * @export\r\n * @class DownloadFileComponent\r\n * @extends {FileDirective}\r\n */\r\nexport class DownloadFileComponent\r\n\textends FileDirective\r\n{\r\n\t/**\r\n\t * Initializes this component\r\n\t * @param {FileService} fileService\r\n\t * The file service for this component\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly fileService: FileService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter for notifying\r\n\t * about a download\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\t@Output()\r\n\tpublic downloaded: EventEmitter =\r\n\t\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the progress message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\tpublic progressMessage: string = 'Accessing storage...';\r\n\r\n\t/**\r\n\t * Gets or sets a vlue indicating whether to\r\n\t * show the download form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\tpublic showDownload: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the window for opening a print dialogue.\r\n\t *\r\n\t * @type {Window}\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\t public printWindow: Window;\r\n\r\n\t/**\r\n\t * Gets or sets a the value for deciding\r\n\t * what to do with the downloaded file.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof DownloadFileComponent\r\n\t*/\r\n\tprivate openOrDownload: string = 'save';\r\n\r\n\t/**\r\n\t * Handles the open click event.\r\n\t *\r\n\t * @memberof DownloadFileComponent\r\n\t*/\r\n\tpublic onOpenClicked(): void\r\n\t{\r\n\t\tthis.openOrDownload = 'open';\r\n\t\tthis.getFile();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the save click event.\r\n\t *\r\n\t * @memberof DownloadFileComponent\r\n\t*/\r\n\tpublic onSaveClicked(): void\r\n\t{\r\n\t\tthis.openOrDownload = 'save';\r\n\t\tthis.getFile();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the save click event.\r\n\t *\r\n\t * @memberof DownloadFileComponent\r\n\t*/\r\n\tpublic onPrintClicked(): void\r\n\t{\r\n\t\tthis.openOrDownload = 'print';\r\n\t\tthis.getFile();\r\n\t}\r\n\r\n\t/**\r\n\t * downloads a file and opens it or prompts to save.\r\n\t *\r\n\t * @private\r\n\t * @memberof DownloadFileComponent\r\n\t */\r\n\tprivate getFile(): void\r\n\t{\r\n\t\tthis.showDownload = false;\r\n\t\tthis.progressVisible = true;\r\n\r\n\t\tconst typeGroup =\r\n\t\t\tthis.categories.find(category =>\r\n\t\t\t\tcategory.value === this.fileEntity.entityType)\r\n\t\t\t\t.entityType.group;\r\n\r\n\t\tthis.fileService\r\n\t\t\t.download(\r\n\t\t\t\tthis.fileEntity.id,\r\n\t\t\t\ttypeGroup)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(event: HttpEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (event.type === HttpEventType.DownloadProgress)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.progressMessage = 'Downloading...';\r\n\t\t\t\t\t\tthis.progressMode = 'progressBar';\r\n\r\n\t\t\t\t\t\tthis.progressAmount = Math.round(\r\n\t\t\t\t\t\t\t(event.loaded /\r\n\t\t\t\t\t\t\tthis.fileEntity.data.metadata.sizeInBytes)\r\n\t\t\t\t\t\t\t\t* 100);\r\n\r\n\t\t\t\t\t\tif (this.progressAmount >= 100)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.progressMode = 'done';\r\n\t\t\t\t\t\t\t\tthis.progressMessage = 'Done!';\r\n\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\tthis.downloaded.emit();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tAppConstants.time.twoSeconds);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tAppConstants.time.oneSecond);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (event.type === HttpEventType.Response)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst blob: Blob = event.body;\r\n\r\n\t\t\t\t\t\tconst fileUrl = window.URL\r\n\t\t\t\t\t\t\t.createObjectURL(blob);\r\n\r\n\t\t\t\t\t\tconst anchor = document\r\n\t\t\t\t\t\t\t.createElement('a');\r\n\r\n\t\t\t\t\t\tdocument.body\r\n\t\t\t\t\t\t\t.appendChild(anchor);\r\n\r\n\t\t\t\t\t\tanchor.href = fileUrl;\r\n\r\n\t\t\t\t\t\tanchor.download = this.fileEntity\r\n\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t.name;\r\n\r\n\t\t\t\t\t\tswitch (this.openOrDownload)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcase 'open':\r\n\t\t\t\t\t\t\t\twindow.open(fileUrl);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'save':\r\n\t\t\t\t\t\t\t\tanchor.click();\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'print':\r\n\t\t\t\t\t\t\t\tthis.printWindow = window.open(\r\n\t\t\t\t\t\t\t\t\tfileUrl,\r\n\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t.windowTargets.blank);\r\n\t\t\t\t\t\t\t\tthis.printWindow.print();\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tEdit: {{fileEntity.data.name}}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{{fileCategory}}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t(or drag the file here to change)\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tA file is required.\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tA valid url is required.\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t.{{extension}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{requiredValueMessage}}\r\n\t\t\t\t
    \r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpHeaderResponse,\r\n\tHttpProgressEvent\r\n} from '@angular/common/http';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup,\r\n\tValidationErrors,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFileCategory\r\n} from '@dynamicComponents/files/file-category/file-category';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileProgressType\r\n} from '@shared/constants/enums/file-progress-type.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tIFileProgress\r\n} from '@shared/interfaces/files/file-progress.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tFileService\r\n} from '@shared/services/files/file.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tFileUpload\r\n} from 'primeng/fileupload';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-edit-file',\r\n\ttemplateUrl: './edit-file.component.html',\r\n\tstyleUrls: ['./edit-file.component.scss']\r\n})\r\n/**\r\n * A class for editing files (files).\r\n *\r\n * @export\r\n * @class EditFileComponent\r\n * @extends {FileDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EditFileComponent\r\n\textends FileDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes the EditFileComponent.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service for this class.\r\n\t * @param {FileService} fileService\r\n\t * A new instance of the file service for this class.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly activityService: ActivityService,\r\n\t\tprivate readonly fileService: FileService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file entity selected to edit.\r\n\t *\r\n\t * @type {IFileEntity}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\t@Input()\r\n\tpublic originalFileEntity: IFileEntity;\r\n\r\n\t/**\r\n\t * Gets or sets the common list context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DeleteFileComponent\r\n\t */\r\n\t@Input()\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the document updated event emitter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\t@Output()\r\n\tpublic updated: EventEmitter = new EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the file uploader.\r\n\t *\r\n\t * @type {FileUpload}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\t@ViewChild('fileUploader')\r\n\tpublic fileUploader: FileUpload;\r\n\r\n\t/**\r\n\t * Gets or sets the edit version of the file entity. This\r\n\t * makes un-doing changes reliable and easy.\r\n\t *\r\n\t * @type {IFileEntity}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic editedFileEntity: IFileEntity;\r\n\r\n\t/**\r\n\t * Gets or sets the progress message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic progressMessage: string = 'Updating...';\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether to\r\n\t * display the edit documentuemnt form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic editDocumentVisible: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the\r\n\t * orginal uploaded file needs to be changed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic changeFile: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the\r\n\t * uploader form field should display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic showUploader: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the name form control.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic nameControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(\r\n\t\t\tAppConstants.empty,\r\n\t\t\t[\r\n\t\t\t\tValidators.required,\r\n\t\t\t\tValidators.maxLength(128)\r\n\t\t\t]);\r\n\r\n\t/**\r\n\t * Gets or sets the form control for the category field.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic subTypeControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(AppConstants.empty);\r\n\r\n\t/**\r\n\t * The file extensions\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic extension: string = this.defaultFileExtension;\r\n\r\n\t/**\r\n\t * Gets or sets the url form control for\r\n\t * referenced files.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic urlControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(AppConstants.empty);\r\n\r\n\t/**\r\n\t * Gets or sets the description form control.\r\n\t *\r\n\t * @type {FormControl}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic descriptionControl: UntypedFormControl =\r\n\t\tnew UntypedFormControl(\r\n\t\t\tAppConstants.empty,\r\n\t\t\t[\r\n\t\t\t\tValidators.maxLength(256)\r\n\t\t\t]);\r\n\r\n\t/**\r\n\t * Gets or sets the form group.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic editForm: UntypedFormGroup =\r\n\t\tnew UntypedFormGroup(\r\n\t\t\t{\r\n\t\t\t\t'nameControl': this.nameControl,\r\n\t\t\t\t'urlControl': this.urlControl,\r\n\t\t\t\t'descriptionControl': this.descriptionControl,\r\n\t\t\t\t'subTypeControl': this.subTypeControl\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalidators: (formGroup: UntypedFormGroup):\r\n\t\t\t\t\tValidationErrors | null =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst invalidErrors: ValidationErrors =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tinvalid: true,\r\n\t\t\t\t\t\t\tvalid: false\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (AnyHelper.isNull(this.originalFileEntity))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn invalidErrors;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.changeFile\r\n\t\t\t\t\t\t&& this.storageType !== StorageType.Referenced)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.fileUploader?.hasFiles())\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst subType: AbstractControl = formGroup\r\n\t\t\t\t\t\t.get('subTypeControl');\r\n\r\n\t\t\t\t\tconst name: AbstractControl = formGroup\r\n\t\t\t\t\t\t.get('nameControl');\r\n\r\n\t\t\t\t\tconst description: AbstractControl = formGroup\r\n\t\t\t\t\t\t.get('descriptionControl');\r\n\r\n\t\t\t\t\tconst url: AbstractControl = formGroup\r\n\t\t\t\t\t\t.get('urlControl');\r\n\r\n\t\t\t\t\tconst noErrors: boolean = !(\r\n\t\t\t\t\t\t(name.invalid && name.dirty)\r\n\t\t\t\t\t\t|| (url.invalid && url.dirty)\r\n\t\t\t\t\t\t|| (description.invalid && description.dirty)\r\n\t\t\t\t\t\t|| (subType.invalid && subType.dirty));\r\n\r\n\t\t\t\t\treturn this.changed() && noErrors\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: invalidErrors;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t/**\r\n\t * A value indicating if updating the file contents should be disabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic changeFileDisabled: boolean;\r\n\r\n\t/**\r\n\t * The subtype options\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic subTypeOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets the storage type\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic get storageType(): StorageType\r\n\t{\r\n\t\treturn this.originalFileEntity\r\n\t\t\t.data\r\n\t\t\t.storage\r\n\t\t\t.storageType;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file category.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic get fileCategory(): string\r\n\t{\r\n\t\treturn this.categories\r\n\t\t\t.find((element: FileCategory) =>\r\n\t\t\t\telement.value === this.originalFileEntity\r\n\t\t\t\t\t.entityType)\r\n\t\t\t.label;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the file entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic get fileTypeGroup(): string\r\n\t{\r\n\t\treturn this.categories\r\n\t\t\t.find((element: FileCategory) =>\r\n\t\t\t\telement.value === this.originalFileEntity\r\n\t\t\t\t\t.entityType)\r\n\t\t\t.entityType\r\n\t\t\t.group;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating if the update\r\n\t * was successful.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tprivate updateSuccess: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the intialization event of this component.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.editedFileEntity =\r\n\t\t\tJSON.parse(\r\n\t\t\t\tJSON.stringify(\r\n\t\t\t\t\tthis.originalFileEntity));\r\n\t\tthis.fileEntity = this.originalFileEntity;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst reviewState: string = this.fileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.metadata\r\n\t\t\t\t.custom\r\n\t\t\t\t.reviewState;\r\n\r\n\t\t\tthis.changeFileDisabled =\r\n\t\t\t\treviewState === 'Approved'\r\n\t\t\t\t\t|| reviewState === 'Rejected';\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tthis.changeFileDisabled = false;\r\n\t\t}\r\n\r\n\t\tdelete (this.editedFileEntity.data).userName;\r\n\t\tdelete (this.editedFileEntity.data).changeDateTime;\r\n\r\n\t\tthis.nameControl\r\n\t\t\t.setValue(this.editedFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.name);\r\n\r\n\t\tif (this.storageType === StorageType.Referenced)\r\n\t\t{\r\n\t\t\tthis.urlControl\r\n\t\t\t\t.setValue(\r\n\t\t\t\t\tthis.editedFileEntity\r\n\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t.storage\r\n\t\t\t\t\t\t.location);\r\n\r\n\t\t\tthis.urlControl.setValidators(\r\n\t\t\t\t[\r\n\t\t\t\t\tValidators.required,\r\n\t\t\t\t\tValidators.pattern('^(http|https)://.+/.+$')\r\n\t\t\t\t]);\r\n\t\t}\r\n\r\n\t\tthis.descriptionControl\r\n\t\t\t.setValue(\r\n\t\t\t\tthis.editedFileEntity\r\n\t\t\t\t\t.data\r\n\t\t\t\t\t.description);\r\n\r\n\t\tthis.extension = this.editedFileEntity\r\n\t\t\t.data\r\n\t\t\t.metadata\r\n\t\t\t.extension;\r\n\r\n\t\tthis.subTypes = this.categories\r\n\t\t\t.find(category =>\r\n\t\t\t\tcategory.entityType.name === this.fileEntity.entityType)\r\n\t\t\t.subTypes ?? [];\r\n\r\n\t\tthis.subTypeOptions = [];\r\n\r\n\t\tthis.subTypes.forEach(\r\n\t\t\t(subType: string) =>\r\n\t\t\t{\r\n\t\t\t\tif(!AnyHelper.isNullOrEmpty(subType))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.subTypeOptions.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: subType,\r\n\t\t\t\t\t\t\tvalue: subType\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tif (this.subTypes.length > 0)\r\n\t\t{\r\n\t\t\tthis.subTypeControl.enable();\r\n\t\t\tthis.subTypeControl.setValue(this.subType);\r\n\t\t\tthis.subTypeControl.addValidators(Validators.required);\r\n\t\t\tthis.subTypeControl.updateValueAndValidity();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.subTypeControl.setValue(null);\r\n\t\t\tthis.subTypeControl.disable();\r\n\t\t}\r\n\r\n\t\tthis.editForm.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if a control is invalid.\r\n\t *\r\n\t * @param {string} controlName\r\n\t * The name of the control to check.\r\n\t * @returns {boolean}\r\n\t * Returns true if it is invalid\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic invalid(controlName: string): boolean\r\n\t{\r\n\t\tconst control: any = this.editForm\r\n\t\t\t.get(controlName);\r\n\r\n\t\treturn control.invalid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file changed event updating\\\r\n\t * names anbd extensions.\r\n\t *\r\n\t * @param {string} changeType\r\n\t * the file changed type of event\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic fileChanged(changeType: string): void\r\n\t{\r\n\t\tconst originalExt: string =\r\n\t\t\tthis.originalFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.metadata\r\n\t\t\t\t.extension;\r\n\r\n\t\tif (changeType === 'selected')\r\n\t\t{\r\n\t\t\tthis.setExtension(\r\n\t\t\t\tthis.fileUploader\r\n\t\t\t\t\t.files[0]\r\n\t\t\t\t\t.name);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.setExtension(originalExt);\r\n\t\t}\r\n\r\n\t\tthis.editForm\r\n\t\t\t.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file url changed event.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic fileUrlChanged(): void\r\n\t{\r\n\t\tthis.setExtension(this.urlControl.value);\r\n\r\n\t\tthis.editedFileEntity\r\n\t\t\t.data\r\n\t\t\t.storage\r\n\t\t\t.location = this.urlControl.value;\r\n\r\n\t\tthis.editForm\r\n\t\t\t.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file name changed event.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic nameChanged(): void\r\n\t{\r\n\t\tthis.editedFileEntity\r\n\t\t\t.data\r\n\t\t\t.name = this.nameControl.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file sub stype changed event.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic subTypeChanged()\r\n\t{\r\n\t\tthis.editedFileEntity\r\n\t\t\t.data\r\n\t\t\t.subType = this.subTypeControl.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the description name changed event.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic descriptionChanged(): void\r\n\t{\r\n\t\tthis.editedFileEntity\r\n\t\t\t.data\r\n\t\t\t.description = this.descriptionControl.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the update document button click event.\r\n\t *\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tpublic onUpdateClicked(): void\r\n\t{\r\n\t\tif (this.editForm.invalid)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet file: File;\r\n\t\tif (this.storageType !== StorageType.Referenced\r\n\t\t\t&& this.changeFile)\r\n\t\t{\r\n\t\t\tfile = this.fileUploader.hasFiles()\r\n\t\t\t\t? this.fileUploader.files[0]\r\n\t\t\t\t: null;\r\n\r\n\t\t\tif (!AnyHelper.isNull(file))\r\n\t\t\t{\r\n\t\t\t\tthis.editedFileEntity\r\n\t\t\t\t\t.data\r\n\t\t\t\t\t.metadata\r\n\t\t\t\t\t.sizeInBytes = file.size;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.editDocumentVisible = false;\r\n\t\tthis.progressVisible = true;\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tnew Promise((resolve, reject) =>\r\n\t\t\t{\r\n\t\t\t\tthis.fileService\r\n\t\t\t\t\t.updateFile(\r\n\t\t\t\t\t\tthis.editedFileEntity,\r\n\t\t\t\t\t\tthis.fileTypeGroup,\r\n\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\tthis.changeFile)\r\n\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t(progress: IFileProgress) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.handleProgress(progress);\r\n\r\n\t\t\t\t\t\t\t\tif (progress.type === FileProgressType.Error)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treject(progress.value.message);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror:\r\n\t\t\t\t\t\t\t(error: any) => {\r\n\t\t\t\t\t\t\t\tthis.displayError(error);\r\n\t\t\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcomplete:\r\n\t\t\t\t\t\t\t() => resolve()\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t'Updating file '\r\n\t\t\t\t\t+ this.editedFileEntity.data.name,\r\n\t\t\t\t'Updated file '\r\n\t\t\t\t\t+ this.editedFileEntity.data.name,\r\n\t\t\t\t`${this.editedFileEntity.data.name} was successfully updated.`,\r\n\t\t\t\t`Error updating ${this.originalFileEntity.data.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the extenion if it can find a valid match.\r\n\t *\r\n\t * @private\r\n\t * @param {string} fileName\r\n\t * The file name with an extension.\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tprivate setExtension(fileName: string): void\r\n\t{\r\n\t\tconst extension = FileHelper\r\n\t\t\t.findKnownExtension(fileName);\r\n\r\n\t\tif (AnyHelper.isNull(extension))\r\n\t\t{\r\n\t\t\tthis.extension = this.defaultFileExtension;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.extension = extension;\r\n\r\n\t\t\tthis.editedFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.metadata\r\n\t\t\t\t.extension = extension;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the update progress events.\r\n\t *\r\n\t * @private\r\n\t * @param {IFileProgress} progress\r\n\t * The progress event report.\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tprivate handleProgress(progress: IFileProgress): void\r\n\t{\r\n\t\tconst updating: string = this.progressMessage;\r\n\t\tconst uploadingNewFile: string = 'Uploading new file...';\r\n\r\n\t\tswitch (progress.type)\r\n\t\t{\r\n\t\t\tcase FileProgressType.UpdatingEntity:\r\n\t\t\t\tthis.progressMessage = updating;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.EntityUpdated:\r\n\t\t\t\tthis.progressMessage = updating;\r\n\t\t\t\tthis.updateSuccess = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.UploadStarted:\r\n\t\t\t\tthis.progressMode = 'progressBar';\r\n\t\t\t\tthis.progressMessage = uploadingNewFile;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.UploadProgress:\r\n\t\t\t\tthis.progressMode = 'progressBar';\r\n\t\t\t\tthis.progressMessage = uploadingNewFile;\r\n\r\n\t\t\t\tconst progressEvent: HttpProgressEvent\r\n\t\t\t\t\t= progress.value;\r\n\r\n\t\t\t\tthis.progressAmount = Math\r\n\t\t\t\t\t.round((progressEvent.loaded / progressEvent.total) * 100);\r\n\r\n\t\t\t\tif (progressEvent.loaded === progressEvent.total)\r\n\t\t\t\t{\r\n\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.progressMode = 'spinner';\r\n\t\t\t\t\t\t\tthis.progressMessage = 'Finishing up...';\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t500);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.ResponseStatus:\r\n\t\t\t\tthis.updateSuccess = (progress.value).ok;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Response:\r\n\t\t\t\tif (!this.updateSuccess)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.displayError(\r\n\t\t\t\t\t\tprogress.value.message);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Error:\r\n\t\t\t\tthis.displayError(\r\n\t\t\t\t\tprogress.value.message);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase FileProgressType.Complete:\r\n\r\n\t\t\t\tthis.progressMessage = 'Done!';\r\n\t\t\t\tthis.progressMode = 'done';\r\n\t\t\t\tthis.updated.emit();\r\n\r\n\t\t\t\tif (this.context.source\r\n\t\t\t\t\tinstanceof EntityInstanceComponent)\r\n\t\t\t\t{\r\n\t\t\t\t\t(\r\n\t\t\t\t\t\tthis.context.source)\r\n\t\t\t\t\t\t.RefreshBusinessRules();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tthis.viewModes.list);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tAppConstants.time.twoSeconds);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif (progress.type === FileProgressType.Unhandled)\r\n\t\t\t\t{\r\n\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t'Unhandled file progress response: '\r\n\t\t\t\t\t\t\t+ progress.message);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the progress component display of any errors\r\n\t *\r\n\t * @private\r\n\t * @param {string} message\r\n\t * The error message to didplay.\r\n\t * @memberof EditFileComponent\r\n\t */\r\n\tprivate displayError(message: string): void\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.progressMessage = null;\r\n\t\t\tthis.errorMessage = message;\r\n\t\t\tthis.progressMode = 'error';\r\n\t\t}, 600);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the file instance is in\r\n\t * an edited state.\r\n\t *\r\n\t * @private\r\n\t * @memberof EditFileComponent\r\n\t * @returns {boolean}\r\n\t * The result of the evaluation. True if in an edited state.\r\n\t */\r\n\tprivate changed(): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.editedFileEntity))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.subTypeControl.enabled\r\n\t\t\t&& this.originalFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.subType !== this.subTypeControl.value)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.originalFileEntity\r\n\t\t\t.data\r\n\t\t\t.name !== this.nameControl.value)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.originalFileEntity.data\r\n\t\t\t\t.description)\r\n\t\t\t|| !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.descriptionControl.value))\r\n\t\t{\r\n\t\t\tif (this.originalFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.description !== this.descriptionControl.value)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.storageType === StorageType.Referenced)\r\n\t\t{\r\n\t\t\tif (this.originalFileEntity\r\n\t\t\t\t.data\r\n\t\t\t\t.storage\r\n\t\t\t\t.location !== this.urlControl.value)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\tType:\r\n\t\t\t\r\n\t\t\t{{category}}\r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\tSubtype:\r\n\t\t\t\r\n\t\t\t{{subType}}\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{property.key}}:\r\n\t\t\t\r\n\t\t\t{{property.value}}\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tDescription:\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t{{fileEntity.data.description}}\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t{{sizeFormatted}}\r\n\t\t\t
    \r\n\t\t\tCreated on {{createDate}}\r\n\t\t\t
    \r\n\t\t\tModified on {{ fileEntity.changeDate | dateTimeFromIso | dateTimeToFormat:'ccc MMM dd yyyy' }} by {{fileEntity.data.userName}}\r\n\t\t\t
    \r\n\t\t\t({{ fileEntity.changeDate | dateTimeFromIso | dateTimeToRelative:{ style: 'long' } }})\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tPrint and Mail History\r\n\t\t\t\r\n\t\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\n\r\n@Component({\r\n\tselector: 'app-file',\r\n\ttemplateUrl: './file.component.html',\r\n\tstyleUrls: [\r\n\t\t'./file.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A class for diplaying file details\r\n *\r\n * @export\r\n * @class DocumentComponent\r\n * @extends {FileDirective}\r\n */\r\nexport class FileComponent\r\n\textends FileDirective\r\n{\r\n}","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\tDetails:\r\n\t\t\t\r\n\t\t\t\t {{fileEntity.data.name}}\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\n\r\n@Component({\r\n\tselector: 'app-file-details',\r\n\ttemplateUrl: './file-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./file-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A class for diplaying file details\r\n *\r\n * @export\r\n * @class FileDetailsComponent\r\n * @extends {FileDirective}\r\n */\r\nexport class FileDetailsComponent\r\n\textends FileDirective\r\n{\r\n}","\r\n\t
    \r\n\t\t
    \r\n\t\t\tThis view is not currently available.\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIQueryParameters\r\n} from '@api/interfaces/common/queryparameters.interface';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFileCategory\r\n} from '@dynamicComponents/files/file-category/file-category';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tFileConstants\r\n} from '@shared/constants/file.constants';\r\nimport {\r\n\tFileDirective\r\n} from '@shared/directives/file.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tFileHelper\r\n} from '@shared/helpers/file.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tFileService\r\n} from '@shared/services/files/file.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tObservable,\r\n\tSubscriber,\r\n\tSubscription\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n@Component({\r\n\tselector: 'app-files',\r\n\ttemplateUrl: './files.component.html',\r\n\tstyleUrls: [\r\n\t\t'./files.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level files.\r\n *\r\n * @export\r\n * @class FilesComponent\r\n * @extends FileDirective\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class FilesComponent\r\n\textends FileDirective\r\n\timplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the Files component.\r\n\t *\r\n\t * @param {FileService} fileService\r\n\t * The file service injected into this component.\r\n\t * @param {ActivityService}\r\n\t * Handles activities and banners.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t* @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly fileService: FileService,\r\n\t\tprivate readonly activityService: ActivityService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\t@Input()\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the common list context to be loaded\r\n\t * during list mode.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \t\tFilesComponent,\r\n\t * \t\tICommonListContext>}\r\n\t* @memberof FilesComponent\r\n\t*/\r\n\tpublic commonListContext: IDynamicComponentContext<\r\n\t\tFilesComponent,\r\n\t\tICommonListContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the list is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of enabled filters.\r\n\t *\r\n\t * @type {ICommonListFilter[]}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic enabledFilters: ICommonListFilter[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the enabled sorter.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic sorter: ICommonListSort =\r\n\t\t\r\n\t\t{\r\n\t\t\tname: 'Create Date',\r\n\t\t\tvalue: 'CreateDate',\r\n\t\t\tdirection: AppConstants.sortDirections.descending,\r\n\t\t\ticonAsc: 'fa fa-sort-amount-asc',\r\n\t\t\ticonDesc: 'fa fa-sort-amount-desc'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the view that is shown.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic view: string = this.viewModes.list;\r\n\r\n\t/**\r\n\t * The file that has been selected in the common list\r\n\t *\r\n\t * @type {IFileEntity}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic fileSelected: IFileEntity;\r\n\r\n\t/**\r\n\t * The parent entity instance id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic parentId: number;\r\n\r\n\t/**\r\n\t * The parent entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic parentTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription for files.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic dataSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic isOwnershipAllowed: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the access denied url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic resources: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the client message if insufficient resources exist.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic clientMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the categories/entity types that the user is authorized\r\n\t * to create.\r\n\t *\r\n\t * @type {FileCategory[]}\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic creatableCategories: FileCategory[] = [];\r\n\r\n\t/**\r\n\t * A method run upon initialization of this component.\r\n\t *\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (this.context?.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t\t{\r\n\t\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\t\tthis.resources =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'File.*'\r\n\t\t\t\t\t];\r\n\t\t\t\tthis.clientMessage =\r\n\t\t\t\t\t'Access is required to at least one file '\r\n\t\t\t\t\t\t+ 'entity type and version.';\r\n\t\t\t\tthis.isOwnershipAllowed = false;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.parentId = this.context\r\n\t\t\t\t.source\r\n\t\t\t\t.id;\r\n\r\n\t\t\tthis.parentTypeGroup = this.context\r\n\t\t\t\t.source\r\n\t\t\t\t.entityTypeGroup;\r\n\r\n\t\t\tconst fileParentEntityDefinition = this.context\r\n\t\t\t\t.source\r\n\t\t\t\t.entityDefinition;\r\n\r\n\t\t\tawait this.fileService\r\n\t\t\t\t.getAuthorizedCategories(\r\n\t\t\t\t\tthis.parentId,\r\n\t\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\t\tfileParentEntityDefinition)\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(categories: FileCategory[]) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.categories =\r\n\t\t\t\t\t\t\tthis.getReadableCategories(categories);\r\n\r\n\t\t\t\t\t\tthis.creatableCategories =\r\n\t\t\t\t\t\t\tthis.getCreatableTypes(categories);\r\n\t\t\t\t\t})\r\n\t\t\t\t.catch(\r\n\t\t\t\t\t(error: any) => {\r\n\t\t\t\t\t\tthrow new Error(error);\r\n\t\t\t\t\t});\r\n\r\n\t\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\t\tthis.context.source;\r\n\r\n\t\t\tawait this.setSecurityDefinitions(\r\n\t\t\t\tentityInstanceComponent.id,\r\n\t\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\t\tthis.commonListContext =\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: this.generateCommonListContext(),\r\n\t\t\t\t\tsource: this\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.refreshCommonListContext(\r\n\t\t\t\tawait this.loadFiles(\r\n\t\t\t\t\tthis.enabledFilters,\r\n\t\t\t\t\tthis.sorter),\r\n\t\t\t\tthis);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the view is valid.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean value representing if the view is valid.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic isValid(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNull(this.context?.source)\r\n\t\t\t&& (this.context.source instanceof EntityInstanceComponent);\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate drawer ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this drawer.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst fileTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\tAppConstants.commonProperties.group\r\n\t\t\t\t\t+ '.StartsWith(\\'File.\\') eq true '\r\n\t\t\t\t\t+ `or ${AppConstants.commonProperties.name}`\r\n\t\t\t\t\t+ ' eq \\'File\\'',\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (fileTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tfileTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Used in the common list commands to handle\r\n\t * the action click event.\r\n\t *\r\n\t * @param {number} fileId\r\n\t * The instance id of the file selected.\r\n\t * @param {string} viewMode\r\n\t * The view to show.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic actionClick(\r\n\t\tfileId: number,\r\n\t\tviewMode: string): void\r\n\t{\r\n\t\tthis.view = viewMode;\r\n\r\n\t\tthis.fileSelected =\r\n\t\t\tthis.commonListContext\r\n\t\t\t\t.data\r\n\t\t\t\t.data\r\n\t\t\t\t.find((item: ICommonListItem) =>\r\n\t\t\t\t\titem.item.id === fileId)\r\n\t\t\t\t.item;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the file add or updated events.\r\n\t * document component.\r\n\t *\r\n\t * @memberof FilesComponent\r\n\t */\r\n\t public async filesModified(): Promise\r\n\t {\r\n\t\t this.refreshCommonListContext(\r\n\t\t\tawait this.loadFiles(\r\n\t\t\t\t this.enabledFilters,\r\n\t\t\t\t this.sorter),\r\n\t\t\t this);\r\n\t }\r\n\r\n\t/**\r\n\t * Handles the document removed event from the remove\r\n\t * document component.\r\n\t *\r\n\t * @param {IFileEntity} fileInstance\r\n\t * The file that was removed.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic fileRemoved(fileInstance: IFileEntity): void\r\n\t{\r\n\t\tconst indexToRemove: number =\r\n\t\t\tthis.commonListContext.data.data\r\n\t\t\t\t.findIndex(item =>\r\n\t\t\t\t\titem.item.id === fileInstance.id);\r\n\r\n\t\tthis.commonListContext.data.data\r\n\t\t\t.splice(indexToRemove, 1);\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any sorter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListSort} sorter\r\n\t * A value representing the enabled and selected sorter.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic async handleSortingChange(\r\n\t\tsource: any,\r\n\t\tsorter: ICommonListSort): Promise\r\n\t{\r\n\t\tthis.sorter = sorter;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tawait this.loadFiles(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any filter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * A collection of enabled and active filters.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tpublic async handleFilterChange(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[]): Promise\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tawait this.loadFiles(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading files data.\r\n\t *\r\n\t * @private\r\n\t * @param {ICommonListFilter[]} [filters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @param {ICommonListSort} [sorter]\r\n\t * A value representing the enabled sorter to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with applied filters and sorter.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate async loadFiles(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise>\r\n\t{\r\n\t\tif (this.categories.length === 0)\r\n\t\t{\r\n\t\t\treturn new Observable(\r\n\t\t\t\t(subscriber: Subscriber) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tsubscriber.next([]);\r\n\t\t\t\t\tsubscriber.complete();\r\n\t\t\t\t\tsubscriber.unsubscribe();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst fileGroups: EntityType[] = [];\r\n\r\n\t\tlet idFilter: string = AppConstants.empty;\r\n\r\n\t\tlet filter: string;\r\n\t\tconst userIds: string[] = [];\r\n\t\tif (!AnyHelper.isNull(filters))\r\n\t\t{\r\n\t\t\tfor (const item of filters)\r\n\t\t\t{\r\n\t\t\t\tconst category: FileCategory = this.categories\r\n\t\t\t\t\t.find(_category => _category.value === item.value);\r\n\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\t\tconst userInstance: IEntityInstance =\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t`${AppConstants.commonProperties.userName}`\r\n\t\t\t\t\t\t\t\t\t+ ` eq '${item.name}'`,\r\n\t\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\tuserIds.push(userInstance.id.toString());\r\n\t\t\t\t}\r\n\t\t\t\tcatch\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNull(category))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter = AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t\t\t? item.value\r\n\t\t\t\t\t\t\t: `(${filter}) AND (${item.value})`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfileGroups.push(category.entityType);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// return empty if fileGroups > 1\r\n\t\t// Zero files can be in two groups at the same time\r\n\t\tif (fileGroups.length > 1)\r\n\t\t{\r\n\t\t\treturn new Observable(\r\n\t\t\t\t(subscriber: Subscriber) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tsubscriber.next([]);\r\n\t\t\t\t\tsubscriber.complete();\r\n\t\t\t\t\tsubscriber.unsubscribe();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tidFilter = fileGroups.length === 0\r\n\t\t\t?\tApiFilterHelper.getEntityTypeFilter(\r\n\t\t\t\tthis.categories.map((category: FileCategory) =>\r\n\t\t\t\t\tnew EntityType(category.entityType)))\r\n\t\t\t: ApiFilterHelper\r\n\t\t\t\t.getEntityTypeFilter(fileGroups);\r\n\r\n\t\tidFilter = `(${idFilter})`;\r\n\r\n\t\tconst stateFilter = `(status.state != \"${FileState.Removed}\")`;\r\n\r\n\t\tconst baseFilter: string = fileGroups.length === 0\r\n\t\t\t? `${idFilter} AND ${stateFilter}`\r\n\t\t\t: stateFilter;\r\n\r\n\t\tconst filterCriteria: string =\r\n\t\t\tApiFilterHelper.getInQueryFilter(\r\n\t\t\t\tuserIds,\r\n\t\t\t\tAppConstants.commonProperties.createdById,\r\n\t\t\t\tfilter);\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tconst parameters: IQueryParameters =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tfilter: AnyHelper.isNullOrEmpty(filterCriteria) === true\r\n\t\t\t\t\t? baseFilter\r\n\t\t\t\t\t: `${baseFilter} AND ${filterCriteria}`,\r\n\t\t\t\torderBy: orderBy,\r\n\t\t\t\tlimit: 100,\r\n\t\t\t\tlast: null\r\n\t\t\t};\r\n\r\n\t\treturn this.fileService\r\n\t\t\t.getFiles(\r\n\t\t\t\tparameters,\r\n\t\t\t\tthis.parentId,\r\n\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\tfileGroups.length > 0\r\n\t\t\t\t\t? fileGroups.map((item: EntityType) => item.group)\r\n\t\t\t\t\t: null);\r\n\t}\r\n\r\n\t/**\r\n\t * sorts the common list data so a trip\r\n\t * to the server can be avoided.\r\n\t *\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate sortList(): void\r\n\t{\r\n\t\tconst direction = this.sorter.direction;\r\n\r\n\t\tthis.commonListContext.data.data\r\n\t\t\t.sort(\r\n\t\t\t\t(itemA: ICommonListItem,\r\n\t\t\t\t\titemB: ICommonListItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (itemA.item.createDate > itemB.item.createDate)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn direction ===\r\n\t\t\t\t\t\t\tAppConstants.sortDirections.descending\r\n\t\t\t\t\t\t\t? -1\r\n\t\t\t\t\t\t\t: 1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn direction ===\r\n\t\t\t\t\t\tAppConstants.sortDirections.descending\r\n\t\t\t\t\t\t? 1\r\n\t\t\t\t\t\t: -1;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method to either create or refresh the common list context.\r\n\t *\r\n\t * @param {Observable} observable\r\n\t * A value representing the observable that will load data into\r\n\t * the context.\r\n\t * @param {any} source\r\n\t * A value representing the source component we are refreshing the context\r\n\t * from.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate refreshCommonListContext(\r\n\t\tobservable: Observable,\r\n\t\tsource: any): void\r\n\t{\r\n\t\tsource.loading = true;\r\n\t\tlet tripCount: number = 0;\r\n\r\n\t\tif (this.dataSubscription != null)\r\n\t\t{\r\n\t\t\tthis.dataSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tthis.dataSubscription = observable\r\n\t\t\t.subscribe({\r\n\t\t\t\tnext:\r\n\t\t\t\t\t(list: IFileEntity[]) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst data: ICommonListItem[]\r\n\t\t\t\t\t\t\t= list?.map((item) => this.mapToListItem(item));\r\n\t\t\t\t\t\tif (++tripCount === 1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.commonListContext\r\n\t\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t\t.data = data;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.commonListContext\r\n\t\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t\t.push(...data);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.commonListContext\r\n\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t.data\r\n\t\t\t\t\t\t\t.length > 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsource.loading = false;\r\n\r\n\t\t\t\t\t\t\tif (AnyHelper.isFunction(\r\n\t\t\t\t\t\t\t\tsource.performPostLoadActions))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsource.performPostLoadActions();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\terror:\r\n\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.activityService.generateActivityBanner(\r\n\t\t\t\t\t\t\tnew Activity(\r\n\t\t\t\t\t\t\t\tPromise.reject(error),\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\terror),\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\t\t'Error Loading Files');\r\n\r\n\t\t\t\t\t},\r\n\t\t\t\tcomplete:\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (tripCount > 1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.sortList();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsource.loading = false;\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the files common list context.\r\n\t *\r\n\t * @private\r\n\t * @memberof FilesComponent\r\n\t * @returns {ICommonListContext}\r\n\t * A value representing the common list context for first load.\r\n\t */\r\n\tprivate generateCommonListContext(): ICommonListContext\r\n\t{\r\n\t\tconst actions: ISecureMenuItem[] = [];\r\n\r\n\t\tif (this.creatableCategories.length > 0)\r\n\t\t{\r\n\t\t\tactions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\tlabel: 'Add',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.view = 'add';\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.create\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst generatedCommonListContext: ICommonListContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdata: [],\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\tsorters: [\r\n\t\t\t\t\tthis.sorter\r\n\t\t\t\t],\r\n\t\t\t\tsearchFilterFormat:\r\n\t\t\t\t\t'((name.Contains(\\'${inputValue}\\') eq true)'\r\n\t\t\t\t\t+ ' OR (description.Contains(\\'${inputValue}\\') eq true)'\r\n\t\t\t\t\t+ ' OR (subType.Contains(\\'${inputValue}\\') eq true))',\r\n\t\t\t\tactions: actions,\r\n\t\t\t\tfilters: this.categories,\r\n\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps entity instance data to a common list item.\r\n\t *\r\n\t * @private\r\n\t * @param {IFileEntity} file\r\n\t * A value representing the entity instance to map to common list item.\r\n\t * @returns {ICommonListItem}\r\n\t * A value representing the mapped common list item from the entity\r\n\t * instance.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate mapToListItem(file: IFileEntity): ICommonListItem\r\n\t{\r\n\t\tif (file.changedById !== 1)\r\n\t\t{\r\n\t\t\tthis.fileService.instanceService\r\n\t\t\t\t.entityInstanceTypeGroup = AppConstants.typeGroups.users;\r\n\r\n\t\t\tthis.fileService.instanceService\r\n\t\t\t\t.get(file.changedById)\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(user: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\tuser.data.userName) === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t(file.data).userName =\r\n\t\t\t\t\t\t\t\tuser.data.userName;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Entity data as any so we can access/modify and also\r\n\t\t// populate entity data with extra decorators.\r\n\t\tconst data: any = file.data;\r\n\t\tdata.userName = file.changedById === 1\r\n\t\t\t? 'System'\r\n\t\t\t: 'User ' + file.changedById;\r\n\r\n\t\tdata.changeDateTime = DateHelper\r\n\t\t\t.fromUtcIso(file.changeDate)\r\n\t\t\t.toISO();\r\n\r\n\t\tconst category: FileCategory =\r\n\t\t\tthis.categories\r\n\t\t\t\t.find(item =>\r\n\t\t\t\t\titem.entityType.name === file.entityType);\r\n\r\n\t\tconst categoryName = AnyHelper.isNull(category)\r\n\t\t\t? 'Uncategorized'\r\n\t\t\t: category.name;\r\n\r\n\t\tconst subType: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(file.data.subType)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: ` - ${file.data.subType}`;\r\n\t\tconst status: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(file.data.status?.state)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: ` - ${file.data.status.state}`\r\n\t\t\t\t\t+ '';\r\n\r\n\t\tconst descriptionLine: string =\r\n\t\t\tcategoryName === FileConstants.fileTypes.attachment\r\n\t\t\t\t? `${file.data.subType}
    `\r\n\t\t\t\t\t+ ''\r\n\t\t\t\t\t+ categoryName\r\n\t\t\t\t\t+ ' - ${item.data.name}'\r\n\t\t\t\t\t+ status\r\n\t\t\t\t\t+ ''\r\n\t\t\t\t: '${item.data.name}
    '\r\n\t\t\t\t\t+ ''\r\n\t\t\t\t\t+ categoryName\r\n\t\t\t\t\t+ subType\r\n\t\t\t\t\t+ status\r\n\t\t\t\t\t+ '';\r\n\r\n\t\tconst listItem: ICommonListItem =\r\n\t\t{\r\n\t\t\titem: file,\r\n\t\t\tdescriptionLineFormat: descriptionLine,\r\n\t\t\tinformationLineRelativeDateTime:\r\n\t\t\t\t'${item.data.changeDateTime}',\r\n\t\t\tinformationLineFormat:\r\n\t\t\t\t' by ${item.data.userName}',\r\n\t\t\tinformationIcons: [],\r\n\t\t\tactions: []\r\n\t\t};\r\n\r\n\t\tconst iconClass = AnyHelper\r\n\t\t\t.isNull(file\r\n\t\t\t\t.data\r\n\t\t\t\t.metadata\r\n\t\t\t\t.mimeType)\r\n\t\t\t? 'fa fa-exclamation theme-color-grey'\r\n\t\t\t: 'fa ' + FileHelper\r\n\t\t\t\t.getFileIconClass(file\r\n\t\t\t\t\t.data\r\n\t\t\t\t\t.metadata\r\n\t\t\t\t\t.mimeType);\r\n\r\n\t\tlistItem.informationIcons\r\n\t\t\t.push(iconClass);\r\n\r\n\t\tlistItem.actions.push({\r\n\t\t\ticon: 'fa fa-cloud-download',\r\n\t\t\tcommand: (event: any) => {\r\n\t\t\t\tthis.actionClick(file.id, this.viewModes.download);\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t},\r\n\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\tsecurityRightPath: AppConstants.workflowActions.fileDownload\r\n\t\t});\r\n\r\n\t\tlistItem.actions.push({\r\n\t\t\ticon: 'fa fa-info-circle',\r\n\t\t\tcommand: (event: any) => {\r\n\t\t\t\tthis.actionClick(file.id, this.viewModes.details);\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t},\r\n\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\tsecurityRightType: SecurityRightType.read\r\n\t\t});\r\n\r\n\t\t// if (you have create rights and you are the creator)\r\n\t\t// OR if (you have edit rights)\r\n\t\tlistItem.actions.push({\r\n\t\t\ticon: 'fa fa-pencil',\r\n\t\t\tcommand: (event: any) => {\r\n\t\t\t\tthis.actionClick(file.id, this.viewModes.edit);\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t},\r\n\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\tsecurityRightPath: AppConstants.apiMethods.update\r\n\t\t});\r\n\r\n\t\t// if (you have create rights and you are the creator)\r\n\t\t// OR if (you have delete rights)\r\n\t\tlistItem.actions.push({\r\n\t\t\ticon: 'fa fa-trash',\r\n\t\t\tcommand: (event: any) => {\r\n\t\t\t\tthis.actionClick(file.id, this.viewModes.remove);\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t},\r\n\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\tsecurityRightPath: AppConstants.apiMethods.delete\r\n\t\t});\r\n\r\n\t\tlistItem.actions = SecurityHelper\r\n\t\t\t.scrubMenuItems(\r\n\t\t\t\tlistItem.actions,\r\n\t\t\t\tfile.entityType,\r\n\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\treturn listItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the creatable types within the supported types/categories.\r\n\t *\r\n\t * @private\r\n\t * @param {FileCategory[]} supportedCategories\r\n\t * The supported categories/types to look through\r\n\t * @returns {FileCategory[]}\r\n\t * The types/categories that user is allowed to create.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate getCreatableTypes(\r\n\t\tsupportedCategories: FileCategory[]): FileCategory[]\r\n\t{\r\n\t\treturn supportedCategories\r\n\t\t\t.filter(\r\n\t\t\t\t(category: FileCategory) =>\r\n\t\t\t\t\tcategory\r\n\t\t\t\t\t\t.securityDefinition\r\n\t\t\t\t\t\t.rights\r\n\t\t\t\t\t\t.create === true\r\n\t\t\t\t\t\t&& SecurityHelper\r\n\t\t\t\t\t\t\t.getActionSecurityRights(\r\n\t\t\t\t\t\t\t\tAppConstants.workflowActions.fileUpload,\r\n\t\t\t\t\t\t\t\tcategory.securityDefinition.actions)\r\n\t\t\t\t\t\t\t.rights\r\n\t\t\t\t\t\t\t.execute === true\r\n\t\t\t\t\t\t&& SecurityHelper\r\n\t\t\t\t\t\t\t.getActionSecurityRights(\r\n\t\t\t\t\t\t\t\t'Create',\r\n\t\t\t\t\t\t\t\tcategory.securityDefinition.actions)\r\n\t\t\t\t\t\t\t.rights\r\n\t\t\t\t\t\t\t.execute === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the readable and downloadable types within\r\n\t * the supported types/categories.\r\n\t *\r\n\t * @private\r\n\t * @param {FileCategory[]} supportedCategories\r\n\t * The supported categories/types to look through\r\n\t * @returns {FileCategory[]}\r\n\t * The types/categories that user is allowed to read.\r\n\t * @memberof FilesComponent\r\n\t */\r\n\tprivate getReadableCategories(\r\n\t\tsupportedCategories: FileCategory[]): FileCategory[]\r\n\t{\r\n\t\treturn supportedCategories\r\n\t\t\t.filter(\r\n\t\t\t\t(category: FileCategory) =>\r\n\t\t\t\t\tcategory\r\n\t\t\t\t\t\t.securityDefinition\r\n\t\t\t\t\t\t.rights\r\n\t\t\t\t\t\t.read\r\n\t\t\t\t&& SecurityHelper\r\n\t\t\t\t\t.getActionSecurityRights(\r\n\t\t\t\t\t\tAppConstants.workflowActions.fileDownload,\r\n\t\t\t\t\t\tcategory.securityDefinition.actions)\r\n\t\t\t\t\t.rights\r\n\t\t\t\t\t.execute === true);\r\n\t}\r\n}","
    \r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'final-wizard-layout-step',\r\n\ttemplateUrl: './final-wizard-layout-step.component.html',\r\n\tstyleUrls: []\r\n})\r\n\r\n/**\r\n * A component representing a wizard for a final step layout.\r\n *\r\n * @export\r\n * @class FinalWizardLayoutStepComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class FinalWizardLayoutStepComponent\r\nimplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof FinalWizardLayoutStepComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext<\r\n\t\tDynamicWizardComponent,\r\n\t\tIWizardContext>;\r\n\r\n\t/**\r\n\t * Handles the formly changes to set the step validity.\r\n\t *\r\n\t * @param {boolean} valid\r\n\t * The field validity\r\n\t * @memberof FinalWizardLayoutStepComponent\r\n\t */\r\n\tpublic validStepChanged(valid: boolean): void\r\n\t{\r\n\t\tthis.context.source.validStepChanged(valid);\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t+\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    0\">\r\n\t\t\t
    \r\n\t\t\t\t
      \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{enabledFilter?.label}}\r\n\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    1\"\r\n\t\t\t\tclass=\"multiple-filters-warning theme-color-gray text-center font-italic\">\r\n\t\t\t\tItems have to meet all conditions to be returned.\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{selectedSorter.name}}\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t\r\n\r\n\t\t
    \r\n\t\t\t 0\"\r\n\t\t\t\t[ngIfElse]=\"NoEventsDisplay\">\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ event.dateTime | dateTimeToFormat:'D h:mm a' }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{{ event.summary }}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNo history data found.\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNo results found.\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t
    \r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDrawerSettingStorage\r\n} from '@shared/interfaces/application-objects/drawer-setting-storage';\r\nimport {\r\n\tITimelineItem\r\n} from '@shared/interfaces/application-objects/timeline-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-history-timeline',\r\n\ttemplateUrl: './history-timeline.component.html',\r\n\tstyleUrls: [\r\n\t\t'./history-timeline.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the history timeline component.\r\n *\r\n * @export\r\n * @class HistoryTimelineComponent\r\n * @implements {OnInit}\r\n */\r\nexport class HistoryTimelineComponent\r\nimplements OnInit\r\n{\r\n\t/** Creates a new instance of the history timeline component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * Gets or sets the site layout service used for layout based displays\r\n\t * in this component.\r\n\t * @param {StorageMap} storageMap\r\n\t * The local storage map used for setting storage.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tprotected storageMap: StorageMap)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether or not this should display\r\n\t * in the minimum width view regardless of the page content size.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Input() public useMinimumWidth: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value that is able to override the timeline height used\r\n\t * to calculate timeline distances.\r\n\t * Note: This value is the $reservedHistoryDrawerHeight variable\r\n\t * used in history-timeline.component.scss.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Input() public reservedPageHeight: number = 119.5;\r\n\r\n\t/**\r\n\t * Gets or sets the set of timeline items associated to key dates\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Input() public keyDateEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of timeline items associated to key activities\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Input() public keyActivityEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of timeline items associated to data changes\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Input() public changeEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * on the current selected timeline item.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@Output() public itemSelected: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the element reference for the set of button bars.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@ViewChild('HistoryTimelineHeader', { read: ElementRef })\r\n\tpublic historyTimelineHeader: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether the component storage is\r\n\t * loaded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic storageLoaded: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the observer of form validation changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic siteLayoutChange: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the set of timeline items to display in the timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic filteredEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether we are showing the key\r\n\t * dates data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic keyDatesDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether we are showing the key\r\n\t * activities data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic keyActivitiesDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value that signifies whether we are showing the changes\r\n\t * data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic changesDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the set of quick filter menu items to display in the\r\n\t * timeline quick filter.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic quickFilterMenuItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of currently enabled filters for the timeline.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic enabledFilters: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected sorter for the timeline.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic selectedSorter: ICommonListSort =\r\n\t\t{\r\n\t\t\tname: 'Change Date',\r\n\t\t\tvalue: AppConstants.commonProperties.changeDate,\r\n\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\ticonDesc: AppConstants.cssClasses.sortDescending,\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the storage settings for the timeline.\r\n\t *\r\n\t * @type {IDrawerSettingStorage}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate storageSettings: IDrawerSettingStorage;\r\n\r\n\t/**\r\n\t * Gets a value that identifies and labels the key dates in the timeline.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate readonly keyDatesIdentifier: string = 'Key Dates';\r\n\r\n\t/**\r\n\t * Gets a value that identifies and labels the changes in the timeline.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate readonly changesIdentifier: string = 'Changes';\r\n\r\n\t/**\r\n\t * Gets a value that identifies the css selector for timeline elements.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate readonly timelineEventElementIdentifier: string =\r\n\t\t'.p-timeline-event';\r\n\r\n\t/**\r\n\t * Gets a value that sets the minimum event element height for time\r\n\t * based differential displays.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate readonly minimumEventElementHeight: number =\r\n\t\t35;\r\n\r\n\t/**\r\n\t * Gets a value that represents this component name in storage.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate readonly localStorageKey: string =\r\n\t\t'HistoryTimelineComponentSettings';\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.siteLayoutChange.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the window unload event which is called when the browser is\r\n\t * refreshed. This will ensure storage settings are saved asynchronously\r\n\t * on an F5 refresh.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.beforeUnloadEvent)\r\n\tpublic async beforeUnloadHandler()\r\n\t{\r\n\t\tawait this.ngOnDestroy();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This method will create data needed for the timeline display.\r\n\t *\r\n\t * @async\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.quickFilterMenuItems =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: this.keyDatesIdentifier,\r\n\t\t\t\t\ttitle: this.keyDatesIdentifier,\r\n\t\t\t\t\ticon: AppConstants.cssClasses.fontAwesomeCalendar,\r\n\t\t\t\t\tcommand: (actionEvent: any) =>\r\n\t\t\t\t\t\tthis.handleAddFilterEvent(\r\n\t\t\t\t\t\t\tactionEvent.item.label)\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: this.changesIdentifier,\r\n\t\t\t\t\ttitle: this.changesIdentifier,\r\n\t\t\t\t\ticon: AppConstants.cssClasses.fontAwesomeHistory,\r\n\t\t\t\t\tcommand: (actionEvent: any) =>\r\n\t\t\t\t\t\tthis.handleAddFilterEvent(\r\n\t\t\t\t\t\t\tactionEvent.item.label)\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.siteLayoutChange.pipe(\r\n\t\t\tdebounceTime(this.siteLayoutService.debounceDelay * 1.5))\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.calculateTimelineHeights();\r\n\t\t\t\t});\r\n\r\n\t\tawait this.loadStorageSettings();\r\n\r\n\t\tthis.filterEvents();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will complete save storage settings and handle a site layout\r\n\t * change.\r\n\t *\r\n\t * @async\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic async ngOnDestroy(): Promise\r\n\t{\r\n\t\tthis.siteLayoutChange.complete();\r\n\r\n\t\tif (this.storageLoaded === true)\r\n\t\t{\r\n\t\t\tawait this.saveStorageSettings(\r\n\t\t\t\t[...this.enabledFilters],\r\n\t\t\t\t{...this.selectedSorter},\r\n\t\t\t\tthis.storageMap,\r\n\t\t\t\tthis.localStorageKey);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the item selection event.\r\n\t * This will emit the selected item to all listening components.\r\n\t *\r\n\t * @param {ITimelineItem} item\r\n\t * The selected timeline item.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic selectItem(\r\n\t\titem: ITimelineItem): void\r\n\t{\r\n\t\tif (item.icon?.indexOf(\r\n\t\t\tAppConstants.cssClasses.fontAwesomeCalendar) > -1)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.itemSelected.emit(item);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the search text based event.\r\n\t * This will filter out timeline items that do not have a matching value\r\n\t * in the summary.\r\n\t *\r\n\t * @param {HTMLInputElement} element\r\n\t * The input element to get the value from.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic handleSearchTextAdd(\r\n\t\telement: HTMLInputElement): void\r\n\t{\r\n\t\tconst inputValue: string = element.value;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(inputValue))\r\n\t\t{\r\n\t\t\telement.focus();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.enabledFilters =\r\n\t\t\tthis.enabledFilters.filter(\r\n\t\t\t\t(item: MenuItem) =>\r\n\t\t\t\t\t!(item.label.toLowerCase() === inputValue.toLowerCase()\r\n\t\t\t\t\t\t&& AnyHelper.isNullOrWhitespace(item.icon)));\r\n\r\n\t\tthis.enabledFilters.push(\r\n\t\t\t{\r\n\t\t\t\tlabel: inputValue\r\n\t\t\t});\r\n\r\n\t\telement.value = null;\r\n\r\n\t\tthis.filterEvents();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the add filter event.\r\n\t * This will handle adding and removing values based on the quick filter\r\n\t * selection.\r\n\t *\r\n\t * @param {string} filterIdentifier\r\n\t * The quick filter identifier to add.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic handleAddFilterEvent(\r\n\t\tfilterIdentifier: string): void\r\n\t{\r\n\t\tconst quickFilters: string =\r\n\t\t\t[\r\n\t\t\t\tthis.keyDatesIdentifier,\r\n\t\t\t\tthis.changesIdentifier\r\n\t\t\t].join(AppConstants.characters.comma);\r\n\r\n\t\tif (quickFilters.indexOf(filterIdentifier) !== -1)\r\n\t\t{\r\n\t\t\tthis.keyDatesDisplayed = false;\r\n\t\t\tthis.keyActivitiesDisplayed = false;\r\n\t\t\tthis.changesDisplayed = false;\r\n\r\n\t\t\tthis.enabledFilters =\r\n\t\t\t\tthis.enabledFilters.filter(\r\n\t\t\t\t\t(item: MenuItem) =>\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(item.title)\r\n\t\t\t\t\t\t\t|| !quickFilters.includes(item.title));\r\n\t\t}\r\n\r\n\t\tthis.enabledFilters.push(\r\n\t\t\tthis.quickFilterMenuItems.find(\r\n\t\t\t\t(item: MenuItem) =>\r\n\t\t\t\t\titem.title === filterIdentifier));\r\n\r\n\t\tthis.filterEvents();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the remove filter event.\r\n\t * This will remove the enabled filter based on the filter identifier.\r\n\t *\r\n\t * @param {string} filterIdentifier\r\n\t * The filter identifier to remove.\r\n\t * @param {string} icon\r\n\t * The icon associated with the filter.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic handleRemoveFilterEvent(\r\n\t\tfilterIdentifier: string,\r\n\t\ticon: string): void\r\n\t{\r\n\t\tthis.enabledFilters =\r\n\t\t\tthis.enabledFilters.filter(\r\n\t\t\t\t(item: MenuItem) =>\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(icon)\r\n\t\t\t\t\t\t? item.label !== filterIdentifier\r\n\t\t\t\t\t\t\t|| !AnyHelper.isNullOrWhitespace(item.icon)\r\n\t\t\t\t\t\t: item.label !== filterIdentifier\r\n\t\t\t\t\t\t\t|| item.icon !== icon);\r\n\r\n\t\tthis.filterEvents();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the sort change event.\r\n\t * This will change the sort direction of the timeline items.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic handleSortChangeEvent(): void\r\n\t{\r\n\t\tthis.selectedSorter.direction =\r\n\t\t\tthis.selectedSorter.direction ===\r\n\t\t\t\tAppConstants.sortDirections.ascending\r\n\t\t\t\t? AppConstants.sortDirections.descending\r\n\t\t\t\t: AppConstants.sortDirections.ascending;\r\n\r\n\t\tconst filteredEvents =\r\n\t\t\tthis.filteredEvents.map(\r\n\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\titem.height = this.minimumEventElementHeight;\r\n\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\t\tfilteredEvents.reverse();\r\n\r\n\t\tthis.filteredEvents =\r\n\t\t\t[\r\n\t\t\t\t...filteredEvents\r\n\t\t\t];\r\n\r\n\t\tthis.siteLayoutChange.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the sort direction event after loading filtered events.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic handleSortDirection(): void\r\n\t{\r\n\t\tif (this.selectedSorter.direction ===\r\n\t\t\tAppConstants.sortDirections.ascending)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.filteredEvents.reverse();\r\n\r\n\t\tthis.filteredEvents =\r\n\t\t\t[\r\n\t\t\t\t...this.filteredEvents\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Filters the events based on the menu item selected.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tpublic filterEvents(): void\r\n\t{\r\n\t\tlet filteredEvents = [];\r\n\r\n\t\t// If we do not have any selected quickfilters, combine all.\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\tthis.enabledFilters.find(\r\n\t\t\t\t(item: MenuItem) =>\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(item.title))))\r\n\t\t{\r\n\t\t\tthis.keyDatesDisplayed = true;\r\n\t\t\tthis.keyActivitiesDisplayed = true;\r\n\t\t\tthis.changesDisplayed = true;\r\n\t\t}\r\n\r\n\t\tif (this.enabledFilters.length === 0)\r\n\t\t{\r\n\t\t\tfilteredEvents =\r\n\t\t\t\tthis.keyDateEvents\r\n\t\t\t\t\t.concat(this.keyActivityEvents)\r\n\t\t\t\t\t.concat(this.changeEvents);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst searchFilters: string[] = [];\r\n\t\t\tfor (const menuItem of this.enabledFilters)\r\n\t\t\t{\r\n\t\t\t\tswitch(menuItem.title)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase this.keyDatesIdentifier:\r\n\t\t\t\t\t\tthis.keyDatesDisplayed = true;\r\n\t\t\t\t\t\tthis.keyActivitiesDisplayed = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase this.changesIdentifier:\r\n\t\t\t\t\t\tthis.changesDisplayed = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tswitch(menuItem.label)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase this.keyDatesIdentifier:\r\n\t\t\t\t\tcase this.changesIdentifier:\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(menuItem.title))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsearchFilters.push(menuItem.label);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tsearchFilters.push(menuItem.label);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfilteredEvents =\r\n\t\t\t\tthis.getFilteredEvents(\r\n\t\t\t\t\tsearchFilters);\r\n\t\t}\r\n\r\n\t\tthis.filteredEvents =\r\n\t\t\tfilteredEvents\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem.icon =\r\n\t\t\t\t\t\t\titem.icon ??\r\n\t\t\t\t\t\t\t\tAppConstants.cssClasses.fontAwesomeCalendar;\r\n\r\n\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t})\r\n\t\t\t\t.sort(\r\n\t\t\t\t\t(itemOne: ITimelineItem, itemTwo: ITimelineItem) =>\r\n\t\t\t\t\t\titemOne.dateTime.toMillis()\r\n\t\t\t\t\t\t\t- itemTwo.dateTime.toMillis());\r\n\r\n\t\tthis.handleSortDirection();\r\n\t\tthis.siteLayoutChange.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the filter based on the menu item selected.\r\n\t *\r\n\t * @param {string[]} searchFilters\r\n\t * The set of string based search filters.\r\n\t * @returns {ITimelineItem[]}\r\n\t * The filtered events based on the toggle.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate getFilteredEvents(\r\n\t\tsearchFilters: string[]):\r\n\t\tITimelineItem[]\r\n\t{\r\n\t\tlet filteredEvents = [];\r\n\r\n\t\tif (this.keyDatesDisplayed === true)\r\n\t\t{\r\n\t\t\tfilteredEvents =\r\n\t\t\t\tfilteredEvents\r\n\t\t\t\t\t.concat(this.keyDateEvents);\r\n\t\t}\r\n\r\n\t\tif (this.keyActivitiesDisplayed === true)\r\n\t\t{\r\n\t\t\tfilteredEvents =\r\n\t\t\t\tfilteredEvents\r\n\t\t\t\t\t.concat(this.keyActivityEvents);\r\n\t\t}\r\n\r\n\t\tif (this.changesDisplayed === true)\r\n\t\t{\r\n\t\t\tfilteredEvents =\r\n\t\t\t\tfilteredEvents\r\n\t\t\t\t\t.concat(this.changeEvents);\r\n\t\t}\r\n\r\n\t\treturn searchFilters.length === 0\r\n\t\t\t? filteredEvents\r\n\t\t\t: filteredEvents.filter(\r\n\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet matchesFilter: boolean = true;\r\n\t\t\t\t\tfor (const filter of searchFilters)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matchesFilter === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmatchesFilter =\r\n\t\t\t\t\t\t\titem.summary.toLowerCase()\r\n\t\t\t\t\t\t\t\t.includes(filter.toLowerCase());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn matchesFilter;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the timeline heights based on the filtered events.\r\n\t *\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate calculateTimelineHeights(): void\r\n\t{\r\n\t\tif (this.filteredEvents.length < 2)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.reservedPageHeight =\r\n\t\t\tthis.historyTimelineHeader.nativeElement\r\n\t\t\t\t.getBoundingClientRect().height\r\n\t\t\t\t+ 36\r\n\t\t\t\t+ 14;\r\n\r\n\t\tconst scrollPanel: HTMLDivElement =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t'.history-timeline-scroll-content');\r\n\r\n\t\tif (AnyHelper.isNull(scrollPanel))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tscrollPanel.style.height =\r\n\t\t\t(this.siteLayoutService.windowHeight - this.reservedPageHeight)\r\n\t\t\t\t+ 'px';\r\n\r\n\t\tconst totalTimelineLength: number =\r\n\t\t\tthis.filteredEvents[\r\n\t\t\t\tthis.filteredEvents.length - 1].dateTime.toMillis()\r\n\t\t\t\t- this.filteredEvents[0].dateTime.toMillis();\r\n\r\n\t\tconst availableHeight: number =\r\n\t\t\tthis.siteLayoutService.windowHeight\r\n\t\t\t\t- this.reservedPageHeight;\r\n\t\tconst reservedHeight: number =\r\n\t\t\tthis.getFinalElementsReservedHeight(\r\n\t\t\t\tavailableHeight,\r\n\t\t\t\ttotalTimelineLength);\r\n\r\n\t\tlet initialItemAdded: boolean = false;\r\n\t\tlet previousEvent: ITimelineItem = this.filteredEvents[0];\r\n\t\tconst filteredEvents: ITimelineItem[] =\r\n\t\t\t[\r\n\t\t\t\t...this.filteredEvents\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst heightPercent: number =\r\n\t\t\t\t\t\t\t\t(item.dateTime.toMillis()\r\n\t\t\t\t\t\t\t\t\t- this.filteredEvents[0]\r\n\t\t\t\t\t\t\t\t\t\t.dateTime.toMillis())\r\n\t\t\t\t\t\t\t\t\t/ totalTimelineLength;\r\n\t\t\t\t\t\t\tlet expectedHeight: number =\r\n\t\t\t\t\t\t\t\tavailableHeight * heightPercent;\r\n\r\n\t\t\t\t\t\t\tif (expectedHeight > reservedHeight)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\texpectedHeight =\r\n\t\t\t\t\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\t\t\t\t\treservedHeight,\r\n\t\t\t\t\t\t\t\t\t\tpreviousEvent.height\r\n\t\t\t\t\t\t\t\t\t\t\t+ this.minimumEventElementHeight);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse if (initialItemAdded === true\r\n\t\t\t\t\t\t\t\t&& (previousEvent.height\r\n\t\t\t\t\t\t\t\t\t+ this.minimumEventElementHeight) >\r\n\t\t\t\t\t\t\t\t\t\texpectedHeight)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\texpectedHeight =\r\n\t\t\t\t\t\t\t\t\tpreviousEvent.height\r\n\t\t\t\t\t\t\t\t\t\t+ this.minimumEventElementHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\titem.height = expectedHeight;\r\n\t\t\t\t\t\t\tinitialItemAdded = true;\r\n\t\t\t\t\t\t\tpreviousEvent = item;\r\n\r\n\t\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t\t})\r\n\t\t\t];\r\n\r\n\t\tconst timelineEvents: HTMLDivElement[] =\r\n\t\t\tArray.from(\r\n\t\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t\tthis.timelineEventElementIdentifier));\r\n\r\n\t\ttimelineEvents.forEach(\r\n\t\t\t(_item: HTMLDivElement,\r\n\t\t\t\tindex: number) =>\r\n\t\t\t{\r\n\t\t\t\tif (index === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimelineEvents[index - 1].style.minHeight =\r\n\t\t\t\t\t(filteredEvents[index].height\r\n\t\t\t\t\t\t- filteredEvents[index -1].height)\r\n\t\t\t\t\t+ 'px';\r\n\t\t\t});\r\n\r\n\t\tthis.filteredEvents =\r\n\t\t\tfilteredEvents;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the final elements reserved height based on the available height\r\n\t * and the total timeline length.\r\n\t *\r\n\t * @param {number} availableHeight\r\n\t * The available height for the timeline.\r\n\t * @param {number} totalTimelineLength\r\n\t * The total length of the timeline.\r\n\t * @returns {number}\r\n\t * The final elements reserved height.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate getFinalElementsReservedHeight(\r\n\t\tavailableHeight: number,\r\n\t\ttotalTimelineLength: number): number\r\n\t{\r\n\t\tlet previousHeight: number = 0;\r\n\t\tconst expectedFinalEvents: number =\r\n\t\t\tthis.filteredEvents\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(item: ITimelineItem,\r\n\t\t\t\t\t\tindex: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst remainingItems: number =\r\n\t\t\t\t\t\t\tthis.filteredEvents.length - index;\r\n\r\n\t\t\t\t\t\tconst heightPercent: number =\r\n\t\t\t\t\t\t\t(item.dateTime.toMillis()\r\n\t\t\t\t\t\t\t\t- this.filteredEvents[0]\r\n\t\t\t\t\t\t\t\t\t.dateTime.toMillis())\r\n\t\t\t\t\t\t\t\t/ totalTimelineLength;\r\n\r\n\t\t\t\t\t\tlet expectedHeight: number =\r\n\t\t\t\t\t\t\theightPercent * availableHeight;\r\n\r\n\t\t\t\t\t\tif (expectedHeight > 0\r\n\t\t\t\t\t\t\t&& (previousHeight\r\n\t\t\t\t\t\t\t\t+ this.minimumEventElementHeight) >\r\n\t\t\t\t\t\t\t\t\texpectedHeight)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texpectedHeight =\r\n\t\t\t\t\t\t\t\tpreviousHeight\r\n\t\t\t\t\t\t\t\t\t+ this.minimumEventElementHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpreviousHeight = expectedHeight;\r\n\r\n\t\t\t\t\t\treturn expectedHeight\r\n\t\t\t\t\t\t\t+ (remainingItems * this.minimumEventElementHeight)\r\n\t\t\t\t\t\t\t>= availableHeight;\r\n\t\t\t\t\t}).length;\r\n\r\n\t\treturn availableHeight\r\n\t\t\t- (expectedFinalEvents * this.minimumEventElementHeight);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the storage settings for the timeline.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A promise that resolves when the storage settings are loaded.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate async loadStorageSettings(): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve: any) =>\r\n\t\t\t{\r\n\t\t\t\tthis.storageMap.get(this.localStorageKey)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t(storageSettings: IDrawerSettingStorage) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.storageSettings =\r\n\t\t\t\t\t\t\t\tstorageSettings\r\n\t\t\t\t\t\t\t\t\t?? \r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tenabledFilters: [],\r\n\t\t\t\t\t\t\t\t\t\t\tselectedSorter: this.selectedSorter\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tthis.enabledFilters =\r\n\t\t\t\t\t\t\t\t\tthis.deserializeFilters()\r\n\t\t\t\t\t\t\t\t\t\t?? [];\r\n\t\t\t\t\t\t\tthis.selectedSorter =\r\n\t\t\t\t\t\t\t\tthis.storageSettings?.selectedSorter\r\n\t\t\t\t\t\t\t\t\t?? this.selectedSorter;\r\n\r\n\t\t\t\t\t\t\tthis.storageLoaded = true;\r\n\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the storage settings for the timeline. This async method can be\r\n\t * called without await for a non-asynchronous but guaranteed to finish\r\n\t * method.\r\n\t *\r\n\t * @async\r\n\t * @param {IDrawerSettingStorage} storageSettings\r\n\t * The settings storage to be saved.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves when the storage settings are saved.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate async saveStorageSettings(\r\n\t\tenabledFilters: MenuItem[],\r\n\t\tselectedSorter: ICommonListSort,\r\n\t\tstorageMap: StorageMap,\r\n\t\tlocalStorageKey: string): Promise\r\n\t{\r\n\t\tconst storageSettings: IDrawerSettingStorage =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tenabledFilters:\r\n\t\t\t\t\tenabledFilters.map(\r\n\t\t\t\t\t\t(filter: MenuItem) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (!AnyHelper.isNull(filter.command))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfilter.serializedCommand =\r\n\t\t\t\t\t\t\t\t\tfilter.command.toString();\r\n\t\t\t\t\t\t\t\tdelete filter.command;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn filter;\r\n\t\t\t\t\t\t}),\r\n\t\t\t\tselectedSorter: selectedSorter\r\n\t\t\t};\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve: any) =>\r\n\t\t\t{\r\n\t\t\t\tstorageMap.set(\r\n\t\t\t\t\tlocalStorageKey,\r\n\t\t\t\t\tstorageSettings)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Deserializes the filters for the timeline.\r\n\t *\r\n\t * @returns {MenuItem[]}\r\n\t * The deserialized filters.\r\n\t * @memberof HistoryTimelineComponent\r\n\t */\r\n\tprivate deserializeFilters(): MenuItem[]\r\n\t{\r\n\t\treturn this.storageSettings\r\n\t\t\t?.enabledFilters\r\n\t\t\t?.map(\r\n\t\t\t\t(filter: MenuItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (!AnyHelper.isNull(filter.serializedCommand))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter.command =\r\n\t\t\t\t\t\t\t\tnew Function(\r\n\t\t\t\t\t\t\t\t\t'return '\r\n\t\t\t\t\t\t\t\t\t\t+ filter.serializedCommand)();\r\n\t\t\t\t\t\tdelete filter.serializedCommand;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn filter;\r\n\t\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/difference-definition.interface';\r\nimport {\r\n\tIEntityInstanceHistory\r\n} from '@shared/interfaces/entities/entity-instance-history.interface';\r\n\r\n/**\r\n * A class containing static helper methods for entity based logic.\r\n *\r\n * @export\r\n * @class EntityArrayHelper\r\n */\r\nexport class EntityArrayHelper\r\n{\r\n\t/**\r\n\t * Given a set of entities this will decorate the primary business\r\n\t * logic differences found from the previous history record\r\n\t * in the given array order.\r\n\t *\r\n\t * @static\r\n\t * @param {string} comparisonObjectName\r\n\t * The business logic item name.\r\n\t * @param {IEntityInstanceHistory[]} entityInstances\r\n\t * The loaded set of entity instance history data items, these will\r\n\t * be converted to history records in this method.\r\n\t * @param {string[]} excludedDifferenceProperties\r\n\t * The set of differences to exclude from this collection.\r\n\t * @returns {IEntityInstance[]}\r\n\t * A decorated set of entity instance records with business logic history\r\n\t * differences from their previous set.\r\n\t * Note: These will be decorated as entityInstance.previousHistoryRecord,\r\n\t * entityInstance.previousHistoryRecordDifferences,\r\n\t * and entityInstance.previousHistoryRecordDifferenceSummary.\r\n\t * @memberof EntityArrayHelper\r\n\t */\r\n\tpublic static decorateBusinessLogicDifferences(\r\n\t\tcomparisonObjectName: string,\r\n\t\tentityInstances: IEntityInstanceHistory[],\r\n\t\texcludedDifferenceProperties: string[]): IEntityInstanceHistory[]\r\n\t{\r\n\t\tif (entityInstances.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet previousEntityInstance: IEntityInstanceHistory =\r\n\t\t\t{};\r\n\t\tfor (const entityInstance of entityInstances)\r\n\t\t{\r\n\t\t\tconst mappedDifferences: IDifferenceDefinition[] =\r\n\t\t\t\tObjectHelper.getBusinessLogicDifferences(\r\n\t\t\t\t\tcomparisonObjectName,\r\n\t\t\t\t\tpreviousEntityInstance,\r\n\t\t\t\t\tentityInstance,\r\n\t\t\t\t\texcludedDifferenceProperties);\r\n\r\n\t\t\tconst differenceProperties: string[] = [];\r\n\t\t\tmappedDifferences.forEach(\r\n\t\t\t\t(difference: IDifferenceDefinition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst splitKey: string[] =\r\n\t\t\t\t\t\tdifference.key.split(\r\n\t\t\t\t\t\t\tAppConstants.characters.period);\r\n\t\t\t\t\tdifferenceProperties.push(\r\n\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\tsplitKey.length < 3\r\n\t\t\t\t\t\t\t\t\t? splitKey[1]\r\n\t\t\t\t\t\t\t\t\t: splitKey[2])));\r\n\t\t\t\t});\r\n\r\n\t\t\tconst differenceSummary: string =\r\n\t\t\t\t[...new Set(differenceProperties)]\r\n\t\t\t\t\t.join(AppConstants.characters.comma\r\n\t\t\t\t\t\t+ AppConstants.characters.space);\r\n\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(differenceSummary))\r\n\t\t\t{\r\n\t\t\t\tentityInstance.previousHistoryRecord =\r\n\t\t\t\t\tpreviousEntityInstance;\r\n\t\t\t\tentityInstance.previousHistoryRecordDifferences =\r\n\t\t\t\t\tmappedDifferences;\r\n\t\t\t\tentityInstance.previousHistoryRecordDifferenceSummary =\r\n\t\t\t\t\tdifferenceSummary;\r\n\t\t\t}\r\n\r\n\t\t\tpreviousEntityInstance = entityInstance;\r\n\t\t}\r\n\r\n\t\treturn entityInstances;\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBack\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tView: Differences\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tUpdated by {{selectedItem.item.updatedByUser}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tView: Key Activity\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{{ selectedItem.summary }}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{{ selectedItem.reference }}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityArrayHelper\r\n} from '@entity/helpers/entity-array-helper';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tITimelineItem\r\n} from '@shared/interfaces/application-objects/timeline-item.interface';\r\nimport {\r\n\tIEntityInstanceHistory\r\n} from '@shared/interfaces/entities/entity-instance-history.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-history',\r\n\ttemplateUrl: './history.component.html',\r\n\tstyleUrls: [\r\n\t\t'./history.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level history data.\r\n *\r\n * @export\r\n * @class HistoryComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class HistoryComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the history component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {ClaimsService} claimsService\r\n\t * The claims service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic claimsService: ClaimsService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition for this component.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the comparison object friendly name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic comparisonObjectName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the business logic history array.\r\n\t *\r\n\t * @type {IEntityInstanceHistory[]}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic businessLogicHistory: IEntityInstanceHistory[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the excluded difference properties. If sent as a partial\r\n\t * all instances that contain this will be removed otherwise exact\r\n\t * property location matches will be excluded.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic excludedDifferenceProperties: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of keys and values associated to key dates\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic keyDateEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of keys and values associated to key activites\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic keyActivityEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of keys and values associated to data changes\r\n\t * in a timeline.\r\n\t *\r\n\t * @type {ITimelineItem[]}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic changeEvents: ITimelineItem[] = [];\r\n\r\n\t/**\r\n\t * Gets the identifier for the view model property of the update user.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly updatedByUser: string = 'updatedByUser';\r\n\r\n\t/**\r\n\t * Gets the identifier for the view model object description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly objectDifferenceDescription: string =\r\n\t\t'objectDifferenceDescription';\r\n\r\n\t/**\r\n\t * Gets the identifier for the view model property of the comparison\r\n\t * record for previous history.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly previousHistoryRecord: string =\r\n\t\t'previousHistoryRecord';\r\n\r\n\t/**\r\n\t * Gets the identifier for the view model property of difference records.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly previousHistoryRecordDifferences: string =\r\n\t\t'previousHistoryRecordDifferences';\r\n\r\n\t/**\r\n\t * Gets the identifier for the view model property of a difference record\r\n\t * summary.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly previousHistoryRecordDifferenceSummary: string =\r\n\t\t'previousHistoryRecordDifferenceSummary';\r\n\r\n\t/**\r\n\t * Gets the icon to display for a key activity event.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly keyActivityIcon: string =\r\n\t\tAppConstants.cssClasses.fontAwesomeKey;\r\n\r\n\t/**\r\n\t * Gets the icon to display for a key date.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly keyDateIcon: string =\r\n\t\tAppConstants.cssClasses.fontAwesomeCalendar;\r\n\r\n\t/**\r\n\t * Gets the icon to display for a change record.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly changeEventIcon: string =\r\n\t\tAppConstants.cssClasses.fontAwesomeHistory;\r\n\r\n\t/**\r\n\t * Gets the offset to use to ensure the first key date event will\r\n\t * be the create record.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate readonly createDateOffset: number = 5;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!(this.context.source instanceof EntityInstanceComponent))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tthis.entityDisplayName = 'History';\r\n\t\tthis.comparisonObjectName =\r\n\t\t\tStringHelper.getEntityTypeTitle(\r\n\t\t\t\tentityInstanceComponent.entityType.displayName);\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tentityInstanceComponent.entityDefinition;\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tawait this.setBusinessLogicHistory(\r\n\t\t\tentityInstanceComponent);\r\n\r\n\t\tawait this.createHistoryTimelineEvents(\r\n\t\t\tentityInstanceComponent);\r\n\r\n\t\tthis.itemActions = [];\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tthis.displayMode = this.displayModes.timeline;\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t* Implements the ownership guard interface.\r\n\t* This will calculate drawer ownership permissions.\r\n\t*\r\n\t* @async\r\n\t* @returns {Promise}\r\n\t* A value signifying whether or not access is allowed to this drawer.\r\n\t* @memberof HistoryComponent\r\n\t*/\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\t// Entity instance (Source Component) access allows history access.\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t* Handles the item selected event sent from the history timeline.\r\n\t* This will alter the view mode to display the selected item details.\r\n\t*\r\n\t* @param {ITimelineItem} item\r\n\t* The selected item to display.\r\n\t* @memberof HistoryComponent\r\n\t*/\r\n\tpublic itemSelected(\r\n\t\titem: ITimelineItem): void\r\n\t{\r\n\t\tthis.selectedItem = item;\r\n\t\tthis.displayMode = AppConstants.displayMode.view;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the comparison object name for differences displays\r\n\t *\r\n\t * @param {string[]} definitionExcludedDifferenceProperties\r\n\t * If defined in the entity definition, included these one off excluded\r\n\t * properties.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate setExcludedDifferenceProperties(\r\n\t\tdefinitionExcludedDifferenceProperties: string[]): void\r\n\t{\r\n\t\tthis.excludedDifferenceProperties =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t// First level data.\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.id,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.versionNumber,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.createDate,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.changeDate,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.changedById,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.createdById,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties\r\n\t\t\t\t\t\t.entityType,\r\n\r\n\t\t\t\t// Remove at all levels.\r\n\t\t\t\tAppConstants.commonProperties\r\n\t\t\t\t\t.resourceIdentifier,\r\n\t\t\t\tthis.objectDifferenceDescription,\r\n\r\n\t\t\t\t// Do not track view model data.\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ this.updatedByUser,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ this.previousHistoryRecord,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ this.previousHistoryRecordDifferences,\r\n\t\t\t\t`${this.comparisonObjectName}.`\r\n\t\t\t\t\t+ this.previousHistoryRecordDifferenceSummary\r\n\t\t\t];\r\n\r\n\t\t// Definition level exclusions.\r\n\t\tthis.excludedDifferenceProperties =\r\n\t\t\tthis.excludedDifferenceProperties.concat(\r\n\t\t\t\tdefinitionExcludedDifferenceProperties\r\n\t\t\t\t\t.map((property: string) =>\r\n\t\t\t\t\t\tproperty.replace(\r\n\t\t\t\t\t\t\tAppConstants.characters.dollarSign,\r\n\t\t\t\t\t\t\tthis.comparisonObjectName)));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the business logic history for this component.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceComponent} entityInstanceComponent\r\n\t * The entity instance component to set the business logic history for.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate async setBusinessLogicHistory(\r\n\t\tentityInstanceComponent: EntityInstanceComponent)\r\n\t{\r\n\t\tconst decorateUpdatedByUsers: boolean = true;\r\n\t\tthis.setExcludedDifferenceProperties(\r\n\t\t\tthis.entityDefinition.excludedDifferenceProperties\r\n\t\t\t\t?? []);\r\n\r\n\t\tconst businessLogicHistory: IEntityInstance[] =\r\n\t\t\tawait this.entityService.getHistory(\r\n\t\t\t\tentityInstanceComponent.id,\r\n\t\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.commonProperties.startDate\r\n\t\t\t\t\t+ ` ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\tdecorateUpdatedByUsers,\r\n\t\t\t\tentityInstanceComponent.entityInstance);\r\n\r\n\t\tthis.businessLogicHistory =\r\n\t\t\tEntityArrayHelper.decorateBusinessLogicDifferences(\r\n\t\t\t\tthis.comparisonObjectName,\r\n\t\t\t\tbusinessLogicHistory,\r\n\t\t\t\tthis.excludedDifferenceProperties);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the history timeline events for this component.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceComponent} entityInstanceComponent\r\n\t * The entity instance component to create the history timeline events for.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate async createHistoryTimelineEvents(\r\n\t\tentityInstanceComponent: EntityInstanceComponent): Promise\r\n\t{\r\n\t\tthis.keyDateEvents =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tsummary: 'Create Date',\r\n\t\t\t\t\ticon: this.keyDateIcon,\r\n\t\t\t\t\tdateTime:\r\n\t\t\t\t\t\tDateHelper.addTimeUnit(\r\n\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t\t\t\t.entityInstance.createDate),\r\n\t\t\t\t\t\t\t-this.createDateOffset,\r\n\t\t\t\t\t\t\tDateHelper.timeUnits.second)\r\n\r\n\t\t\t\t},\r\n\t\t\t\t...this.mapObjectToTimelineItems(\r\n\t\t\t\t\tentityInstanceComponent.entityInstance.data.keyDates,\r\n\t\t\t\t\tthis.keyDateIcon)\r\n\t\t\t];\r\n\r\n\t\tthis.context.data.includeActivityName = false;\r\n\t\tthis.context.data.detailedDescription = true;\r\n\t\tthis.keyActivityEvents =\r\n\t\t\tawait this.mapObjectArrayToTimelineItems(\r\n\t\t\t\tentityInstanceComponent.entityInstance.data.keyActivities,\r\n\t\t\t\tthis.keyActivityIcon);\r\n\r\n\t\tthis.context.data.includeActivityName = true;\r\n\t\tthis.context.data.detailedDescription = false;\r\n\t\tthis.createChangeEvents();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the history record change events for this component.\r\n\t *\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate createChangeEvents(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.businessLogicHistory)\r\n\t\t\t|| this.businessLogicHistory.length === 0)\r\n\t\t{\r\n\t\t\tthis.changeEvents = [];\r\n\t\t}\r\n\r\n\t\tconst changeEvents: ITimelineItem[] =\r\n\t\t\tthis.businessLogicHistory\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(historyItem: IEntityInstanceHistory) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\thistoryItem\r\n\t\t\t\t\t\t\t\t.previousHistoryRecordDifferenceSummary))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst changeEvent: ITimelineItem =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsummary:\r\n\t\t\t\t\t\t\t\t\thistoryItem\r\n\t\t\t\t\t\t\t\t\t\t.previousHistoryRecordDifferenceSummary\r\n\t\t\t\t\t\t\t\t\t\t+ ' Updated',\r\n\t\t\t\t\t\t\t\ticon: this.changeEventIcon,\r\n\t\t\t\t\t\t\t\titem: historyItem,\r\n\t\t\t\t\t\t\t\tdateTime:\r\n\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\thistoryItem.changeDate)\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn changeEvent;\r\n\t\t\t\t\t})\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t\t\t!AnyHelper.isNull(item));\r\n\r\n\t\tthis.changeEvents = changeEvents;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps an object to a set of timeline items.\r\n\t *\r\n\t * @param {object} objectToMap\r\n\t * The object to map to timeline items.\r\n\t * @param {string} icon\r\n\t * The icon to display for the timeline items.\r\n\t * @returns {ITimelineItem[]}\r\n\t * A set of timeline items mapped from the object.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate mapObjectToTimelineItems(\r\n\t\tobjectToMap: object,\r\n\t\ticon: string): ITimelineItem[]\r\n\t{\r\n\t\tif (AnyHelper.isNull(objectToMap))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst objectEvents: ITimelineItem[] =\r\n\t\t\tObject.keys(objectToMap)\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(key: string) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(objectToMap[key]))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst timelineItem: ITimelineItem =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsummary:\r\n\t\t\t\t\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\t\t\t\t\tkey)),\r\n\t\t\t\t\t\t\t\ticon: icon,\r\n\t\t\t\t\t\t\t\tdateTime:\r\n\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(objectToMap[key])\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn timelineItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(item: ITimelineItem) =>\r\n\t\t\t\t\t\t!AnyHelper.isNull(item));\r\n\r\n\t\tobjectEvents.sort(\r\n\t\t\t(itemOne: ITimelineItem, itemTwo: ITimelineItem) =>\r\n\t\t\t\titemOne.dateTime.valueOf()\r\n\t\t\t\t\t- itemTwo.dateTime.valueOf());\r\n\r\n\t\treturn objectEvents;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps an object array to a set of timeline items.\r\n\t *\r\n\t * @param {any[]} objectArrayToMap\r\n\t * The object array to map to timeline items.\r\n\t * @param {string} icon\r\n\t * The icon to display for the timeline items.\r\n\t * @returns {ITimelineItem[]}\r\n\t * A set of timeline items mapped from the object.\r\n\t * @memberof HistoryComponent\r\n\t */\r\n\tprivate async mapObjectArrayToTimelineItems(\r\n\t\tobjectArrayToMap: any[],\r\n\t\ticon: string): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(objectArrayToMap)\r\n\t\t\t|| objectArrayToMap.length === 0\r\n\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.entityDefinition.getKeyActivitiesDescriptionPromise()))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst objectEvents: ITimelineItem[] =\r\n\t\t\tobjectArrayToMap.map(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst timelineItem: ITimelineItem =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsummary: item.name,\r\n\t\t\t\t\t\t\ticon: icon,\r\n\t\t\t\t\t\t\tdateTime: DateHelper.fromUtcIso(item.date),\r\n\t\t\t\t\t\t\titem: item\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\treturn timelineItem;\r\n\t\t\t\t});\r\n\r\n\t\tconst keyActivityPromise: string =\r\n\t\t\tthis.entityDefinition.getKeyActivitiesDescriptionPromise();\r\n\r\n\t\tfor (const objectEvent of objectEvents)\r\n\t\t{\r\n\t\t\tthis.context.data.item = objectEvent.item;\r\n\r\n\t\t\tobjectEvent.reference =\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tkeyActivityPromise,\r\n\t\t\t\t\t{...this.context});\r\n\t\t}\r\n\r\n\t\treturn objectEvents;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tDirective,\r\n\tEventEmitter,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[Note]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with notes.\r\n *\r\n * @export\r\n * @class NoteDirective\r\n */\r\nexport class NoteDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of note directive.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the navigate event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof NoteDirective\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the set of available actions for nested displays.\r\n\t *\r\n\t * @type\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tpublic itemActions: MenuItem[] =\r\n\t\t[\r\n\t\t\t {\r\n\t\t\t\ticon: 'fa-info-circle',\r\n\t\t\t\tid: AppConstants.displayMode.view,\r\n\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\tAppConstants.displayMode.view);\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t {\r\n\t\t\t\ticon: 'fa-trash',\r\n\t\t\t\tid: AppConstants.displayMode.delete,\r\n\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\tAppConstants.displayMode.delete);\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets a datetime from a string or date.\r\n\t *\r\n\t * @param {(Date | string)} date\r\n\t * Input value to convert to a datetime.\r\n\t * @returns {DateTime}\r\n\t * A datetime object.\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tpublic getDateTime(\r\n\t\tdate: Date | string): DateTime\r\n\t{\r\n\t\treturn date instanceof Date\r\n\t\t\t? DateTime.fromJSDate(date)\r\n\t\t\t: DateTime.fromISO(date);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets custom field data from the selected item data, not consisting of\r\n\t * the standardized note data elements.\r\n\t *\r\n\t * @param {IEntityInstance}\r\n\t * The item to get property label data for.\r\n\t * @returns {string[]}\r\n\t * An array of custom property names.\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\tpublic getNoteCustomData(\r\n\t\tselectedItem: IEntityInstance): string[]\r\n\t{\r\n\t\treturn Object.keys(selectedItem.data)\r\n\t\t\t.filter((item: string) =>\r\n\t\t\t\titem !== 'content'\r\n\t\t\t\t\t&& item !== 'userName'\r\n\t\t\t\t\t&& item !== 'changeDateTime');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a JSON property's properly cased display value.\r\n\t *\r\n\t * @param {string} input\r\n\t * A string to properly case for display.\r\n\t * @returns {string}\r\n\t * A display friendly string representation of input.\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\tpublic getPropertyDisplayValue(\r\n\t\tinput: string): string\r\n\t{\r\n\t\treturn StringHelper.toProperCase(\r\n\t\t\tStringHelper.beforeCapitalSpaces(input));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a display name for a hierarchial period separated entity type.\r\n\t *\r\n\t * @protected\r\n\t * @param {string} input\r\n\t * A string representing the entity type name.\r\n\t * @returns {string}\r\n\t * A string representing the display value for the input.\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tpublic getDisplayName(\r\n\t\tinput: string): string\r\n\t{\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\tinput,\r\n\t\t\t\tAppConstants.characters.period));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of EntityType objects for the specified entityNames.\r\n\t *\r\n\t * @protected\r\n\t * @param {string[]} entityNames\r\n\t * A collection of string values representing entity type names.\r\n\t * @returns {Promise}\r\n\t * A collection of EntityType objects for the requested entityNames.\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tprotected async getEntityTypesFromNameList(\r\n\t\tentityNames: string[]): Promise\r\n\t{\r\n\t\tif (entityNames.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn this.entityTypeApiService.query(\r\n\t\t\t`(Name IN (\"${entityNames.join('\",\"')}\"))`,\r\n\t\t\t'Id')\r\n\t\t\t.then((item: IEntityTypeDto[]) =>\r\n\t\t\t\titem.map((entityType: IEntityTypeDto) =>\r\n\t\t\t\t\tnew EntityType(entityType)));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of strings representing note types filtered from the\r\n\t * list of input types.\r\n\t *\r\n\t * @protected\r\n\t * @param {number} parentId\r\n\t * The parent id of the note.\r\n\t * @param {string} parentTypeGroup\r\n\t * the parent type group.\r\n\t * @param {EntityDefinition} parentEntityDefinition\r\n\t * The parent Entity Definition.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * the entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The Entity Type API service.\r\n\t * @param {string} rightName\r\n\t * The name of the right to check (CRUDE).\r\n\t * @returns {Promise}\r\n\t * A collection of suppported and authorized entity types notes.\r\n\t * @memberof NoteDirective\r\n\t */\r\n\tprotected async getSupportedNoteTypes(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tparentEntityDefinition: EntityDefinition,\r\n\t\tentityInstanceApiService: EntityInstanceApiService,\r\n\t\tentityTypeApiService: EntityTypeApiService,\r\n\t\tright: SecurityRightType):\r\n\t\t\tPromise\r\n\t{\r\n\t\tconst childNotePermissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait SecurityHelper\r\n\t\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tparentTypeGroup,\r\n\t\t\t\t\t'Note.*',\r\n\t\t\t\t\tparentEntityDefinition,\r\n\t\t\t\t\tentityInstanceApiService,\r\n\t\t\t\t\tentityTypeApiService);\r\n\r\n\t\tif (childNotePermissions.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn childNotePermissions\r\n\t\t\t.filter((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tSecurityHelper.HasRight(\r\n\t\t\t\t\tright,\r\n\t\t\t\t\tdefinition.entityTypeName,\r\n\t\t\t\t\t[definition]))\r\n\t\t\t.map((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tnew EntityType(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: definition.entityTypeId,\r\n\t\t\t\t\t\tgroup: definition.entityTypeGroup,\r\n\t\t\t\t\t\tname: definition.entityTypeName,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tdefinition.OwnershipSecurityGroupId,\r\n\t\t\t\t\t\tpublic: definition.public\r\n\t\t\t\t\t}));\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tNoteDirective\r\n} from '@shared/directives/note.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-note-list',\r\n\ttemplateUrl: './note-list.component.html'\r\n})\r\n\r\n/**\r\n * A component representing context level notes list view.\r\n *\r\n * @export\r\n * @class NoteListComponent\r\n * @extends {NoteDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class NoteListComponent\r\n\textends NoteDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t\tsuper(entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the change selected item event emitter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\t@Output() public changeSelectedItem: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the common list context to be loaded\r\n\t * during view mode.\r\n\t *\r\n\t * @type {IDynamicComponentContext<\r\n\t * \t\tNoteListComponent,\r\n\t * \t\tICommonListContext>}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic commonListContext: IDynamicComponentContext<\r\n\t\tNoteListComponent,\r\n\t\tICommonListContext>;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the current display mode is\r\n\t * loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of enabled filters.\r\n\t *\r\n\t * @type {ICommonListFilter[]}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic enabledFilters: ICommonListFilter[];\r\n\r\n\t/**\r\n\t * Gets or sets the list of common sorters for the list view.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] = [\r\n\t\t{\r\n\t\t\tname: 'Create Date',\r\n\t\t\tvalue: 'id',\r\n\t\t\tdirection: 'DESC',\r\n\t\t\ticonAsc: 'fa fa-sort-amount-asc',\r\n\t\t\ticonDesc: 'fa fa-sort-amount-desc'\r\n\t\t}];\r\n\r\n\t/**\r\n\t * Gets or sets the selected sorter.\r\n\t *\r\n\t * @type {ICommonListSort}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic sorter: ICommonListSort;\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the supported note types.\r\n\t *\r\n\t * @type {EntityType[]}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic supportedNoteTypes: EntityType[];\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst source: EntityInstanceComponent\r\n\t\t\t= (this.context.source);\r\n\r\n\t\tthis.supportedNoteTypes =\r\n\t\t\tawait this.getSupportedNoteTypes(\r\n\t\t\t\tsource.id,\r\n\t\t\t\tsource.entityType.group,\r\n\t\t\t\tsource.entityDefinition,\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\tSecurityRightType.read);\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadNotes(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter || this.sorters[0]),\r\n\t\t\tthis);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any sorter change and refreshes data.\r\n\t *\r\n\t * @param {*} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListSort} sorter\r\n\t * A value representing the enabled and selected sorter.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic handleSortingChange(\r\n\t\tsource: any,\r\n\t\tsorter: ICommonListSort): void\r\n\t{\r\n\t\tthis.sorter = sorter;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadNotes(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any filter change and refreshes data.\r\n\t *\r\n\t * @param {*} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * A collection of enabled and active filters.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic handleFilterChange(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[]): void\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadNotes(\r\n\t\t\t\tthis.enabledFilters,\r\n\t\t\t\tthis.sorter),\r\n\t\t\tsource);\r\n\t}\r\n\r\n\t/**\r\n\t * A method to either create or refresh the common list context.\r\n\t *\r\n\t * @note\r\n\t * The source control's which loading parameter, icon display to enable.\r\n\t *\r\n\t * @param {Promise} dataPromise\r\n\t * A value representing the data promise to load into the context.\r\n\t * @param {*} source\r\n\t * A value representing the source component we are refreshing the context\r\n\t * from.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic refreshCommonListContext(\r\n\t\tdataPromise: Promise,\r\n\t\tsource: any): void\r\n\t{\r\n\t\tconst firstLoad: boolean\r\n\t\t\t= AnyHelper.isNull(this.commonListContext) === true;\r\n\t\tsource.loading = true;\r\n\r\n\t\tdataPromise\r\n\t\t\t.then(async (queryData: IEntityInstanceDto[]) =>\r\n\t\t\t{\r\n\t\t\t\tconst data: ICommonListItem[]\r\n\t\t\t\t\t= queryData.map((item: IEntityInstanceDto) =>\r\n\t\t\t\t\t\tthis.mapToListItem(item));\r\n\r\n\t\t\t\tif (firstLoad)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Generate whole context.\r\n\t\t\t\t\tthis.commonListContext = {\r\n\t\t\t\t\t\tdata: this.generateCommonListContext(data),\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// We need to refresh data only.\r\n\t\t\t\t\tthis.commonListContext.data.data = data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsource.loading = false;\r\n\r\n\t\t\t\tif (AnyHelper.isFunction(\r\n\t\t\t\t\tsource.performPostLoadActions))\r\n\t\t\t\t{\r\n\t\t\t\t\tsource.performPostLoadActions();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((_error) => {\r\n\t\t\t\tsource.loading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading notes data.\r\n\t *\r\n\t * @param {ICommonListFilter[]} [filters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @param {ICommonListSort} [sorter]\r\n\t * A value representing the enabled sorter to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with applied filters and sorter.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tpublic async loadNotes(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise\r\n\t{\r\n\t\tif (this.supportedNoteTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn Promise.resolve([]);\r\n\t\t}\r\n\r\n\t\tlet filter: string =\r\n\t\t\tApiFilterHelper.getEntityTypeFilter(\r\n\t\t\t\tthis.supportedNoteTypes);\r\n\t\tconst userIds: string[] = [];\r\n\t\tif (AnyHelper.isNull(filters) === false)\r\n\t\t{\r\n\t\t\tfor (const item of filters)\r\n\t\t\t{\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\t\tconst userInstance: IEntityInstance =\r\n\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t`${AppConstants.commonProperties.userName}`\r\n\t\t\t\t\t\t\t\t\t+ ` eq '${item.name}'`,\r\n\t\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\tuserIds.push(userInstance.id.toString());\r\n\t\t\t\t}\r\n\t\t\t\tcatch\r\n\t\t\t\t{\r\n\t\t\t\t\tfilter = AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t\t? item.value\r\n\t\t\t\t\t\t: `(${filter}) AND (${item.value})`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.entityInstanceTypeGroup\r\n\t\t\t\t\t= this.context.source.entityTypeGroup;\r\n\r\n\t\t\treturn this.entityInstanceApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tthis.context.source.id,\r\n\t\t\t\t\tApiFilterHelper.getInQueryFilter(\r\n\t\t\t\t\t\tuserIds,\r\n\t\t\t\t\t\tAppConstants.commonProperties.createdById,\r\n\t\t\t\t\t\tfilter),\r\n\t\t\t\t\torderBy,\r\n\t\t\t\t\t0,\r\n\t\t\t\t\t100,\r\n\t\t\t\t\tnull);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the base notes common list context.\r\n\t *\r\n\t * @note\r\n\t * This method will generate on firstLoad the default common list context\r\n\t * with properties used for notes.\r\n\t *\r\n\t * @private\r\n\t * @param {ICommonListItem[]} data\r\n\t * A value representing the data to load within the common list context.\r\n\t * @returns {ICommonListContext}\r\n\t * A value representing the common list context for first load.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tprivate generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'My Notes',\r\n\t\t\t\t\tvalue: `ChangedById eq ${this.sessionService.user.id}`\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'System',\r\n\t\t\t\t\tvalue: 'ChangedById eq 1'\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst actions: ISecureMenuItem[] = [];\r\n\r\n\t\tif (this.supportedNoteTypes.length > 0\r\n\t\t\t&& this.canCreate())\r\n\t\t{\r\n\t\t\tactions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tAppConstants.displayMode.create);\r\n\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.create\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tlistFilters.push(\r\n\t\t\t...this.getFiltersForTypes(\r\n\t\t\t\tthis.supportedNoteTypes));\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsorters: this.sorters,\r\n\t\t\t\tsearchFilterFormat:\r\n\t\t\t\t\t'content.Contains(\\'${inputValue}\\') eq true',\r\n\t\t\t\tactions: actions,\r\n\t\t\t\tfilters: listFilters,\r\n\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps entity instance data to a common list item.\r\n\t *\r\n\t * @private\r\n\t * @param {IEntityInstanceDto} entity\r\n\t * A value representing the entity instance to map to common list item.\r\n\t * @returns {ICommonListItem}\r\n\t * A value representing the mapped common list item from the entity\r\n\t * instance.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tprivate mapToListItem(\r\n\t\tentity: IEntityInstanceDto): ICommonListItem\r\n\t{\r\n\t\tif (entity.changedById !== 1)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.entityInstanceTypeGroup = 'Users';\r\n\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t.get(entity.changedById)\r\n\t\t\t\t.then((user: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tuser.data.userName) === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentity.data.userName =\r\n\t\t\t\t\t\t\tuser.data.userName;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Entity data as any so we can access/modify and also\r\n\t\t// populate entity data with extra decorators.\r\n\t\tconst data: any = entity.data;\r\n\t\tdata.userName = entity.changedById === 1\r\n\t\t\t? 'System'\r\n\t\t\t: 'User ' + entity.changedById;\r\n\r\n\t\tconst menuItems: ISecureMenuItem[] =\r\n\t\t\t[\r\n\t\t\t\t// Info/View\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa fa-info-circle',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeSelectedItem.emit(entity);\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tAppConstants.displayMode.view);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read\r\n\t\t\t\t},\r\n\t\t\t\t// Delete\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa fa-trash',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeSelectedItem.emit(entity);\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tAppConstants.displayMode.delete);\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.delete\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\t// Define the list row item defaults and then tweak conditionally below\r\n\t\tconst listItem: ICommonListItem =\r\n\t\t\t{\r\n\t\t\t\titem: entity,\r\n\t\t\t\tdescriptionLineFormat: '${item.data.content}',\r\n\t\t\t\tinformationLineFormat:\r\n\t\t\t\t\t' by ${item.data.userName}',\r\n\t\t\t\tinformationLineRelativeDateTime: entity.changeDate,\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions: SecurityHelper\r\n\t\t\t\t\t.scrubMenuItems(\r\n\t\t\t\t\t\tmenuItems,\r\n\t\t\t\t\t\tentity.entityType,\r\n\t\t\t\t\t\tthis.securityDefinitions)\r\n\t\t\t};\r\n\r\n\t\treturn listItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a collection of ICommonListFilter constructed for the\r\n\t * entityTypes inputted.\r\n\t *\r\n\t * @private\r\n\t * @param {EntityType[]} entityTypes\r\n\t * A collection of EntityType to generate ICommonListFilter for.\r\n\t * @returns {ICommonListFilter[]}\r\n\t * A collection of ICommonListFilter representing the entityTypes.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tprivate getFiltersForTypes(\r\n\t\tentityTypes: EntityType[]): ICommonListFilter[]\r\n\t{\r\n\t\tif ((entityTypes?.length || 0) <= 1)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn entityTypes.map((entityType: EntityType) =>\r\n\t\t\t{\r\n\t\t\t\tname: entityType.displayName,\r\n\t\t\t\tvalue: ApiFilterHelper.getEntityTypeFilter(entityType)\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the user can create any items.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * The result true if user can create.\r\n\t * @memberof NoteListComponent\r\n\t */\r\n\tprivate canCreate(): boolean\r\n\t{\r\n\t\tconst createableTypes = this.securityDefinitions\r\n\t\t\t.filter((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tSecurityHelper.actionAuthorized(\r\n\t\t\t\t\tdefinition.entityTypeName,\r\n\t\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t\t[definition]))\r\n\t\t\t.map((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tdefinition.entityTypeName);\r\n\r\n\t\treturn this.supportedNoteTypes\r\n\t\t\t.filter((entityType: EntityType) =>\r\n\t\t\t\tcreateableTypes.includes(entityType.name))\r\n\t\t\t.length > 0;\r\n\t}\r\n}","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{getPropertyDisplayValue(propertyName)}}:\r\n\t\t\t\r\n\t\t\t{{selectedItem.data[propertyName]}}\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tNote Type:\r\n\t\t\t\r\n\t\t\t{{getDisplayName(selectedItem.entityType)}}\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tCreated:\r\n\t\t\t\r\n\t\t\t{{ selectedItem.createDate | dateTimeFromIso | dateTimeToFormat:'D h:mm a' }} ({{ selectedItem.createDate | dateTimeFromIso | dateTimeToRelative:{ style: 'long' } }})\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tChanged:\r\n\t\t\t\r\n\t\t\t{{ selectedItem.changeDate | dateTimeFromIso | dateTimeToFormat:'D h:mm a' }} ({{ selectedItem.changeDate | dateTimeFromIso | dateTimeToRelative:{ style: 'long' } }})\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tChanged By:\r\n\t\t\t\r\n\t\t\t{{ selectedItem.data.userName || 'User ' + selectedItem.changedById }}\r\n\t\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tNoteDirective\r\n} from '@shared/directives/note.directive';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-note',\r\n\ttemplateUrl: './note.component.html',\r\n\tstyleUrls: [\r\n\t\t'./note.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a context level note view.\r\n *\r\n * @export\r\n * @class NoteComponent\r\n * @extends {NoteDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class NoteComponent\r\n\textends NoteDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service, used to get children.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service, used to get entity types.\r\n\t * @memberof NoteComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService)\r\n\t{\r\n\t\tsuper(entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item to be displayed within the note view.\r\n\t *\r\n\t * @type {IEntityInstanceDto}\r\n\t * @memberof NoteComponent\r\n\t */\r\n\t@Input() public selectedItem: IEntityInstanceDto;\r\n\r\n\t/**\r\n\t * Gets or sets the type group of the selected item to view.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NoteComponent\r\n\t */\r\n\t@Input() public typeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the identifier of the selected item to view.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NoteComponent\r\n\t */\r\n\t@Input() public id: number;\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\tView: Note\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tNoteDirective\r\n} from '@shared/directives/note.directive';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-note-view',\r\n\ttemplateUrl: './note-view.component.html',\r\n\tstyleUrls: [\r\n\t\t'./note-view.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level notes view.\r\n *\r\n * @export\r\n * @class NoteViewComponent\r\n * @extends {NoteDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class NoteViewComponent\r\n\textends NoteDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service, used to get children.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service, used to get entity types.\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService)\r\n\t{\r\n\t\tsuper(entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item to be displayed within the note view.\r\n\t *\r\n\t * @type {IEntityInstanceDto}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\t@Input() public selectedItem: IEntityInstanceDto;\r\n\r\n\t/**\r\n\t * Gets or sets the type group of the selected item to view.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\t@Input() public typeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the identifier of the selected item to view.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\t@Input() public id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether data is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof NoteViewComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.typeGroup = this.typeGroup\r\n\t\t\t|| (await this.getEntityTypesFromNameList(\r\n\t\t\t\t[this.selectedItem.entityType])).pop()?.group;\r\n\t\tthis.id = this.id || this.selectedItem.id;\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = this.typeGroup;\r\n\r\n\t\tthis.selectedItem\r\n\t\t\t= this.selectedItem\r\n\t\t\t|| await this.entityInstanceApiService.get(this.id);\r\n\r\n\t\tconst authorizedToDelete =\r\n\t\t\tSecurityHelper.actionAuthorized(\r\n\t\t\t\tthis.selectedItem.entityType,\r\n\t\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\tif (!authorizedToDelete)\r\n\t\t{\r\n\t\t\tthis.itemActions = this.itemActions\r\n\t\t\t\t.filter((item: MenuItem) =>\r\n\t\t\t\t\titem.id !== AppConstants.displayMode.delete);\r\n\t\t}\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\tNo available note types to add.\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\tAdd: Note\r\n\t\t\t\t
    \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tType *\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityLayoutTypeDto\r\n} from '@api/interfaces/entities/entity-layout-type.dto.interface';\r\nimport {\r\n\tIEntityLayoutDto\r\n} from '@api/interfaces/entities/entity-layout.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tNoteDirective\r\n} from '@shared/directives/note.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityLayout\r\n} from '@shared/implementations/entities/entity-layout';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSelectItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-note-create',\r\n\ttemplateUrl: './note-create.component.html',\r\n\tstyleUrls: [\r\n\t\t'./note-create.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level notes create display mode.\r\n *\r\n * @export\r\n * @class NoteCreateComponent\r\n * @extends {NoteDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class NoteCreateComponent\r\n\textends NoteDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The entity layout API service.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type API service.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition API service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityService: EntityService)\r\n\t{\r\n\t\tsuper(entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets a string representing the parent type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public parentTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets a number representing the parent id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public parentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is saving.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a EntityDefinition representing the parent's entity\r\n\t * definition.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic parentEntityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of EntityType representing the supported\r\n\t * note types.\r\n\t *\r\n\t * @type {EntityType[]}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic supportedNoteTypes: EntityType[];\r\n\r\n\t/**\r\n\t * Gets or sets a collection of SelectItem representing note types to\r\n\t * load within the selector.\r\n\t *\r\n\t * @type {SelectItem[]}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic noteTypes: SelectItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets an EntityType representing the selected note type to create.\r\n\t *\r\n\t * @type {EntityType}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic selectedNoteType: EntityType;\r\n\r\n\t/**\r\n\t * Gets or sets an EntityLayout representing the selected note type\r\n\t * layout.\r\n\t *\r\n\t * @type {EntityLayout}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic noteLayout: EntityLayout;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of FormlyFieldConfig representing the\r\n\t * formly note layout of the selected note type layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic formlyNoteLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets an EntityInstance representing the note to create data.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic noteData: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the current validity of the displayed dynamic form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst source: EntityInstanceComponent\r\n\t\t\t= (this.context.source);\r\n\t\tthis.parentTypeGroup = this.parentTypeGroup || source.entityType.group;\r\n\t\tthis.parentId = this.parentId || source.id;\r\n\t\tthis.parentEntityDefinition = source.entityDefinition;\r\n\r\n\t\tthis.supportedNoteTypes =\r\n\t\t\tawait this.getSupportedNoteTypes(\r\n\t\t\t\tsource.id,\r\n\t\t\t\tsource.entityType.group,\r\n\t\t\t\tsource.entityDefinition,\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\tSecurityRightType.create);\r\n\r\n\t\tthis.mapEntityTypesToNoteTypes(this.supportedNoteTypes);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event of the contained dynamic form.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The sent validity value of the dynamic form.\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic validDataChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.isValid = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * A method containing the activity of creating a note.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic async createNote(): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup\r\n\t\t\t= this.selectedNoteType.group;\r\n\r\n\t\tlet createDisplayName: string\r\n\t\t\t= this.getDisplayName(this.selectedNoteType.name);\r\n\r\n\t\tcreateDisplayName = createDisplayName === 'Note'\r\n\t\t\t? createDisplayName\r\n\t\t\t: createDisplayName + ' note';\r\n\r\n\t\tconst newNoteId: number\r\n\t\t\t= await this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.entityInstanceApiService.createEntityInstance(\r\n\t\t\t\t\t\tthis.noteData,\r\n\t\t\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\t\t\tthis.parentId),\r\n\t\t\t\t\t`Creating ${createDisplayName}`,\r\n\t\t\t\t\t`Created ${createDisplayName}`,\r\n\t\t\t\t\t`${createDisplayName} was added.`,\r\n\t\t\t\t\t`${createDisplayName} was not added.`));\r\n\r\n\t\tthis.saving = false;\r\n\r\n\t\tif (AnyHelper.isNull(newNoteId) !== true)\r\n\t\t{\r\n\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\tAppConstants.displayMode.list);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles a note type change event.\r\n\t *\r\n\t * @param {*} event\r\n\t * A value representing the event parameters.\r\n\t * @returns {Promise}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic async handleNoteTypeChange(\r\n\t\tevent: any): Promise\r\n\t{\r\n\t\tthis.noteLayout = null;\r\n\t\tthis.formlyNoteLayout = null;\r\n\t\tthis.selectedNoteType = event?.value;\r\n\t\tthis.noteData = {\r\n\t\t\tid: 0,\r\n\t\t\tentityType: this.selectedNoteType?.name,\r\n\t\t\tversionNumber: null // this causes latest to be used\r\n\t\t};\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.selectedNoteType))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityLayoutTypes: IEntityLayoutTypeDto[]\r\n\t\t\t= await this.entityLayoutTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'Name eq \"Drawer\"',\r\n\t\t\t\t\t'Id DESC',\r\n\t\t\t\t\t0,\r\n\t\t\t\t\t1);\r\n\r\n\t\tconst entityLayouts: EntityLayout[]\r\n\t\t\t= await this.entityLayoutApiService.query(\r\n\t\t\t\t`TypeId eq ${this.selectedNoteType.id}\r\n\t\t\t\t\tAND LayoutTypeId eq ${entityLayoutTypes[0].id}`,\r\n\t\t\t\t'VersionId DESC',\r\n\t\t\t\t0,\r\n\t\t\t\t1)\r\n\t\t\t\t.then((layouts: IEntityLayoutDto[]) =>\r\n\t\t\t\t\tlayouts.map((entityLayout: IEntityLayoutDto) =>\r\n\t\t\t\t\t\tnew EntityLayout(entityLayout)));\r\n\r\n\t\tthis.noteLayout = entityLayouts[0];\r\n\t\tthis.formlyNoteLayout = FormlyHelper.getFormlyLayout(\r\n\t\t\tJSON.parse(this.noteLayout.jsonData),\r\n\t\t\tthis.context);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps a collection of EntityType to SelectItem's and\r\n\t * populates the note types selector.\r\n\t *\r\n\t * @param {EntityType[]} entityTypes\r\n\t * A collection of EntityType to map and populate NoteTypes select.\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\tpublic mapEntityTypesToNoteTypes(\r\n\t\tentityTypes: EntityType[]): void\r\n\t{\r\n\t\t// Map types to select items\r\n\t\tentityTypes.forEach(\r\n\t\t\t(entityType: EntityType) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(\r\n\t\t\t\t\tthis.noteTypes.find((existingNoteType: SelectItem) =>\r\n\t\t\t\t\t\texistingNoteType.value === entityType)))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.noteTypes.push({\r\n\t\t\t\t\t\tlabel: this.getDisplayName(entityType.name),\r\n\t\t\t\t\t\tvalue: entityType\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t// Default to the only available type\r\n\t\tif (this.supportedNoteTypes.length === 1)\r\n\t\t{\r\n\t\t\tthis.handleNoteTypeChange({\r\n\t\t\t\tvalue: this.supportedNoteTypes[0]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\tDelete: Note {{selectedItem.id}}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
    \r\n\t\t\tAre you sure you want to delete note {{selectedItem.id}}?\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceDto\r\n} from '@api/interfaces/entities/entity-instance.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tNoteDirective\r\n} from '@shared/directives/note.directive';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-note-delete',\r\n\ttemplateUrl: './note-delete.component.html',\r\n\tstyleUrls: [\r\n\t\t'./note-delete.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level notes delete display.\r\n *\r\n * @export\r\n * @class NoteDeleteComponent\r\n * @extends {NoteDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class NoteDeleteComponent\r\n\textends NoteDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the common list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic activityService: ActivityService)\r\n\t{\r\n\t\tsuper(entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof NoteCreateComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected entity instance item.\r\n\t *\r\n\t * @type {IEntityInstanceDto}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\t@Input() public selectedItem: IEntityInstanceDto;\r\n\r\n\t/**\r\n\t * Gets or sets the selected entity instance type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\t@Input() public typeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the selected entity identifier.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\t@Input() public id: number;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is saving.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.typeGroup = this.typeGroup\r\n\t\t\t|| (await this.getEntityTypesFromNameList(\r\n\t\t\t\t[this.selectedItem.entityType])).pop()?.group;\r\n\t\tthis.id = this.id || this.selectedItem.id;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup\r\n\t\t\t= this.typeGroup;\r\n\t\tthis.selectedItem\r\n\t\t\t= this.selectedItem\r\n\t\t\t\t|| await this.entityInstanceApiService.get(this.id);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that performs the activity of deleting an entity instance.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof NoteDeleteComponent\r\n\t */\r\n\tpublic async deleteItem(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = this.typeGroup;\r\n\r\n\t\tthis.saving = true;\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.delete(this.id),\r\n\t\t\t\t`Deleting note ${this.id}`,\r\n\t\t\t\t`Deleted note ${this.id}`,\r\n\t\t\t\t`Note ${this.id} was deleted.`,\r\n\t\t\t\t`Note ${this.id} was not deleted.`));\r\n\t\tthis.saving = false;\r\n\t\tthis.changeDisplayMode.emit(\r\n\t\t\tAppConstants.displayMode.list);\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-notes',\r\n\ttemplateUrl: './notes.component.html',\r\n\tstyleUrls: [\r\n\t\t'./notes.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level notes.\r\n *\r\n * @export\r\n * @class NotesComponent\r\n * @extends {BaseDrawerListDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class NotesComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rules component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof NotesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the child wildcard entity type filter for this drawer component.\r\n\t * NOTE: This is a required override property to implement security.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NotesComponent\r\n\t */\r\n\tpublic wildcardChildFilter: string = 'Note';\r\n\r\n\t/**\r\n\t * Gets the entity type name to filter on for this drawer component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NotesComponent\r\n\t */\r\n\tprivate readonly entityTypeName: string = 'Note';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof NotesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\t'Note.*'\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to at least one note '\r\n\t\t\t\t\t+ 'entity type and version.';\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate drawer ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this drawer.\r\n\t * @memberof NotesComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(type: IEntityType) =>\r\n\t\t\t\t\t\ttype.name === this.entityTypeName);\r\n\r\n\t\tif (AnyHelper.isNull(entityType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.verifyEntityTypeAccess(\r\n\t\t\tentityType);\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tPaymentBatchConstants\r\n} from '@shared/constants/payment-batch-constants';\r\nimport {\r\n\tCommonChildListDirective\r\n} from '@shared/directives/common-child-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'app-payment-batch-list',\r\n\ttemplateUrl: './payment-batch-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./payment-batch-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level payment batch list view.\r\n *\r\n * @export\r\n * @class PaymentBatchListComponent\r\n * @extends {CommonChildListDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class PaymentBatchListComponent\r\n\textends CommonChildListDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work item list component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to set module changes on entity navigation.\r\n\t * @param {Router} router\r\n\t * The router used for navigation in this component.\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityService,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the list of users used to map created by.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic users: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the list of sorts available in this list component.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Batch Date',\r\n\t\t\t\tvalue: AppConstants.commonProperties.id,\r\n\t\t\t\tdirection: AppConstants.sortDirections.descending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Decision Date',\r\n\t\t\t\tvalue: 'keyDates.decisionDate',\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Status',\r\n\t\t\t\tvalue: 'status',\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Loads all of the associated items to be displayed in this child common\r\n\t * list based on the sent filters and sorters.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * The additional filters array above and beyond the primary filter used\r\n\t * to further limit the items result set.\r\n\t * @param {ICommonListSort} sorter\r\n\t * The sort order to load these items in.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will contain all of the entity instances\r\n\t * matching the wildcard filter with additional filtering and sorts\r\n\t * based on user interface selections.\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic async loadItems(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise\r\n\t{\r\n\t\tawait this.setCreatableEntityTypes(this.wildcardChildFilter);\r\n\r\n\t\tconst loadedItems: IEntityInstance[] =\r\n\t\t\tawait super.loadItems(\r\n\t\t\t\tfilters,\r\n\t\t\t\tsorter);\r\n\r\n\t\tif (loadedItems.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst creatorIds: string[] =\r\n\t\t\t[...new Set(\r\n\t\t\t\tloadedItems.map(\r\n\t\t\t\t\t(paymentBatch: IEntityInstance) =>\r\n\t\t\t\t\t\tpaymentBatch.createdById.toString()))];\r\n\r\n\t\tconst createdByFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\tcreatorIds,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tthis.users =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tcreatedByFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn loadedItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a common list context that can be consumed by a common list\r\n\t * displayed in this component.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * The collection of data that will be displayed in this list.\r\n\t * @returns {ICommonListContext}\r\n\t * The common list context to display.\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst statusCheck: string = 'status eq \\'';\r\n\t\tconst statusCheckEndQuote: string = '\\'';\r\n\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Approved',\r\n\t\t\t\t\tvalue: statusCheck\r\n\t\t\t\t\t\t+ PaymentBatchConstants.paymentBatchStatus.approved\r\n\t\t\t\t\t\t+ statusCheckEndQuote\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Pending',\r\n\t\t\t\t\tvalue: statusCheck\r\n\t\t\t\t\t\t+ PaymentBatchConstants.paymentBatchStatus.pending\r\n\t\t\t\t\t\t+ statusCheckEndQuote\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Rejected',\r\n\t\t\t\t\tvalue: statusCheck\r\n\t\t\t\t\t\t+ PaymentBatchConstants.paymentBatchStatus.rejected\r\n\t\t\t\t\t\t+ statusCheckEndQuote\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst scrubbedActions: ISecureMenuItem[] =\r\n\t\t\tthis.creatableEntityTypes?.length > 0\r\n\t\t\t\t? [\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(_) => {\r\n\t\t\t\t\t\t\t\tthis.navigateToCreate();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.create\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t\t: [];\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tsortable: true,\r\n\t\t\t\t\tsorters: this.sorters,\r\n\t\t\t\t\tactions: scrubbedActions,\r\n\t\t\t\t\tfilters: listFilters,\r\n\t\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a list item that represents a payment batch entity\r\n\t * instance.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance to be mapped into a list item.\r\n\t * @returns {ICommonListItem}\r\n\t * The common list item to display that represents this entity instance.\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\tentityInstance: IEntityInstance):\r\n\t\tICommonListItem\r\n\t{\r\n\t\tconst batchDate: string =\r\n\t\t\tDateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tentityInstance.data.keyDates.batchDate),\r\n\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\t\tconst decisionDate: string =\r\n\t\t\tDateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tentityInstance.data.keyDates.decisionDate),\r\n\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\r\n\t\tlet statusColor: string = AppConstants.empty;\r\n\t\tlet decisionUser: IEntityInstance;\r\n\t\tswitch (entityInstance.data.status)\r\n\t\t{\r\n\t\t\tcase PaymentBatchConstants.paymentBatchStatus.approved:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textSuccessColor;\r\n\t\t\t\tdecisionUser =\r\n\t\t\t\t\tthis.users.find(\r\n\t\t\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\t\t\tuser.resourceIdentifier\r\n\t\t\t\t\t\t\t\t=== entityInstance.data.decisionUserId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase PaymentBatchConstants.paymentBatchStatus.pending:\r\n\t\t\t\tbreak;\r\n\t\t\tcase PaymentBatchConstants.paymentBatchStatus.rejected:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textSecondaryColor;\r\n\t\t\t\tdecisionUser =\r\n\t\t\t\t\tthis.users.find(\r\n\t\t\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\t\t\tuser.resourceIdentifier\r\n\t\t\t\t\t\t\t\t=== entityInstance.data.decisionUserId);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tconst createdByUser: IEntityInstance =\r\n\t\t\tthis.users.find(\r\n\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\tuser.id\r\n\t\t\t\t\t\t=== entityInstance.createdById);\r\n\t\tconst informationLineFormat: string =\r\n\t\t\tAnyHelper.isNull(decisionUser)\r\n\t\t\t\t? 'Created By: '\r\n\t\t\t\t\t+ StringHelper.toNameString(\r\n\t\t\t\t\t\tcreatedByUser?.data.firstName,\r\n\t\t\t\t\t\tcreatedByUser?.data.lastName)\r\n\t\t\t\t: 'Decision By: '\r\n\t\t\t\t\t+ StringHelper.toNameString(\r\n\t\t\t\t\t\tdecisionUser?.data.firstName,\r\n\t\t\t\t\t\tdecisionUser?.data.lastName);\r\n\r\n\t\tlet displayType: string = entityInstance.entityType;\r\n\t\tdisplayType =\r\n\t\t\tStringHelper\r\n\t\t\t\t.beforeCapitalSpaces(\r\n\t\t\t\t\tdisplayType\r\n\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\tPaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t\t\t.entityTypePrefix,\r\n\t\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t\t.replaceAll(\r\n\t\t\t\t\t\t\tAppConstants.characters.period,\r\n\t\t\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t+ ' Batch';\r\n\r\n\t\tconst scrubbedInfoActions: ISecureMenuItem[] =\r\n\t\t\tSecurityHelper.scrubMenuItems(\r\n\t\t\t\t[\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: 'fa fa-info-circle',\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(_event: any,\r\n\t\t\t\t\t\t\t\tselectedItem:\r\n\t\t\t\t\t\t\t\t\tICommonListItem) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.navigateToPaymentBatch(\r\n\t\t\t\t\t\t\t\t\tselectedItem.item);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\tSecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\t\tsecurityRightType:\r\n\t\t\t\t\t\t\tSecurityRightType.read\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\tconst scubbedEditActions: ISecureMenuItem[] =\r\n\t\t\tSecurityHelper.scrubMenuItems(\r\n\t\t\t\t[\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: 'fa fa-pencil',\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(_event: any,\r\n\t\t\t\t\t\t\t\tselectedItem:\r\n\t\t\t\t\t\t\t\t\tICommonListItem) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.navigateToPaymentBatch(\r\n\t\t\t\t\t\t\t\t\tselectedItem.item,\r\n\t\t\t\t\t\t\t\t\tfalse);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\tSecurityRightCategory.Action,\r\n\t\t\t\t\t\tsecurityRightPath:\r\n\t\t\t\t\t\t\tAppConstants.apiMethods.update\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\titem: entityInstance,\r\n\t\t\t\tdescriptionLineFormat:\r\n\t\t\t\t\t`'\r\n\t\t\t\t\t\t+ `**${displayType}**
    `\r\n\t\t\t\t\t\t+ `${entityInstance.data.status} - `\r\n\t\t\t\t\t\t+ (entityInstance.data.status ===\r\n\t\t\t\t\t\t\tPaymentBatchConstants.paymentBatchStatus.pending\r\n\t\t\t\t\t\t\t? `Batch Date: ${batchDate}`\r\n\t\t\t\t\t\t\t: `Decision Date: ${decisionDate}`)\r\n\t\t\t\t\t\t+ ''\r\n\t\t\t\t\t\t+ `|${PaymentBatchConstants\r\n\t\t\t\t\t\t\t.paymentBatchIdentifiers.paymentBatchIdentifier}:`\r\n\t\t\t\t\t\t\t+ `${entityInstance.id}|`\r\n\t\t\t\t\t\t+ '',\r\n\t\t\t\tinformationLineFormat: informationLineFormat,\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions:\r\n\t\t\t\t\tentityInstance.data.status ===\r\n\t\t\t\t\t\tPaymentBatchConstants.paymentBatchStatus.pending\r\n\t\t\t\t\t\t? scubbedEditActions\r\n\t\t\t\t\t\t: scrubbedInfoActions\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the payment batch create wizard.\r\n\t *\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tprivate navigateToCreate(): void\r\n\t{\r\n\t\tconst navigationModule: string =\r\n\t\t\t(this.context.source)\r\n\t\t\t\t.entityDefinition\r\n\t\t\t\t.contextMenuModule;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${navigationModule}/entities/display`,\r\n\t\t\t\t'BasePage.Wizard.PaymentBatch.Create',\r\n\t\t\t\tAppConstants.viewTypes.create\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tparentEntityType:\r\n\t\t\t\t\t\t\t\t\t\t(this\r\n\t\t\t\t\t\t\t\t\t\t\t.context.source)\r\n\t\t\t\t\t\t\t\t\t\t\t.entityType,\r\n\t\t\t\t\t\t\t\t\tparentId:\r\n\t\t\t\t\t\t\t\t\t\t(this\r\n\t\t\t\t\t\t\t\t\t\t\t.context.source)\r\n\t\t\t\t\t\t\t\t\t\t\t.entityInstance\r\n\t\t\t\t\t\t\t\t\t\t\t.id\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the payment batch create wizard.\r\n\t *\r\n\t * @param {IEntityInstance} paymentBatch\r\n\t * The payment batch entity instance to navigate to.\r\n\t * @param {boolean} viewOnly\r\n\t * A value that signifies whether or not this should be opened\r\n\t * in view only mode. This value defaults to true.\r\n\t * @memberof PaymentBatchListComponent\r\n\t */\r\n\tprivate async navigateToPaymentBatch(\r\n\t\tpaymentBatch: IEntityInstance,\r\n\t\tviewOnly: boolean = true): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t\t+ `'${paymentBatch.entityType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tthis.moduleService.name =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tentityType.name);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${this.moduleService.name}/entities`,\r\n\t\t\t\tentityType.group,\r\n\t\t\t\tviewOnly\r\n\t\t\t\t\t? AppConstants.viewTypes.view\r\n\t\t\t\t\t: AppConstants.viewTypes.edit,\r\n\t\t\t\tpaymentBatch.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tPaymentBatchConstants\r\n} from '@shared/constants/payment-batch-constants';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-payment-batch',\r\n\ttemplateUrl: './payment-batch.component.html',\r\n\tstyleUrls: [\r\n\t\t'./payment-batch.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level payment batch handling.\r\n *\r\n * @export\r\n * @class PaymentBatchComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class PaymentBatchComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the payment batch component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof PaymentBatchComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof PaymentBatchComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityDisplayName = 'Payment Batch';\r\n\t\tthis.wildcardChildFilter = 'PaymentBatch';\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\tPaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t.entityTypeIdentifier\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to at least one payment batch '\r\n\t\t\t\t\t+ 'entity type and version.';\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.initialCreateData =\r\n\t\t\t{\r\n\t\t\t\ttype: entityInstanceComponent.entityType.name,\r\n\t\t\t\treferences: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: PaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer,\r\n\t\t\t\t\t\tidentifier:\r\n\t\t\t\t\t\t\tentityInstanceComponent.entityInstance.id\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: PaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityType,\r\n\t\t\t\t\t\tidentifier:\r\n\t\t\t\t\t\t\tentityInstanceComponent.entityInstance.entityType\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\t}\r\n\r\n\t/**\r\n\t* Implements the ownership guard interface.\r\n\t* This will calculate drawer ownership permissions.\r\n\t*\r\n\t* @async\r\n\t* @returns {Promise}\r\n\t* A value signifying whether or not access is allowed to this drawer.\r\n\t* @memberof PaymentBatchComponent\r\n\t*/\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst paymentBatchItemTypes: IEntityType[] =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.group.indexOf(\r\n\t\t\t\t\t\t\tPaymentBatchConstants.paymentBatchIdentifiers\r\n\t\t\t\t\t\t\t\t.entityTypePrefix) !== -1);\r\n\r\n\t\tif (paymentBatchItemTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tpaymentBatchItemTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{{displaySubTitle}}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tProductSettingDirective\r\n} from '@shared/directives/product-setting.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIProductSetting\r\n} from '@shared/interfaces/application-objects/product-setting.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-product-setting-action',\r\n\ttemplateUrl: './product-setting-action.component.html',\r\n\tstyleUrls: [\r\n\t\t'./product-setting-action.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level product setting action\r\n * based on the display mode.\r\n *\r\n * @export\r\n * @class ProductSettingActionComponent\r\n * @extends {ProductSettingDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ProductSettingActionComponent\r\n\textends ProductSettingDirective\r\n\timplements OnInit, OnDestroy, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the product setting action component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic activityService: ActivityService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\t@Output() public updateEntityInstance: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is updating.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic updating: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of FormlyFieldConfig representing the\r\n\t * formly note layout of the selected note type layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic productSettingFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the current validity of the displayed dynamic form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets executable action.\r\n\t *\r\n\t * @type {() => Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic executableAction: () => Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance component.\r\n\t *\r\n\t * @type {EntityInstanceComponent}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic entityInstanceComponent: EntityInstanceComponent;\r\n\r\n\t/**\r\n\t * Gets or sets the selected product.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic selectedProduct: string;\r\n\r\n\t/**\r\n\t * Gets or sets the selected product.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\t public selectedState: string;\r\n\r\n\t/**\r\n\t * Gets or sets the product instances by state.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic productsByState: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the product setting index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic productSettingIndex: number;\r\n\r\n\t/**\r\n\t * Gets or sets the create view.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic createView: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the commission dropdown options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic commissionOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the authority options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\t public authorityOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets display sub title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic displaySubTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets action button label.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic actionButtonLabel: string;\r\n\r\n\t/**\r\n\t * Gets or sets product settings data set.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic productSettingsDataSet: any;\r\n\r\n\t/**\r\n\t * Gets or sets commission schedules associated to the current product id.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic commissionSchedules: IEntityInstance[];\r\n\r\n\t/**\r\n\t * Gets the state names.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate readonly states: string[] =\r\n\t\t[\r\n\t\t\t'AL',\r\n\t\t\t'AK',\r\n\t\t\t'AS',\r\n\t\t\t'AZ',\r\n\t\t\t'AR',\r\n\t\t\t'CA',\r\n\t\t\t'CO',\r\n\t\t\t'CT',\r\n\t\t\t'DE',\r\n\t\t\t'DC',\r\n\t\t\t'FL',\r\n\t\t\t'GA',\r\n\t\t\t'GU',\r\n\t\t\t'HI',\r\n\t\t\t'ID',\r\n\t\t\t'IL',\r\n\t\t\t'IN',\r\n\t\t\t'IA',\r\n\t\t\t'KS',\r\n\t\t\t'KY',\r\n\t\t\t'LA',\r\n\t\t\t'ME',\r\n\t\t\t'MD',\r\n\t\t\t'MA',\r\n\t\t\t'MI',\r\n\t\t\t'MN',\r\n\t\t\t'MP',\r\n\t\t\t'MS',\r\n\t\t\t'MO',\r\n\t\t\t'MT',\r\n\t\t\t'NE',\r\n\t\t\t'NV',\r\n\t\t\t'NH',\r\n\t\t\t'NJ',\r\n\t\t\t'NM',\r\n\t\t\t'NY',\r\n\t\t\t'NC',\r\n\t\t\t'ND',\r\n\t\t\t'OH',\r\n\t\t\t'OK',\r\n\t\t\t'OR',\r\n\t\t\t'PA',\r\n\t\t\t'PR',\r\n\t\t\t'RI',\r\n\t\t\t'SC',\r\n\t\t\t'SD',\r\n\t\t\t'TN',\r\n\t\t\t'TX',\r\n\t\t\t'UM',\r\n\t\t\t'UT',\r\n\t\t\t'VI',\r\n\t\t\t'VT',\r\n\t\t\t'VA',\r\n\t\t\t'WA',\r\n\t\t\t'WV',\r\n\t\t\t'WI',\r\n\t\t\t'WY',\r\n\t\t\t'Any'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the product authorities.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate readonly productAuthorities: string[] =\r\n\t\t[\r\n\t\t\tthis.productAuthorityTypes.active,\r\n\t\t\tthis.productAuthorityTypes.inactive,\r\n\t\t\tthis.productAuthorityTypes.serviceExisting\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the create display subTitle.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate readonly createDisplaySubTitle: string =\r\n\t\t`${AppConstants.drawerActionLabels.add}: Product`;\r\n\r\n\t/**\r\n\t * Gets the products type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate readonly productsTypeGroup: string =\r\n\t\t`${InsuranceConstants.insuranceEntityTypeGroups.products}`;\r\n\r\n\t/**\r\n\t * Gets the products type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate readonly commissionsTypeGroup: string =\r\n\t\t`${InsuranceConstants.insuranceEntityTypeGroups.commissionsSchedules}`;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityInstanceComponent =\r\n\t\t\t(this.context.source);\r\n\r\n\t\tthis.productSettingsDataSet =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tproductSettings:\r\n\t\t\t\t\t\tcloneDeep(this.entityInstanceComponent.entityInstance\r\n\t\t\t\t\t\t\t.data.productSettings)\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.createView =\r\n\t\t\tthis.context.data.drawerComponent.displayMode\r\n\t\t\t\t=== AppConstants.displayMode.create;\r\n\r\n\t\tawait this.setDynamicContent();\r\n\t\tthis.setProductSettingFormlyLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles on destroy to load a fresh entity instance.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async ngOnDestroy(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.entityInstanceComponent.entityTypeGroup;\r\n\t\tthis.entityInstanceComponent.entityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(this.entityInstanceComponent.entityInstance.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the dynamic content based on the create view.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async setDynamicContent(): Promise\r\n\t{\r\n\t\tif (this.createView === true)\r\n\t\t{\r\n\t\t\tthis.displaySubTitle = this.createDisplaySubTitle;\r\n\t\t\tthis.actionButtonLabel = `${AppConstants.drawerActionLabels.add}`;\r\n\t\t\tthis.productSettingIndex =\r\n\t\t\t\tthis.entityInstanceComponent.entityInstance\r\n\t\t\t\t\t.data.productSettings.length;\r\n\r\n\t\t\tthis.executableAction =\r\n\t\t\t\tthis.createProductSetting;\r\n\r\n\t\t\tthis.commissionOptions = [];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst selectedItem: any =\r\n\t\t\t\tthis.context.data.drawerComponent.selectedItem.item;\r\n\r\n\t\t\tthis.productSettingIndex =\r\n\t\t\t\tselectedItem.itemIndex;\r\n\r\n\t\t\tconst productInstance: IEntityInstance =\r\n\t\t\t\tselectedItem.productInstance;\r\n\r\n\t\t\tthis.displaySubTitle =\r\n\t\t\t\t`${this.context.data.drawerComponent.displayMode\r\n\t\t\t\t\t=== AppConstants.displayMode.update\r\n\t\t\t\t\t? 'Edit'\r\n\t\t\t\t\t: 'View'}: `\r\n\t\t\t\t\t+ `${productInstance.data.name}`;\r\n\r\n\t\t\tthis.actionButtonLabel =\r\n\t\t\t\t`${AppConstants.drawerActionLabels.save}`;\r\n\r\n\t\t\tthis.executableAction =\r\n\t\t\t\tthis.updateProductSetting;\r\n\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.productsTypeGroup;\r\n\t\t\tthis.commissionSchedules =\r\n\t\t\t\tawait this.getCommissionSchedules(productInstance.id);\r\n\t\t\tthis.commissionOptions =\r\n\t\t\t\tthis.getCommissionOptions();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the product setting formly layout.\r\n\t *\r\n\t * @returns {void}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic setProductSettingFormlyLayout(): void\r\n\t{\r\n\t\tthis.productSettingFormlyLayout =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: `data.productSettings[${\r\n\t\t\t\t\t\tthis.productSettingIndex}].state`,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'State',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions: this.getDropdownOptions(this.states),\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\tchange: async (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\tthis.handleStateOnChange(field),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tproductValidator: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t_formControl: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.validProductSetting(field),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'field.props.context.data?'\r\n\t\t\t\t\t\t\t+ '.drawerComponent.displayMode !== '\r\n\t\t\t\t\t\t\t+ `\"${AppConstants.displayMode.create}\"`\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: `data.productSettings[${\r\n\t\t\t\t\t\tthis.productSettingIndex}].name`,\r\n\t\t\t\t\ttype: this.createView === true\r\n\t\t\t\t\t\t? FormlyConstants.customControls.customSelect\r\n\t\t\t\t\t\t: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tlabel: 'Product',\r\n\t\t\t\t\t\toptions: [],\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\tchange: async (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\tthis.handleProductOnChange(field)\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tcommissionValidator: {\r\n\t\t\t\t\t\t\texpression: () =>\r\n\t\t\t\t\t\t\t\tthis.commissionOptions.length > 1\r\n\t\t\t\t\t\t\t\t\t|| this.commissionOptions.length === 0,\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'No available commission schedule.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\thide: 'field.props.context.data?'\r\n\t\t\t\t\t\t\t+ '.drawerComponent.displayMode !== '\r\n\t\t\t\t\t\t\t+ `\"${AppConstants.displayMode.create}\"`\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: `data.productSettings[${\r\n\t\t\t\t\t\tthis.productSettingIndex}].authority`,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Authority',\r\n\t\t\t\t\t\tdisabled: this.context.data.drawerComponent.displayMode\r\n\t\t\t\t\t\t\t=== AppConstants.displayMode.view,\r\n\t\t\t\t\t\ttooltip: 'Active - Ability to create new and service '\r\n\t\t\t\t\t\t\t+ 'policies for a product. Inactive - Inability to '\r\n\t\t\t\t\t\t\t+ 'create new and service existing policies for a '\r\n\t\t\t\t\t\t\t+ 'product. Service Existing - service existing '\r\n\t\t\t\t\t\t\t+ 'policies for a product.',\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.getDropdownOptions(this.productAuthorities),\r\n\t\t\t\t\t\tdefault: 'Active',\r\n\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: `data.productSettings[${\r\n\t\t\t\t\t\tthis.productSettingIndex}].commissionScheduleName`,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Commission Schedule',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdisabled: this.context.data.drawerComponent.displayMode\r\n\t\t\t\t\t\t\t=== AppConstants.displayMode.view,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tdefault: null,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions: this.commissionOptions,\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.setCommissionScheduleDetails(\r\n\t\t\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\t\t\t'commissionScheduleDetails');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'commissionScheduleDetails',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttitle: 'Commission Schedule Details',\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tuseMarkDown: true,\r\n\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\tcopyToClipboard: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: `data.productSettings[${\r\n\t\t\t\t\t\tthis.productSettingIndex}].subCommissionScheduleName`,\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Sub Commission Schedule',\r\n\t\t\t\t\t\ttooltip: 'Schedule applies to commissionable amounts '\r\n\t\t\t\t\t\t\t+ 'related to child agencies.',\r\n\t\t\t\t\t\tdisabled: this.context.data.drawerComponent.displayMode\r\n\t\t\t\t\t\t\t=== AppConstants.displayMode.view,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tdefault: null,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions: this.commissionOptions,\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.setCommissionScheduleDetails(\r\n\t\t\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\t\t\t'subCommissionScheduleDetails');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'subCommissionScheduleDetails',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttitle: 'Sub Commission Schedule Details',\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tuseMarkDown: true,\r\n\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\tcopyToClipboard: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the product setting.\r\n\t *\r\n\t * @return {boolean}\r\n\t * The product setting validity\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async validProductSetting(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.productsTypeGroup;\r\n\t\tthis.productsByState =\r\n\t\t\t!AnyHelper.isNullOrEmpty(field.formControl.value)\r\n\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`state eq \"${field.formControl.value}\"`,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t: [];\r\n\r\n\t\tconst productField = field.parent.fieldGroup[1];\r\n\t\tproductField.props.required = true;\r\n\r\n\t\tconst filteredProductOptions =\r\n\t\t\tthis.productsByState\r\n\t\t\t\t.filter((product) =>\r\n\t\t\t\t\t!this.entityInstanceComponent.entityInstance.data\r\n\t\t\t\t\t\t.productSettings.some(\r\n\t\t\t\t\t\t\t(productSetting: IProductSetting) =>\r\n\t\t\t\t\t\t\t\tproductSetting.name\r\n\t\t\t\t\t\t\t\t=== product.data.name))\r\n\t\t\t\t.map((item: any) =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: item.data.name,\r\n\t\t\t\t\tvalue: item.data.name\r\n\t\t\t\t});\r\n\r\n\t\tthis.updateValueAndDropdownOptions(\r\n\t\t\tproductField,\r\n\t\t\tfilteredProductOptions,\r\n\t\t\ttrue,\r\n\t\t\tthis.selectedProduct);\r\n\r\n\t\tif (this.productsByState.length === 0)\r\n\t\t{\r\n\t\t\tfield.asyncValidators.productValidator.message =\r\n\t\t\t\t'No products exist for this state.';\r\n\t\t}\r\n\t\telse if (filteredProductOptions.length === 0)\r\n\t\t{\r\n\t\t\tfield.asyncValidators.productValidator.message =\r\n\t\t\t\t'No more products to add for this state.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(this.productsByState.length > 0\r\n\t\t\t&& filteredProductOptions.length > 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Handle the state field on change.\r\n\t *\r\n\t * @async\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The state field.\r\n\t * @return {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async handleStateOnChange(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tif (this.createView !== true\r\n\t\t\t|| this.selectedState === field.formControl.value)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedState = field.formControl.value;\r\n\t\tthis.authorityOptions = [];\r\n\t\tthis.commissionOptions = [];\r\n\r\n\t\tthis.updateDynamicFields(field);\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(field.formControl.value))\r\n\t\t{\r\n\t\t\tthis.updateValueAndDropdownOptions(\r\n\t\t\t\tfield.parent.fieldGroup[1],\r\n\t\t\t\t[]);\r\n\t\t}\r\n\r\n\t\tfield.formControl.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Handle the product field on change.\r\n\t *\r\n\t * @async\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The product field.\r\n\t * @return {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async handleProductOnChange(field: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tif (this.createView !== true\r\n\t\t\t|| field.formControl.value\r\n\t\t\t\t=== this.selectedProduct)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedProduct =\r\n\t\t\tfield.formControl.value;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(this.selectedProduct))\r\n\t\t{\r\n\t\t\tthis.updateDynamicFields(field);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.updating = true;\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.productsTypeGroup;\r\n\t\tconst productInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`name eq \"${this.selectedProduct}\"`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.authorityOptions =\r\n\t\t\tthis.getDropdownOptions(this.productAuthorities);\r\n\t\tthis.commissionSchedules =\r\n\t\t\tawait this.getCommissionSchedules(productInstance.id);\r\n\t\tthis.commissionOptions =\r\n\t\t\tthis.getCommissionOptions();\r\n\r\n\t\tthis.updateDynamicFields(field);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the dynamic field at this components.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The root formly field.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic updateDynamicFields(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\tconst fieldGroup: FormlyFieldConfig[] =\r\n\t\t\tfield.parent.fieldGroup;\r\n\r\n\t\tlet dynamicCommissionOptions: IDropdownOption[] = [];\r\n\t\tlet dynamicAuthorityOptions: IDropdownOption[] = [];\r\n\r\n\t\tif (!AnyHelper.isNull(fieldGroup[1].formControl.value))\r\n\t\t{\r\n\t\t\tdynamicCommissionOptions = this.commissionOptions;\r\n\t\t\tdynamicAuthorityOptions = this.authorityOptions;\r\n\t\t}\r\n\r\n\t\t// Update authority field options.\r\n\t\tthis.updateValueAndDropdownOptions(\r\n\t\t\tfieldGroup[2],\r\n\t\t\tdynamicAuthorityOptions,\r\n\t\t\ttrue,\r\n\t\t\tfieldGroup[2].props.default);\r\n\t\t// Update commissions schedule field options.\r\n\t\tthis.updateValueAndDropdownOptions(\r\n\t\t\tfieldGroup[3],\r\n\t\t\tdynamicCommissionOptions);\r\n\t\t// Update subCommission schedule field options.\r\n\t\tthis.updateValueAndDropdownOptions(\r\n\t\t\tfieldGroup[5],\r\n\t\t\tdynamicCommissionOptions,\r\n\t\t\tfalse);\r\n\r\n\t\tthis.updating = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the dropdown options.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The field to update.\r\n\t * @param {any[] | Observable} options\r\n\t * The options to be set.\r\n\t * @param {boolean} requiredField\r\n\t * Determines if field is required by design.\r\n\t * Default is true.\r\n\t * @param {any} value\r\n\t * The new value. Null if not sent\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic updateValueAndDropdownOptions(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\toptions: any[] | Observable,\r\n\t\trequiredField: boolean = true,\r\n\t\tvalue: any = null): void\r\n\t{\r\n\t\tif (!AnyHelper.isFunction(field.props.updateDataOptions))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfield.props.required =\r\n\t\t\t(options).length > 0 && requiredField === true;\r\n\t\tfield.props.options = options;\r\n\t\tfield.props.updateDataOptions();\r\n\t\tfield.formControl.setValue(value);\r\n\t\tfield.formControl.updateValueAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the dropdown options.\r\n\t *\r\n\t * @return {IDropdownOption[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic getDropdownOptions(\r\n\t\toptionItems: any[],\r\n\t\tlabelKey: string = null,\r\n\t\tvalueKey: string = null): IDropdownOption[]\r\n\t{\r\n\t\treturn optionItems\r\n\t\t\t.map((optionItem: string) =>\r\n\t\t\t\t({\r\n\t\t\t\t\tlabel: optionItem[labelKey] || optionItem,\r\n\t\t\t\t\tvalue: optionItem[valueKey] || optionItem\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event of the contained dynamic form.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The sent validity value of the dynamic form.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic validDataChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.isValid = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a product setting.\r\n\t *\r\n\t * @async\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async createProductSetting(): Promise\r\n\t{\r\n\t\tthis.updating = true;\r\n\t\tconst createData: IProductSetting =\r\n\t\t\tthis.productSettingsDataSet.data.productSettings[\r\n\t\t\t\tthis.productSettingIndex];\r\n\r\n\t\tthis.entityInstanceComponent.entityInstance.data.productSettings\r\n\t\t\t.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tname:\r\n\t\t\t\t\t\tcreateData.name,\r\n\t\t\t\t\tauthority:\r\n\t\t\t\t\t\tcreateData.authority,\r\n\t\t\t\t\tcommissionScheduleName:\r\n\t\t\t\t\t\tcreateData.commissionScheduleName,\r\n\t\t\t\t\tsubCommissionScheduleName:\r\n\t\t\t\t\t\tcreateData.subCommissionScheduleName\r\n\t\t\t\t});\r\n\r\n\t\tawait this.executeCommonAction(\r\n\t\t\t'Adding Product Setting',\r\n\t\t\t'Added Product Setting',\r\n\t\t\t`Product Setting ${createData.name} was added to ${\r\n\t\t\t\tthis.entityInstanceComponent.entityIdentifier} entity.`,\r\n\t\t\t`Product Setting ${createData.name} was not added to ${\r\n\t\t\t\tthis.entityInstanceComponent.entityIdentifier} entity.`);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a product setting.\r\n\t *\r\n\t * @async\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async updateProductSetting(): Promise\r\n\t{\r\n\t\tthis.updating = true;\r\n\t\tconst updateData: IProductSetting =\r\n\t\t\tthis.productSettingsDataSet.data.productSettings[\r\n\t\t\t\tthis.productSettingIndex];\r\n\r\n\t\tconst contextProductSetting: IProductSetting =\r\n\t\t\tthis.entityInstanceComponent\r\n\t\t\t\t.entityInstance.data.productSettings[\r\n\t\t\t\t\tthis.productSettingIndex];\r\n\r\n\t\tcontextProductSetting.authority =\r\n\t\t\tupdateData.authority;\r\n\t\tcontextProductSetting.commissionScheduleName =\r\n\t\t\tupdateData.commissionScheduleName;\r\n\t\tcontextProductSetting.subCommissionScheduleName =\r\n\t\t\tupdateData.subCommissionScheduleName;\r\n\r\n\t\tawait this.executeCommonAction(\r\n\t\t\t'Updating Product Setting',\r\n\t\t\t'Updated Product Setting',\r\n\t\t\t`Product Setting ${\r\n\t\t\t\tcontextProductSetting.name} was updated.`,\r\n\t\t\t`Product Setting ${\r\n\t\t\t\tcontextProductSetting.name} was not updated.`);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the common action.\r\n\t *\r\n\t * @async\r\n\t * @param {string} pendingMessage\r\n\t * The activity pending message.\r\n\t * @param {string} completedMessage\r\n\t * The activity completed message.\r\n\t * @param {string} successDetails\r\n\t * The activity success details.\r\n\t * @param {string} failureDetails\r\n\t * The activity failure details.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async executeCommonAction(\r\n\t\tpendingMessage: string,\r\n\t\tcompletedMessage: string,\r\n\t\tsuccessDetails: string,\r\n\t\tfailureDetails: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.entityInstanceComponent.entityTypeGroup;\r\n\r\n\t\tconst actionPromise =\r\n\t\t\tnew Promise (\r\n\t\t\t\tasync(resolve: any, reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t\t\t\t\tAppConstants.cssClasses.entityLayoutMask,\r\n\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\t\t\tawait this.entityInstanceApiService.update(\r\n\t\t\t\t\t\t\tthis.entityInstanceComponent.entityInstance.id,\r\n\t\t\t\t\t\t\tthis.entityInstanceComponent.entityInstance);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tthis.entityInstanceComponent.entityTypeGroup;\r\n\t\t\t\t\t\tconst databaseEntityInstance: IEntityInstance =\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.get(this.entityInstanceComponent\r\n\t\t\t\t\t\t\t\t\t.entityInstance.id);\r\n\r\n\t\t\t\t\t\tthis.entityInstanceComponent\r\n\t\t\t\t\t\t\t.entityInstance.data.productSettings =\r\n\t\t\t\t\t\t\tdatabaseEntityInstance.data.productSettings;\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfinally\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tAppConstants.displayMode.list);\r\n\r\n\t\t\t\t\t\tthis.entityInstanceComponent.reloadEntity();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tactionPromise,\r\n\t\t\t\tpendingMessage,\r\n\t\t\t\tcompletedMessage,\r\n\t\t\t\tsuccessDetails,\r\n\t\t\t\tfailureDetails));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission schedule entity instances based on the provided\r\n\t * product id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} productInstanceId\r\n\t * The product instance id.\r\n\t * @returns {Promise}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic async getCommissionSchedules(\r\n\t\tproductInstanceId: number): Promise\r\n\t{\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.getChildren(\r\n\t\t\t\tproductInstanceId,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.commissionsTypeGroup);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission schedules dropdown options.\r\n\t *\r\n\t * @async\r\n\t * @returns {IDropdownOption[]}\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic getCommissionOptions(): IDropdownOption[]\r\n\t{\r\n\t\treturn [\r\n\t\t\t...(this.commissionSchedules)\r\n\t\t\t\t.map((item: any) =>\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: item.data.name,\r\n\t\t\t\t\t\tvalue: item.data.name\r\n\t\t\t\t\t}),\r\n\t\t\t...[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: null,\r\n\t\t\t\t\tlabel: 'Not Set'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the commission schedule information details to display as text.\r\n\t *\r\n\t * @async\r\n\t * @param {string} commissionScheduleName\r\n\t * The commission schedule name.\r\n\t * @returns {string}\r\n\t * The commission schedule information details to display as text.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tpublic getCommissionScheduleDetails(\r\n\t\tcommissionScheduleName: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(commissionScheduleName))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst commissionScheduleInstance: IEntityInstance =\r\n\t\t\tthis.commissionSchedules.find(commissionSchedule =>\r\n\t\t\t\tcommissionSchedule.data.name === commissionScheduleName);\r\n\r\n\t\tconst settings: any =\r\n\t\t\tcommissionScheduleInstance.data.settings;\r\n\r\n\t\tconst calculation: any =\r\n\t\t\tcommissionScheduleInstance.data.calculation;\r\n\r\n\t\tconst calculationBase: any =\r\n\t\t\tcalculation.base;\r\n\r\n\t\tconst calculationModifiers: any =\r\n\t\t\tcalculation.modifiers;\r\n\r\n\t\tconst newBusinessPercent: string =\r\n\t\t\t!AnyHelper.isNull(calculationBase.newBusinessPercent)\r\n\t\t\t\t? StringHelper.format(\r\n\t\t\t\t\tcalculationBase.newBusinessPercent,\r\n\t\t\t\t\tAppConstants.formatTypes.percent)\r\n\t\t\t\t: '0%';\r\n\r\n\t\tconst newBusinessAmount: string =\r\n\t\t\t!AnyHelper.isNull(calculationBase.newBusinessAmount)\r\n\t\t\t\t? StringHelper.numberToCurrency(\r\n\t\t\t\t\tcalculationBase.newBusinessAmount)\r\n\t\t\t\t: '$0';\r\n\r\n\t\tconst renewalPercent: string =\r\n\t\t\t!AnyHelper.isNull(calculationBase.renewalPercent)\r\n\t\t\t\t? StringHelper.format(\r\n\t\t\t\t\tcalculationBase.renewalPercent,\r\n\t\t\t\t\tAppConstants.formatTypes.percent)\r\n\t\t\t\t: '0%';\r\n\r\n\t\tconst renewalAmount: string =\r\n\t\t\t!AnyHelper.isNull(calculationBase.renewalAmount)\r\n\t\t\t\t? StringHelper.numberToCurrency(\r\n\t\t\t\t\tcalculationBase.renewalAmount)\r\n\t\t\t\t: '$0';\r\n\r\n\t\tconst modifiers: string =\r\n\t\t\tcalculationModifiers.map(item => item.name).join('
    ');\r\n\r\n\t\treturn 'Settings
    '\r\n\t\t\t+ `Based On: ${settings.basedOn}
    `\r\n\t\t\t+ `Distribution Frequency: ${settings.distributionFrequency}`\r\n\t\t\t+ '

    Base Calculation
    '\r\n\t\t\t+ `New Business Percent: ${newBusinessPercent}
    `\r\n\t\t\t+ `New Business Amount: ${newBusinessAmount}
    `\r\n\t\t\t+ `Renewal Percent: ${renewalPercent}
    `\r\n\t\t\t+ `Renewal Amount: ${renewalAmount}

    `\r\n\t\t\t+ 'Modifiers
    '\r\n\t\t\t+ `${modifiers}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the commission schedule information details to display as text to\r\n\t * the desired formly field control.\r\n\t *\r\n\t * @async\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The commission schedule name.\r\n\t * @param {string} commissionScheduleDetailsControlKey\r\n\t * The commission schedule name.\r\n\t * @memberof ProductSettingActionComponent\r\n\t */\r\n\tprivate setCommissionScheduleDetails(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcommissionScheduleDetailsControlKey: string)\r\n\t{\r\n\t\tconst commissionScheduleName: string =\r\n\t\t\tfield.formControl.value;\r\n\r\n\t\tconst content: string =\r\n\t\t\tthis.getCommissionScheduleDetails(commissionScheduleName);\r\n\r\n\t\tconst commissionScheduleDetailsTextArea =\r\n\t\t\tthis.productSettingFormlyLayout.find(\r\n\t\t\t\tcontrol => control.key === commissionScheduleDetailsControlKey);\r\n\r\n\t\tif (!AnyHelper.isNull(commissionScheduleDetailsTextArea))\r\n\t\t{\r\n\t\t\tcommissionScheduleDetailsTextArea.props.content = content;\r\n\r\n\t\t\tif (!AnyHelper.isNull(commissionScheduleDetailsTextArea\r\n\t\t\t\t.props\r\n\t\t\t\t.reloadTextDisplay))\r\n\t\t\t{\r\n\t\t\t\tcommissionScheduleDetailsTextArea.props.reloadTextDisplay();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityDefinitionDto\r\n} from '@api/interfaces/security/security-definition.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tProductSettingDirective\r\n} from '@shared/directives/product-setting.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIProductSetting\r\n} from '@shared/interfaces/application-objects/product-setting.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-product-setting-list',\r\n\ttemplateUrl: './product-setting-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./product-setting-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level product settings list view.\r\n *\r\n * @export\r\n * @class ProductSettingListComponent\r\n * @extends {ProductSettingDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class ProductSettingListComponent\r\n\textends ProductSettingDirective\r\n\timplements IDynamicComponent, IOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the product settings list component.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the product setting filter.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic productSettingFilter: ICommonListFilter[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the allowed user access.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic allowedUserAccess: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the access denied url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets list of required resources.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic resources: string[] =\r\n\t\t[\r\n\t\t\t'Security.AccessPolicyDefinition'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the client message if insufficient resources exist.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\t'Agency product settings access is required.';\r\n\r\n\t/**\r\n\t * Gets or sets the product settings path.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tprivate readonly productSettingsPath: string =\r\n\t\t'$.data.productSettings';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.itemActions = SecurityHelper\r\n\t\t\t.scrubMenuItems(\r\n\t\t\t\tthis.itemActions,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes.product,\r\n\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadProductSettings(this.productSettingFilter),\r\n\t\t\tthis);\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate drawer ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this drawer.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityInstanceComponent.entityTypeGroup;\r\n\r\n\t\tconst userEffectivePermissions: ISecurityDefinitionDto =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getPermissions(entityInstanceComponent.entityInstance.id);\r\n\r\n\t\tthis.allowedUserAccess = SecurityHelper\r\n\t\t\t.getDataSecurityRights(\r\n\t\t\t\tthis.productSettingsPath,\r\n\t\t\t\tuserEffectivePermissions.data)\r\n\t\t\t.rights\r\n\t\t\t.update;\r\n\r\n\t\treturn this.allowedUserAccess;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading notes data.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} [activeFilters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with applied filters and sorter.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\t public async loadProductSettings(\r\n\t\tactiveFilters: ICommonListFilter[]): Promise\r\n\t{\r\n\t\tlet productSettings: IProductSetting[] = [];\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.context.source.entityTypeGroup;\r\n\t\t\tconst entityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.get(this.context.source.entityInstance.id);\r\n\r\n\t\t\tproductSettings =\r\n\t\t\t\tawait this.filterProductSettings(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...entityInstance.data.productSettings\r\n\t\t\t\t\t],\r\n\t\t\t\t\tactiveFilters);\r\n\t\t}\r\n\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t`${AppConstants.cssClasses.pinnedDrawerOverlay}`\r\n\t\t\t\t+ `${AppConstants.cssClasses.productSettingsOverlay}`,\r\n\t\t\tfalse);\r\n\r\n\t\treturn productSettings;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a common list context that can be consumed by a common list\r\n\t * displayed in this component.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * The collection of data that will be displayed in this list.\r\n\t * @returns {ICommonListContext}\r\n\t * The common list context to display.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: this.productAuthorityTypes.active,\r\n\t\t\t\t\tvalue: this.productAuthorityTypes.active\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: this.productAuthorityTypes.inactive,\r\n\t\t\t\t\tvalue: this.productAuthorityTypes.inactive\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: this.productAuthorityTypes.serviceExisting,\r\n\t\t\t\t\tvalue: this.productAuthorityTypes.serviceExisting\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst scrubbedActions: ISecureMenuItem[] =\r\n\t\t\tSecurityHelper\r\n\t\t\t\t.scrubMenuItems(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.create,\r\n\t\t\t\t\t\t\tcommand: (event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\t\t\tAppConstants.displayMode.create);\r\n\r\n\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypes.product,\r\n\t\t\t\t\tthis.securityDefinitions);\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tsortable: false,\r\n\t\t\t\t\tsearchFilterFormat: '${inputValue}',\r\n\t\t\t\t\tactions: scrubbedActions,\r\n\t\t\t\t\tfilters: listFilters,\r\n\t\t\t\t\tonFilterChange: (\r\n\t\t\t\t\t\tsource: any,\r\n\t\t\t\t\t\tfilters: ICommonListFilter[]) =>\r\n\t\t\t\t\t\tthis.handleFilterChange(source, filters)\r\n\t\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Filters the Product Settings.\r\n\t *\r\n\t * @param {IProductSetting[]} productSettings\r\n\t * The entity instance product settings.\r\n\t * @param {ICommonListFilter[]} activeFilters\r\n\t * The active filters.\r\n\t * @returns {Promise}\r\n\t * The filtered product settings.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic async filterProductSettings(\r\n\t\tproductSettings: IProductSetting[],\r\n\t\tactiveFilters: ICommonListFilter[]): Promise\r\n\t{\r\n\t\tfor (let productSettingIndex = 0;\r\n\t\t\tproductSettingIndex < productSettings.length;\r\n\t\t\tproductSettingIndex ++)\r\n\t\t{\r\n\t\t\tlet productInstance: IEntityInstance = null;\r\n\t\t\tconst productSetting: any =\r\n\t\t\t\tproductSettings[productSettingIndex];\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.products;\r\n\t\t\t\tproductInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t`name eq \"${productSetting.name}\"`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\t\t\t}\r\n\t\t\tcatch (exception)\r\n\t\t\t{\r\n\t\t\t\tproductInstance = null;\r\n\t\t\t}\r\n\t\t\tfinally\r\n\t\t\t{\r\n\t\t\t\tif (!AnyHelper.isNull(productInstance))\r\n\t\t\t\t{\r\n\t\t\t\t\tproductSetting.itemIndex = productSettingIndex;\r\n\t\t\t\t\tproductSetting.productInstance =\r\n\t\t\t\t\t\tproductInstance;\r\n\t\t\t\t\tproductSetting.state =\r\n\t\t\t\t\t\tproductInstance?.data?.state\r\n\t\t\t\t\t\t\t|| AppConstants.empty;\r\n\t\t\t\t\tproductSetting.insuranceType =\r\n\t\t\t\t\t\tproductInstance?.data?.insuranceType\r\n\t\t\t\t\t\t\t|| AppConstants.empty;\r\n\t\t\t\t\tproductSetting.informationIcon =\r\n\t\t\t\t\t\tthis.getInformationIcon(productSetting.authority);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst validProductSettings: IProductSetting[] =\r\n\t\t\tproductSettings.filter((productSetting) =>\r\n\t\t\t\t(!AnyHelper.isNull((productSetting).productInstance)));\r\n\r\n\t\treturn activeFilters.length > 0\r\n\t\t\t? validProductSettings.filter((productSetting: any) =>\r\n\t\t\t{\r\n\t\t\t\tlet insideFilterCriteria: boolean = true;\r\n\t\t\t\tactiveFilters.forEach((activeFilter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst filterValue: string =\r\n\t\t\t\t\t\tactiveFilter.value.toLowerCase();\r\n\r\n\t\t\t\t\tif (filterValue !== productSetting.authority.toLowerCase()\r\n\t\t\t\t\t\t&& filterValue !== productSetting.name.toLowerCase()\r\n\t\t\t\t\t\t&& filterValue !== productSetting.state.toLowerCase()\r\n\t\t\t\t\t\t&& filterValue !== productSetting.productInstance\r\n\t\t\t\t\t\t\t.data.insuranceType.toLowerCase())\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinsideFilterCriteria = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn insideFilterCriteria;\r\n\t\t\t})\r\n\t\t\t: validProductSettings;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the information icon.\r\n\t *\r\n\t * @async\r\n\t * @param {string} [authority]\r\n\t * The level of authority.\r\n\t * @returns {string[]}\r\n\t * The information icons\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic getInformationIcon(authority: string): string[]\r\n\t{\r\n\t\tconst informationIcon: string[] = [];\r\n\r\n\t\tswitch (authority)\r\n\t\t{\r\n\t\t\tcase this.productAuthorityTypes.active:\r\n\t\t\t\tinformationIcon.push(\r\n\t\t\t\t\t'fa fa-check theme-color-green');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase this.productAuthorityTypes.inactive:\r\n\t\t\t\tinformationIcon.push(\r\n\t\t\t\t\t'fa fa-exclamation theme-color-red');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase this.productAuthorityTypes.serviceExisting:\r\n\t\t\t\tinformationIcon.push(\r\n\t\t\t\t\t'fa fa-exclamation theme-color-dark-orange');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tinformationIcon.push(null);\r\n\t\t}\r\n\r\n\t\treturn informationIcon;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a list item that represents\r\n\t * a product setting entity instance.\r\n\t *\r\n\t * @param {any} productSetting\r\n\t * The product settings that exist on an instance.\r\n\t * @returns {ICommonListItem}\r\n\t * The common list item to display that represents this entity instance.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\tproductSetting: any):\r\n\t\tICommonListItem\r\n\t{\r\n\t\treturn > {\r\n\t\t\titem: productSetting,\r\n\t\t\tdescriptionLineFormat:\r\n\t\t\t\t`**${productSetting.name}** - `\r\n\t\t\t\t\t+ `${productSetting.authority}`,\r\n\t\t\tinformationLineFormat:\r\n\t\t\t\t`${productSetting.state} `\r\n\t\t\t\t\t+ `${productSetting.insuranceType}`,\r\n\t\t\tinformationIcons: productSetting.informationIcon,\r\n\t\t\tactions: this.itemActions\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles any filter change and refreshes data.\r\n\t *\r\n\t * @param {any} source\r\n\t * A value representing the source component triggering the sort change\r\n\t * event.\r\n\t * @param {ICommonListFilter[]} filters\r\n\t * A collection of enabled and active filters.\r\n\t * @memberof ProductSettingListComponent\r\n\t */\r\n\tpublic handleFilterChange(\r\n\t\tsource: any,\r\n\t\tfilters: ICommonListFilter[]): void\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\t\tthis.refreshCommonListContext(\r\n\t\t\tthis.loadProductSettings(\r\n\t\t\t\tthis.enabledFilters),\r\n\t\t\tsource);\r\n\t}\r\n}\r\n","
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\tThis view is not currently available.\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tOperationEventParameterConstants\r\n} from '@operation/shared/operation-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n@Component({\r\n\tselector: 'app-product-settings',\r\n\ttemplateUrl: './product-settings.component.html'\r\n})\r\n\r\n/**\r\n * A component representing context level product settings.\r\n *\r\n * @export\r\n * @class ProductSettingsComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ProductSettingsComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the selected item index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ProductSettingsComponent\r\n\t */\r\n\tpublic selectedItemIndex: number = null;\r\n\r\n\t/**\r\n\t * Gets or sets the child filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ProductSettingsComponent\r\n\t */\r\n\tpublic override wildcardChildFilter: string =\r\n\t\tInsuranceConstants.insuranceEntityTypes.product;\r\n\r\n\t/**\r\n\t * Gets or sets the value indicating if the component is still loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ProductSettingsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Handles the reload product settings event.\r\n\t *\r\n\t * @memberof ProductSettingsComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.reloadProductSettingsEvent,\r\n\t\t[OperationEventParameterConstants.event])\r\n\tpublic reloadProductSettings(): void\r\n\t{\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t`${AppConstants.cssClasses.pinnedDrawerOverlay}`\r\n\t\t\t\t+ `${AppConstants.cssClasses.productSettingsOverlay}`,\r\n\t\t\ttrue);\r\n\r\n\t\tthis.changeDisplayMode(AppConstants.empty);\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.changeDisplayMode(AppConstants.displayMode.list);\r\n\t\t\t});\r\n\t}\r\n\r\n\t /**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @memberof ProductSettingsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\t this.context.source;\r\n\r\n\t\t await this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tthis.initialCreateData =\r\n\t\t\t{\r\n\t\t\t\ttype:\r\n\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t.entityType.name,\r\n\t\t\t\treferences: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: WorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer,\r\n\t\t\t\t\t\tidentifier:\r\n\t\t\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t\t\t.entityInstance.id\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\n\r\n/**\r\n * A class representing the available methods (business logic) for an\r\n * entity instance rule violation.\r\n *\r\n * @export\r\n * @class EntityInstanceRuleViolation\r\n * @implements {IEntityInstanceRuleViolation}\r\n */\r\nexport class EntityInstanceRuleViolation implements IEntityInstanceRuleViolation\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityInstanceRuleViolation.\r\n\t *\r\n\t * @param {IEntityInstanceRuleViolation} iEntityInstanceRuleViolation\r\n\t * The entity instance rule violation to create this new\r\n\t * object from.\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iEntityInstanceRuleViolation: IEntityInstanceRuleViolation)\r\n\t{\r\n\t\tObject.assign(this, iEntityInstanceRuleViolation);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance rule violation id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic instanceId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic ruleDefinitionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the json data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic jsonData: string;\r\n\r\n\t/**\r\n\t * Gets or sets the resource identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic resourceIdentifier: string;\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IRuleDefinition}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinition;\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the entity instance rule violation\r\n\t * json data.\r\n\t *\r\n\t * @type {any}\r\n\t * The parsed json data object.\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic get parsedJson(): any\r\n\t{\r\n\t\treturn JSON.parse(this.jsonData);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the message value of the json data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityInstanceRuleViolation\r\n\t */\r\n\tpublic get message(): string\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.messageKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key used to find the message from the\r\n\t * entity instance rule violation.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tprivate readonly messageKey: string = 'message';\r\n}","
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    0\"\r\n\t\tclass=\"ui-g-12 table-container no-horizontal-padding\">\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tActions\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tName\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBlocked\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tOverridden\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{{ruleViolationWorkflowAction.workflowActionDefinition?.name}}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    0)\">\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    0\"\r\n\t\tclass=\"ui-g-12 table-container no-horizontal-padding\">\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tAreas and Fields\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\tOverride\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tRuleWorkflowDisplayDirective\r\n} from '@shared/directives/rule-workflow-display.directive';\r\nimport {\r\n\tRuleListComponent\r\n} from '@shared/dynamic-components/rules/rule-list/rule-list.component';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityInstanceRuleViolation\r\n} from '@shared/implementations/entities/entity-instance-rule-violation';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\nimport {\r\n\tIRulePresentationDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-definition.interface';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-rule-list-item',\r\n\ttemplateUrl: './rule-list-item.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rule-list-item.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a context level rule list item view.\r\n *\r\n * @export\r\n * @class RuleListItemComponent\r\n * @extends {RuleWorkflowDisplayDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RuleListItemComponent\r\n\textends RuleWorkflowDisplayDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rule list item component.\r\n\t *\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used in this component.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic ruleService: RuleService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition for this violation list item.\r\n\t *\r\n\t * @type {IRuleDefinition}\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the unique rule presentation definitions for this violation\r\n\t * list item. This set only holds one presentation definition value for each\r\n\t * associated data key in order to show associated controls.\r\n\t *\r\n\t * @type {IRulePresentationDefinition[]}\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic rulePresentationDefinitions:\r\n\t\tIRulePresentationDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of tables displayed in this list item.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic loadingTables: boolean = true;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load the data needed to display a rule list item.\r\n\t *\r\n\t * @async\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst entityInstanceRuleViolation: EntityInstanceRuleViolation =\r\n\t\t\tnew EntityInstanceRuleViolation(this.context.data);\r\n\r\n\t\tthis.ruleDefinition =\r\n\t\t\tentityInstanceRuleViolation.ruleDefinition;\r\n\r\n\t\tthis.ruleViolationWorkflowActions =\r\n\t\t\tentityInstanceRuleViolation\r\n\t\t\t\t.ruleDefinition\r\n\t\t\t\t.ruleViolationWorkflowActionDefinitions;\r\n\r\n\t\tthis.rulePresentationDefinitions =\r\n\t\t\tawait this.ruleService\r\n\t\t\t\t.getUniqueViolationPresentationDefinitions(\r\n\t\t\t\t\tentityInstanceRuleViolation);\r\n\r\n\t\tthis.overrideAllowed = this.getOverrideAllowed();\r\n\t\tthis.loadingTables = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will navigate to and highlight the control displayed in the\r\n\t * list of presentation definitions. This will always navigate to the\r\n\t * control that is a descendant of the current rule violations resource\r\n\t * identifier to allow for repeater based lookups.\r\n\t * @note If the control is not located due to permissions or removed items,\r\n\t * this will display a banner to the user that this control can not be\r\n\t * found.\r\n\t *\r\n\t * @param {IRulePresentationDefinition} selectedItem\r\n\t * The rule presentation definition row display that sent this navigate to\r\n\t * control event.\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic navigateToControl(\r\n\t\tselectedItem: IRulePresentationDefinition): void\r\n\t{\r\n\t\tconst matchingResourceIdentifier: any =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`label[data-resource-identifier=\r\n\t\t\t\t\t\"${this.context.data.resourceIdentifier}\"]`)\r\n\t\t\t\t?.parentElement // div\r\n\t\t\t\t.parentElement // custom control\r\n\t\t\t\t.parentElement // formly field\r\n\t\t\t\t.parentElement; // Base level or repeater level\r\n\r\n\t\tconst splitKey: string[] =\r\n\t\t\tselectedItem.dataKey.split(AppConstants.characters.period);\r\n\r\n\t\tconst matchingItem: any =\r\n\t\t\tmatchingResourceIdentifier?.querySelector(\r\n\t\t\t\t`[data-key=\"${selectedItem.dataKey}\"]`)\r\n\t\t\t\t?? matchingResourceIdentifier?.querySelector(\r\n\t\t\t\t\t`[data-key=\"${splitKey[splitKey.length - 1]}\"]`);\r\n\r\n\t\tif (!AnyHelper.isNull(matchingItem))\r\n\t\t{\r\n\t\t\tthis.openTab(\r\n\t\t\t\tmatchingItem);\r\n\t\t\tthis.expandContainers(\r\n\t\t\t\tmatchingItem);\r\n\r\n\t\t\tif (matchingItem.classList.contains(\r\n\t\t\t\tAppConstants.cssClasses.sectionTitle))\r\n\t\t\t{\r\n\t\t\t\tthis.displayElement(\r\n\t\t\t\t\tmatchingItem);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet wrappingDiv: Element =\r\n\t\t\t\tmatchingItem\r\n\t\t\t\t\t.parentElement\r\n\t\t\t\t\t.parentElement\r\n\t\t\t\t\t.parentElement;\r\n\r\n\t\t\t// Handle non standard controls.\r\n\t\t\tlet currentAttempt: number = 1;\r\n\t\t\tconst maximumAttempts: number = 5;\r\n\t\t\twhile (!wrappingDiv.classList.contains(\r\n\t\t\t\tFormlyConstants.customControls.customFieldWrapper)\r\n\t\t\t\t&& currentAttempt <= maximumAttempts)\r\n\t\t\t{\r\n\t\t\t\twrappingDiv = wrappingDiv.parentElement;\r\n\t\t\t\tcurrentAttempt++;\r\n\t\t\t}\r\n\r\n\t\t\tconst nestedInput: any =\r\n\t\t\t\tmatchingItem.querySelector(\r\n\t\t\t\t\tFormlyConstants.customControls.input);\r\n\t\t\tconst matchingElement: any =\r\n\t\t\t\t(nestedInput || matchingItem);\r\n\r\n\t\t\tthis.displayElement(\r\n\t\t\t\twrappingDiv,\r\n\t\t\t\tmatchingElement);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t'Control not displayed',\r\n\t\t\t\t'The current layout does not hold this control.',\r\n\t\t\t\tAppConstants.activityStatus.info);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method will set the view mode of the rule component to the override\r\n\t * view.\r\n\t *\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic displayOverride(): void\r\n\t{\r\n\t\tconst source: RuleListComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tsource.changeSelectedItem.emit(\r\n\t\t\tthis.context.data);\r\n\t\tsource.changeDisplayMode.emit(\r\n\t\t\tAppConstants.displayMode.view);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will open the tab that this element to display is contained\r\n\t * in.\r\n\t *\r\n\t * @param {any} elementToDisplay\r\n\t * The element to be displayed.\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic openTab(\r\n\t\telementToDisplay: any): void\r\n\t{\r\n\t\tconst tabKeyIdentifier: string = 'tab-key';\r\n\t\tconst parentTabSection: HTMLDivElement =\r\n\t\t\telementToDisplay.parentElement?.closest(\r\n\t\t\t\t`.${FormlyConstants.customControls.customTabContent}`);\r\n\r\n\t\tif (!AnyHelper.isNull(parentTabSection))\r\n\t\t{\r\n\t\t\tconst tabKey: string =\r\n\t\t\t\tparentTabSection.attributes[\r\n\t\t\t\t\ttabKeyIdentifier]?.nodeValue;\r\n\t\t\tlet tabElement: HTMLAnchorElement = null;\r\n\r\n\t\t\tdocument\r\n\t\t\t\t.querySelectorAll(\r\n\t\t\t\t\t`span.${AppConstants.cssClasses.tabViewTitle}`)\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(element: Element) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (element.textContent\r\n\t\t\t\t\t\t\t.includes(tabKey))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttabElement =\r\n\t\t\t\t\t\t\t\telement.parentElement;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\tif (!AnyHelper.isNull(tabElement))\r\n\t\t\t{\r\n\t\t\t\ttabElement.click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent element to display, this method will open all of the\r\n\t * associated collapsed views in order to display a nested control in the\r\n\t * layout.\r\n\t *\r\n\t * @param {any} elementToDisplay\r\n\t * The element that will have all parent containers expanded.\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic expandContainers(\r\n\t\telementToDisplay: any): void\r\n\t{\r\n\t\tlet matchFound: boolean = true;\r\n\t\tlet currentElement = elementToDisplay;\r\n\r\n\t\twhile (matchFound === true)\r\n\t\t{\r\n\t\t\tconst parentAccordion: any =\r\n\t\t\t\tcurrentElement.parentElement\r\n\t\t\t\t\t.closest(\r\n\t\t\t\t\t\t'.p-accordion-tab');\r\n\r\n\t\t\tmatchFound = !AnyHelper.isNull(parentAccordion);\r\n\r\n\t\t\tif (matchFound === true\r\n\t\t\t\t&& !parentAccordion.classList.contains(\r\n\t\t\t\t\t'p-accordion-tab-active'))\r\n\t\t\t{\r\n\t\t\t\tparentAccordion.querySelector(\r\n\t\t\t\t\t'.p-accordion-header-link')\r\n\t\t\t\t\t.click();\r\n\t\t\t}\r\n\r\n\t\t\tcurrentElement = parentAccordion;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method will navigate to and highlight the border element. This will\r\n\t * also add a border highlight display to draw attention to the control\r\n\t * and focus if a focusable element is sent.\r\n\t *\r\n\t * @param {Element} borderDisplayElement\r\n\t * The element that will be scrolled to and will display a highlight\r\n\t * error border.\r\n\t * @param {any} focusElement\r\n\t * The element to focus on if available in this controls API.\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic displayElement(\r\n\t\tborderDisplayElement: Element,\r\n\t\tfocusElement: any = null): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tborderDisplayElement.scrollIntoView(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tblock: 'center',\r\n\t\t\t\t\t\tinline: 'center'\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tborderDisplayElement.classList.add(\r\n\t\t\t\t\tAppConstants.cssClasses.selectedErrorContainerBorder);\r\n\r\n\t\t\t\tfocusElement?.focus();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tborderDisplayElement.classList.remove(\r\n\t\t\t\t\tAppConstants.cssClasses.selectedErrorContainerBorder);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.twoSeconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a formatted data key value to display in the\r\n\t * available areas and fields table.\r\n\t *\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition that will be parsed for a formatted\r\n\t * data key.\r\n\t * @returns {string}\r\n\t * The markdown ready formatted data key value for display in the area\r\n\t * and fields table.\r\n\t * @memberof RuleListItemComponent\r\n\t */\r\n\tpublic getFormattedDataKey(\r\n\t\trulePresentationDefinition: IRulePresentationDefinition): string\r\n\t{\r\n\t\treturn rulePresentationDefinition.dataKey\r\n\t\t\t.replace(\r\n\t\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\t\tAppConstants.empty)\r\n\t\t\t.split(\r\n\t\t\t\tAppConstants.characters.period)\r\n\t\t\t.map(\r\n\t\t\t\t(dataKeyPart: string) =>\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\t\tdataKeyPart)))\r\n\t\t\t.join(\r\n\t\t\t\t'');\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tView: Rules\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceRuleViolationDto\r\n} from '@api/interfaces/entities/entity-instance-rule-violation.dto.interface';\r\nimport {\r\n\tEntityInstanceRuleViolationApiService\r\n} from '@api/services/entities/entity-instance-rule-violation.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonListDirective\r\n} from '@shared/directives/common-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-rule-list',\r\n\ttemplateUrl: './rule-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rule-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level rules list view.\r\n *\r\n * @export\r\n * @class RuleListComponent\r\n * @extends {RuleListComponent<\r\n * \tIEntityInstanceRuleViolation,\r\n * \tIEntityInstanceRuleViolation>\r\n * }\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RuleListComponent\r\n\textends CommonListDirective<\r\n\t\tIEntityInstanceRuleViolation,\r\n\t\tIEntityInstanceRuleViolationDto>\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rule list component.\r\n\t *\r\n\t * @param {EntityInstanceRuleViolationApiService}\r\n\t * entityInstanceRuleViolationApiService\r\n\t * The entity instance rule violation API service, used to get children.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used in this component.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceRuleViolationApiService:\r\n\t\t\tEntityInstanceRuleViolationApiService,\r\n\t\tpublic ruleService: RuleService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.apiService = entityInstanceRuleViolationApiService;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the list of common sorters for the list view.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] =\r\n\t\t[\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Rule Order',\r\n\t\t\t\tvalue: 'RuleDefinition.Order',\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for an action type of blocked.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tprivate readonly blockedIdentifier: string = 'Blocked';\r\n\r\n\t/**\r\n\t * A method to generate an initial filter for all calls to this list.\r\n\t *\r\n\t * @rule\r\n\t * This filter will be used for all calls, including those in the\r\n\t * list context filter set.\r\n\t *\r\n\t * @returns {string}\r\n\t * A filter value used for all data loads in this list.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic getPrimaryFilter(): string\r\n\t{\r\n\t\treturn 'InstanceId eq ' +\r\n\t\t\t(this.context.source).entityInstance.id;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading data.\r\n\t *\r\n\t * @param {string} filter\r\n\t * A value representing the compiled filters from the common list filter\r\n\t * array.\r\n\t * @param {string} orderBy\r\n\t * A value representing the compiled order by from the common list sort.\r\n\t * @param {number} offset\r\n\t * A value representing the current offset to load from. This value\r\n\t * defaults to 0.\r\n\t * @returns {Promise}\r\n\t * A data promise with an applied filter, order, and offset.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic async getData(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset: number = 0): Promise\r\n\t{\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tconst isAscendingOrder: boolean =\r\n\t\t\t\tthis.sorter.direction === AppConstants.sortDirections.ascending;\r\n\r\n\t\t\treturn (this.context.source)\r\n\t\t\t\t.entityInstanceRuleViolations\r\n\t\t\t\t.sort(\r\n\t\t\t\t\t(itemOne: IEntityInstanceRuleViolation,\r\n\t\t\t\t\t\titemTwo: IEntityInstanceRuleViolation) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst mainInput: IEntityInstanceRuleViolation =\r\n\t\t\t\t\t\t\tisAscendingOrder\r\n\t\t\t\t\t\t\t\t? itemOne\r\n\t\t\t\t\t\t\t\t: itemTwo;\r\n\t\t\t\t\t\tconst secondaryInput: IEntityInstanceRuleViolation =\r\n\t\t\t\t\t\t\tisAscendingOrder\r\n\t\t\t\t\t\t\t\t? itemTwo\r\n\t\t\t\t\t\t\t\t: itemOne;\r\n\r\n\t\t\t\t\t\tif (mainInput.ruleDefinition.order <\r\n\t\t\t\t\t\t\tsecondaryInput.ruleDefinition.order)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (mainInput.ruleDefinition.order >\r\n\t\t\t\t\t\t\tsecondaryInput.ruleDefinition.order)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Fall back to the rule violation age.\r\n\t\t\t\t\t\treturn mainInput.id - secondaryInput.id;\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this.ruleService.getPopulatedRuleViolations(\r\n\t\t\tfilter,\r\n\t\t\torderBy,\r\n\t\t\toffset,\r\n\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the base rules common list context.\r\n\t *\r\n\t * @rule\r\n\t * This method will generate on firstLoad the default common list context\r\n\t * with properties used for rules.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * A value representing the data to load within the common list context.\r\n\t * @returns {ICommonListContext}\r\n\t * A value representing the common list context for first load.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Blocked',\r\n\t\t\t\t\tvalue: this.blockedIdentifier\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tlistItemComponent:\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.ruleListItemComponent,\r\n\t\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tsortable: true,\r\n\t\t\t\t\tsorters: this.sorters,\r\n\t\t\t\t\tsearchFilterFormat: '${inputValue}',\r\n\t\t\t\t\tactions: [],\r\n\t\t\t\t\tfilters: listFilters,\r\n\t\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps entity instance data to a common list item.\r\n\t *\r\n\t * @param {IEntityInstanceRuleViolation} entityInstanceRuleViolation\r\n\t * A value representing the entity instance rule violation to map to\r\n\t * a common list item.\r\n\t * @returns {ICommonListItem}\r\n\t * A value representing the mapped common list item from the instance.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\tentityInstanceRuleViolation: IEntityInstanceRuleViolation):\r\n\t\tICommonListItem\r\n\t{\r\n\t\tconst violationActionDefinitions:\r\n\t\t\tIRuleViolationWorkflowActionDefinition[] =\r\n\t\t\tentityInstanceRuleViolation\r\n\t\t\t\t.ruleDefinition\r\n\t\t\t\t.ruleViolationWorkflowActionDefinitions;\r\n\r\n\t\tconst violationActionDefinitionsLength: number =\r\n\t\t\tviolationActionDefinitions.length;\r\n\t\tconst nonBlockingViolationsLength: number =\r\n\t\t\tviolationActionDefinitions.filter(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\truleViolationWorkflowAction.blocked === false).length;\r\n\t\tconst blockingViolationsLength: number =\r\n\t\t\tviolationActionDefinitions.filter(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\truleViolationWorkflowAction.blocked === true\r\n\t\t\t\t\t\t&& ruleViolationWorkflowAction\r\n\t\t\t\t\t\t\t.overridden === false).length;\r\n\t\tconst overriddenViolationsLength: number =\r\n\t\t\tviolationActionDefinitions.filter(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\truleViolationWorkflowAction.blocked === true\r\n\t\t\t\t\t\t&& ruleViolationWorkflowAction\r\n\t\t\t\t\t\t\t.overridden === true).length;\r\n\r\n\t\tconst noneBlocking: boolean =\r\n\t\t\tnonBlockingViolationsLength === violationActionDefinitionsLength;\r\n\t\tconst blockedWithNoOverrides: boolean =\r\n\t\t\tblockingViolationsLength > 0\r\n\t\t\t\t&& overriddenViolationsLength === 0;\r\n\t\tconst blockedWithPartialOverrides: boolean =\r\n\t\t\tblockingViolationsLength > 0\r\n\t\t\t\t&& overriddenViolationsLength > 0;\r\n\t\tconst blockedWithAllOverrides: boolean =\r\n\t\t\tblockingViolationsLength === 0\r\n\t\t\t\t&& overriddenViolationsLength ===\r\n\t\t\t\t\tviolationActionDefinitionsLength -\r\n\t\t\t\t\t\tnonBlockingViolationsLength;\r\n\r\n\t\tlet iconClass: string;\r\n\t\tlet colorClass: string;\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase noneBlocking:\r\n\t\t\t\ticonClass = 'flag-o';\r\n\t\t\t\tcolorClass = AppConstants.cssClasses.textSecondaryColor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase blockedWithNoOverrides:\r\n\t\t\t\ticonClass = 'flag';\r\n\t\t\t\tcolorClass = AppConstants.cssClasses.textErrorColor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase blockedWithPartialOverrides:\r\n\t\t\t\ticonClass = 'flag-checkered';\r\n\t\t\t\tcolorClass = AppConstants.cssClasses.textErrorColor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase blockedWithAllOverrides:\r\n\t\t\t\ticonClass = 'flag-o';\r\n\t\t\t\tcolorClass = AppConstants.cssClasses.textSuccessColor;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\titem: entityInstanceRuleViolation,\r\n\t\t\t\tdescriptionLineFormat:\r\n\t\t\t\t\t`'\r\n\t\t\t\t\t\t+ `**${entityInstanceRuleViolation\r\n\t\t\t\t\t\t\t.ruleDefinition.displayName}**`,\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions: []\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the data promise for loading rules data.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} [filters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @param {ICommonListSort} [sorter]\r\n\t * A value representing the enabled sorter to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with a filter, order, and offset.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic async loadItems(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort): Promise\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\treturn this.getData(\r\n\t\t\t\tthis.getPrimaryFilter(),\r\n\t\t\t\torderBy);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * This action is called to filter items after the rules are initially\r\n\t * loaded.\r\n\t *\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic performPostLoadActions(): void\r\n\t{\r\n\t\tthis.commonListContext.data.data =\r\n\t\t\tthis.filterItems();\r\n\t}\r\n\r\n\t/**\r\n\t * This filter items method is used to return all rules with\r\n\t * entries matching the current filter set.\r\n\t *\r\n\t * @returns {ICommonListItem[]}\r\n\t * The set of filtered items matching the current filter set.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic filterItems(): ICommonListItem[]\r\n\t{\r\n\t\tlet combinedFilters: string[] = [];\r\n\t\tif (AnyHelper.isNull(this.enabledFilters) === false)\r\n\t\t{\r\n\t\t\tcombinedFilters =\r\n\t\t\t\tthis.enabledFilters.map(\r\n\t\t\t\t\t(item: ICommonListFilter) =>\r\n\t\t\t\t\t\titem.value);\r\n\t\t}\r\n\r\n\t\tconst filteredData:\r\n\t\t\tICommonListItem[] = [];\r\n\r\n\t\tfor (const commonListItem of this.commonListContext.data.data)\r\n\t\t{\r\n\t\t\tconst combinedFilterValue: string =\r\n\t\t\t\tthis.getCombinedFilterValue(commonListItem)\r\n\t\t\t\t\t.toLowerCase();\r\n\r\n\t\t\tlet matchingItem: boolean = true;\r\n\t\t\tcombinedFilters.forEach(\r\n\t\t\t\t(filterValue: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tmatchingItem = matchingItem\r\n\t\t\t\t\t\t&& (filterValue === this.blockedIdentifier\r\n\t\t\t\t\t\t\t? commonListItem.item.ruleDefinition\r\n\t\t\t\t\t\t\t\t.ruleViolationWorkflowActionDefinitions\r\n\t\t\t\t\t\t\t\t.filter((violationWorkflowAction:\r\n\t\t\t\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\t\t\t\t\tviolationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t.blocked === true\r\n\t\t\t\t\t\t\t\t\t\t&& violationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t.overridden === false).length > 0\r\n\t\t\t\t\t\t\t: combinedFilterValue.indexOf(\r\n\t\t\t\t\t\t\t\tfilterValue.toLowerCase()) !== -1);\r\n\t\t\t\t});\r\n\r\n\t\t\tif (matchingItem === true)\r\n\t\t\t{\r\n\t\t\t\tfilteredData.push(commonListItem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filteredData;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will get and return a combined filter value per item\r\n\t * calculated based on the currently displayed rule list item.\r\n\t *\r\n\t * @param {ICommonListItem}\r\n\t * ruleViolationListItem\r\n\t * The rule violation list item to be mapped for a combined filter value.\r\n\t * @returns {string}\r\n\t * The combined string of available values found in the list item used\r\n\t * to check for matching filters.\r\n\t * @memberof RuleListComponent\r\n\t */\r\n\tpublic getCombinedFilterValue(\r\n\t\truleViolationListItem:\r\n\t\t\tICommonListItem): string\r\n\t{\r\n\t\tconst ruleDescription: string =\r\n\t\t\truleViolationListItem.item.ruleDefinition.description\r\n\t\t\t\t|| AppConstants.empty;\r\n\t\tconst violationDescriptionLine: string =\r\n\t\t\truleViolationListItem.descriptionLineFormat;\r\n\t\tconst combinedActionDefinitionNames: string =\r\n\t\t\truleViolationListItem.item.ruleDefinition\r\n\t\t\t\t.ruleViolationWorkflowActionDefinitions\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(violationWorkflowAction:\r\n\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\t\tviolationWorkflowAction\r\n\t\t\t\t\t\t\t.workflowActionDefinition\r\n\t\t\t\t\t\t\t.name)\r\n\t\t\t\t.join(AppConstants.characters.comma);\r\n\r\n\t\treturn `${ruleDescription},${violationDescriptionLine},`\r\n\t\t\t+ combinedActionDefinitionNames;\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tView: Rule Overrides\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverrideDto\r\n} from '@api/interfaces/entities/entity-instance-rule-violation-override.dto.interface';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonListDirective\r\n} from '@shared/directives/common-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverride\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation-override.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-rule-override-list',\r\n\ttemplateUrl: './rule-override-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rule-override-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level rule overrides list view.\r\n *\r\n * @export\r\n * @class RuleOverrideListComponent\r\n * @extends {RuleOverrideListComponent<\r\n * \tIEntityInstanceRuleViolationOverride,\r\n * \tIEntityInstanceRuleViolationOverrideDto>\r\n * }\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RuleOverrideListComponent\r\n\textends CommonListDirective<\r\n\t\tIEntityInstanceRuleViolationOverride,\r\n\t\tIEntityInstanceRuleViolationOverrideDto>\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rule override list component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service, used to get user names.\r\n\t * @param {EntityInstanceRuleViolationOverrideApiService}\r\n\t * entityInstanceRuleViolationOverrideApiService\r\n\t * The entity instance rule violation API service, used to get children.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used in this component.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used in this component.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityInstanceRuleViolationOverrideApiService:\r\n\t\t\tEntityInstanceRuleViolationOverrideApiService,\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic entityService: EntityService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.apiService = entityInstanceRuleViolationOverrideApiService;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the generated common list context for the rule list.\r\n\t *\r\n\t * @type {ICommonListContext}\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic generatedCommonListContext:\r\n\t\tICommonListContext;\r\n\r\n\t/**\r\n\t * Gets or sets the list of common sorters for the list view.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] =\r\n\t\t[\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Create Date',\r\n\t\t\t\tvalue: AppConstants.commonProperties.id,\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the list of users associated to violation overrides in\r\n\t * this view.\r\n\t *\r\n\t * @type {IEntityInstance[]}\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic overrideUsers: IEntityInstance[] = [];\r\n\r\n\t/**\r\n\t * A method to generate an initial filter for all calls to this list.\r\n\t *\r\n\t * @rule\r\n\t * This filter will be used for all calls, including those in the\r\n\t * list context filter set.\r\n\t *\r\n\t * @returns {string}\r\n\t * A filter value used for all data loads in this list.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic getPrimaryFilter(): string\r\n\t{\r\n\t\treturn 'InstanceId eq ' +\r\n\t\t\t(this.context.source).entityInstance.id;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the proper data promise for loading data.\r\n\t *\r\n\t * @param {string} filter\r\n\t * A value representing the compiled filters from the common list filter\r\n\t * array.\r\n\t * @param {string} orderBy\r\n\t * A value representing the compiled order by from the common list sort.\r\n\t * @returns {Promise}\r\n\t * A data promise with an applied filter, order, and offset.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic async getData(\r\n\t\tfilter: string,\r\n\t\torderBy: string): Promise\r\n\t{\r\n\t\tawait this.ruleService.setStoredVariables();\r\n\r\n\t\tconst data: IEntityInstanceRuleViolationOverride[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceRuleViolationOverrideApiService,\r\n\t\t\t\tfilter,\r\n\t\t\t\torderBy);\r\n\r\n\t\tconst changedByIds: string[] =\r\n\t\t\t[...new Set(\r\n\t\t\t\tdata.map(\r\n\t\t\t\t\t(listItem: IEntityInstanceRuleViolationOverride) =>\r\n\t\t\t\t\t\tlistItem.userId.toString()))];\r\n\r\n\t\tif (changedByIds.length === 0)\r\n\t\t{\r\n\t\t\tthis.overrideUsers = [];\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tconst changedByIdFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\tchangedByIds,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tthis.overrideUsers =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tchangedByIdFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that generates the base rules common list context.\r\n\t *\r\n\t * @rule\r\n\t * This method will generate on firstLoad the default common list context\r\n\t * with properties used for rules.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * A value representing the data to load within the common list context.\r\n\t * @returns {ICommonListContext}\r\n\t * A value representing the common list context for first load.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tthis.generatedCommonListContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsorters: this.sorters,\r\n\t\t\t\tsearchFilterFormat: '${inputValue}',\r\n\t\t\t\tactions: [],\r\n\t\t\t\tfilters: [],\r\n\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t};\r\n\r\n\t\treturn this.generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps entity instance data to a common list item.\r\n\t *\r\n\t * @param {IEntityInstanceRuleViolationOverride} ruleViolationOverride\r\n\t * A value representing the entity instance rule violation override to map\r\n\t * to a common list item.\r\n\t * @returns {ICommonListItem}\r\n\t * A value representing the mapped common list item from the instance.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\truleViolationOverride:\r\n\t\t\tIEntityInstanceRuleViolationOverride):\r\n\t\tICommonListItem\r\n\t{\r\n\t\tconst ruleDefinition: IRuleDefinition =\r\n\t\t\tthis.ruleService.ruleDefinitions.find(\r\n\t\t\t\t(ruleDefinitionItem: IRuleDefinition) =>\r\n\t\t\t\t\truleDefinitionItem.id ===\r\n\t\t\t\t\t\truleViolationOverride.ruleDefinitionId);\r\n\t\tconst workflowActionDefinition: IWorkflowActionDefinitions =\r\n\t\t\tthis.ruleService.workflowActionDefinitions.find(\r\n\t\t\t\t(workflowActionDefinitionItem: IWorkflowActionDefinitions) =>\r\n\t\t\t\t\tworkflowActionDefinitionItem.id ===\r\n\t\t\t\t\t\truleViolationOverride.workflowActionDefinitionId);\r\n\t\tconst overrideUser: IEntityInstance =\r\n\t\t\tthis.overrideUsers.find(\r\n\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\tuser.id === ruleViolationOverride.userId);\r\n\t\tconst overrideUserDisplayName: string =\r\n\t\t\tStringHelper.toNameString(\r\n\t\t\t\toverrideUser.data.firstName,\r\n\t\t\t\toverrideUser.data.lastName);\r\n\r\n\t\tconst deletedRuleSummary: string =\r\n\t\t\t'[Deleted Rule Definition]';\r\n\t\truleViolationOverride.ruleDefinitionName =\r\n\t\t\truleDefinition?.displayName\r\n\t\t\t\t?? ruleDefinition?.name\r\n\t\t\t\t?? deletedRuleSummary;\r\n\t\truleViolationOverride.ruleDescription =\r\n\t\t\truleDefinition?.description\r\n\t\t\t\t?? deletedRuleSummary;\r\n\t\truleViolationOverride.workflowActionDefinitionName =\r\n\t\t\tworkflowActionDefinition?.name\r\n\t\t\t\t?? '[Deleted Workflow Action]';\r\n\t\truleViolationOverride.overrideUserDisplayName =\r\n\t\t\tAnyHelper.isNullOrWhitespace(overrideUserDisplayName)\r\n\t\t\t\t? '[Deleted User]'\r\n\t\t\t\t: overrideUserDisplayName;\r\n\t\truleViolationOverride.overrideDateIsoString =\r\n\t\t\truleViolationOverride.startDate;\r\n\r\n\t\tconst listItem: ICommonListItem =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\titem: ruleViolationOverride,\r\n\t\t\t\tdescriptionLineFormat:\r\n\t\t\t\t\t`**Rule Name**: ${ruleViolationOverride.ruleDefinitionName}`\r\n\t\t\t\t\t\t+ '
    '\r\n\t\t\t\t\t\t+ '
    Action Name: '\r\n\t\t\t\t\t\t\t+ `${ruleViolationOverride\r\n\t\t\t\t\t\t\t\t.workflowActionDefinitionName}
    `,\r\n\t\t\t\tinformationLineRelativeDateTime:\r\n\t\t\t\t\truleViolationOverride.overrideDateIsoString,\r\n\t\t\t\tinformationLineFormat:\r\n\t\t\t\t\t` by ${ruleViolationOverride.overrideUserDisplayName}`,\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions: [\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon:\r\n\t\t\t\t\t\t\t`fa fa-${AppConstants.cssIcons.infoCircle}`,\r\n\t\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\t\tthis.changeSelectedItem.emit(\r\n\t\t\t\t\t\t\t\truleViolationOverride);\r\n\t\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\t\tAppConstants.displayMode.secondaryView);\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\r\n\t\treturn listItem;\r\n\t}\r\n\r\n\t/**\r\n\t * A method to generate the data promise for loading rules data.\r\n\t *\r\n\t * @async\r\n\t * @param {ICommonListFilter[]} [filters]\r\n\t * A value representing the enabled filters to apply to the data promise\r\n\t * query.\r\n\t * @param {ICommonListSort} [sorter]\r\n\t * A value representing the enabled sorter to apply to the data promise\r\n\t * query.\r\n\t * @returns {Promise}\r\n\t * A data promise with a filter, order, and offset.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic async loadItems(\r\n\t\tfilters?: ICommonListFilter[],\r\n\t\tsorter?: ICommonListSort):\r\n\t\tPromise\r\n\t{\r\n\t\tthis.enabledFilters = filters;\r\n\r\n\t\tlet orderBy: string;\r\n\t\tif (AnyHelper.isNull(sorter) === false)\r\n\t\t{\r\n\t\t\torderBy = `${sorter.value} ${sorter.direction}`;\r\n\t\t}\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\treturn this.getData(\r\n\t\t\t\tthis.getPrimaryFilter(),\r\n\t\t\t\torderBy);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * This action is called to filter items after the rules are initially\r\n\t * loaded and generate dynamic filters based on the data available.\r\n\t *\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic performPostLoadActions(): void\r\n\t{\r\n\t\t// Generate filters dynamically based on rule and action names.\r\n\t\tconst uniqueFiltersMap: Map =\r\n\t\t\tnew Map();\r\n\r\n\t\tthis.generatedCommonListContext.data\r\n\t\t\t.forEach(\r\n\t\t\t\t(listItem: ICommonListItem<\r\n\t\t\t\t\tIEntityInstanceRuleViolationOverride>) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst ruleName: string =\r\n\t\t\t\t\t\tlistItem.item.ruleDefinitionName;\r\n\t\t\t\t\tuniqueFiltersMap.set(\r\n\t\t\t\t\t\truleName,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: ruleName,\r\n\t\t\t\t\t\t\tvalue: ruleName\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tthis.generatedCommonListContext.data\r\n\t\t\t.forEach(\r\n\t\t\t\t(listItem: ICommonListItem<\r\n\t\t\t\t\tIEntityInstanceRuleViolationOverride>) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst workflowActionDefinitionName: string =\r\n\t\t\t\t\t\tlistItem.item.workflowActionDefinitionName;\r\n\t\t\t\t\tuniqueFiltersMap.set(\r\n\t\t\t\t\t\tworkflowActionDefinitionName,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: workflowActionDefinitionName,\r\n\t\t\t\t\t\t\tvalue: workflowActionDefinitionName\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tthis.generatedCommonListContext.filters =\r\n\t\t\tArray.from(\r\n\t\t\t\tuniqueFiltersMap.values());\r\n\r\n\t\t// Filter the data after each load.\r\n\t\tthis.commonListContext.data.data =\r\n\t\t\tthis.filterItems();\r\n\t}\r\n\r\n\t/**\r\n\t * This filter items method is used to return all rules with\r\n\t * entries matching the current filter set.\r\n\t *\r\n\t * @returns {ICommonListItem[]}\r\n\t * The set of filtered items matching the current filter set.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic filterItems():\r\n\t\tICommonListItem[]\r\n\t{\r\n\t\tlet combinedFilters: string[] = [];\r\n\t\tif (AnyHelper.isNull(this.enabledFilters) === false)\r\n\t\t{\r\n\t\t\tcombinedFilters =\r\n\t\t\t\tthis.enabledFilters.map(\r\n\t\t\t\t\t(item: ICommonListFilter) =>\r\n\t\t\t\t\t\titem.value);\r\n\t\t}\r\n\r\n\t\tconst filteredData:\r\n\t\t\tICommonListItem[] = [];\r\n\r\n\t\tfor (const commonListItem of this.commonListContext.data.data)\r\n\t\t{\r\n\t\t\tconst combinedFilterValue: string =\r\n\t\t\t\tthis.getCombinedFilterValue(commonListItem)\r\n\t\t\t\t\t.toLowerCase();\r\n\r\n\t\t\tlet matchingItem: boolean = true;\r\n\t\t\tcombinedFilters.forEach(\r\n\t\t\t\t(filterValue: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tmatchingItem =\r\n\t\t\t\t\t\tmatchingItem === true\r\n\t\t\t\t\t\t\t&& combinedFilterValue.indexOf(\r\n\t\t\t\t\t\t\t\tfilterValue.toLowerCase()) !== -1;\r\n\t\t\t\t});\r\n\r\n\t\t\tif (matchingItem === true)\r\n\t\t\t{\r\n\t\t\t\tfilteredData.push(commonListItem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filteredData;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will get and return a combined filter value per item\r\n\t * calculated based on the currently displayed rule override list item.\r\n\t *\r\n\t * @param {ICommonListItem}\r\n\t * ruleViolationListItem\r\n\t * The rule violation override list item to be mapped for a combined\r\n\t * filter value.\r\n\t * @returns {string}\r\n\t * The combined string of available values found in the list item used\r\n\t * to check for matching filters.\r\n\t * @memberof RuleOverrideListComponent\r\n\t */\r\n\tpublic getCombinedFilterValue(\r\n\t\truleViolationListItem:\r\n\t\t\tICommonListItem): string\r\n\t{\r\n\t\tconst combinedFilterValue: string =\r\n\t\t\t[\r\n\t\t\t\truleViolationListItem.item.ruleDefinitionName,\r\n\t\t\t\truleViolationListItem.item.ruleDescription,\r\n\t\t\t\truleViolationListItem.item.workflowActionDefinitionName,\r\n\t\t\t\truleViolationListItem.item.overrideUserDisplayName,\r\n\t\t\t\truleViolationListItem.item.reason\r\n\t\t\t].join(AppConstants.empty);\r\n\r\n\t\treturn combinedFilterValue;\r\n\t}\r\n}","\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tView: Rule Overrides\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    0\"\r\n\t\t\tclass=\"ui-g-12 table-container no-horizontal-padding\">\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tRelated Actions\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tName\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tBlocked\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tOverride\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{{ruleViolationWorkflowAction.workflowActionDefinition?.name}}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tRuleWorkflowDisplayDirective\r\n} from '@shared/directives/rule-workflow-display.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverride\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation-override.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-rule-override',\r\n\ttemplateUrl: './rule-override.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rule-override.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a context level rule override display component.\r\n *\r\n * @export\r\n * @class RuleOverrideComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RuleOverrideComponent\r\n\textends RuleWorkflowDisplayDirective\r\n\timplements OnInit, AfterViewInit, OnDestroy,\r\n\t\tIDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rule override component.\r\n\t *\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used in this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used in this component.\r\n\t * @param {EntityInstanceRuleViolationOverrideApiService}\r\n\t * entityInstanceRuleViolationOverrideApiService\r\n\t * The entity instance rule violation override service used in this\r\n\t * component.\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityInstanceRuleViolationOverrideApiService:\r\n\t\t\tEntityInstanceRuleViolationOverrideApiService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item to be displayed in this override\r\n\t * component.\r\n\t *\r\n\t * @type {IEntityInstanceRuleViolation}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\t@Input() public selectedItem: IEntityInstanceRuleViolation;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitted used to notify listening components of\r\n\t * a request to change the display mode.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the warning tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\t@ViewChild('UndoTooltip')\r\n\tpublic undoTooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the data object used for the model in the displayed override\r\n\t * form.\r\n\t *\r\n\t * @type {\r\n\t *\treason: string\r\n\t * }\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic overrideFormlyData: {\r\n\t\t\treason: string;\r\n\t\t} = {\r\n\t\t\treason: AppConstants.empty\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout defining the displayed override form.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic overrideFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'reason',\r\n\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Reason',\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\trows: 5,\r\n\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the rule violation workflow actions to display.\r\n\t *\r\n\t * @type {IRuleViolationWorkflowActionDefinition[]}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic ruleViolationWorkflowActions:\r\n\t\tIRuleViolationWorkflowActionDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the initial rule violation workflow actions used to check\r\n\t * if values have changed via user selections.\r\n\t *\r\n\t * @type {IRuleViolationWorkflowActionDefinition[]}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic archivedRuleViolationWorkflowActions:\r\n\t\tIRuleViolationWorkflowActionDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the changed value of workflow action definition overrides.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic isChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the valid form value of the formly layout holding only\r\n\t * a reason.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic validReason: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the saving value of workflow action definition overrides.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the override all display mode currently displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic overrideAllDisplayMode: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the message to display for the undo changes icon.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic readonly undoTooltipMessage: string =\r\n\t\t'Reset these selections to their original values.';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load the data needed to display an overridable rule item and\r\n\t * set the value for our archived override workflow action state.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.ruleViolationWorkflowActions =\r\n\t\t\tthis.selectedItem\r\n\t\t\t\t.ruleDefinition\r\n\t\t\t\t.ruleViolationWorkflowActionDefinitions;\r\n\r\n\t\tthis.overrideAllowed = this.getOverrideAllowed();\r\n\t\tthis.syncArchivedValues();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This will ensure operations such as back and closing the overlay will\r\n\t * resync the local model to database values.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.resetValues();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the after view initialization event.\r\n\t * This will set the tooltip array value defined in the implemented tooltip\r\n\t * directive.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tthis.tooltips =\r\n\t\t\t[\r\n\t\t\t\tthis.blockingTooltip,\r\n\t\t\t\tthis.undoTooltip,\r\n\t\t\t\tthis.warningTooltip\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a change event from the set of checkboxes associated\r\n\t * with the displayed rule workflow action table.\r\n\t * This action will set the override all display mode as false, and\r\n\t * calculate the changed value of the override selections.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic overrideSelectionChanged(): void\r\n\t{\r\n\t\tthis.overrideAllDisplayMode = false;\r\n\r\n\t\tthis.isChanged = this.changed();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the override all event sent from the column level checkbox.\r\n\t * This action will override all overridable rules.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic overrideAll(): void\r\n\t{\r\n\t\tthis.ruleViolationWorkflowActions\r\n\t\t\t.forEach(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\truleViolationWorkflowAction.overridden =\r\n\t\t\t\t\t\truleViolationWorkflowAction.overridable;\r\n\t\t\t\t});\r\n\r\n\t\tthis.overrideAllDisplayMode = true;\r\n\t\tthis.isChanged = this.changed();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the reset values event from the undo icon in the select all\r\n\t * location.\r\n\t * This action will reset all of the values of overridden to the values\r\n\t * initially displayed prior to user input.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that sent this reset values action.\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic resetValues(\r\n\t\tevent: any = null): void\r\n\t{\r\n\t\tthis.ruleViolationWorkflowActions\r\n\t\t\t.forEach(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition,\r\n\t\t\t\tindex: number) =>\r\n\t\t\t\t{\r\n\t\t\t\t\truleViolationWorkflowAction.overridden =\r\n\t\t\t\t\t\tthis.archivedRuleViolationWorkflowActions[index]\r\n\t\t\t\t\t\t\t.overridden;\r\n\t\t\t\t});\r\n\r\n\t\tthis.overrideAllDisplayMode = false;\r\n\t\tthis.isChanged = this.changed();\r\n\r\n\t\tif (AnyHelper.isNull(event))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.preventDefault(event);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the sync violations event sent from the override pages primary\r\n\t * action button.\r\n\t * Given the current set of selections displayed in the rule workflow\r\n\t * action table for overrides, this will synchronize the database with\r\n\t * the matching override selection including possible override removal.\r\n\t *\r\n\t * @async\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic async syncViolations(): Promise\r\n\t{\r\n\t\tconst entityInstanceId: number =\r\n\t\t\t(this.context.source).entityInstance.id;\r\n\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < this.ruleViolationWorkflowActions.length;\r\n\t\t\tindex++)\r\n\t\t{\r\n\t\t\tconst ruleViolationWorkflowAction:\r\n\t\t\t\tIRuleViolationWorkflowActionDefinition =\r\n\t\t\t\t\tthis.ruleViolationWorkflowActions[index];\r\n\t\t\tconst previousOverriddenValue: boolean =\r\n\t\t\t\tthis.archivedRuleViolationWorkflowActions[index].overridden;\r\n\r\n\t\t\tif (ruleViolationWorkflowAction.overridden\r\n\t\t\t\t!== previousOverriddenValue)\r\n\t\t\t{\r\n\t\t\t\tif (ruleViolationWorkflowAction.blocked === true\r\n\t\t\t\t\t&& ruleViolationWorkflowAction.overridden === true\r\n\t\t\t\t\t&& previousOverriddenValue === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst createPromise =\r\n\t\t\t\t\t\tthis.entityInstanceRuleViolationOverrideApiService\r\n\t\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tinstanceId:\r\n\t\t\t\t\t\t\t\t\t\tentityInstanceId,\r\n\t\t\t\t\t\t\t\t\truleDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\truleViolationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t.definitionId,\r\n\t\t\t\t\t\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\truleViolationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId,\r\n\t\t\t\t\t\t\t\t\treason:\r\n\t\t\t\t\t\t\t\t\t\tthis.overrideFormlyData.reason,\r\n\t\t\t\t\t\t\t\t\tresourceIdentifier:\r\n\t\t\t\t\t\t\t\t\t\tthis.selectedItem.resourceIdentifier\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// This is awaited here because the array started\r\n\t\t\t\t\t// causing SQL transaction problems and SQL connection\r\n\t\t\t\t\t// hijacking on the server.\r\n\t\t\t\t\tawait createPromise;\r\n\r\n\t\t\t\t\tpromiseArray.push(createPromise);\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Does not get here due to continue.\r\n\t\t\t\tconst matchingViolationOverride:\r\n\t\t\t\t\tIEntityInstanceRuleViolationOverride =\r\n\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t.entityInstanceRuleViolationOverrideApiService\r\n\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t'RuleDefinitionId eq '\r\n\t\t\t\t\t\t\t\t\t+ `${this.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t.ruleDefinitionId} `\r\n\t\t\t\t\t\t\t\t\t+ 'and InstanceId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ `${this.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t\t.instanceId} `\r\n\t\t\t\t\t\t\t\t\t+ 'and WorkflowActionDefinitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ `${ruleViolationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId} `\r\n\t\t\t\t\t\t\t\t\t+ 'and ResourceIdentifier eq '\r\n\t\t\t\t\t\t\t\t\t\t+ `'${this.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t\t.resourceIdentifier}' `,\r\n\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\tif (!AnyHelper.isNull(matchingViolationOverride))\r\n\t\t\t\t{\r\n\t\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\t\tthis.entityInstanceRuleViolationOverrideApiService\r\n\t\t\t\t\t\t\t.delete(matchingViolationOverride.id));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tPromise.all(promiseArray),\r\n\t\t\t\t'Updating Rule Overrides',\r\n\t\t\t\t'Updated Rule Overrides',\r\n\t\t\t\t'Updated rule overrides for '\r\n\t\t\t\t\t+ this.selectedItem.ruleDefinition.displayName\r\n\t\t\t\t\t+ AppConstants.characters.period,\r\n\t\t\t\t'Unable to update rule overrides for '\r\n\t\t\t\t\t+ this.selectedItem.ruleDefinition.displayName\r\n\t\t\t\t\t+ AppConstants.characters.period));\r\n\r\n\t\tif (this.context.source instanceof EntityInstanceComponent)\r\n\t\t{\r\n\t\t\tconst component: EntityInstanceComponent =\r\n\t\t\t\t(this.context.source);\r\n\t\t\tawait component.RefreshBusinessRules();\r\n\t\t}\r\n\r\n\t\tthis.changeDisplayMode.emit(\r\n\t\t\tAppConstants.displayMode.list);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the cancel action by restting to the last saved value set\r\n\t * and displaying the rules list.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic cancel(): void\r\n\t{\r\n\t\tthis.resetValues();\r\n\t\tthis.changeDisplayMode.emit(AppConstants.displayMode.list);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the reasons layout validity changes to ensure the required reason\r\n\t * field value holds data.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tpublic validityChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.validReason = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronizes the current archived values array of rule violation workflow\r\n\t * actions to the current set of rule violation workflow actions.\r\n\t *\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tprivate syncArchivedValues(): void\r\n\t{\r\n\t\tthis.archivedRuleViolationWorkflowActions = [];\r\n\r\n\t\tthis.ruleViolationWorkflowActions\r\n\t\t\t.forEach(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.archivedRuleViolationWorkflowActions.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t...ruleViolationWorkflowAction\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a truthy signifying if the selections of overrides\r\n\t * have altered from the original override set.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * The changed value of all override selections displayed in the violation\r\n\t * workflow action definition table.\r\n\t * @memberof RuleOverrideComponent\r\n\t */\r\n\tprivate changed(): boolean\r\n\t{\r\n\t\treturn !this.ruleViolationWorkflowActions\r\n\t\t\t.every(\r\n\t\t\t\t(ruleViolationWorkflow:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition,\r\n\t\t\t\tindex: number) =>\r\n\t\t\t\t\truleViolationWorkflow.overridden ===\r\n\t\t\t\t\t\tthis.archivedRuleViolationWorkflowActions[index]\r\n\t\t\t\t\t\t\t.overridden);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tRuleWorkflowDisplayDirective\r\n} from '@shared/directives/rule-workflow-display.directive';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverride\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation-override.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-rule-override-details',\r\n\ttemplateUrl: './rule-override-details.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rule-override-details.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a context level rule override display component.\r\n *\r\n * @export\r\n * @class RuleOverrideDetailsComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class RuleOverrideDetailsComponent\r\n\textends RuleWorkflowDisplayDirective\r\n\timplements OnInit, AfterViewInit, OnDestroy,\r\n\t\tIDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rule override component.\r\n\t *\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used in this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used in this component.\r\n\t * @param {EntityInstanceRuleViolationOverrideApiService}\r\n\t * entityInstanceRuleViolationOverrideApiService\r\n\t * The entity instance rule violation override service used in this\r\n\t * component.\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic ruleService: RuleService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityInstanceRuleViolationOverrideApiService:\r\n\t\t\tEntityInstanceRuleViolationOverrideApiService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item to be displayed in this override\r\n\t * details component.\r\n\t *\r\n\t * @type {IEntityInstanceRuleViolationOverride}\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\t@Input() public selectedItem: IEntityInstanceRuleViolationOverride;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitted used to notify listening components of\r\n\t * a request to change the display mode.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout defining the displayed override form.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tpublic overrideFormlyLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load the data needed to display an overridable rule item and\r\n\t * set the value for our archived override workflow action state.\r\n\t *\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.overrideFormlyLayout =\r\n\t\t\tthis.getRuleOverrideFormlyLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the cancel action by restting to the last saved value set\r\n\t * and displaying the rules list.\r\n\t *\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tpublic cancel(): void\r\n\t{\r\n\t\tthis.changeDisplayMode.emit(AppConstants.displayMode.secondaryList);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the layout for the override details formly layout.\r\n\t * This will initialize each of the custom text areas content values.\r\n\t *\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The formly layout for the override details.\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tprivate getRuleOverrideFormlyLayout(): FormlyFieldConfig[]\r\n\t{\r\n\t\tconst overrideFormlyLayout: FormlyFieldConfig[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'ruleDefinitionName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.getContentValue(\r\n\t\t\t\t\t\t\t\t\tfield.model.ruleDefinitionName,\r\n\t\t\t\t\t\t\t\t\t'Rule Name',\r\n\t\t\t\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'workflowActionDefinitionName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.getContentValue(\r\n\t\t\t\t\t\t\t\t\tfield.model.workflowActionDefinitionName,\r\n\t\t\t\t\t\t\t\t\t'Action Name')\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'overrideDateIsoString',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.getContentValue(\r\n\t\t\t\t\t\t\t\t\tStringHelper.format(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.overrideDateIsoString,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.formatTypes.longDate),\r\n\t\t\t\t\t\t\t\t\t'Overridden Date')\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'overrideUserDisplayName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\r\n\t\t\t\t\t\t\t\tthis.getContentValue(\r\n\t\t\t\t\t\t\t\t\tfield.model.overrideUserDisplayName,\r\n\t\t\t\t\t\t\t\t\t'Overridden By')\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'reason',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Reason',\r\n\t\t\t\t\t\trows: 5,\r\n\t\t\t\t\t\tgridColumns: 12,\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\treturn overrideFormlyLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the content display for a custom text area based on the sent\r\n\t * parameters.\r\n\t *\r\n\t * @param {string} value\r\n\t * The value to display.\r\n\t * @param {string} title\r\n\t * The title to display.\r\n\t * @param {boolean} [boldEntireSection]\r\n\t * A value indicating whether the entire section should be bold or only the\r\n\t * label.\r\n\t * @param {boolean} [subtitleValueDisplay]\r\n\t * A value indicating whether the subtitle value display should be shown.\r\n\t * This class will be used to style the value as secondary bold text.\r\n\t * @param {boolean} [noVerticalPadding]\r\n\t * A value indicating whether the vertical padding should be removed.\r\n\t * @returns {string}\r\n\t * The content value for the custom text area.\r\n\t * @memberof RuleOverrideDetailsComponent\r\n\t */\r\n\tprivate getContentValue(\r\n\t\tvalue: string,\r\n\t\ttitle: string,\r\n\t\tboldEntireSection: boolean = false,\r\n\t\tsubtitleValueDisplay: boolean = false,\r\n\t\tnoVerticalPadding: boolean = false): string\r\n\t{\r\n\t\treturn '
    '\r\n\t\t\t+ `${title}: `\r\n\t\t\t+ (boldEntireSection === true\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: '')\r\n\t\t\t+ ''\r\n\t\t\t\t: '>')\r\n\t\t\t+ value\r\n\t\t\t+ ''\r\n\t\t\t+ (boldEntireSection === true\r\n\t\t\t\t? ''\r\n\t\t\t\t: AppConstants.empty)\r\n\t\t\t+ '
    ';\r\n\t}\r\n}","\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tView: Rule Override Details\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\r\n\t
    \r\n
    ","
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBack\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-rules',\r\n\ttemplateUrl: './rules.component.html',\r\n\tstyleUrls: [\r\n\t\t'./rules.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level rules.\r\n *\r\n * @export\r\n * @class RulesComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class RulesComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the rules component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a value representing the active list mode.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic listDisplayMode: string = this.displayModes.list;\r\n\r\n\t/**\r\n\t * Gets or sets a set of nested item level actions that are used in\r\n\t * this drawer list.\r\n\t *\r\n\t * @type {ISecureMenuItem[]}\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic nestedItemActions: ISecureMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!(this.context.source instanceof EntityInstanceComponent))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\t'Entity.Type',\r\n\t\t\t\t\t'Entity.Version'\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to this entity type and version of '\r\n\t\t\t\t\t+ `'${entityInstanceComponent.entityTypeGroup}'.`;\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\t\t}\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tthis.itemActions =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-' + AppConstants.cssIcons.flag,\r\n\t\t\t\t\tid: AppConstants.displayMode.list,\r\n\t\t\t\t\tlabel: 'Rules',\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.displayMode =\r\n\t\t\t\t\t\t\t\tthis.displayModes.list;\r\n\t\t\t\t\t\t\tthis.listDisplayMode = this.displayMode;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-' + AppConstants.cssIcons.history,\r\n\t\t\t\t\tid: this.displayModes.secondaryList,\r\n\t\t\t\t\tlabel: 'Rule Overrides',\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.displayMode =\r\n\t\t\t\t\t\t\t\tAppConstants.displayMode.secondaryList;\r\n\t\t\t\t\t\t\tthis.listDisplayMode = this.displayMode;\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.nestedItemActions =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa-' + AppConstants.cssIcons.infoCircle,\r\n\t\t\t\t\tid: AppConstants.displayMode.view,\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\tsecurityRightType: SecurityRightType.read\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tthis.displayMode = this.displayModes.list;\r\n\t\tthis.listDisplayMode = this.displayMode;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the action label for nested icon displays.\r\n\t *\r\n\t * @returns {string}\r\n\t * The action label.\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic getActionLabel(): string\r\n\t{\r\n\t\treturn this.listDisplayMode === this.displayModes.list\r\n\t\t\t? 'Overrides'\r\n\t\t\t: 'Override Details';\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the back action.\r\n\t * This will set the display mode to the last used list display mode.\r\n\t *\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic handleBackAction(): void\r\n\t{\r\n\t\tthis.displayMode = this.listDisplayMode;\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate drawer ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this drawer.\r\n\t * @memberof RulesComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(type: IEntityType) =>\r\n\t\t\t\t\t\ttype.group ===\r\n\t\t\t\t\t\t\tentityInstanceComponent.entityTypeGroup);\r\n\r\n\t\tif (AnyHelper.isNull(entityType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.verifyEntityTypeAccess(\r\n\t\t\tentityType);\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer,\r\n\tSafeResourceUrl\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tBooleanFadeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tStonlyService\r\n} from '@shared/services/stonly.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-stonly-help',\r\n\ttemplateUrl: './stonly-help.component.html',\r\n\tstyleUrl: './stonly-help.component.scss',\r\n\tanimations: [\r\n\t\tBooleanFadeAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a stonly help component.\r\n *\r\n * @export\r\n * @class StonlyHelpComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class StonlyHelpComponent\r\nimplements OnInit, AfterViewInit, OnDestroy, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of StonlyHelpComponent.\r\n\t *\r\n\t * @param {StonlyService} stonlyService\r\n\t * The Stonly service.\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The dom sanitizer used to set safe html values for the knowledge base\r\n\t * source.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic stonlyService: StonlyService,\r\n\t\tpublic sanitizer: DomSanitizer,\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the component container.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\t@ViewChild('StonlyHelp')\r\n\tpublic stonlyHelpContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the knowledge base iFrame.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\t@ViewChild('StonlyIFrame')\r\n\tpublic stonlyIFrame: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the knowledge base url for the stonly widget.\r\n\t *\r\n\t * @type {SafeResourceUrl}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic knowledgeBaseUrl: SafeResourceUrl;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of the iframe component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the mutation observer for the stonly widget.\r\n\t *\r\n\t * @type {MutationObserver}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic observer: MutationObserver;\r\n\r\n\t/**\r\n\t * Gets or sets the initial load complete value for the stonly widget.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate initialLoadComplete: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the cutom tooltip class for the stonly widget tooltip.\r\n\t * See: https://stonly.com/kb/en/.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate readonly customTooltipClass: string =\r\n\t\t'custom-help-tooltip';\r\n\r\n\t/**\r\n\t * Handles the site layout change event.\r\n\t * This will ensure the stonly widget remains accurately positioned.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tconst stonlyWidget: HTMLElement =\r\n\t\t\tthis.getStonlyWidget();\r\n\r\n\t\tif (AnyHelper.isNull(stonlyWidget))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.positionStonlyWidget(\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`.${AppConstants.cssClasses.stonlyWidget}`));\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the OnInit lifecycle method.\r\n\t * Handles the stonly library.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.knowledgeBaseUrl =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t.knowledgeBase\r\n\t\t\t\t\t.knowledgeBaseUrl);\r\n\r\n\t\tthis.installStonly();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the AfterViewInit lifecycle method.\r\n\t * Handles the display of the stonly widget.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\t// Capture the iframe load event.\r\n\t\tthis.stonlyIFrame.nativeElement.onload =\r\n\t\t\tthis.IFrameLoaded.bind(this);\r\n\r\n\t\tlet stonlyWidget: HTMLElement =\r\n\t\t\tthis.getStonlyWidget();\r\n\r\n\t\t// Handle existing stonly widget instances.\r\n\t\tif (!AnyHelper.isNull(stonlyWidget))\r\n\t\t{\r\n\t\t\tthis.initialLoadComplete = true;\r\n\r\n\t\t\tthis.initializeStonlyWidget(\r\n\t\t\t\tstonlyWidget);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle a new stonly widget instance.\r\n\t\tthis.observer =\r\n\t\t\tnew MutationObserver(\r\n\t\t\t\t(mutationsList: MutationRecord[]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const mutation of mutationsList)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (mutation.type ===\r\n\t\t\t\t\t\t\tAppConstants.mutationRecordTypes.childList)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstonlyWidget =\r\n\t\t\t\t\t\t\t\tthis.getStonlyWidget();\r\n\t\t\t\t\t\t\tif (!AnyHelper.isNull(stonlyWidget))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.initialLoadComplete = false;\r\n\r\n\t\t\t\t\t\t\t\tthis.initializeStonlyWidget(\r\n\t\t\t\t\t\t\t\t\tstonlyWidget);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tthis.observer.observe(\r\n\t\t\tdocument,\r\n\t\t\t{\r\n\t\t\t\tchildList: true,\r\n\t\t\t\tsubtree: true\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the onDestroy lifecycle method.\r\n\t * Clears existing subscriptions and hides the stonly widget.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.cleanupStonlyWidget();\r\n\r\n\t\tif (!AnyHelper.isNull(this.observer))\r\n\t\t{\r\n\t\t\tthis.observer.disconnect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the iframe loaded event.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tpublic IFrameLoaded(): void\r\n\t{\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Installs the stonly widget javascript if not already existing.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate installStonly(): void\r\n\t{\r\n\t\tconst enabled: boolean =\r\n\t\t\t!AnyHelper.isNull(\r\n\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t?.walkthrough\r\n\t\t\t\t\t?.enabled)\r\n\t\t\t\t&& this.sessionService.systemSettings\r\n\t\t\t\t\t.walkthrough\r\n\t\t\t\t\t.enabled === true;\r\n\r\n\t\tif (enabled === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.stonlyService.installStonly(\r\n\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t.walkthrough\r\n\t\t\t\t.widgetId);\r\n\t}\r\n\r\n\t/**\r\n\t * Cleans up the stonly widget.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate cleanupStonlyWidget(): void\r\n\t{\r\n\t\tthis.displayStonlyWidget(\r\n\t\t\tthis.getStonlyWidget(),\r\n\t\t\tfalse);\r\n\r\n\t\t// Notify listeners that the guided tour is now closed.\r\n\t\tEventHelper\r\n\t\t\t.dispatchWalkthroughEndEvent();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the stonly widget.\r\n\t *\r\n\t * @returns {any}\r\n\t * The stonly widget.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate getStonlyWidget(): any\r\n\t{\r\n\t\treturn document.querySelector(\r\n\t\t\t`.${AppConstants.cssClasses.stonlyWidget}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the stonly widget.\r\n\t *\r\n\t * @param {HTMLElement} stonlyWidget The stonly widget to initialize.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate initializeStonlyWidget(\r\n\t\tstonlyWidget: HTMLElement): void\r\n\t{\r\n\t\tthis.positionStonlyWidget(\r\n\t\t\tstonlyWidget);\r\n\r\n\t\tthis.displayStonlyWidget(\r\n\t\t\tstonlyWidget);\r\n\r\n\t\tthis.initialLoadComplete = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Displays or hides the stonly widget.\r\n\t *\r\n\t * @param {HTMLElement} stonlyWidget\r\n\t * The stonly widget to display or hide.\r\n\t * @param {boolean} display\r\n\t * A value indicating whether to display the stonly widget. This value\r\n\t * defaults to true.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate displayStonlyWidget(\r\n\t\tstonlyWidget: HTMLElement,\r\n\t \tdisplay: boolean = true): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(stonlyWidget))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstonlyWidget.style.display =\r\n\t\t\tdisplay === true\r\n\t\t\t\t? AppConstants.displayTypes.block\r\n\t\t\t\t: AppConstants.displayTypes.none;\r\n\r\n\t\tif (display === true)\r\n\t\t{\r\n\t\t\tthis.stonlyService.initializeWidget(\r\n\t\t\t\tthis.hideTooltip.bind(this));\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.hideTooltip();\r\n\t\t\tthis.stonlyService.closeWidget();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Positions the stonly widget in the help drawer.\r\n\t *\r\n\t * @param {HTMLElement} stonlyWidget\r\n\t * The stonly widget to position.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate positionStonlyWidget(\r\n\t\tstonlyWidget: HTMLElement): void\r\n\t{\r\n\t\tconst boundingContainer: DOMRect =\r\n\t\t\tthis.stonlyHelpContainer\r\n\t\t\t\t?.nativeElement\r\n\t\t\t\t?.getBoundingClientRect();\r\n\t\tif (AnyHelper.isNull(boundingContainer))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst widgetContainer: any =\r\n\t\t\tstonlyWidget?.childNodes[0]?.childNodes[0];\r\n\t\tif (AnyHelper.isNull(widgetContainer))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst paddingOffset: number =\r\n\t\t\tAppConstants.staticLayoutSizes.helpIconWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.helpIconPadding;\r\n\t\tconst drawerOverlayUsed: boolean =\r\n\t\t\tthis.initialLoadComplete === true\r\n\t\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\t\tthis.stonlyHelpContainer?.nativeElement\r\n\t\t\t\t\t\t.closest(\r\n\t\t\t\t\t\t\t`.${AppConstants.cssClasses.overlayDrawer}`));\r\n\t\tconst offset: number =\r\n\t\t\twindow.innerWidth\r\n\t\t\t\t- boundingContainer.left\r\n\t\t\t\t- paddingOffset\r\n\t\t\t\t+ (drawerOverlayUsed\r\n\t\t\t\t\t? AppConstants.staticLayoutSizes.drawerWidth\r\n\t\t\t\t\t: 0);\r\n\t\twidgetContainer.style.right =\r\n\t\t\t`${offset}px`;\r\n\r\n\t\tthis.createStonlyWidgetTooltip(\r\n\t\t\tstonlyWidget,\r\n\t\t\toffset);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a stonly widget tooltip.\r\n\t *\r\n\t * @param {HTMLElement} stonlyWidget\r\n\t * The stonly widget to create a tooltip for.\r\n\t * @param {number} widgetOffset\r\n\t * The widget offset to create a tooltip for.\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate createStonlyWidgetTooltip(\r\n\t\tstonlyWidget: HTMLElement,\r\n\t\twidgetOffset: number): void\r\n\t{\r\n\t\tconst existingTooltip: HTMLElement =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`.${this.customTooltipClass}`);\r\n\t\tconst rightOffset: number =\r\n\t\t\twidgetOffset\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.helpIconWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.standardPadding;\r\n\r\n\t\tif (!AnyHelper.isNull(existingTooltip))\r\n\t\t{\r\n\t\t\texistingTooltip.style.right =\r\n\t\t\t\t`${rightOffset}px`;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tooltip: HTMLElement =\r\n\t\t\tdocument.createElement(\r\n\t\t\t\tAppConstants.documentElementTypes.div);\r\n\t\ttooltip.innerText = 'View Page Guide';\r\n\t\ttooltip.style.display = AppConstants.displayTypes.none;\r\n\t\ttooltip.style.position = 'fixed';\r\n\t\ttooltip.style.bottom =\r\n\t\t\t`${AppConstants.staticLayoutSizes.helpIconPadding\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.tinyPadding}px`;\r\n\t\ttooltip.style.right =\r\n\t\t\t`${rightOffset}px`;\r\n\t\ttooltip.className =\r\n\t\t\t`${this.customTooltipClass} ` +\r\n\t\t\t\tAppConstants.cssClasses.customTooltip;\r\n\t\tdocument.body.appendChild(tooltip);\r\n\r\n\t\tstonlyWidget.addEventListener(\r\n\t\t\tMouseEventConstants.mouseOver,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\ttooltip.style.display = AppConstants.displayTypes.block;\r\n\t\t\t});\r\n\t\tstonlyWidget.addEventListener(\r\n\t\t\tMouseEventConstants.mouseOut,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\ttooltip.style.display = AppConstants.displayTypes.none;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the stonly widget tooltip.\r\n\t *\r\n\t * @memberof StonlyHelpComponent\r\n\t */\r\n\tprivate hideTooltip(): void\r\n\t{\r\n\t\tconst tooltip: HTMLElement =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\t`.${this.customTooltipClass}`);\r\n\r\n\t\tif (!AnyHelper.isNull(tooltip))\r\n\t\t{\r\n\t\t\ttooltip.style.display = AppConstants.displayTypes.none;\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tCommonChildListDirective\r\n} from '@shared/directives/common-child-list-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInstanceAccessPolicy\r\n} from '@shared/interfaces/application-objects/instance-access-policy.interface';\r\nimport {\r\n\tICommonListContext\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-context.interface';\r\nimport {\r\n\tICommonListFilter\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-filter.interface';\r\nimport {\r\n\tICommonListItem\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-item.interface';\r\nimport {\r\n\tICommonListSort\r\n} from '@shared/interfaces/dynamic-interfaces/common-list-sort.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tISecurityDefinition\r\n} from '@shared/interfaces/security/security-definition.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tIWorkItem\r\n} from '@shared/interfaces/workItems/work-item.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-work-item-list',\r\n\ttemplateUrl: './work-item-list.component.html',\r\n\tstyleUrls: [\r\n\t\t'./work-item-list.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level work item list view.\r\n *\r\n * @export\r\n * @class WorkItemListComponent\r\n * @extends {CommonChildListDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class WorkItemListComponent\r\n\textends CommonChildListDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work item list component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Router} router\r\n\t * The router used for navigation.\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityService,\r\n\t\t\tentityTypeApiService,\r\n\t\t\tentityInstanceApiService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the list of sorts available in this list component.\r\n\t *\r\n\t * @type {ICommonListSort[]}\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tpublic sorters: ICommonListSort[] =\r\n\t\t\r\n\t\t[\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Create Date',\r\n\t\t\t\tvalue: AppConstants.commonProperties.id,\r\n\t\t\t\tdirection: AppConstants.sortDirections.descending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Due Date',\r\n\t\t\t\tvalue: 'keyDates.dueDate',\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: 'Status',\r\n\t\t\t\tvalue: 'status',\r\n\t\t\t\tdirection: AppConstants.sortDirections.ascending,\r\n\t\t\t\ticonAsc: AppConstants.cssClasses.sortAscending,\r\n\t\t\t\ticonDesc: AppConstants.cssClasses.sortDescending\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the list of status values that are considered still\r\n\t * in progress.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tprivate readonly activeStatusValues: string[] =\r\n\t\t[\r\n\t\t\tWorkItemConstants.workItemStatus.active,\r\n\t\t\tWorkItemConstants.workItemStatus.overdue\r\n\t\t];\r\n\r\n\t/**\r\n\t * Generates a common list context that can be consumed by a common list\r\n\t * displayed in this component.\r\n\t *\r\n\t * @param {ICommonListItem[]} data\r\n\t * The collection of data that will be displayed in this list.\r\n\t * @returns {ICommonListContext}\r\n\t * The common list context to display.\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tpublic generateCommonListContext(\r\n\t\tdata: ICommonListItem[]):\r\n\t\tICommonListContext\r\n\t{\r\n\t\tconst listFilters: ICommonListFilter[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'My Work Items',\r\n\t\t\t\t\tvalue: 'assignedTo eq ' +\r\n\t\t\t\t\t\t`'${this.sessionService.user.data.userName}'`\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Active',\r\n\t\t\t\t\tvalue: 'status eq \\'active\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Blocked',\r\n\t\t\t\t\tvalue: 'status eq \\'blocked\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Done',\r\n\t\t\t\t\tvalue: 'status eq \\'done\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Ignored',\r\n\t\t\t\t\tvalue: 'status eq \\'ignored\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'High Priority',\r\n\t\t\t\t\tvalue: 'priority eq \\'high\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Normal Priority',\r\n\t\t\t\t\tvalue: 'priority eq \\'normal\\''\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'Low Priority',\r\n\t\t\t\t\tvalue: 'priority eq \\'low\\''\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst actions: ISecureMenuItem[] = [];\r\n\r\n\t\tif (this.canCreate())\r\n\t\t{\r\n\t\t\tactions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: 'fa fa-plus-circle',\r\n\t\t\t\t\tcommand: (event: any) => {\r\n\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\tAppConstants.displayMode.create);\r\n\r\n\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsecurityRightCategory: SecurityRightCategory.Action,\r\n\t\t\t\t\tsecurityRightPath: AppConstants.apiMethods.create\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst generatedCommonListContext:\r\n\t\t\tICommonListContext =\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsupportMarkdown: true,\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tsortable: true,\r\n\t\t\t\t\tsorters: this.sorters,\r\n\t\t\t\t\tactions: actions,\r\n\t\t\t\t\tfilters: listFilters,\r\n\t\t\t\t\tonFilterChange: (source, filters) =>\r\n\t\t\t\t\t\tthis.handleFilterChange(source, filters),\r\n\t\t\t\t\tonSortChange: (source, sorter) =>\r\n\t\t\t\t\t\tthis.handleSortingChange(source, sorter)\r\n\t\t\t\t};\r\n\r\n\t\treturn generatedCommonListContext;\r\n\t}\r\n\r\n\t/**\r\n\t * An available lifecycle event which is called prior to mapping list items\r\n\t * as soon as list data is available.\r\n\t *\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tpublic async performPreMappingRequirements(): Promise\r\n\t{\r\n\t\tawait this.setInstanceBasedPermissions();\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a list item that represents a work item entity instance.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance to be mapped into a list item.\r\n\t * @returns {ICommonListItem}\r\n\t * The common list item to display that represents this entity instance.\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tpublic mapToListItem(\r\n\t\tentityInstance: IEntityInstance):\r\n\t\tICommonListItem\r\n\t{\r\n\t\tconst dueDate: string =\r\n\t\t\tDateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tentityInstance.data.keyDates.dueDate),\r\n\t\t\t\tDateHelper.presetFormats.shortDateFormat);\r\n\r\n\t\tlet statusColor: string = AppConstants.empty;\r\n\t\tswitch (entityInstance.data.status)\r\n\t\t{\r\n\t\t\tcase WorkItemConstants.workItemStatus.done:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textSuccessColor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase WorkItemConstants.workItemStatus.ignored:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textSecondaryColor;\r\n\t\t\t\tbreak;\r\n\t\t\tcase WorkItemConstants.workItemStatus.overdue:\r\n\t\t\t\tstatusColor = AppConstants.cssClasses.textErrorColor;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tconst priorityIcon: string =\r\n\t\t\t(this.activeStatusValues.indexOf(entityInstance.data.status) !== -1\r\n\t\t\t\t&& entityInstance.data.priority ===\r\n\t\t\t\t\tWorkItemConstants.workItemPriority.high)\r\n\t\t\t\t? `'\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tlet displayType: string = entityInstance.entityType;\r\n\r\n\t\tdisplayType =\r\n\t\t\tStringHelper.getLongEntityDisplayName(\r\n\t\t\t\tdisplayType,\r\n\t\t\t\tWorkItemConstants.workItemEntityTypePrefix);\r\n\r\n\t\tconst instanceAccessPolicy: ISecurityDefinition =\r\n\t\t\tthis.instanceBasedPermissions\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(accessPolicy: IInstanceAccessPolicy) =>\r\n\t\t\t\t\t\taccessPolicy.id ===\r\n\t\t\t\t\t\t\tentityInstance.id).accessPolicy;\r\n\r\n\t\tconst scrubbedInfoActions: ISecureMenuItem[] =\r\n\t\t\tSecurityHelper.scrubMenuItems(\r\n\t\t\t\t[\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: AppConstants.cssClasses\r\n\t\t\t\t\t\t\t.fontAwesomeCalendarCheckMark,\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t\tthis.navigateToWorkbenchItem(\r\n\t\t\t\t\t\t\t\t\tentityInstance);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\tSecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\t\tsecurityRightType:\r\n\t\t\t\t\t\t\tSecurityRightType.read\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: AppConstants.cssClasses.fontAwesomeInfoCircle,\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.changeSelectedItem.emit(entityInstance);\r\n\t\t\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\t\t\tAppConstants.displayMode.view);\r\n\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\tSecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\t\tsecurityRightType:\r\n\t\t\t\t\t\t\tSecurityRightType.read\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tthis.securityDefinitions,\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tinstanceAccessPolicy);\r\n\r\n\t\tconst scrubbedEditActions: ISecureMenuItem[] =\r\n\t\t\tSecurityHelper.scrubMenuItems(\r\n\t\t\t\t[\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ticon: AppConstants.cssClasses.fontAwesomePencil,\r\n\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.changeSelectedItem.emit(entityInstance);\r\n\t\t\t\t\t\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\t\t\t\t\t\tAppConstants.displayMode.update);\r\n\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsecurityRightCategory:\r\n\t\t\t\t\t\t\tSecurityRightCategory.TopLevelRight,\r\n\t\t\t\t\t\tsecurityRightType:\r\n\t\t\t\t\t\t\tSecurityRightType.update\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tthis.securityDefinitions,\r\n\t\t\t\tentityInstance.entityType,\r\n\t\t\t\tinstanceAccessPolicy);\r\n\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\titem: entityInstance,\r\n\t\t\t\tdescriptionLineFormat:\r\n\t\t\t\t\t`'\r\n\t\t\t\t\t\t+ priorityIcon\r\n\t\t\t\t\t\t+ `**${displayType}**
    `\r\n\t\t\t\t\t\t+ `${entityInstance.data.description} `\r\n\t\t\t\t\t\t+ ''\r\n\t\t\t\t\t\t+ `|${WorkItemConstants\r\n\t\t\t\t\t\t\t.workItemIdentifiers.workItemIdentifier}:`\r\n\t\t\t\t\t\t\t+ `${entityInstance.id}|`\r\n\t\t\t\t\t\t+ '',\r\n\t\t\t\tinformationLineFormat:\r\n\t\t\t\t\t`Status: ${entityInstance.data.status} - `\r\n\t\t\t\t\t\t+ `Priority: ${entityInstance.data.priority} `\r\n\t\t\t\t\t\t+ (!AnyHelper.isNullOrWhitespace(dueDate)\r\n\t\t\t\t\t\t\t? ` - Due Date: ${dueDate}`\r\n\t\t\t\t\t\t\t: AppConstants.empty),\r\n\t\t\t\tinformationIcons: [],\r\n\t\t\t\tactions: [\r\n\t\t\t\t\t...scrubbedInfoActions,\r\n\t\t\t\t\t...scrubbedEditActions\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the user can create any items.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * The result true if user can create.\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tprivate canCreate(): boolean\r\n\t{\r\n\t\tconst createableTypes = this.securityDefinitions\r\n\t\t\t.filter((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tSecurityHelper.actionAuthorized(\r\n\t\t\t\t\tdefinition.entityTypeName,\r\n\t\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t\t[definition]))\r\n\t\t\t.map((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tdefinition.entityTypeName);\r\n\r\n\t\treturn this.supportedEntityTypes\r\n\t\t\t.filter((entityType: EntityType) =>\r\n\t\t\t\tcreateableTypes.includes(entityType.name))\r\n\t\t\t.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to a selected item in the workbench table.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} workItemInstance\r\n\t * The work item instance to navigate to.\r\n\t * @memberof WorkItemListComponent\r\n\t */\r\n\tprivate async navigateToWorkbenchItem(\r\n\t\tworkItemInstance: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t'workItems/workbench'\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tworkItemId: workItemInstance.id,\r\n\t\t\t\t\t\t\t\t\tassignedTo: null,\r\n\t\t\t\t\t\t\t\t\tcreateDate: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tdueDate: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tmetadata: {},\r\n\t\t\t\t\t\t\t\t\tmodule: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tpriority: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tqueue: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tstatus: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tsubType: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\ttype: AppConstants.empty\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tDirective,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[DrawerEntityComponentDirective]'\r\n})\r\n\r\nexport class DrawerEntityComponentDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a DrawerEntityComponentDirective. This\r\n\t * directive is used to help with loading and displaying\r\n\t * a drawer entity.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service for this directive.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this directive.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this directive.\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Input() public context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the selected item to be displayed within the drawer view.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t @Input() public selectedItem: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the wildcard child filter used to find available child\r\n\t * types of the context. This is used in a create entity drawer.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Input() public wildcardChildFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display name of this drawer entity for client messages.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Input() public entityDisplayName: string = 'Item';\r\n\r\n\t/**\r\n\t * Gets or sets the collection of actions specific to this item.\r\n\t *\r\n\t * @type {ISecureMenuItem[]}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Input() public itemActions: ISecureMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the type group of the selected item to view.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t @Input() public typeGroup: string;\r\n\r\n\t /**\r\n\t * Gets or sets the identifier of the selected item to view.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t @Input() public id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the navigate event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Output() public changeDisplayMode: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the entity altered event\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Output() public entityAltered: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the security definitions.\r\n\t *\r\n\t * @type {ISecurityEntityTypeDefinition[]}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\t@Input() public securityDefinitions: ISecurityEntityTypeDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether data is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether the component is saving.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets an EntityType representing the selected entity type to\r\n\t * create.\r\n\t *\r\n\t * @type {EntityType}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic selectedEntityType: EntityType;\r\n\r\n\t /**\r\n\t * Gets or sets a collection of FormlyFieldConfig representing the\r\n\t * formly entity layout of the selected entity type layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic formlyEntityLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the current validity of the displayed dynamic form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Performs a security scrub on the menu items (item actions).\r\n\t */\r\n\tpublic scrubMenuItems()\r\n\t{\r\n\t\tthis.itemActions = SecurityHelper\r\n\t\t\t.scrubMenuItems(\r\n\t\t\t\tthis.itemActions,\r\n\t\t\t\tthis.selectedItem.entityType,\r\n\t\t\t\tthis.securityDefinitions);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will load the selected entity and associated data that will\r\n\t * be displayed in this drawer component.\r\n\t *\r\n\t * @async\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic async selectedEntityDisplaySetup(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.typeGroup))\r\n\t\t{\r\n\t\t\tconst entityTypes: EntityType[] =\r\n\t\t\t\tawait this.entityService.getEntityTypesFromNameList(\r\n\t\t\t\t\t[this.selectedItem.entityType]);\r\n\t\t\tthis.selectedEntityType = entityTypes.pop();\r\n\t\t\tthis.typeGroup = this.selectedEntityType?.group;\r\n\t\t}\r\n\r\n\t\tthis.id = this.id || this.selectedItem.id;\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.typeGroup;\r\n\r\n\t\tthis.selectedItem =\r\n\t\t\tthis.selectedItem\r\n\t\t\t\t|| await this.entityInstanceApiService.get(this.id);\r\n\r\n\t\tthis.formlyEntityLayout =\r\n\t\t\tawait this.entityService.getFormlyLayout(\r\n\t\t\t\tthis.context,\r\n\t\t\t\tthis.selectedEntityType,\r\n\t\t\t\tAppConstants.layoutTypes.drawer,\r\n\t\t\t\tthis.selectedItem.id);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will calculate a display name based on a period delimited\r\n\t * name of an entity type.\r\n\t *\r\n\t * @async\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic getDisplayName(\r\n\t\tinput: string): string\r\n\t{\r\n\t\tlet names: string[] =\r\n\t\t\tinput.split(\r\n\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\tif (names.length > 1)\r\n\t\t{\r\n\t\t\tnames =\r\n\t\t\t\tnames.reverse();\r\n\r\n\t\t\tnames.pop();\r\n\r\n\t\t\tnames =\r\n\t\t\t\tnames.reverse();\r\n\t\t}\r\n\r\n\t\treturn StringHelper\r\n\t\t\t.beforeCapitalSpaces(\r\n\t\t\t\tnames.join(AppConstants.empty));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event of the contained dynamic form.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The sent validity value of the dynamic form.\r\n\t * @memberof DrawerEntityComponentDirective\r\n\t */\r\n\tpublic validDataChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.isValid = isValid;\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\tNo available {{entityDisplayName}} types to add.\r\n\t\t\t
    \r\n\t\t\r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tAdd: {{entityDisplayName}}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tInput,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDrawerEntityComponentDirective\r\n} from '@shared/directives/drawer-entity-component-directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityLayout\r\n} from '@shared/implementations/entities/entity-layout';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSelectItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'entity-create',\r\n\ttemplateUrl: './entity-create.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-create.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a parent context based entity create display.\r\n *\r\n * @export\r\n * @class EntityCreateComponent\r\n * @extends {DrawerEntityComponentDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class EntityCreateComponent\r\n\textends DrawerEntityComponentDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the entity create drawer component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition API service.\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The entity layout API service.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type API service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this directive.\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tchangeDetectorReference);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a string representing the parent type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\t@Input() public parentTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets a number representing the parent id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\t@Input() public parentId: number;\r\n\r\n\t/**\r\n\t * Gets or sets an object that will be used as inputs into a newly created\r\n\t * drawer entity. This object can be used to set defaults or context based\r\n\t * values in the data value of a created entity.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\t@Input() public initialCreateData: any;\r\n\r\n\t/**\r\n\t * Gets or sets a entity definition representing the parent context entity\r\n\t * definition.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic parentEntityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of entity types representing the supported\r\n\t * entity types of the parent context. This is used to select the\r\n\t * allowed creation types for this drawer display.\r\n\t *\r\n\t * @type {EntityType[]}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic supportedEntityTypes: EntityType[];\r\n\r\n\t/**\r\n\t * Gets or sets a collection of select items representing entity types to\r\n\t * load within the selector.\r\n\t *\r\n\t * @type {SelectItem[]}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic entityTypes: SelectItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets an entity instance representing the entity to create.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic entityData: IEntityInstance;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display associated entities based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tconst source: EntityInstanceComponent =\r\n\t\t\t(this.context.source);\r\n\t\tthis.parentTypeGroup = this.parentTypeGroup || source.entityType.group;\r\n\t\tthis.parentId = this.parentId || source.id;\r\n\t\tthis.parentEntityDefinition = source.entityDefinition;\r\n\r\n\t\tawait this.mapCreatableEntityTypes();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * A method containing the activity of creating a entity.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic async createEntity(): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.selectedEntityType.group;\r\n\r\n\t\tconst createDisplayName: string =\r\n\t\t\tthis.getDisplayName(this.selectedEntityType.name)\r\n\t\t\t\t+ ' entity';\r\n\r\n\t\tconst newEntityId: number =\r\n\t\t\tawait this.activityService.handleActivity(\r\n\t\t\t\tnew Activity(\r\n\t\t\t\t\tthis.entityInstanceApiService.createEntityInstance(\r\n\t\t\t\t\t\tthis.entityData,\r\n\t\t\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\t\t\tthis.parentId),\r\n\t\t\t\t\t`Creating ${createDisplayName}`,\r\n\t\t\t\t\t`Created ${createDisplayName}`,\r\n\t\t\t\t\t`${createDisplayName} was added.`,\r\n\t\t\t\t\t`${createDisplayName} was not added.`));\r\n\r\n\t\tthis.saving = false;\r\n\r\n\t\tif (AnyHelper.isNull(newEntityId) !== true)\r\n\t\t{\r\n\t\t\tthis.changeDisplayMode.emit(\r\n\t\t\t\tAppConstants.displayMode.list);\r\n\r\n\t\t\tthis.entityAltered.emit();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A method that handles an entity type change event.\r\n\t *\r\n\t * @async\r\n\t * @param {any} event\r\n\t * A value representing the event parameters.\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic async handleEntityTypeChange(\r\n\t\tevent: any): Promise\r\n\t{\r\n\t\tthis.formlyEntityLayout = null;\r\n\t\tthis.selectedEntityType = event?.value;\r\n\t\tthis.entityData =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tentityType: this.selectedEntityType?.name,\r\n\t\t\t\tversionNumber: null, // this causes latest to be used.\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...this.initialCreateData\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.selectedEntityType))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\titemDisplayComponent: this\r\n\t\t\t};\r\n\r\n\t\tconst entityLayoutType: IEntityLayoutType =\r\n\t\t\tawait this.entityLayoutTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${AppConstants.layoutTypes.drawer}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t+ AppConstants.sortDirections.descending);\r\n\t\tconst entityLayout: IEntityLayout =\r\n\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.typeId} eq `\r\n\t\t\t\t\t\t+ `${this.selectedEntityType.id} and `\r\n\t\t\t\t\t\t+ `${AppConstants.commonProperties.layoutTypeId} eq `\r\n\t\t\t\t\t\t+ entityLayoutType.id,\r\n\t\t\t\t\t`${AppConstants.commonProperties.versionId} `\r\n\t\t\t\t\t\t+ AppConstants.sortDirections.descending);\r\n\t\tthis.formlyEntityLayout =\r\n\t\t\tFormlyHelper.getFormlyLayout(\r\n\t\t\t\tnew EntityLayout(entityLayout).jsonEntityLayout,\r\n\t\t\t\tthis.context);\r\n\t}\r\n\r\n\t/**\r\n\t * A method that maps a collection of entity types to select items and\r\n\t * populates the entity types selector.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityType[]} entityTypes\r\n\t * A collection of EntityTypes to map and populate EntityTypes select.\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tpublic async mapCreatableEntityTypes(): Promise\r\n\t{\r\n\t\tconst supportedChildPermissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait this.getSupportedChildPermissions();\r\n\r\n\t\tthis.supportedEntityTypes = supportedChildPermissions\r\n\t\t\t.filter((permission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tpermission.securityDefinition.rights.create)\r\n\t\t\t.map(\r\n\t\t\t\t(permission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: permission.entityTypeId,\r\n\t\t\t\t\t\tname: permission.entityTypeName,\r\n\t\t\t\t\t\tgroup: permission.entityTypeGroup\r\n\t\t\t\t\t});\r\n\r\n\t\tthis.entityTypes = this.supportedEntityTypes\r\n\t\t\t.map((entityType: EntityType) =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: entityType,\r\n\t\t\t\t\tlabel: this.getDisplayName(entityType.name),\r\n\t\t\t\t});\r\n\r\n\t\t// Default to the only available type if applicable.\r\n\t\tif (this.supportedEntityTypes.length === 1)\r\n\t\t{\r\n\t\t\tawait this.handleEntityTypeChange({\r\n\t\t\t\tvalue: this.supportedEntityTypes[0]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets supported child entity type permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The supported child entity type permissions for\r\n\t * the parent of this create component.\r\n\t * @memberof EntityCreateComponent\r\n\t */\r\n\tprivate getSupportedChildPermissions():\r\n\t\tPromise\r\n\t{\r\n\t\treturn SecurityHelper\r\n\t\t\t.getSupportedChildPermissions(\r\n\t\t\t\tthis.parentId,\r\n\t\t\t\tthis.parentTypeGroup,\r\n\t\t\t\tthis.wildcardChildFilter,\r\n\t\t\t\tthis.parentEntityDefinition,\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tthis.entityTypeApiService);\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tEdit: {{entityDisplayName}}\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDrawerEntityComponentDirective\r\n} from '@shared/directives/drawer-entity-component-directive';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'entity-update',\r\n\ttemplateUrl: './entity-update.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-update.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level entity update display.\r\n *\r\n * @export\r\n * @class EntityUpdateComponent\r\n * @extends {DrawerEntityComponentDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class EntityUpdateComponent\r\n\textends DrawerEntityComponentDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the entity update component.\r\n\t *\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The entity version API service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition API service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {EntityTypeApiService} entityService\r\n\t * The entity service.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this directive.\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\t public constructor(\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic resolverService: ResolverService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tchangeDetectorReference);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a string representing the operation group for this udpate\r\n\t * views action menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\tpublic operationGroupName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets an entity definition representing the currently displayed\r\n\t * drawer item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\tpublic entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather and display the entity based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\titemDisplayComponent: this\r\n\t\t\t};\r\n\r\n\t\tawait this.selectedEntityDisplaySetup();\r\n\r\n\t\tconst entityDefinition: IEntityDefinition =\r\n\t\t\tawait this.entityService.getEntityDefinition(\r\n\t\t\t\tthis.selectedEntityType.id,\r\n\t\t\t\tthis.selectedItem.versionNumber);\r\n\t\tthis.entityDefinition =\r\n\t\t\tnew EntityDefinition(entityDefinition);\r\n\t\tthis.operationGroupName =\r\n\t\t\tthis.entityDefinition.actionMenuOperationGroupName;\r\n\r\n\t\tthis.scrubMenuItems();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the existing entity instance values into the database for\r\n\t * the current drawer item.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\tpublic async updateEntity(): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.selectedEntityType.group;\r\n\r\n\t\tconst updateDisplayName: string =\r\n\t\t\tthis.getDisplayName(this.selectedEntityType.name)\r\n\t\t\t\t+ ' entity';\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.entityInstanceApiService.update(\r\n\t\t\t\t\tthis.selectedItem.id,\r\n\t\t\t\t\tthis.selectedItem),\r\n\t\t\t\t`Updating ${updateDisplayName}`,\r\n\t\t\t\t`Updated ${updateDisplayName}`,\r\n\t\t\t\t`${updateDisplayName} was updated.`,\r\n\t\t\t\t`${updateDisplayName} was not updated.`));\r\n\r\n\t\tthis.saving = false;\r\n\r\n\t\tthis.changeDisplayMode.emit(\r\n\t\t\tAppConstants.displayMode.list);\r\n\r\n\t\tthis.entityAltered.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an update of the current item given an update promise. This will\r\n\t * redirect to the list when the update is complete.\r\n\t *\r\n\t * @async\r\n\t * @param {Promise} updatePromise\r\n\t * The awaitable promise that will update this drawer entity item.\r\n\t * @memberof EntityUpdateComponent\r\n\t */\r\n\tpublic async handleUpdate(\r\n\t\tupdatePromise: Promise): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t\tthis.saving = true);\r\n\r\n\t\tawait updatePromise;\r\n\r\n\t\tthis.saving = false;\r\n\r\n\t\tthis.changeDisplayMode.emit(\r\n\t\t\tAppConstants.displayMode.list);\r\n\r\n\t\tthis.entityAltered.emit();\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tView: {{entityDisplayName}}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tDrawerEntityComponentDirective\r\n} from '@shared/directives/drawer-entity-component-directive';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'entity-view',\r\n\ttemplateUrl: './entity-view.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-view.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a context level entity view.\r\n *\r\n * @export\r\n * @class EntityViewComponent\r\n * @extends {DrawerEntityComponentDirective}\r\n * @implements {OnInit}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class EntityViewComponent\r\n\textends DrawerEntityComponentDirective\r\n\timplements OnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the entity view component.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityTypeApiService} entityService\r\n\t * The entity service.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this directive.\r\n\t * @memberof EntityViewComponent\r\n\t */\r\n\t public constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tentityService,\r\n\t\t\tentityInstanceApiService,\r\n\t\t\tchangeDetectorReference);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will gather information and display the entity based on the given\r\n\t * context parameters.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityViewComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.scrubMenuItems();\r\n\r\n\t\tawait this.selectedEntityDisplaySetup();\r\n\t\tFormlyHelper.disableAllFields(\r\n\t\t\tthis.formlyEntityLayout,\r\n\t\t\ttrue,\r\n\t\t\ttrue);\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\titemDisplayComponent: this\r\n\t\t\t};\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tBack\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tThis view is not currently available.\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tDrawerListDirective\r\n} from '@shared/directives/drawer-list-directive';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-work-items',\r\n\ttemplateUrl: './work-items.component.html',\r\n\tstyleUrls: [\r\n\t\t'./work-items.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing context level work items.\r\n *\r\n * @export\r\n * @class WorkItemsComponent\r\n * @extends {DrawerListDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class WorkItemsComponent\r\n\textends DrawerListDirective\r\n\timplements OnInit, IDynamicComponent,\r\n\t\tIOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work items component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type api service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {Location} location\r\n\t * The location object.\r\n\t * @memberof WorkItemsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic location: Location)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will set configurable properties used in the drawer list\r\n\t * directive and this component's view.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkItemsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityDisplayName = 'Work Item';\r\n\t\tthis.wildcardChildFilter = 'WorkItem';\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tthis.accessDeniedUrl = this.location.path();\r\n\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\t\t\tthis.resources =\r\n\t\t\t\t[\r\n\t\t\t\t\t'WorkItem.*'\r\n\t\t\t\t];\r\n\t\t\tthis.clientMessage =\r\n\t\t\t\t'Access is required to at least one work item '\r\n\t\t\t\t\t+ 'entity type and version.';\r\n\t\t\tthis.isOwnershipAllowed = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entityInstanceComponent: EntityInstanceComponent =\r\n\t\t\tthis.context.source;\r\n\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\tdrawerComponent: this\r\n\t\t\t};\r\n\r\n\t\tawait this.setSecurityDefinitions(\r\n\t\t\tentityInstanceComponent.id,\r\n\t\t\tentityInstanceComponent.entityType.group,\r\n\t\t\tentityInstanceComponent.entityDefinition,\r\n\t\t\tentityInstanceComponent.entityInstanceApiService,\r\n\t\t\tentityInstanceComponent.entityTypeApiService);\r\n\r\n\t\tthis.initialCreateData =\r\n\t\t\t{\r\n\t\t\t\ttype:\r\n\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t.entityType.name,\r\n\t\t\t\treferences: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: WorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer,\r\n\t\t\t\t\t\tidentifier:\r\n\t\t\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t\t\t.entityInstance\r\n\t\t\t\t\t\t\t\t.id\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: WorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityType,\r\n\t\t\t\t\t\tidentifier:\r\n\t\t\t\t\t\t\tentityInstanceComponent\r\n\t\t\t\t\t\t\t\t.entityInstance\r\n\t\t\t\t\t\t\t\t.entityType\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t* Implements the ownership guard interface.\r\n\t* This will calculate drawer ownership permissions.\r\n\t*\r\n\t* @async\r\n\t* @returns {Promise}\r\n\t* A value signifying whether or not access is allowed to this drawer.\r\n\t* @memberof WorkItemsComponent\r\n\t*/\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tawait this.entityService.setStoredVariables();\r\n\r\n\t\tconst workItemTypes: IEntityType[] =\r\n\t\t\tthis.entityService\r\n\t\t\t\t.entityTypes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\tentityType.group.indexOf(\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemEntityTypePrefix) !== -1);\r\n\r\n\t\tif (workItemTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tworkItemTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the entity altered event which is sent to this component when\r\n\t * the drawer entity update or entity create components have altered this\r\n\t * lists data. This method will refresh the badge promise to match the\r\n\t * updated information.\r\n\t *\r\n\t * @memberof WorkItemsComponent\r\n\t */\r\n\tpublic entityAltered()\r\n\t{\r\n\t\tEventHelper.dispatchRefreshBadgePromiseEvent(\r\n\t\t\tDynamicComponentLookup.supportedTypes.workItemsComponent,\r\n\t\t\tDynamicComponentLookup.targetComponents.utilityMenuComponent);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tBaseApiService\r\n} from '@api/services/base/base.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tPermissionConstants\r\n} from '@shared/constants/permission.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tJsonSchemaLayout\r\n} from '@shared/implementations/application-data/json-schema-layout';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIActionTableConfiguration\r\n} from '@shared/interfaces/application-objects/actions-table-configuration.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDashboardSection\r\n} from '@shared/interfaces/application-objects/dashboard-section.interface';\r\nimport {\r\n\tIDashboardWidget\r\n} from '@shared/interfaces/application-objects/dashboard-widget.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicLayoutConfiguration\r\n} from '@shared/interfaces/application-objects/dynamic-layout-configuration.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tITableExpandDefinition\r\n} from '@shared/interfaces/application-objects/table-expand-definition.interface';\r\nimport {\r\n\tIWizardStepMenuItem\r\n} from '@shared/interfaces/application-objects/wizard-step-menu-item.interface';\r\nimport {\r\n\tIChartContext\r\n} from '@shared/interfaces/dynamic-interfaces/chart-context.interface';\r\nimport {\r\n\tIWizardContext\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-context.interface';\r\nimport {\r\n\tIWizardStep\r\n} from '@shared/interfaces/dynamic-interfaces/wizard-step-context.interface';\r\nimport {\r\n\tIReallySimpleSyndicationConfiguration\r\n} from '@shared/interfaces/really-simple-syndication/really-simple-syndication-cofiguration.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReportLookup\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-lookup.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tIEmbedConfiguration\r\n} from 'powerbi-client';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing a singleton display component factory.\r\n * This is used to create component interfaces from a display\r\n * component instance.\r\n *\r\n * @export\r\n * @class DisplayComponentFactory\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class DisplayComponentFactory\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component factory.\r\n\t *\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used for display component lookups.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for generic lookups.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used for factory permission based logic.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The external power bi api service.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic router: Router,\r\n\t\tpublic moduleService: ModuleService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof BaseExpandComponent\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Creates and returns a dashboard section ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a dashboard section.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this dashboard section.\r\n\t * @returns {IDashboardSection}\r\n\t * A dashboard section ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic dashboardSection(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext:\r\n\t\t\tIDynamicComponentContext): IDashboardSection\r\n\t{\r\n\t\tconst componentDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tdisplayComponentInstance: displayComponentInstance,\r\n\t\t\t\tlabel: componentDefinition.label,\r\n\t\t\t\torder: displayComponentInstance.order,\r\n\t\t\t\tparameterLayoutSchema:\r\n\t\t\t\t\tthis.getParameterLayoutSchema(\r\n\t\t\t\t\t\tdisplayComponentInstance.jsonParameterDefinition,\r\n\t\t\t\t\t\tdisplayComponentInstance.jsonParameterLayout,\r\n\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\tparameterLayoutData:\r\n\t\t\t\t\tthis.getParameterData(\r\n\t\t\t\t\t\tdynamicComponentContext.data),\r\n\t\t\t\twidgets: []\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a dashboard widget ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a dashboard widget.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this dashboard widget.\r\n\t * @param {boolean} includeSecondaryDisplay\r\n\t * If true this will also load and prepare a secondary display. The default\r\n\t * value is true.\r\n\t * @returns {Promise>}\r\n\t * An awaitable dashboard widget ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async dashboardWidget(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext,\r\n\t\tincludeSecondaryDisplay: boolean = true): Promise\r\n\t{\r\n\t\tconst widgetDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tconst widgetDisplayComponentInstance: DisplayComponentInstance =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\twidgetDefinition?.displayComponent,\r\n\t\t\t\t\tdynamicComponentContext);\r\n\r\n\t\tif (AnyHelper.isNull(widgetDisplayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst parameterLayoutSchema: any =\r\n\t\t\tthis.getParameterLayoutSchema(\r\n\t\t\t\twidgetDisplayComponentInstance.jsonParameterDefinition,\r\n\t\t\t\twidgetDisplayComponentInstance.jsonParameterLayout,\r\n\t\t\t\tdynamicComponentContext);\r\n\r\n\t\tdynamicComponentContext.data =\r\n\t\t\tawait this.getMergedInitialParameterData(\r\n\t\t\t\twidgetDisplayComponentInstance.jsonInitialParameters,\r\n\t\t\t\tdynamicComponentContext);\r\n\r\n\t\tconst widgetData: IDynamicComponentContext =\r\n\t\t\tawait this.getDynamicComponentContext(\r\n\t\t\t\twidgetDisplayComponentInstance,\r\n\t\t\t\tdynamicComponentContext);\r\n\r\n\t\treturn this.getDashboardWidget(\r\n\t\t\twidgetDisplayComponentInstance\r\n\t\t\t\t?.displayComponentDefinition\r\n\t\t\t\t.parsedJson\r\n\t\t\t\t.definition\r\n\t\t\t\t.dynamicComponent\r\n\t\t\t\t?? widgetDisplayComponentInstance\r\n\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t.componentName,\r\n\t\t\tincludeSecondaryDisplay,\r\n\t\t\twidgetDefinition,\r\n\t\t\tparameterLayoutSchema,\r\n\t\t\tdynamicComponentContext,\r\n\t\t\tdisplayComponentInstance,\r\n\t\t\twidgetDisplayComponentInstance,\r\n\t\t\twidgetData);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns an external ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as an external report.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this simple table.\r\n\t * @param {boolean} isViewOnly\r\n\t * If false, this will display the external report in edit mode. This\r\n\t * value defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable external report ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async externalReport(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext,\r\n\t\tisViewOnly: boolean = true): Promise\r\n\t{\r\n\t\tconst componentDefinition: IPowerBiReportDefinition =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tswitch (componentDefinition.externalReportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.externalReportTypes.powerBi:\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tcomponentDefinition.reportId))\r\n\t\t\t\t{\r\n\t\t\t\t\tconst reportLookup: IPowerBiReportLookup =\r\n\t\t\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t\t\t.lookupReportData(\r\n\t\t\t\t\t\t\t\tcomponentDefinition);\r\n\r\n\t\t\t\t\tcomponentDefinition.reportId = reportLookup.reportId;\r\n\t\t\t\t\tcomponentDefinition.datasetId = reportLookup.datasetId;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcomponentDefinition.reportFilter =\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tcomponentDefinition.reportFilter)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\t\tcomponentDefinition.reportFilter,\r\n\t\t\t\t\t\t\tdynamicComponentContext)();\r\n\r\n\t\t\t\tcomponentDefinition.viewOnly = isViewOnly;\r\n\t\t\t\tconst embedConfiguration: IEmbedConfiguration =\r\n\t\t\t\t\t\r\n\t\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t\t.populatePowerBiEmbedConfiguration(\r\n\t\t\t\t\t\t\tcomponentDefinition);\r\n\r\n\t\t\t\treturn \r\n\t\t\t\t{\r\n\t\t\t\t\tdatasetId: componentDefinition.datasetId,\r\n\t\t\t\t\tdatasetGroupId: componentDefinition.datasetGroupId,\r\n\t\t\t\t\tembedConfiguration: embedConfiguration,\r\n\t\t\t\t\texternalReportType: componentDefinition.externalReportType,\r\n\t\t\t\t\tgroupId: componentDefinition.groupId,\r\n\t\t\t\t\tpageName: componentDefinition.pageName,\r\n\t\t\t\t\treportFilter: componentDefinition.reportFilter,\r\n\t\t\t\t\treportId: componentDefinition.reportId,\r\n\t\t\t\t\treportName: componentDefinition.reportName,\r\n\t\t\t\t\treportType: componentDefinition.reportType,\r\n\t\t\t\t\ttileId: componentDefinition.tileId,\r\n\t\t\t\t\tviewOnly: componentDefinition.viewOnly,\r\n\t\t\t\t\tvisualName: componentDefinition.visualName,\r\n\t\t\t\t\tworkspaceType: componentDefinition.workspaceType\r\n\t\t\t\t};\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`${componentDefinition.externalReportType} `\r\n\t\t\t\t\t\t+ 'requires a factory method.');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a simple table ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a simple table.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this simple table.\r\n\t * @returns {Promise}\r\n\t * An awaitable common table ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async simpleDataPromiseTable(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext:\r\n\t\t\tIDynamicComponentContext): Promise\r\n\t{\r\n\t\tlet displayColumnCounter: number = 1;\r\n\t\tconst componentDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tlet dataFilter: string = AppConstants.empty;\r\n\t\tif (!AnyHelper.isNullOrWhitespace(componentDefinition.dataFilter))\r\n\t\t{\r\n\t\t\tdataFilter =\r\n\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\tcomponentDefinition.dataFilter,\r\n\t\t\t\t\tdynamicComponentContext)();\r\n\t\t}\r\n\r\n\t\tconst availableColumns: ICommonTableColumn[] =\r\n\t\t\tcomponentDefinition.columns\r\n\t\t\t\t.map((displayColumn: ICommonTableColumn) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayColumn.displayOrder =\r\n\t\t\t\t\t\tdisplayColumnCounter++;\r\n\r\n\t\t\t\t\treturn displayColumn;\r\n\t\t\t\t});\r\n\r\n\t\tconst commonTableObject: ICommonTable =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttableTitle: componentDefinition.title,\r\n\t\t\t\tnavigationAccess: componentDefinition.navigationAccess,\r\n\t\t\t\tnestedTable: componentDefinition.nestedTable ?? false,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\texportable:\r\n\t\t\t\t\tcomponentDefinition.exportable ?? false,\r\n\t\t\t\tenableFullDatasetExport:\r\n\t\t\t\t\tcomponentDefinition.enableFullDatasetExport ?? true,\r\n\t\t\t\texportAllowedPromise:\r\n\t\t\t\t\tcomponentDefinition.exportAllowedPromise\r\n\t\t\t\t\t\t?? (async() => Promise.resolve(true)),\r\n\t\t\t\texportMappingDataPromise:\r\n\t\t\t\t\tcomponentDefinition.exportMappingDataPromise,\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: dataFilter,\r\n\t\t\t\t\t\torderBy: componentDefinition.dataOrderBy,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: componentDefinition.dataLimit,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: componentDefinition.pageSize\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\tcomponentDefinition.dataApiPromise))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst apiService: BaseApiService =\r\n\t\t\t\t\t\t\t\t\tthis.resolver.resolveApiService(\r\n\t\t\t\t\t\t\t\t\t\tcomponentDefinition.dataApiService);\r\n\r\n\t\t\t\t\t\t\treturn (>apiService)\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn StringHelper\r\n\t\t\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\t\t\tcomponentDefinition.dataApiPromise,\r\n\t\t\t\t\t\t\t\t\tdynamicComponentContext)(objectSearch);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: availableColumns,\r\n\t\t\t\tselectedColumns:\r\n\t\t\t\t\t\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...availableColumns\r\n\t\t\t\t\t],\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t(commonTableContext.source)\r\n\t\t\t\t\t\t\t.dynamicComponentContext = dynamicComponentContext;\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t},\r\n\t\t\t\tactions:\r\n\t\t\t\t\t\r\n\t\t\t\t\tcomponentDefinition.actions ?? {}\r\n\t\t\t};\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tcomponentDefinition.quickFilters))\r\n\t\t{\r\n\t\t\tcommonTableObject.actions.filter =\r\n\t\t\t\t{\r\n\t\t\t\t\tquickFilters: componentDefinition.quickFilters,\r\n\t\t\t\t\tselectedFilterValue: dataFilter\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tcomponentDefinition.drillInCommand))\r\n\t\t{\r\n\t\t\tcommonTableObject.actions.drillIn =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tStringHelper\r\n\t\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\t\tcomponentDefinition.drillInCommand,\r\n\t\t\t\t\t\t\t\tdynamicComponentContext)(\r\n\t\t\t\t\t\t\t\tcommonTableObject.getCommonTableContext());\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tcomponentDefinition.tableFixedHeight))\r\n\t\t{\r\n\t\t\tcommonTableObject.tableHeight =\r\n\t\t\t\t{\r\n\t\t\t\t\tvirtualPageSizeBased: false,\r\n\t\t\t\t\texplicitHeight:\r\n\t\t\t\t\t\tcomponentDefinition.tableFixedHeight ===\r\n\t\t\t\t\t\t\tAppConstants.commonTableAttributes\r\n\t\t\t\t\t\t\t\t.standardWidgetTableHeight\r\n\t\t\t\t\t\t\t? AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t\t.standardCommonTableWidgetHeight\r\n\t\t\t\t\t\t\t: componentDefinition.tableFixedHeight,\r\n\t\t\t\t\tminimumDrawerItemHeight: 2\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tcomponentDefinition.itemSelectionCommand))\r\n\t\t{\r\n\t\t\tcommonTableObject.actions.view =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tStringHelper\r\n\t\t\t\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\t\t\t\tcomponentDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t.itemSelectionCommand,\r\n\t\t\t\t\t\t\t\t\t\tdynamicComponentContext)(\r\n\t\t\t\t\t\t\t\t\t\tcommonTableObject\r\n\t\t\t\t\t\t\t\t\t\t\t.getCommonTableContext());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn commonTableObject;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a summary card ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a summary card.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this summary card.\r\n\t * @returns {Promise>}\r\n\t * An awaitable information menu ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async summaryCard(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tPromise>\r\n\t{\r\n\t\tif (AnyHelper.isNull(displayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst componentDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tlet overlayDisplayComponent: DisplayComponentInstance;\r\n\t\tlet overlayDisplayDefinition: any;\r\n\t\tlet overlayDisplay: boolean = false;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tcomponentDefinition.overlayDisplayComponent))\r\n\t\t{\r\n\t\t\toverlayDisplayComponent =\r\n\t\t\t\tawait this.displayComponentService\r\n\t\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\t\tcomponentDefinition.overlayDisplayComponent,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\r\n\t\t\toverlayDisplay = !AnyHelper.isNull(overlayDisplayComponent);\r\n\t\t\tif (overlayDisplay === true)\r\n\t\t\t{\r\n\t\t\t\toverlayDisplayDefinition =\r\n\t\t\t\t\toverlayDisplayComponent\r\n\t\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst chartDisplay: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tcomponentDefinition.chartDisplayComponent);\r\n\t\tconst overlayChartDisplay: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\toverlayDisplayDefinition?.chartConfiguration);\r\n\t\tconst groupByCount: boolean =\r\n\t\t\t!AnyHelper.isNull(componentDefinition.groupByCount)\r\n\t\t\t\t&& componentDefinition.groupByCount === true;\r\n\r\n\t\tlet overlayDisplayContext: IDynamicComponentContext =\r\n\t\t\tnull;\r\n\r\n\t\tif (overlayDisplay === true)\r\n\t\t{\r\n\t\t\toverlayDisplayContext =\r\n\t\t\t\toverlayChartDisplay === false\r\n\t\t\t\t\t? >\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsource: dynamicComponentContext.source,\r\n\t\t\t\t\t\t\tdata: await StringHelper\r\n\t\t\t\t\t\t\t\t.transformToDataPromise(\r\n\t\t\t\t\t\t\t\t\toverlayDisplayComponent\r\n\t\t\t\t\t\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t\t\t\t\t\t.jsonDefinition.dataPromise,\r\n\t\t\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t: >>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\tawait this.getChartDefinition(\r\n\t\t\t\t\t\t\t\t\t\toverlayDisplayDefinition,\r\n\t\t\t\t\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\toverlayDisplayDefinition\r\n\t\t\t\t\t\t\t\t\t\t.initialData,\r\n\t\t\t\t\t\t\t\tfillMissingDataSets:\r\n\t\t\t\t\t\t\t\t\toverlayDisplayDefinition\r\n\t\t\t\t\t\t\t\t\t\t.fillMissingDataSets,\r\n\t\t\t\t\t\t\t\tmaintainAspectRatio: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(componentDefinition.withPromise))\r\n\t\t{\r\n\t\t\tcomponentDefinition.width =\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tcomponentDefinition.withPromise,\r\n\t\t\t\t\tdynamicComponentContext);\r\n\t\t}\r\n\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tdataPromise:\r\n\t\t\t\t\tchartDisplay === false\r\n\t\t\t\t\t\t? StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\t\tcomponentDefinition.dataPromise,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\tchartDisplay === true\r\n\t\t\t\t\t\t? await this.populateChartDisplayComponent(\r\n\t\t\t\t\t\t\tcomponentDefinition.chartDisplayComponent,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\tsummaryTemplate:\r\n\t\t\t\t\tgroupByCount === false\r\n\t\t\t\t\t\t&& chartDisplay === false\r\n\t\t\t\t\t\t? componentDefinition.summaryTemplate\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\tsummaryFunction:\r\n\t\t\t\t\tgroupByCount === false\r\n\t\t\t\t\t\t&& chartDisplay === false\r\n\t\t\t\t\t\t? componentDefinition.summaryFunction\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\tsummaryPromise:\r\n\t\t\t\t\tgroupByCount === false\r\n\t\t\t\t\t\t&& chartDisplay === false\r\n\t\t\t\t\t\t? componentDefinition.summaryPromise\r\n\t\t\t\t\t\t: null,\r\n\t\t\t\ttitleTemplate:\r\n\t\t\t\t\tcomponentDefinition.titleTemplate,\r\n\t\t\t\ttitlePromise:\r\n\t\t\t\t\tcomponentDefinition.titlePromise,\r\n\t\t\t\tgroupByCount:\r\n\t\t\t\t\tgroupByCount,\r\n\t\t\t\twidth:\r\n\t\t\t\t\tcomponentDefinition.width,\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\toverlayDisplayComponent\r\n\t\t\t\t\t\t?.displayComponentDefinition.componentName,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\toverlayDisplayContext\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a reallySimpleSyndicationFeed\r\n\t * ready for display from the sent display component instance.\r\n\t *\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a rss feed.\r\n\t * @returns {Promise}\r\n\t * The rss feed ready to display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\t public async reallySimpleSyndicationFeed(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance):\r\n\t\tPromise\r\n\t{\r\n\t\tif (AnyHelper.isNull(displayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst componentDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\treturn {\r\n\t\t\tfeedSourceUrl: componentDefinition.feedSourceUrl\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a dynamic layout ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a dynamic layout.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this dynamic component interface.\r\n\t * @returns {Promise}\r\n\t * A dynamic layout ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async dynamicLayout(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tif (AnyHelper.isNull(displayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst componentDefinition: any =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tdata:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tcomponentDefinition.dataPromise)\r\n\t\t\t\t\t\t? dynamicComponentContext.data\r\n\t\t\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\t\tcomponentDefinition.dataPromise,\r\n\t\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\tlayout:\r\n\t\t\t\t\tFormlyHelper.getFormlyLayout(\r\n\t\t\t\t\t\tcomponentDefinition.layout,\r\n\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\ttitle:\r\n\t\t\t\t\tcomponentDefinition.title\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a component context that matches the required\r\n\t * interface of stand alone dynamic component items. These component\r\n\t * names are defined in the display component definition. If no component\r\n\t * name is sent, the data promise value of the definition is returned.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated using the generated\r\n\t * context.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this dynamic component interface.\r\n\t * @param {boolean} isViewOnly\r\n\t * If sent as false and applicable, this will create an editable view. This\r\n\t * value defaults to true.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * An awaitable component context ready for an interfaced display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async getDynamicComponentContext(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext,\r\n\t\tisViewOnly: boolean = true):\r\n\t\tPromise>\r\n\t{\r\n\t\tconst widgetComponentName: string =\r\n\t\t\tdisplayComponentInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.componentName;\r\n\t\tconst widgetDisplayComponentDefinition: any =\r\n\t\t\tdisplayComponentInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tlet widgetData: IDynamicComponentContext;\r\n\t\tswitch (widgetComponentName)\r\n\t\t{\r\n\t\t\tcase DynamicComponentLookup.supportedTypes.chartComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\tawait this.getChartDefinition(\r\n\t\t\t\t\t\t\t\t\twidgetDisplayComponentDefinition,\r\n\t\t\t\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\twidgetDisplayComponentDefinition\r\n\t\t\t\t\t\t\t\t\t.initialData,\r\n\t\t\t\t\t\t\tfillMissingDataSets:\r\n\t\t\t\t\t\t\t\twidgetDisplayComponentDefinition\r\n\t\t\t\t\t\t\t\t\t.fillMissingDataSets,\r\n\t\t\t\t\t\t\tmaintainAspectRatio: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes.dynamicWizardComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await this.wizard(\r\n\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes.externalReportComponent:\r\n\t\t\t\tconst userHasEditRolePermissions: boolean =\r\n\t\t\t\t\tnew User(this.sessionService.user)\r\n\t\t\t\t\t\t.hasMembership(\r\n\t\t\t\t\t\t\tPermissionConstants\r\n\t\t\t\t\t\t\t\t.editPowerBiReportRoles);\r\n\t\t\t\tconst isStandardReport: boolean =\r\n\t\t\t\t\tdisplayComponentInstance.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition.workspaceType ===\r\n\t\t\t\t\t\t\tReportConstants.powerBiWorkspaceTypes.standard;\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...dynamicComponentContext.data,\r\n\t\t\t\t\t\t\t\treportDefinition:\r\n\t\t\t\t\t\t\t\t\tawait this.externalReport(\r\n\t\t\t\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\t\t\t\tdynamicComponentContext,\r\n\t\t\t\t\t\t\t\t\t\tisViewOnly === true\r\n\t\t\t\t\t\t\t\t\t\t\t|| userHasEditRolePermissions ===\r\n\t\t\t\t\t\t\t\t\t\t\t\tfalse\r\n\t\t\t\t\t\t\t\t\t\t\t|| isStandardReport ===\r\n\t\t\t\t\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes\r\n\t\t\t\t.dynamicCommonTableComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await this.simpleDataPromiseTable(\r\n\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes\r\n\t\t\t\t.dynamicReallySimpleSyndicationFeedReaderComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await this.reallySimpleSyndicationFeed(\r\n\t\t\t\t\t\t\tdisplayComponentInstance)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes\r\n\t\t\t\t.dynamicSummaryCardComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await this.summaryCard(\r\n\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes\r\n\t\t\t\t.dynamicWeatherCardComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: {}\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase DynamicComponentLookup.supportedTypes\r\n\t\t\t\t.dynamicFormlyWrapperComponent:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource:\r\n\t\t\t\t\t\t\tdynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await this.dynamicLayout(\r\n\t\t\t\t\t\t\tdisplayComponentInstance,\r\n\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\twidgetData =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource: dynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: await StringHelper\r\n\t\t\t\t\t\t\t.transformToDataPromise(\r\n\t\t\t\t\t\t\t\twidgetDisplayComponentDefinition.dataPromise,\r\n\t\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn widgetData;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a wizard ready for display from the sent\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to be instantiated as a wizard.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this wizard.\r\n\t * @returns {Promise}\r\n\t * An awaitable wizard ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async wizard(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tconst jsonDefinition: IWizardContext =\r\n\t\t\tdisplayComponentInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tdynamicComponentContext.data =\r\n\t\t\tawait this.getMergedInitialParameterData(\r\n\t\t\t\tdisplayComponentInstance.jsonInitialParameters,\r\n\t\t\t\tdynamicComponentContext);\r\n\r\n\t\tconst currentStepIndex: number =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tdynamicComponentContext.data.currentStepLabel)\r\n\t\t\t\t? 0\r\n\t\t\t\t: jsonDefinition.wizardSteps.findIndex(\r\n\t\t\t\t\t(wizardStep: any) =>\r\n\t\t\t\t\t\twizardStep.stepName ===\r\n\t\t\t\t\t\t\tdynamicComponentContext.data.currentStepLabel);\r\n\r\n\t\tconst decoratedWizardSteps: IWizardStep[] = [];\r\n\t\tlet wizardMenuItems: IWizardStepMenuItem[] = [];\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < jsonDefinition.wizardSteps.length;\r\n\t\t\tindex++)\r\n\t\t{\r\n\t\t\tconst currentStepDefinition: any =\r\n\t\t\t\tjsonDefinition.wizardSteps[index];\r\n\r\n\t\t\tconst stepDisplayComponent: DisplayComponentInstance =\r\n\t\t\t\tawait this.displayComponentService\r\n\t\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\t\tcurrentStepDefinition.displayComponent,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t\tconst reloadVerify: boolean = currentStepIndex > index;\r\n\r\n\t\t\t// Require security and ownership permissions for all wizard steps.\r\n\t\t\tif (AnyHelper.isNull(stepDisplayComponent))\r\n\t\t\t{\r\n\t\t\t\twizardMenuItems = [];\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst step: any =\r\n\t\t\t\tstepDisplayComponent\r\n\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t.jsonDefinition;\r\n\r\n\t\t\tconst stepLayout: FormlyFieldConfig[] =\r\n\t\t\t\tthis.getParameterLayoutSchema(\r\n\t\t\t\t\tstep.stepDefinition,\r\n\t\t\t\t\tstep.stepLayout,\r\n\t\t\t\t\tdynamicComponentContext);\r\n\r\n\t\t\tconst currentWizardStepContext:\r\n\t\t\t\tIDynamicComponentContext =\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource: dynamicComponentContext.source,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tdata: await this.getMergedInitialParameterData(\r\n\t\t\t\t\t\t\t\tstepDisplayComponent.jsonInitialParameters,\r\n\t\t\t\t\t\t\t\tdynamicComponentContext)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\twizardMenuItems.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: currentStepDefinition.stepName,\r\n\t\t\t\t\tcurrentData: currentWizardStepContext.data,\r\n\t\t\t\t\tlastContactData: currentWizardStepContext.data\r\n\t\t\t\t});\r\n\t\t\tconst stepAlwaysVerify: any =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tstep.alwaysVerify)\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: JSON.parse(step.alwaysVerify);\r\n\t\t\tconst backLabelIndexZero: any =\r\n\t\t\t\tindex === 0\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: 'Back';\r\n\t\t\tconst hideNextButton: any =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tstep.hideNextButton)\r\n\t\t\t\t\t? false\r\n\t\t\t\t\t: JSON.parse(step.hideNextButton);\r\n\t\t\tconst defaultLabel: any =\r\n\t\t\t\thideNextButton\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: 'Next';\r\n\t\t\tdecoratedWizardSteps.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\talwaysVerify:\r\n\t\t\t\t\t\tdynamicComponentContext.data.automateVerify === true\r\n\t\t\t\t\t\t\t|| reloadVerify === true\r\n\t\t\t\t\t\t\t? false\r\n\t\t\t\t\t\t\t: stepAlwaysVerify,\r\n\t\t\t\t\tbackLabel:\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(step.backLabel)\r\n\t\t\t\t\t\t\t? backLabelIndexZero\r\n\t\t\t\t\t\t\t: step.backLabel,\r\n\t\t\t\t\tdisplayComponent:\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(step.displayComponent)\r\n\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t: step.displayComponent,\r\n\t\t\t\t\tnextLabel:\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(step.nextLabel)\r\n\t\t\t\t\t\t\t? defaultLabel\r\n\t\t\t\t\t\t\t: step.nextLabel,\r\n\t\t\t\t\tstepDefinition: step.stepDefinition,\r\n\t\t\t\t\tstepLayout: stepLayout,\r\n\t\t\t\t\tclientMessage:\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(step.clientMessage)\r\n\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t: step.clientMessage,\r\n\r\n\t\t\t\t\t// Store functions as strings for later interpolation.\r\n\t\t\t\t\tbackActionRaw: step.backAction,\r\n\t\t\t\t\tstepDisplayRaw: step.stepDisplay,\r\n\t\t\t\t\tnextActionRaw: step.nextAction,\r\n\t\t\t\t\tvalidatorRaw: step.validator,\r\n\t\t\t\t\tallowedToContinueRaw:\r\n\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(step.allowedToContinue)\r\n\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t: step.allowedToContinue,\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn \r\n\t\t{\r\n\t\t\tdisplayedWizardMenuItems: wizardMenuItems,\r\n\t\t\tdisplayedWizardSteps: decoratedWizardSteps,\r\n\t\t\tlabel: jsonDefinition.label,\r\n\t\t\twizardMenuItems: wizardMenuItems,\r\n\t\t\twizardSteps: decoratedWizardSteps\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the wizard step functions to perform as expected when\r\n\t * ran in the dynamic wizard component. The context source is the wizard\r\n\t * page which holds a reference to the page source (The component that\r\n\t * created the wizard).\r\n\t *\r\n\t * @param {IWizardStep[]} wizardSteps\r\n\t * The wizard steps that require functions to run against the wizard\r\n\t * component.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for the wizard component.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic initializeWizardStepFunctions(\r\n\t\twizardSteps: IWizardStep[],\r\n\t\tdynamicComponentContext: IDynamicComponentContext): void\r\n\t{\r\n\t\tconst emptyFunction: Function =\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\t// No implementation.\r\n\t\t\t};\r\n\r\n\t\tfor (const wizardStep of wizardSteps)\r\n\t\t{\r\n\t\t\twizardStep.backAction =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(wizardStep.backActionRaw)\r\n\t\t\t\t\t? emptyFunction\r\n\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\twizardStep.backActionRaw,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t\twizardStep.nextAction =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(wizardStep.nextActionRaw)\r\n\t\t\t\t\t? emptyFunction\r\n\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\twizardStep.nextActionRaw,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t\twizardStep.validator =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(wizardStep.validatorRaw)\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\twizardStep.validatorRaw,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t\twizardStep.allowedToContinue =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\twizardStep.allowedToContinueRaw)\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\twizardStep.allowedToContinueRaw,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t\twizardStep.stepDisplay =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(wizardStep.stepDisplayRaw)\r\n\t\t\t\t\t? () => true\r\n\t\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\t\twizardStep.stepDisplayRaw,\r\n\t\t\t\t\t\tdynamicComponentContext);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a to function call on each value found in the initial\r\n\t * parameter json object of a display component instance. This is\r\n\t * used to initialize parameter values that cannot be set through\r\n\t * defaults.\r\n\t *\r\n\t * @param {any} initialParameterJson\r\n\t * The json data initial parameter object as parsed from the\r\n\t * display component instance.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The context of the current page displaying components.\r\n\t * @param {any} secondaryParameterJson\r\n\t * The json data secondary parameter object as parsed from the\r\n\t * url route or other preset data objects.\r\n\t * @returns {any}\r\n\t * A parameter data value interpolated and created from the sent data.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic async getMergedInitialParameterData(\r\n\t\tinitialParameterJson: any,\r\n\t\tpageContext: IDynamicComponentContext,\r\n\t\tsecondaryParameterJson: any = {}): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(initialParameterJson))\r\n\t\t{\r\n\t\t\treturn {\r\n\t\t\t\t...pageContext.data,\r\n\t\t\t\t...secondaryParameterJson\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfor (const propertyName of Object.keys(initialParameterJson))\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNull(pageContext.data[propertyName]))\r\n\t\t\t{\r\n\t\t\t\tpageContext.data[propertyName] =\r\n\t\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\tinitialParameterJson[propertyName],\r\n\t\t\t\t\t\tpageContext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\t...pageContext.data,\r\n\t\t\t...secondaryParameterJson\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a common data object for use in display component\r\n\t * parameters matching an entity instance or page context\r\n\t * structure.\r\n\t *\r\n\t * @param {any} dataValue\r\n\t * The json data value of the display component parameters.\r\n\t * @returns {any}\r\n\t * A parameter data value created from the sent data.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic getParameterData(\r\n\t\tdataValue: any): any\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tdata: {...dataValue}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a parameter layout schema matching the sent json\r\n\t * schema definition.\r\n\t *\r\n\t * @param {any} parameterDefinition\r\n\t * The json definition parameters for this display component.\r\n\t * @param {FormlyFieldConfig[]} parameterLayout\r\n\t * The json parameter layout schema for this display component.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this parameter layout schema.\r\n\t * @returns {any}\r\n\t * A layout schema created from the parameter definition.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tpublic getParameterLayoutSchema(\r\n\t\tparameterDefinition: any,\r\n\t\tparameterLayout: FormlyFieldConfig[],\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tFormlyFieldConfig[]\r\n\t{\r\n\t\tif (AnyHelper.isNull(parameterLayout)\r\n\t\t\t|| parameterLayout.length === 0)\r\n\t\t{\r\n\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tparameterDefinition)\r\n\t\t\t\t? null\r\n\t\t\t\t: JSON.parse(new JsonSchemaLayout()\r\n\t\t\t\t\t.generateDefaultLayout(\r\n\t\t\t\t\t\tparameterDefinition,\r\n\t\t\t\t\t\tfalse));\r\n\t\t}\r\n\r\n\t\treturn FormlyHelper.getFormlyLayout(\r\n\t\t\tparameterLayout,\r\n\t\t\tdynamicComponentContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a chart definition from a json chart display instance.\r\n\t *\r\n\t * @async\r\n\t * @param {any} chartDefinition\r\n\t * The json definition definining a chart display instance.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this chart definition.\r\n\t * @returns {Promise>}\r\n\t * An awaitable chart definition ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tprivate async getChartDefinition(\r\n\t\tchartDefinition: any,\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tPromise>\r\n\t{\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tchartColors: chartDefinition.colors,\r\n\t\t\t\tchartConfiguration: await StringHelper\r\n\t\t\t\t\t.transformToDataPromise(\r\n\t\t\t\t\t\tchartDefinition.chartConfiguration,\r\n\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\tchartPivotProperty: chartDefinition.pivotProperty,\r\n\t\t\t\tchartPivotProperties: chartDefinition.pivotProperties,\r\n\t\t\t\tchartRadialGaugeChart: chartDefinition.radialGaugeChart,\r\n\t\t\t\tchartSummaryFunction: chartDefinition.summaryFunction,\r\n\t\t\t\tdataPromise: StringHelper\r\n\t\t\t\t\t.transformToDataPromise(\r\n\t\t\t\t\t\tchartDefinition.dataPromise,\r\n\t\t\t\t\t\tdynamicComponentContext),\r\n\t\t\t\tgroupByCount: chartDefinition.groupByCount\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a dashboard widget from a populated dashboard widget\r\n\t * display component instance.\r\n\t *\r\n\t * @async\r\n\t * @param {string} dynamicComponentName\r\n\t * The name of the dynamic component to display in this widget.\r\n\t * @param {boolean} includeSecondaryDisplay\r\n\t * If true this will also load and prepare a secondary display. The default\r\n\t * value is true.\r\n\t * @param {any} widgetDefinition\r\n\t * The parsed json definition of the widget display instance.\r\n\t * @param {FormlyFieldConfig[]} parameterLayoutSchema\r\n\t * The json layout schema for widget parameters.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The dynamic component context for the page displaying the widget.\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance for widget content.\r\n\t * @param {DisplayComponentInstance} widgetDisplayComponentInstance\r\n\t * The display component instance for the widget.\r\n\t * @param {IDynamicComponentContext} widgetContext\r\n\t * The dynamic component context for this dashboard widget.\r\n\t * @returns {IDashboardWidget}\r\n\t * A dashboard widget ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tprivate async getDashboardWidget(\r\n\t\tdynamicComponentName: string,\r\n\t\tincludeSecondaryDisplay: boolean,\r\n\t\twidgetDefinition: any,\r\n\t\tparameterLayoutSchema: FormlyFieldConfig[],\r\n\t\tpageContext: IDynamicComponentContext,\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\twidgetDisplayComponentInstance: DisplayComponentInstance,\r\n\t\twidgetContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tlet secondaryWidget: IDashboardWidget;\r\n\r\n\t\tif (includeSecondaryDisplay === true\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\twidgetDefinition.secondaryDisplayComponent))\r\n\t\t{\r\n\t\t\tconst secondaryDisplayComponent: DisplayComponentInstance =\r\n\t\t\t\tawait this.displayComponentService\r\n\t\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\t\twidgetDefinition.secondaryDisplayComponent,\r\n\t\t\t\t\t\twidgetContext);\r\n\r\n\t\t\tif (!AnyHelper.isNull(secondaryDisplayComponent))\r\n\t\t\t{\r\n\t\t\t\tsecondaryWidget =\r\n\t\t\t\t\tawait this.dashboardWidget(\r\n\t\t\t\t\t\tsecondaryDisplayComponent,\r\n\t\t\t\t\t\tpageContext,\r\n\t\t\t\t\t\tfalse);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tdisplayComponentInstance: displayComponentInstance,\r\n\t\t\t\tdynamicComponent: dynamicComponentName,\r\n\t\t\t\tfloatingIcon: AnyHelper.isNull(widgetDefinition.floatingIcon)\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: widgetDefinition.floatingIcon,\r\n\t\t\t\tforceSecondaryOverlay: widgetDefinition.forceSecondaryOverlay,\r\n\t\t\t\tremoveBoxShadow: widgetDefinition.removeBoxShadow ?? false,\r\n\t\t\t\theight: widgetDefinition.height,\r\n\t\t\t\tparameterLayoutSchema: parameterLayoutSchema,\r\n\t\t\t\tparameterLayoutData:\r\n\t\t\t\t\tthis.getParameterData(\r\n\t\t\t\t\t\tpageContext.data),\r\n\t\t\t\twidgetContext: widgetContext,\r\n\t\t\t\twidgetDisplayComponentInstance: widgetDisplayComponentInstance,\r\n\t\t\t\twidth: widgetDefinition.width,\r\n\t\t\t\tsecondaryDynamicComponent:\r\n\t\t\t\t\tsecondaryWidget?.widgetDisplayComponentInstance\r\n\t\t\t\t\t\t?.displayComponentDefinition\r\n\t\t\t\t\t\t.parsedJson\r\n\t\t\t\t\t\t.definition\r\n\t\t\t\t\t\t.dynamicComponent\r\n\t\t\t\t\t\t?? secondaryWidget?.widgetDisplayComponentInstance\r\n\t\t\t\t\t\t\t?.displayComponentDefinition\r\n\t\t\t\t\t\t\t.componentName,\r\n\t\t\t\tsecondaryDynamicContext: secondaryWidget?.widgetContext,\r\n\t\t\t\tsecondaryHeight: secondaryWidget?.height,\r\n\t\t\t\tsecondaryWidth: secondaryWidget?.width,\r\n\t\t\t\tsecondaryTopAlign: secondaryWidget?.topAlign,\r\n\t\t\t\tsecondaryFloatingIcon: AnyHelper.isNull(\r\n\t\t\t\t\tsecondaryWidget?.floatingIcon)\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: secondaryWidget.floatingIcon,\r\n\t\t\t\tresponsiveWidthMultiplier:\r\n\t\t\t\t\twidgetDefinition.responsiveWidthMultiplier ?? 1,\r\n\t\t\t\ttopAlign: widgetDefinition.topAlign,\r\n\t\t\t\tuseClickOnDisplay: widgetDefinition.useClickOnDisplay,\r\n\t\t\t\tflipCard: widgetDefinition.flipCard\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and populates a chart display component from a chart display\r\n\t * component name.\r\n\t *\r\n\t * @async\r\n\t * @param {string} chartDisplayComponentName\r\n\t * The chart display component name to load and populate.\r\n\t * @param {IDynamicComponentContext} dynamicComponentContext\r\n\t * The dynamic component context for this chart.\r\n\t * @returns {Promise>}\r\n\t * An awaitable chart definition ready for display.\r\n\t * @memberof DisplayComponentFactory\r\n\t */\r\n\tprivate async populateChartDisplayComponent(\r\n\t\tchartDisplayComponentName: string,\r\n\t\tdynamicComponentContext: IDynamicComponentContext):\r\n\t\tPromise>\r\n\t{\r\n\t\tconst chartDisplayComponent: DisplayComponentInstance =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\tchartDisplayComponentName,\r\n\t\t\t\t\tdynamicComponentContext);\r\n\r\n\t\tif (AnyHelper.isNull(chartDisplayComponent))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn this.getChartDefinition(\r\n\t\t\tchartDisplayComponent.displayComponentDefinition.jsonDefinition,\r\n\t\t\tdynamicComponentContext);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\n\r\n/**\r\n * A class representing a factory that can be used for common dropdown option\r\n * creation in user interface displays.\r\n *\r\n * @export\r\n * @class OptionsFactory\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class OptionsFactory\r\n{\r\n\t/**\r\n\t * Initializes a new instance of an options factory.\r\n\t *\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The security group api server.\r\n\t * @memberof OptionsFactory\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly securityGroupApiService: SecurityGroupApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a set of dropdown options that represent each string\r\n\t * sent in the values array. The label and value will be the string value.\r\n\t *\r\n\t * @async\r\n\t * @param {string[]} values\r\n\t * An array of strings that should be mapped into label/value dropdowns\r\n\t * with both pointing to the string value.\r\n\t * @param {boolean} addAnyOption\r\n\t * If true, this will add the 'Any' option as the initial value.\r\n\t * This value defaults to false.\r\n\t * @param {boolean} normalizeLabel\r\n\t * If true, this will normalize the label by correcting camel case and\r\n\t * capital letter spacing. This value defaults to true.\r\n\t * @returns {Promise\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\tnormalizeLabel === true\r\n\t\t\t\t\t\t\t\t? StringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\t\t\t\titem))\r\n\t\t\t\t\t\t\t\t: item,\r\n\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\titem\r\n\t\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a set of dropdown options that represent available\r\n\t * security groups.\r\n\t *\r\n\t * @async\r\n\t * @param {ISecurityGroup[]} [securityGroups=null]\r\n\t * An optional set of security groups to use for the dropdown options.\r\n\t * @returns {Promise\r\n\t{\r\n\t\tconst loadedSecurityGroups: ISecurityGroup[] =\r\n\t\t\tsecurityGroups\r\n\t\t\t\t?? await ApiHelper.getFullDataSet(\r\n\t\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\r\n\t\treturn loadedSecurityGroups\r\n\t\t\t.map(\r\n\t\t\t\t(item: ISecurityGroup) =>\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: item.name,\r\n\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tisArray\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for the any type.\r\n *\r\n * @export\r\n * @class AnyHelper\r\n */\r\nexport class AnyHelper\r\n{\r\n\t/**\r\n\t * Checks if the specified item is null, undefined, or an empty string\r\n\t * after a trim.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check if null, undefined, or an empty string after a trim.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the specified item is null, undefined, or an\r\n\t * empty string after performing a trim.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isNullOrWhitespace(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\tif (this.isNull(item)\r\n\t\t\t|| (typeof(item) === AppConstants.variableTypes.string\r\n\t\t\t\t&& item.replace(/\\s/g, '') === AppConstants.empty))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified item is null, undefined or empty.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check if null, undefined or empty.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the specified item is null, undefined or\r\n\t * empty.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isNullOrEmpty(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\tif (this.isNull(item)\r\n\t\t\t|| item === AppConstants.empty)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified item is null or undefined.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check if null or undefined.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the specified item is null or undefined.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isNull(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\tif (item == null\r\n\t\t\t|| item === AppConstants.undefined\r\n\t\t\t|| item === 'null')\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified item is null or empty array.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the specified item is an empty array or null.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isNullOrEmptyArray(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\treturn this.isNull(item)\r\n\t\t\t|| (isArray(item) && item.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether the supplied object is of type function.\r\n\t *\r\n\t * @static\r\n\t * @param {object} object\r\n\t * An object to check if its type is function.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the object is a function.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isFunction(\r\n\t\tobject: object): boolean\r\n\t{\r\n\t\tif (typeof object === 'function')\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether the supplied object is of type string.\r\n\t *\r\n\t * @static\r\n\t * @param {any} object\r\n\t * An object to check if its type is string.\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the object is a string.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static isString(\r\n\t\tobject: any): boolean\r\n\t{\r\n\t\tif (typeof object === AppConstants.variableTypes.string)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified item is null, undefined, or an empty string\r\n\t * after a trim and returns an empty string if true.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check if null, undefined, or an empty string after a trim.\r\n\t * @returns {string}\r\n\t * An empty string value if the specified item is null, undefined, or an\r\n\t * empty string after performing a trim, otherwise returns the original\r\n\t * item.\r\n\t * @memberof AnyHelper\r\n\t */\r\n\tpublic static nullOrWhitespaceToEmptyString(\r\n\t\titem: any): string\r\n\t{\r\n\t\tif (this.isNullOrWhitespace(item))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\treturn item;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for api query and aggregate filters.\r\n *\r\n * @export\r\n * @class ApiFilterHelper\r\n */\r\nexport class ApiFilterHelper\r\n{\r\n\t/**\r\n\t * Returns a filter to use when gathering time based values\r\n\t * based upon a pivot time value and a sent start and end date.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering values\r\n\t * between two dates.\r\n\t * @param {DateTime} startDate\r\n\t * The start date upon which to create a filter for.\r\n\t * @param {DateTime} endDate\r\n\t * The end date upon which to create a filter for.\r\n\t * @param {string} initialFilter\r\n\t * If sent this will append the date based comparison to this existing\r\n\t * initial filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering date based data between two\r\n\t * data values using an api filter or query.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getBetweenDateFilter(\r\n\t\tpivotProperty: string,\r\n\t\tstartDate: DateTime,\r\n\t\tendDate: DateTime,\r\n\t\tinitialFilter: string = AppConstants.empty): string\r\n\t{\r\n\t\treturn initialFilter\r\n\t\t\t+ ` ${pivotProperty} >= `\r\n\t\t\t+ `'${startDate.toISO()}' `\r\n\t\t\t+ `and ${pivotProperty} <= `\r\n\t\t\t+ `'${endDate.toISO()}'`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a filter to use when gathering time based values\r\n\t * based upon a pivot time value and a sent date.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering 30 days of values.\r\n\t * @param {DateTime} day\r\n\t * The day upon which to create a filter for.\r\n\t * @param {string} pivotComparator\r\n\t * The comparator to use in this api filter such as >, <=, eq, etc.\r\n\t * @param {string} initialFilter\r\n\t * If sent this will append the date based comparison to this existing\r\n\t * initial filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering date based data using\r\n\t * an api filter or query.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getDateFilter(\r\n\t\tpivotProperty: string,\r\n\t\tday: DateTime,\r\n\t\tpivotComparator: string = '>',\r\n\t\tinitialFilter: string = AppConstants.empty): string\r\n\t{\r\n\t\treturn initialFilter\r\n\t\t\t+ ` ${pivotProperty} ${pivotComparator} '${day.toISO()}'`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a filter to use when matching data with values in the\r\n\t * sent pivot property that exist in the sent string array of desired\r\n\t * matches.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering values.\r\n\t * @param {string[]} enumeration\r\n\t * The sent array of matching values to include in this filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering data with values for the pivot\r\n\t * property\r\n\t * found in the sent array of values.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getEnumerationFilter(\r\n\t\tpivotProperty: string,\r\n\t\tenumeration: string[]): string\r\n\t{\r\n\t\tlet filter: string = AppConstants.empty;\r\n\t\tenumeration.forEach((enumerable: string) =>\r\n\t\t{\r\n\t\t\tfilter +=\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? `${pivotProperty} eq '${enumerable}'`\r\n\t\t\t\t\t: ` or ${pivotProperty} eq '${enumerable}'`;\r\n\t\t});\r\n\r\n\t\treturn `(${encodeURIComponent(filter)})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a filter to use when gathering the last 30 days of values\r\n\t * based upon a pivot time value and a sent day to get the last\r\n\t * 30 days of data for.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering 30 days of values.\r\n\t * @param {DateTime} day\r\n\t * The day upon which to gather the last 30 days of values for.\r\n\t * @param {number} numberOfDays\r\n\t * The number amount of days.\r\n\t * @param {string} initialFilter\r\n\t * If sent this will append the date based comparison to this existing\r\n\t * initial filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering thirty days of data using\r\n\t * an api filter or query.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getLastNumberOfDaysFilter(\r\n\t\tpivotProperty: string,\r\n\t\tday: DateTime,\r\n\t\tnumberOfDays: number,\r\n\t\tinitialFilter: string = AppConstants.empty): string\r\n\t{\r\n\t\tconst returnDate: DateTime =\r\n\t\t\tDateHelper\r\n\t\t\t\t.startOf(day)\r\n\t\t\t\t.minus(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tday: numberOfDays\r\n\t\t\t\t\t});\r\n\t\tconst daysAgo: string =\r\n\t\t\treturnDate.toISO();\r\n\r\n\t\treturn initialFilter\r\n\t\t\t+ ` ${pivotProperty} >= '${daysAgo}'`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a filter to use when gathering the sent day's data values\r\n\t * limited to midnight of the current day.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering the current\r\n\t * day's values.\r\n\t * @param {DateTime} day\r\n\t * The day upon which to gather current day's values for.\r\n\t * This should be a system JS date.\r\n\t * @param {string} initialFilter\r\n\t * If sent this will append the date based comparison to this existing\r\n\t * initial filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering the current days data limited\r\n\t * to occurrences past midnight and for use in anapi filter or query.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getStartOfDayFilter(\r\n\t\tpivotProperty: string,\r\n\t\tday: DateTime,\r\n\t\tinitialFilter: string = AppConstants.empty): string\r\n\t{\r\n\t\tconst returnDate: string =\r\n\t\t\tDateHelper.startOf(day).toISO();\r\n\r\n\t\treturn initialFilter\r\n\t\t\t+ ` ${pivotProperty} >= '${returnDate}'`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a filter to use when matching data with values in the\r\n\t * sent pivot property that exist in the sent string array of desired\r\n\t * matches. This will allow wildcard or '*' matches.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pivotProperty\r\n\t * The property name upon which to pivot when gathering values.\r\n\t * @param {string[]} matches\r\n\t * The sent array of wildcard or exact matches to include in this filter.\r\n\t * @returns {string}\r\n\t * A set filter for use in gathering data with values for the pivot\r\n\t * property found in the sent array of wildcard or exact values.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getWildcardFilter(\r\n\t\tpivotProperty: string,\r\n\t\tmatches: string): string\r\n\t{\r\n\t\tlet filter: string = AppConstants.empty;\r\n\t\tconst splitMatches =\r\n\t\t\tmatches.split(AppConstants.characters.comma);\r\n\r\n\t\tsplitMatches.forEach((enumerable: string) =>\r\n\t\t{\r\n\t\t\tconst isWildcard: boolean =\r\n\t\t\t\tenumerable.indexOf(\r\n\t\t\t\t\tAppConstants.characters.asterisk) !== -1;\r\n\t\t\tconst cleanedFilter: string =\r\n\t\t\t\tenumerable.replace(\r\n\t\t\t\t\tAppConstants.characters.asterisk,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\t\tconst newFilter: string =\r\n\t\t\t\tisWildcard === true\r\n\t\t\t\t\t? `${pivotProperty}.Contains('${cleanedFilter}') eq true`\r\n\t\t\t\t\t: `${pivotProperty} eq '${cleanedFilter}'`;\r\n\r\n\t\t\tfilter +=\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? `(${newFilter})`\r\n\t\t\t\t\t: ` or (${newFilter})`;\r\n\t\t});\r\n\r\n\t\treturn `(${encodeURIComponent(filter)})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an enumerated filter of comma separated and quoted strings\r\n\t * found in the sent string array.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} array\r\n\t * The array of strings to comma separate and add quote characters to.\r\n\t * @param {string} array\r\n\t * The character to quote this item with, this value defaults to a\r\n\t * single quote.\r\n\t * @returns {string}\r\n\t * A set filter of comma separated and quoted strings for filter\r\n\t * enumeration.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static commaSeparatedStringValues(\r\n\t\tarray: string[],\r\n\t\tquoteCharacter: string = '\\''): string\r\n\t{\r\n\t\treturn array\r\n\t\t\t.map((value) =>\r\n\t\t\t\t`${quoteCharacter}${encodeURIComponent(value)}`\r\n\t\t\t\t\t+ `${quoteCharacter}`)\r\n\t\t\t.join(AppConstants.characters.comma);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of entity types or a singular entity type, this will\r\n\t * calculate and return a filter that can be used to filter by entity type.\r\n\t *\r\n\t * @static\r\n\t * @param {EntityType | EntityType[]} entityType\r\n\t * The set of entity types to refine into an entity type based filter.\r\n\t * @returns {string}\r\n\t * A filter that can be used when querying for type based logic.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getEntityTypeFilter(\r\n\t\tentityType: EntityType | EntityType[],\r\n\t\tuseExcludeFilter: boolean = false): string\r\n\t{\r\n\t\tconst filterCondition: string =\r\n\t\t\t(useExcludeFilter === true\r\n\t\t\t\t? AppConstants.filterQueryOperators.notEqual\r\n\t\t\t\t: AppConstants.filterQueryOperators.equal);\r\n\r\n\t\tif (Array.isArray(entityType))\r\n\t\t{\r\n\t\t\treturn entityType.map(\r\n\t\t\t\t(item: EntityType) =>\r\n\t\t\t\t\t`${AppConstants.commonProperties.typeId} `\r\n\t\t\t\t\t\t+ filterCondition\r\n\t\t\t\t\t\t+ ` ${item.id}`)\r\n\t\t\t\t.join((useExcludeFilter === true\r\n\t\t\t\t\t? ' and '\r\n\t\t\t\t\t: ' or '));\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn `${AppConstants.commonProperties.typeId} ${filterCondition} `\r\n\t\t\t\t+ entityType.id;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of entity types, this will return the set of types\r\n\t * that match the sent wildcard filter.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} types\r\n\t * The set of entity types to refine into a set of entity types that match\r\n\t * the sent wildcard.\r\n\t * @param {string} wildcardTypeFilter\r\n\t * The wildcard type filter that will be used to find matching types based\r\n\t * on an exact match or on starting with the sent filter.\r\n\t * @returns {string[]}\r\n\t * The list of entity types that match the sent entity type filter.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getWildcardEntityTypes(\r\n\t\ttypes: string[],\r\n\t\twildcardTypeFilter: string): string[]\r\n\t{\r\n\t\treturn types\r\n\t\t\t.filter(\r\n\t\t\t\t(type: string) =>\r\n\t\t\t\t\ttype === wildcardTypeFilter\r\n\t\t\t\t\t\t|| type.startsWith(`${wildcardTypeFilter}.`))\r\n\t\t\t.map(\r\n\t\t\t\t(type: string) =>\r\n\t\t\t\t\ttype.replace(\r\n\t\t\t\t\t\tAppConstants.characters.asterisk,\r\n\t\t\t\t\t\tAppConstants.empty));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a constructed filter with the IN operator by the specified\r\n\t * criteria given a string array of values.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} values\r\n\t * The array of values to include in the IN operator.\r\n\t * @param {string} criteria\r\n\t * The field criteria column used to find matches.\r\n\t * @param {string} existingFilter\r\n\t * Any existing filter to append.\r\n\t * @returns {string[]}\r\n\t * The list of entity types that match the sent entity type filter.\r\n\t * @memberof ApiFilterHelper\r\n\t */\r\n\tpublic static getInQueryFilter(\r\n\t\tvalues: string[],\r\n\t\tcriteria: string,\r\n\t\texistingFilter: string = null): string\r\n\t{\r\n\t\tconst commaSeparatedValues: string =\r\n\t\t\tthis.commaSeparatedStringValues(\r\n\t\t\t\tvalues,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst inQueryString: string =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(commaSeparatedValues)\r\n\t\t\t\t? `(${criteria}`\r\n\t\t\t\t\t+ ` IN (${commaSeparatedValues}))`\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tconst partialFilter: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(existingFilter)\r\n\t\t\t\t? inQueryString\r\n\t\t\t\t: `${inQueryString} AND ${existingFilter}`;\r\n\r\n\t\treturn AnyHelper.isNullOrWhitespace(inQueryString)\r\n\t\t\t? existingFilter\r\n\t\t\t: partialFilter;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tSettings\r\n} from 'luxon';\r\n\r\n/**\r\n * A class containing static helper methods for api services.\r\n *\r\n * @export\r\n * @class ApiHelper\r\n */\r\nexport class ApiHelper\r\n{\r\n\t/**\r\n\t * RegExp to test a string for a full ISO 8601 Date\r\n\t * Does not do any sort of date validation, only checks if the string is\r\n\t * according to the ISO 8601 spec.\r\n\t * YYYY-MM-DDThh:mm:ss\r\n\t * YYYY-MM-DDThh:mm:ssTZD\r\n\t * YYYY-MM-DDThh:mm:ss.sTZD\r\n\t * @see: https://www.w3.org/TR/NOTE-datetime\r\n\t * @type {RegExp}\r\n\t */\r\n\tpublic static readonly fullIsoExpression: RegExp =\r\n\t\t/\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?/ig;\r\n\r\n\t/**\r\n\t * Queries for and returns the full data set matching the sent filter\r\n\t * and order by. This data set will continue querying until all\r\n\t * database values are found.\r\n\t *\r\n\t * @async\r\n\t * @static\r\n\t * @param {BaseEntityApiService} apiService\r\n\t * The api service used to get a full data set.\r\n\t * @param {string} filter\r\n\t * The filter value that will be sent to the api service query method.\r\n\t * @param {string} orderBy\r\n\t * The order by value that will be sent to the api service query method.\r\n\t * @param {string} [instanceTypeGroup=null]\r\n\t * The instance type group to use for the api service query method if this\r\n\t * is using an entity instance type group.\r\n\t * @param {number} dataLimit\r\n\t * The number of data items to return per request.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will contain the full data set of a limited\r\n\t * result set api service.\r\n\t * @memberof ApiHelper\r\n\t */\r\n\tpublic static async getFullDataSet(\r\n\t\tapiService: BaseEntityApiService,\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\tinstanceTypeGroup: string = null,\r\n\t\tdataLimit: number = AppConstants.dataLimits.large): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(instanceTypeGroup))\r\n\t\t{\r\n\t\t\t(apiService).entityInstanceTypeGroup =\r\n\t\t\t\tinstanceTypeGroup;\r\n\t\t}\r\n\r\n\t\tlet resultSet: TDataType[] =\r\n\t\t\tawait apiService.query(\r\n\t\t\t\tfilter,\r\n\t\t\t\torderBy,\r\n\t\t\t\t0,\r\n\t\t\t\tdataLimit);\r\n\t\tlet dataCount: number = resultSet.length;\r\n\r\n\t\twhile (dataCount % dataLimit === 0)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(instanceTypeGroup))\r\n\t\t\t{\r\n\t\t\t\t(apiService).entityInstanceTypeGroup =\r\n\t\t\t\t\tinstanceTypeGroup;\r\n\t\t\t}\r\n\r\n\t\t\tconst nestedResultSet: TDataType[] =\r\n\t\t\t\tawait apiService.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\torderBy,\r\n\t\t\t\t\tdataCount,\r\n\t\t\t\t\tdataLimit);\r\n\r\n\t\t\tif (nestedResultSet.length === 0)\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tdataCount += nestedResultSet.length;\r\n\r\n\t\t\tresultSet =\r\n\t\t\t\t[\r\n\t\t\t\t\t...resultSet,\r\n\t\t\t\t\t...nestedResultSet\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn resultSet;\r\n\t}\r\n\r\n\t/**\r\n\t * Given an object that holds expected string based date and time values\r\n\t * based on the utc time zone, this method will replace each date and time\r\n\t * value with a consistently formatted system based timezone value of\r\n\t * that date and time.\r\n\t *\r\n\t * @static\r\n\t * @param {any} data\r\n\t * The data to transform.\r\n\t * @returns {any}\r\n\t * A transformed business logic equal object holding formatted values\r\n\t * expected by the system.\r\n\t * @memberof ApiHelper\r\n\t */\r\n\tpublic static transformBusinessLogicData(\r\n\t\tdata: any): any\r\n\t{\r\n\t\tif (AnyHelper.isNull(data))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (data instanceof Blob)\r\n\t\t{\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tlet stringifiedData: string =\r\n\t\t\tJSON.stringify(data);\r\n\r\n\t\tstringifiedData =\r\n\t\t\tstringifiedData\r\n\t\t\t\t.replaceAll(\r\n\t\t\t\t\tthis.fullIsoExpression,\r\n\t\t\t\t\tthis.replaceWithTimeZoneUtc.bind(this));\r\n\r\n\t\treturn JSON.parse(\r\n\t\t\tstringifiedData);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a string value that represents a date and time object, this will\r\n\t * transform and return the system time zone based value of that utc\r\n\t * string.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string value to transform.\r\n\t * @returns {string}\r\n\t * A transformed business logic equal date time of the sent string based on\r\n\t * the system time zone.\r\n\t * @memberof ApiHelper\r\n\t */\r\n\tprivate static replaceWithTimeZoneUtc(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\tconst convertedDateIso: string =\r\n\t\t\tDateHelper\r\n\t\t\t\t.fromUtcIso(\r\n\t\t\t\t\tvalue)\r\n\t\t\t\t.setZone(\r\n\t\t\t\t\tSettings.defaultZone)\r\n\t\t\t\t.toISO();\r\n\r\n\t\treturn `${convertedDateIso}`;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tTimeUnit\r\n} from 'chart.js';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/**\r\n * A class containing static helper methods for a chart interface.\r\n *\r\n * @export\r\n * @class ChartHelper\r\n */\r\nexport class ChartHelper\r\n{\r\n\t/**\r\n\t * Returns an array of time based labels signifying the sent day's available\r\n\t * hours for data sets. This will run until the sent date's hour so a full\r\n\t * day set would require a date with an hour of 23:00.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} day\r\n\t * The date to get the current days hour labels for. This will be the\r\n\t * 'final' hour value in this label display based on the existing date.\r\n\t * @returns {DateTime[]}\r\n\t * A predefined set of time based labels signifying the sent day values\r\n\t * available hours of data. If the current time is sent, this will add\r\n\t * a label for the current hour as the final label.\r\n\t * @memberof ObjectArrayHelper\r\n\t */\r\n\tpublic static getHourLabelsByDay(\r\n\t\tday: DateTime): DateTime[]\r\n\t{\r\n\t\treturn ChartHelper.getTimeBasedLabels(\r\n\t\t\tday.startOf(\r\n\t\t\t\tChartConstants.timeUnits.day),\r\n\t\t\tday.endOf(\r\n\t\t\t\tChartConstants.timeUnits.hour)\r\n\t\t\t\t.plus({ second: 1 }),\r\n\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an array of time based labels signifying the 30 days previous\r\n\t * to the sent day value, with a time unit of 'day' and a step size of 1.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} day\r\n\t * The date to get the last 30 days of labels for. This will be the\r\n\t * 'final' date value in this label display.\r\n\t * @param {number} numberOfDays\r\n\t * The number amount of days.\r\n\t * @returns {DateTime[]}\r\n\t * A predefined set of time based labels signifying the last 30 days\r\n\t * from the sent day value with a step time unit of 'day' and a step\r\n\t * size of 1.\r\n\t * @memberof ObjectArrayHelper\r\n\t */\r\n\tpublic static getLastNumberOfDayLabels(\r\n\t\tday: DateTime,\r\n\t\tnumberOfDays: number): DateTime[]\r\n\t{\r\n\t\tconst initialDayDateTime: DateTime =\r\n\t\t\tday.startOf(\r\n\t\t\t\tChartConstants.timeUnits.day)\r\n\t\t\t\t.plus({ day: -numberOfDays });\r\n\r\n\t\treturn this.getTimeBasedLabels(\r\n\t\t\tinitialDayDateTime,\r\n\t\t\tinitialDayDateTime\r\n\t\t\t\t.plus({ day: numberOfDays }),\r\n\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an array of time based labels ready for consumption in a time\r\n\t * based chart.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} initialTime\r\n\t * The initial time value to begin gathering time based labels for.\r\n\t * @param {DateTime} finalTime\r\n\t * The final time value to finish gathering time based labels for.\r\n\t * @param {TimeUnit} timeUnit\r\n\t * The unit of time that each label should split down to.\r\n\t * @see ChartConstants.timeUnits\r\n\t * @param {number} timeUnitStepSize\r\n\t * The step size per unit of time to increment for each label.\r\n\t * Ie: '1' 'day' or '24' 'hour's.\r\n\t * @returns {DateTime[]}\r\n\t * A predefined set of time based labels starting from the initial time\r\n\t * and running until the final time. Label 'steps' are defined by the time\r\n\t * unit and step size.\r\n\t * @memberof ObjectArrayHelper\r\n\t */\r\n\tpublic static getTimeBasedLabels(\r\n\t\tinitialTime: DateTime,\r\n\t\tfinalTime: DateTime,\r\n\t\ttimeUnit: TimeUnit,\r\n\t\ttimeUnitStepSize: number): DateTime[]\r\n\t{\r\n\t\tlet nextDateTime: DateTime =\r\n\t\t\tinitialTime.toLocal()\r\n\t\t\t\t.startOf(\r\n\t\t\t\t\ttimeUnit);\r\n\t\tconst finalDateTime: DateTime =\r\n\t\t\tfinalTime.toLocal()\r\n\t\t\t\t.startOf(\r\n\t\t\t\t\ttimeUnit);\r\n\r\n\t\tconst labelSet: DateTime[] = [];\r\n\t\twhile (nextDateTime <\r\n\t\t\tfinalDateTime.startOf(timeUnit))\r\n\t\t{\r\n\t\t\tlabelSet.push(nextDateTime);\r\n\t\t\tnextDateTime =\r\n\t\t\t\tnextDateTime\r\n\t\t\t\t\t.plus(\r\n\t\t\t\t\t\tJSON.parse(\r\n\t\t\t\t\t\t\t`{ \"${timeUnit}\": ${timeUnitStepSize} }`));\r\n\t\t}\r\n\t\tlabelSet.push(finalDateTime);\r\n\r\n\t\treturn labelSet;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDateTime,\r\n\tDurationUnit,\r\n\tSettings\r\n} from 'luxon';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for the date type.\r\n *\r\n * @export\r\n * @class DateHelper\r\n */\r\nexport class DateHelper\r\n{\r\n\t/**\r\n\t * Gets or sets preset formats to be used when accessing\r\n\t * the date helper.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic static readonly presetFormats:\r\n\t{\r\n\t\tdateAndHourFormat: string;\r\n\t\tdayOfWeekAndTimeFormat: string;\r\n\t\tinternationalDateFormat: string;\r\n\t\tinternationalFullDateFormat: string;\r\n\t\tlongDateFormat: string;\r\n\t\tshortDateFormat: string;\r\n\t} = {\r\n\t\t\tdateAndHourFormat: 'D hh:mm a',\r\n\t\t\tdayOfWeekAndTimeFormat: 'ccc LLL d yyyy',\r\n\t\t\tinternationalDateFormat: 'yyyy-MM-dd',\r\n\t\t\tinternationalFullDateFormat: 'yyyy-MM-dd hh:mm:ss.ms',\r\n\t\t\tlongDateFormat: 'D',\r\n\t\t\tshortDateFormat: 'M/d/yy'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets some preset zones to be used when accessing\r\n\t * the date helper.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic static readonly presetZones:\r\n\t{\r\n\t\tutc: string;\r\n\t} = {\r\n\t\t\tutc: 'utc'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets some preset time units as described by the Luxon\r\n\t * documentation.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic static readonly timeUnits:\r\n\t{\r\n\t\tyear: string;\r\n\t\tmonth: string;\r\n\t\tday: string;\r\n\t\thour: string;\r\n\t\tminute: string;\r\n\t\tsecond: string;\r\n\t} = {\r\n\t\t\tyear: 'year',\r\n\t\t\tmonth: 'month',\r\n\t\t\tday: 'day',\r\n\t\t\thour: 'hour',\r\n\t\t\tminute: 'minute',\r\n\t\t\tsecond: 'second'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets some preset duration units as described by the Luxon\r\n\t * documentation.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CommonListComponent\r\n\t */\r\n\tpublic static readonly durationUnits:\r\n\t{\r\n\t\tyears: DurationUnit;\r\n\t\tmonths: DurationUnit;\r\n\t\tdays: DurationUnit;\r\n\t\thours: DurationUnit;\r\n\t\tminutes: DurationUnit;\r\n\t\tseconds: DurationUnit;\r\n\t} = {\r\n\t\t\tyears: 'years',\r\n\t\t\tmonths: 'months',\r\n\t\t\tdays: 'days',\r\n\t\t\thours: 'hours',\r\n\t\t\tminutes: 'minutes',\r\n\t\t\tseconds: 'seconds'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Returns a date object with the expected value added to the sent\r\n\t * initial date.\r\n\t * These are time units as defined by luxon as 'year', 'quarter', 'month',\r\n\t * 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} initialDate\r\n\t * The initial date to alter by adding time units.\r\n\t * @param {number} numberOfUnitsToAdd\r\n\t * The number of time units to add to the sent date. If negative this will\r\n\t * subtract those time units.\r\n\t * @param {string} luxonTimeUnit\r\n\t * This will add the number of time units in the sent time unit to the date\r\n\t * value. This defaults to adding days.\r\n\t * @returns {DateTime}\r\n\t * A calculated date with the difference added to the initial date.\r\n\t * @memberof DateHelper\r\n\t */\r\n\tpublic static addTimeUnit(\r\n\t\tinitialDate: DateTime,\r\n\t\tnumberOfUnitsToAdd: number,\r\n\t\tluxonTimeUnit: string = this.timeUnits.day): DateTime\r\n\t{\r\n\t\treturn initialDate\r\n\t\t\t.plus(\r\n\t\t\t\tJSON.parse(\r\n\t\t\t\t\t`{ \"${luxonTimeUnit}\": ${numberOfUnitsToAdd} }`));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the time unit defined start value of the sent date.\r\n\t * These are time units as defined by luxon as 'year', 'quarter', 'month',\r\n\t * 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} date\r\n\t * The date value to get the time unit based start of.\r\n\t * @param {string} luxonTimeUnit\r\n\t * If sent this will calculate the differences in the sent time unit. This\r\n\t * defaults to the start of the day.\r\n\t * @returns {DateTime}\r\n\t * A date value that has been set to the start of the sent time unit.\r\n\t * @memberof DateHelper\r\n\t */\r\n\t public static startOf(\r\n\t\tdate: DateTime,\r\n\t\tluxonTimeUnit: string = this.timeUnits.day): DateTime\r\n\t{\r\n\t\treturn date.startOf(luxonTimeUnit);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the time unit defined end value of the sent date.\r\n\t * These are time units as defined by luxon as 'year', 'quarter', 'month',\r\n\t * 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} date\r\n\t * The date value to get the time unit based end of.\r\n\t * @param {string} luxonTimeUnit\r\n\t * If sent this will calculate the differences in the sent time unit. This\r\n\t * defaults to the end of the day.\r\n\t * @returns {DateTime}\r\n\t * A date value that has been set to the luxon based end of the sent time\r\n\t * unit.\r\n\t * @memberof DateHelper\r\n\t */\r\n\tpublic static endOf(\r\n\t\tdate: DateTime,\r\n\t\tluxonTimeUnit: string = this.timeUnits.day): DateTime\r\n\t{\r\n\t\treturn date.endOf(luxonTimeUnit);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted date available as a string. This will format to\r\n\t * the sent Luxon date format.\r\n\t * These are date formats as defined by Luxon:\r\n\t * https://github.com/moment/luxon/blob/master/docs/formatting.md\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} date\r\n\t * The date value to get the time unit based end of.\r\n\t * @param {string} luxonDateFormat\r\n\t * If sent this will return the date using the defined luxon date format.\r\n\t * This defaults to a short date format.\r\n\t * @returns {string}\r\n\t * A formatted string value which represents the date input.\r\n\t * @memberof DateHelper\r\n\t */\r\n\tpublic static formatDate(\r\n\t\tdate: DateTime,\r\n\t\tluxonDateFormat: string = this.presetFormats.shortDateFormat): string\r\n\t{\r\n\t\treturn date.toFormat(luxonDateFormat);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the differences in the sent time unit betwen the sent dates.\r\n\t * These are time units as defined by luxon as 'year', 'quarter', 'month',\r\n\t * 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} startDate\r\n\t * The start date for a time unit based difference.\r\n\t * @param {DateTime} endDate\r\n\t * The end date for a time unit based difference.\r\n\t * @param {boolean} includeTimeUnit\r\n\t * If sent and true, this will include the string representation of the\r\n\t * time unit in the display. This defaults to false.\r\n\t * @param {string} luxonTimeUnit\r\n\t * If sent this will calculate the differences in the sent time unit. This\r\n\t * defaults to the difference in days.\r\n\t * @returns {string}\r\n\t * A value for use in displaying a difference in dates.\r\n\t * @memberof DateHelper\r\n\t */\r\n\tpublic static getDateDifference(\r\n\t\tstartDate: DateTime,\r\n\t\tendDate: DateTime,\r\n\t\tincludeTimeUnit: boolean = false,\r\n\t\tluxonTimeUnit: string = this.timeUnits.day): string\r\n\t{\r\n\t\tconst multipleTimeUnit: string =\r\n\t\t\t`${luxonTimeUnit}s`;\r\n\r\n\t\tconst dateDifference: number =\r\n\t\t\tendDate.diff(\r\n\t\t\t\tstartDate,\r\n\t\t\t\tmultipleTimeUnit)\r\n\t\t\t\t.get(multipleTimeUnit);\r\n\r\n\t\tconst timeUnit: string = dateDifference > 1\r\n\t\t\t? ` ${StringHelper.toProperCase(multipleTimeUnit)}`\r\n\t\t\t: ` ${StringHelper.toProperCase(luxonTimeUnit)}`;\r\n\r\n\t\treturn dateDifference\r\n\t\t\t+ (includeTimeUnit === true\r\n\t\t\t\t? timeUnit\r\n\t\t\t\t: AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the days from now.\r\n\t * @param {string} isoString\r\n\t * The ISO date string.\r\n\t * @returns\r\n\t * the days from now. (Negative if in the past).\r\n\t */\r\n\tpublic static getDaysFromNow(\r\n\t\tisoString: string): number\r\n\t{\r\n\t\tconst dateToCheck: DateTime =\r\n\t\t\tDateTime.fromISO(isoString);\r\n\r\n\t\tconst diffString: string = this\r\n\t\t\t.getDateDifference(\r\n\t\t\t\tDateTime.now(),\r\n\t\t\t\tdateToCheck);\r\n\r\n\t\treturn Number(diffString);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the short date based string to display the date range of two\r\n\t * dates in string format.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} startDate\r\n\t * The start date for a date range value.\r\n\t * @param {DateTime} endDate\r\n\t * The end date for a date range value.\r\n\t * @returns {string}\r\n\t * A formatted string for use in displaying a range of dates.\r\n\t * ie: '1/1/20 to 3/1/20'.\r\n\t * @memberof DateHelper\r\n\t */\r\n\tpublic static getDateRange(\r\n\t\tstartDate: DateTime,\r\n\t\tendDate: DateTime): string\r\n\t{\r\n\t\treturn `${startDate.toFormat(this.presetFormats.shortDateFormat)} to `\r\n\t\t\t+ `${endDate.toFormat(this.presetFormats.shortDateFormat)}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts any unix date format into utc.\r\n\t *\r\n\t * @static\r\n\t * @param {number} unixDateTime\r\n\t * The date value in unix format to get the time unit in utc format.\r\n\t * @returns {DateTime}\r\n\t * A date value from the sent unix milliseconds since 1970.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static convertUnixToUTCDateTime(\r\n\t\tunixDateTime: number): DateTime\r\n\t{\r\n\t\tif (AnyHelper.isNull(unixDateTime))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn DateTime.fromSeconds(\r\n\t\t\tunixDateTime,\r\n\t\t\t{\r\n\t\t\t\tzone: this.getLocalTimeZone()\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a number of business days from two DateTimes.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} startDate\r\n\t * The start date used to calculate a number of business days.\r\n\t * @param {DateTime} startDate\r\n\t * The end date used to calculate a number of business days.\r\n\t * @returns {number}\r\n\t * The number of business days.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static getBusinessDaysFromRange(\r\n\t\tstartDate: DateTime,\r\n\t\tendDate: DateTime): number\r\n\t{\r\n\t\t// Note: At this time, we are only removing weekends from business days.\r\n\t\t// Holidays will be handled at a future time from system settings.\r\n\t\tlet workDays: number = 0;\r\n\t\tlet currentDate: DateTime = startDate;\r\n\t\twhile (currentDate < endDate)\r\n\t\t{\r\n\t\t\tif (currentDate.weekday !== 6 && currentDate.weekday !== 7)\r\n\t\t\t{\r\n\t\t\t\tworkDays++;\r\n\t\t\t}\r\n\r\n\t\t\tcurrentDate = currentDate.plus({ day: 1 });\r\n\t\t}\r\n\r\n\t\treturn workDays;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a system based DateTime from a sent ISO compliant\r\n\t * string that holds a utc valid format.\r\n\t *\r\n\t * @static\r\n\t * @param {string} isoString\r\n\t * The ISO compliant string.\r\n\t * @returns {DateTime}\r\n\t * The system DateTime object representing the sent utc ISO string.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static fromUtcIso(\r\n\t\tisoString: string): DateTime\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tisoString,\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tzone: DateHelper.presetZones.utc\r\n\t\t\t})\r\n\t\t\t.toLocal();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the current local system time zone based DateTime.\r\n\t *\r\n\t * @static\r\n\t * @param {boolean} convertToTrueLocal\r\n\t * If sent and true, this will further convert the current date time to\r\n\t * match true local time. This value defaults to false.\r\n\t * @returns {DateTime}\r\n\t * The DateTime object representing the current system time.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static getSystemDateTime(\r\n\t\tconvertToTrueLocal: boolean = false): DateTime\r\n\t{\r\n\t\tconst date: DateTime = DateTime.local();\r\n\r\n\t\treturn convertToTrueLocal === true\r\n\t\t\t? this.convertToTrueLocal(date)\r\n\t\t\t: date;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and local timezone in the expected IANA format for Luxon\r\n\t * support.\r\n\t *\r\n\t * @static\r\n\t * @returns {string}\r\n\t * The string based representation of the local IANA formatted time zone\r\n\t * of this client instance.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static getLocalTimeZone(): string\r\n\t{\r\n\t\treturn Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a javascript local representation of the utc based\r\n\t * system ISO string.\r\n\t * @warn This should be used sparingly. Current uses only include Calendar\r\n\t * support. This will alter the underlying time.\r\n\t *\r\n\t * @static\r\n\t * @param {string} isoString\r\n\t * The current system based time that should be altered to a matching local\r\n\t * JS Date.\r\n\t * @returns {Date}\r\n\t * A javascript date for use in a select few locations where a System time\r\n\t * should be altered to a local time based display.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static fromUtcSystemIsoToSimulatedLocalDate(\r\n\t\tisoString: string): Date\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tisoString)\r\n\t\t\t.setZone(\r\n\t\t\t\tthis.getLocalTimeZone(),\r\n\t\t\t\t{\r\n\t\t\t\t\tkeepLocalTime: true\r\n\t\t\t\t})\r\n\t\t\t.toJSDate();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the system time zone based representation of\r\n\t * a local shifted DateTime value created from the method\r\n\t * fromUtcSystemIsoToSimulatedLocalDate.\r\n\t * @warn This should be used sparingly. Current uses only include Calendar\r\n\t * support. This will alter the underlying time.\r\n\t *\r\n\t * @static\r\n\t * @param {string} isoString\r\n\t * The current iso string that represents the javascript simulated date.\r\n\t * @returns {string}\r\n\t * A system equivalent DateTime that represents the sent simulated\r\n\t * javascript date based ISO.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static fromSimulatedLocalDateToUtcSystemIso(\r\n\t\tisoString: string): string\r\n\t{\r\n\t\treturn DateTime.fromISO(\r\n\t\t\tisoString,\r\n\t\t\t{\r\n\t\t\t\tzone: this.getLocalTimeZone()\r\n\t\t\t})\r\n\t\t\t.setZone(\r\n\t\t\t\tSettings.defaultZone,\r\n\t\t\t\t{\r\n\t\t\t\t\tkeepLocalTime: true\r\n\t\t\t\t})\r\n\t\t\t.toISO();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the sent date time as the true local\r\n\t * representation of the system based DateTime object.\r\n\t * @warn This should be used sparingly. Current uses include desired\r\n\t * local display times using the DateTimeToTrueLocalPipe, and rare SQL calls\r\n\t * that also should display in a true local time.\r\n\t *\r\n\t * @static\r\n\t * @param {DateTime} systemDateTime\r\n\t * The current system time based DateTime that should be altered to\r\n\t * represent a true local DateTime.\r\n\t * @returns {DateTime}\r\n\t * A true local based DateTime that will default to displaying and\r\n\t * formatting as the matching local DateTime of the sent default zone\r\n\t * based system time.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static convertToTrueLocal(\r\n\t\tsystemDateTime: DateTime): DateTime\r\n\t{\r\n\t\tconst offset: number =\r\n\t\t\tDateTime.local().offset;\r\n\t\tconst localOffset: number =\r\n\t\t\tDateTime.local().setZone(DateHelper.getLocalTimeZone()).offset;\r\n\r\n\t\treturn systemDateTime\r\n\t\t\t.plus(\r\n\t\t\t\t{\r\n\t\t\t\t\tminute: localOffset - offset\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Determins if a string is a date.\r\n\t *\r\n\t * @static\r\n\t * @param {string} dateString\r\n\t * The string to test.\r\n\t * @returns {boolean}\r\n\t * A value of true if it is a date.\r\n\t * @memberof DateHelper\r\n\t*/\r\n\tpublic static isDate(\r\n\t\tdateString: string): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(dateString)\r\n\t\t\t|| dateString === 'null')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst localDate: Date = DateHelper\r\n\t\t\t\t.fromUtcSystemIsoToSimulatedLocalDate(dateString);\r\n\r\n\t\t\tconst dateTime: DateTime = DateTime\r\n\t\t\t\t.fromJSDate(localDate);\r\n\r\n\t\t\tconst formattedDate: string = DateHelper.formatDate(dateTime);\r\n\r\n\t\t\tif (formattedDate === 'Invalid DateTime')\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\n\r\n/**\r\n * A class containing static helper methods for the window document.\r\n *\r\n * @export\r\n * @class DocumentHelper\r\n */\r\nexport class DocumentHelper\r\n{\r\n\t/**\r\n\t * This method will return the page header height.\r\n\t *\r\n\t * @returns {number}\r\n\t * The current page header height.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static getPageHeaderHeight(): number\r\n\t{\r\n\t\treturn document.querySelector('.page-header')\r\n\t\t\t?.getBoundingClientRect().height;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will return the computed vertical position of the element\r\n\t * found by the id sent.\r\n\t *\r\n\t * @param {Document} document\r\n\t * The current window document that the element is being displayed in.\r\n\t * @param {string} elementId\r\n\t * The identifier of the element.\r\n\t * @returns {number}\r\n\t * The vertical position or top of the bounding rectangle for this element.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static getElementVerticalPositionById(\r\n\t\tdocument: Document,\r\n\t\telementId: string): number\r\n\t{\r\n\t\treturn Math.ceil(\r\n\t\t\tthis.getBoundingRectangleById(\r\n\t\t\t\tdocument,\r\n\t\t\t\telementId)?.top);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will return the client rectangle of an element by id.\r\n\t *\r\n\t * @param {Document} document\r\n\t * The current window document that the element is being displayed in.\r\n\t * @param {string} elementId\r\n\t * The identifier of the element.\r\n\t * @returns { DOMRect | null}\r\n\t * The bounding container rectangle of this element.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static getBoundingRectangleById(\r\n\t\tdocument: Document,\r\n\t\telementId: string): DOMRect\r\n\t{\r\n\t\tconst element: Element =\r\n\t\t\tdocument.querySelector('#' + elementId);\r\n\r\n\t\treturn AnyHelper.isNull(element)\r\n\t\t\t? null\r\n\t\t\t: element.getBoundingClientRect();\r\n\t}\r\n\r\n\t/**\r\n\t * This method will scroll to an existing window document element by id.\r\n\t * The selected element border will be displayed upon scrolling to the\r\n\t * element to highlight this area to the user.\r\n\t *\r\n\t * @param {Document} document\r\n\t * The current window document that the element is being displayed in.\r\n\t * @param {string} elementId\r\n\t * The identifier of the element.\r\n\t * @param {number} [formVerticalOffset]\r\n\t * If sent this can be used to offset from the top of the screen. This\r\n\t * value is the pixel measurement of the header and any content\r\n\t * displayed prior to the form.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static scrollToElementById(\r\n\t\tdocument: Document,\r\n\t\telementId: string,\r\n\t\tformVerticalOffset: number = 0): void\r\n\t{\r\n\t\tconst scrollToElement: Element =\r\n\t\t\tdocument.querySelector('#' + elementId);\r\n\r\n\t\tconst scrollTop: number =\r\n\t\t\twindow.scrollY\r\n\t\t\t\t+ scrollToElement.getBoundingClientRect().top\r\n\t\t\t\t- formVerticalOffset;\r\n\r\n\t\twindow.scroll(\r\n\t\t\t{\r\n\t\t\t\ttop: scrollTop,\r\n\t\t\t\tbehavior: 'smooth'\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This method will add and remove the class 'selected-element-border'.\r\n\t * This class adds a border of the primary theme color to the left\r\n\t * of targeted elements by id.\r\n\t *\r\n\t * @param {Document} document\r\n\t * The current window document that the element is being displayed in.\r\n\t * @param {string} elementId\r\n\t * The identifier of the element.\r\n\t * @param {number} [fadeDelay]\r\n\t * If sent this will change the delay time for the border to be displayed.\r\n\t * This defaults to one second.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static displaySelectedElementBorderById(\r\n\t\tdocument: Document,\r\n\t\telementId: string,\r\n\t\tfadeDelay: number = 1000): void\r\n\t{\r\n\t\tconst selectedElementClass: string =\r\n\t\t\t'selected-element-border';\r\n\t\tconst selectedElement: Element =\r\n\t\t\tdocument.querySelector('#' + elementId);\r\n\r\n\t\tselectedElement.classList\r\n\t\t\t.add(selectedElementClass);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tselectedElement.classList\r\n\t\t\t\t\t.remove(selectedElementClass);\r\n\t\t\t},\r\n\t\t\tfadeDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will show or hide an element that is available in the\r\n\t * DOM that matches the specified class.\r\n\t *\r\n\t * @param {string} elementSelector\r\n\t * The overlay class or id selector to update the display css style.\r\n\t * @param {boolean} display\r\n\t * The set of display true = block / false = none.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static setElementDisplay(\r\n\t\telementSelector: string,\r\n\t\tdisplay: boolean = false): void\r\n\t{\r\n\t\tconst element: HTMLElement =\r\n\t\t\tdocument.querySelector(elementSelector);\r\n\r\n\t\tif (AnyHelper.isNull(element))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.style.display =\r\n\t\t\tdisplay === true\r\n\t\t\t\t? AppConstants.displayTypes.block\r\n\t\t\t\t: AppConstants.displayTypes.none;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will set the opacity of an element that is available in the\r\n\t * DOM that matches the specified class.\r\n\t * @remarks This method is used to fade in and out elements, additional\r\n\t * setups such as positioning in css should be handled so when hidden this\r\n\t * is not displaying over UI elements.\r\n\t *\r\n\t * @param {string} elementSelector\r\n\t * The overlay class or id selector to update the opacity css style.\r\n\t * @param {boolean} display\r\n\t * The set of display true = 1 / false = 0. This value defaults to false.\r\n\t * @memberof DocumentHelper\r\n\t */\r\n\tpublic static setElementOpacity(\r\n\t\telementSelector: string,\r\n\t\tdisplay: boolean = false): void\r\n\t{\r\n\t\tconst element: HTMLElement =\r\n\t\t\tdocument.querySelector(elementSelector);\r\n\r\n\t\tif (AnyHelper.isNull(element))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.style.opacity =\r\n\t\t\tdisplay === true\r\n\t\t\t\t? '1'\r\n\t\t\t\t: '0';\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpErrorResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\nimport {\r\n\tILogEntry\r\n} from '@shared/interfaces/logs/log-entry.interface';\r\nimport {\r\n\tLogLevel\r\n} from '@shared/services/logger.service';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for handling errors that can be thrown.\r\n *\r\n * @export\r\n * @class ErrorHelper\r\n */\r\nexport class ErrorHelper\r\n{\r\n\t/**\r\n\t * Returns a log entry holding extended error details for a common\r\n\t * error interface.\r\n\t *\r\n\t * @async\r\n\t * @static\r\n\t * @param {ApiError | Error | HttpErrorResponse} error\r\n\t * The error being thrown.\r\n\t * @returns {Promise}\r\n\t * A promise that will resolve into a log entry ready for generic use.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tpublic static async getGenericErrorLogEntry(\r\n\t\terror: ApiError | Error | HttpErrorResponse): Promise\r\n\t{\r\n\t\tlet logEntry: ILogEntry;\r\n\r\n\t\tif (error\r\n\t\t\t&& error.message\r\n\t\t\t&& error.message.indexOf('\"name\":\"HttpErrorResponse\"') !== -1)\r\n\t\t{\r\n\t\t\tconst promiseErrorStart: number =\r\n\t\t\t\terror.message.indexOf('{');\r\n\t\t\tconst httpError: HttpErrorResponse =\r\n\t\t\t\t JSON.parse(\r\n\t\t\t\t\terror.message.substring(\r\n\t\t\t\t\t\tpromiseErrorStart));\r\n\r\n\t\t\tlogEntry =\r\n\t\t\t\tawait this.getHttpErrorResponseLogEntry(httpError);\r\n\t\t}\r\n\t\telse if (error\r\n\t\t\t&& error.message\r\n\t\t\t&& error.message\r\n\t\t\t\t.indexOf('Uncaught (in promise):') !== -1)\r\n\t\t{\r\n\t\t\tconst errorMessageLines: string[] =\r\n\t\t\t\terror.message.split(/\\r?\\n/);\r\n\r\n\t\t\tconst promiseErrorStart: number =\r\n\t\t\t\terrorMessageLines[0].indexOf('Error:');\r\n\t\t\tconst promiseErrorEnd: number =\r\n\t\t\t\terrorMessageLines[0].length;\r\n\r\n\t\t\tlogEntry =\r\n\t\t\t\tthis.getErrorLogEntry(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\terror.message.substring(\r\n\t\t\t\t\t\t\t\tpromiseErrorStart,\r\n\t\t\t\t\t\t\t\tpromiseErrorEnd),\r\n\t\t\t\t\t\tstack:\r\n\t\t\t\t\t\t\terror.message.substring(\r\n\t\t\t\t\t\t\t\tpromiseErrorEnd)\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\t\telse if (error instanceof ApiError)\r\n\t\t{\r\n\t\t\tlogEntry =\r\n\t\t\t\tthis.getApiErrorLogEntry(error);\r\n\t\t}\r\n\t\telse if (error instanceof HttpErrorResponse)\r\n\t\t{\r\n\t\t\tlogEntry =\r\n\t\t\t\tawait this.getHttpErrorResponseLogEntry(error);\r\n\t\t}\r\n\t\telse if (error instanceof Error)\r\n\t\t{\r\n\t\t\tlogEntry =\r\n\t\t\t\tthis.getErrorLogEntry(error);\r\n\t\t}\r\n\r\n\t\treturn logEntry;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a mapped ILogEntry with properties from an error of\r\n\t * type ApiError.\r\n\t *\r\n\t * @static\r\n\t * @param {ApiError} error\r\n\t * The error being thrown.\r\n\t * @returns {ILogEntry}\r\n\t * The log entry for this ApiError.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tprivate static getApiErrorLogEntry(\r\n\t\terror: ApiError): ILogEntry\r\n\t{\r\n\t\tconst errorMessages: string =\r\n\t\t\terror.messages\r\n\t\t\t\t.map((applicationMessage) =>\r\n\t\t\t\t\tapplicationMessage.description)\r\n\t\t\t\t.join(', ');\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tlevel: LogLevel[LogLevel.Error],\r\n\t\t\t\tmessage: error.title,\r\n\t\t\t\tdetails: errorMessages,\r\n\t\t\t\texception: errorMessages\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a mapped ILogEntry with properties from an error of\r\n\t * type Error.\r\n\t *\r\n\t * @static\r\n\t * @param {Error} error\r\n\t * The error being thrown.\r\n\t * @returns {ILogEntry}\r\n\t * The log entry for this Error.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tprivate static getErrorLogEntry(\r\n\t\terror: Error): ILogEntry\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tlevel: LogLevel[LogLevel.Error],\r\n\t\t\t\tmessage: error.message,\r\n\t\t\t\texception: error.stack\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a mapped ILogEntry with properties from an error of\r\n\t * type HttpErrorResponse.\r\n\t *\r\n\t * @async\r\n\t * @static\r\n\t * @param {HttpErrorResponse} error\r\n\t * The error being thrown.\r\n\t * @returns {Promise}\r\n\t * The log entry for this HttpErrorResponse.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tprivate static async getHttpErrorResponseLogEntry(\r\n\t\terror: HttpErrorResponse): Promise\r\n\t{\r\n\t\t// Network down messages are objects of type { isTrusted: boolean }\r\n\t\tconst errorObjectMessage: string =\r\n\t\t\tAnyHelper.isNullOrEmpty(error.error.isTrusted)\r\n\t\t\t\t? error.error\r\n\t\t\t\t: 'Unable to contact the server.';\r\n\r\n\t\tconst errorMessage: string =\r\n\t\t\terrorObjectMessage +\r\n\t\t\t\t` ${error.status} - ${error.statusText}`;\r\n\r\n\t\tconst errorDetails: string =\r\n\t\t\terror.error instanceof Blob\r\n\t\t\t\t? JSON.parse(await new Blob([error.error]).text())\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(applicationMessage: IApplicationMessage) =>\r\n\t\t\t\t\t\t\tthis.formatApplicationMessage(\r\n\t\t\t\t\t\t\t\tapplicationMessage))\r\n\t\t\t\t: error.message;\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tlevel: LogLevel[LogLevel.Error],\r\n\t\t\t\tmessage: errorMessage,\r\n\t\t\t\tdetails: errorDetails,\r\n\t\t\t\texception:\r\n\t\t\t\t\t`Name: '${error.name}', `\r\n\t\t\t\t\t+ `Type: '${error.type || ''}', `\r\n\t\t\t\t\t+ `Url: '${error.url}', `\r\n\t\t\t\t\t+ `Status: '${error.status} - ${error.statusText}'`\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an html formatted application message string representation.\r\n\t *\r\n\t * @static\r\n\t * @param {IApplicationMessage} applicationMessage\r\n\t * The application message to be parsed.\r\n\t * @returns {string}\r\n\t * An html formatted string representation for this application message\r\n\t * and child messages.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tprivate static formatApplicationMessage(\r\n\t\tapplicationMessage: IApplicationMessage): string\r\n\t{\r\n\t\treturn `${applicationMessage.description}
    `\r\n\t\t\t+ (applicationMessage.messages?.length > 0\r\n\t\t\t\t? '
      '\r\n\t\t\t\t\t+ applicationMessage.messages\r\n\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t(applicationMessageDetail: IApplicationMessage) =>\r\n\t\t\t\t\t\t\t\tthis.formatDetailDescription(\r\n\t\t\t\t\t\t\t\t\tapplicationMessageDetail.description))\r\n\t\t\t\t\t\t.join(AppConstants.empty)\r\n\t\t\t\t\t+ '
    '\r\n\t\t\t\t: AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a formatted description for an application messages nested details\r\n\t * application message array item.\r\n\t *\r\n\t * @static\r\n\t * @param {string} description\r\n\t * The application message description to be parsed.\r\n\t * @returns {string}\r\n\t * An html formatted string representation for this application message\r\n\t * description.\r\n\t * @memberof ErrorHelper\r\n\t */\r\n\tprivate static formatDetailDescription(\r\n\t\tdescription: string): string\r\n\t{\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase description.indexOf('AggregateException') !== -1:\r\n\t\t\t\treturn '
  • AggregateException: One or more errors '\r\n\t\t\t\t\t+ 'occurred.
  • ';\r\n\t\t\tcase description.indexOf('Custom Xml request failure') !== -1:\r\n\t\t\t\treturn '
  • WebException: Custom Xml request failure.
  • ';\r\n\t\t}\r\n\r\n\t\treturn `
  • ${description}
  • `;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\n\r\n/**\r\n * A class representing a client message detail for use in client message\r\n * based displays.\r\n *\r\n * @export\r\n * @class ClientMessageDetail\r\n */\r\nexport class ClientMessageDetail\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the client message detail class.\r\n\t *\r\n\t * @param {string} description\r\n\t * The primary message of this message detail class.\r\n\t * @param {IApplicationMessage[]} messages\r\n\t * The set of nested applications messages in this detail.\r\n\t * @memberof ClientMessageDetail\r\n\t */\r\n\tpublic constructor(\r\n\t\tdescription: string,\r\n\t\tmessages: IApplicationMessage[] = [])\r\n\t{\r\n\t\tthis.description = description;\r\n\t\tthis.messages = messages;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the description or primary display string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClientMessageDetail\r\n\t */\r\n\tpublic description: string;\r\n\r\n\t/**\r\n\t * Gets or sets the application messages associated with this client\r\n\t * message detail.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClientMessageDetail\r\n\t */\r\n\tpublic messages: IApplicationMessage[] = [];\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tSafeHtml\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tIActionResponseDto\r\n} from '@api/interfaces/workflow/action-response.dto.interface';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tErrorHelper\r\n} from '@shared/helpers/error.helper';\r\nimport {\r\n\tClientMessageDetail\r\n} from '@shared/implementations/application-data/client-message-detail';\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\nimport {\r\n\tILogEntry\r\n} from '@shared/interfaces/logs/log-entry.interface';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing a client side message for use in message\r\n * based displays.\r\n *\r\n * @export\r\n * @class ClientMessage\r\n */\r\nexport class ClientMessage\r\n{\r\n\t/**\r\n\t * Gets or sets the id for this client message. This is\r\n\t * generated at run time to allow for distinct gets.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the content for this client message. This can\r\n\t * be an html string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic content: string;\r\n\r\n\t/**\r\n\t * Gets or sets the content for this client message. This value\r\n\t * is used when displaying the content value using innerHtml.\r\n\t *\r\n\t * @type {SafeHtml}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic safeContent: SafeHtml;\r\n\r\n\t/**\r\n\t * Gets or sets additional data for this client message.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic data: any;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this client message should remain\r\n\t * displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic display: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the status for this client message as defined in\r\n\t * AppConstants.activityStatus.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic status: string;\r\n\r\n\t/**\r\n\t * Gets or sets the title for this client message. This can\r\n\t * be an html string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic title: string;\r\n\r\n\t/**\r\n\t * Gets or sets the title for this client message. This value\r\n\t * is used when displaying the content value using innerHtml.\r\n\t *\r\n\t * @type {SafeHtml}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic safeTitle: SafeHtml;\r\n\r\n\t/**\r\n\t * Gets or sets the display changed subject which is used to watch\r\n\t * for and debounce fade events. This can be subscribed to and\r\n\t * sent change events in components displaying this message.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic displayChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the truthy used to define if a banner message is expandable\r\n\t * due to additional extended details.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic extendedDetailsExist: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the set of extended details to display for this client\r\n\t * message.\r\n\t *\r\n\t * @type {ClientMessageDetail[]}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic extendedDetails: ClientMessageDetail[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of actions to associated with this client message.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic actions: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Sets the extended details for this client message.\r\n\t * Parses any data and outputs this into a list of ClientMessageDetails\r\n\t * allowing for a quick breakdown of additional data.\r\n\t * At this time, this only handles any error type and an IActionResponse.\r\n\t *\r\n\t * @async\r\n\t * @memberof ClientMessage\r\n\t */\r\n\tpublic async setExtendedDetails(): Promise\r\n\t{\r\n\t\tconst extendedDetails: ClientMessageDetail[] = [];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.data))\r\n\t\t{\r\n\t\t\t// IActionResponse from execute workflow\r\n\t\t\tif (!AnyHelper.isNullOrEmpty(this.data.workflowActionName))\r\n\t\t\t{\r\n\t\t\t\tconst actionResponse: IActionResponseDto =\r\n\t\t\t\t\tthis.data;\r\n\r\n\t\t\t\tconst orderedResponses: IApplicationMessage[] =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...actionResponse.preRequisiteResponses,\r\n\t\t\t\t\t\t...actionResponse.messages,\r\n\t\t\t\t\t\t...actionResponse.postRequisiteResponses\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\torderedResponses.forEach(\r\n\t\t\t\t\t(response: IApplicationMessage) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\textendedDetails.push(\r\n\t\t\t\t\t\t\tnew ClientMessageDetail(\r\n\t\t\t\t\t\t\t\tresponse.workflowActionName\r\n\t\t\t\t\t\t\t\t\t|| response.description,\r\n\t\t\t\t\t\t\t\tresponse.messages));\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (!AnyHelper.isNullOrEmpty(this.data)\r\n\t\t\t\t&& !AnyHelper.isNullOrEmpty(this.data.message))\r\n\t\t\t{\r\n\t\t\t\t// Error\r\n\t\t\t\tconst errorLogEntry: ILogEntry =\r\n\t\t\t\t\tawait ErrorHelper.getGenericErrorLogEntry(this.data);\r\n\r\n\t\t\t\tconst errorMessage = `${errorLogEntry.message}`;\r\n\t\t\t\textendedDetails.push(\r\n\t\t\t\t\tnew ClientMessageDetail(\r\n\t\t\t\t\t\tAnyHelper.isNullOrEmpty(errorLogEntry.details)\r\n\t\t\t\t\t\t\t? errorMessage\r\n\t\t\t\t\t\t\t: `${errorLogEntry.message}
    `\r\n\t\t\t\t\t\t\t\t+ `   ${errorLogEntry.details}`,\r\n\t\t\t\t\t\t[]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.extendedDetailsExist = extendedDetails.length > 0;\r\n\t\tthis.extendedDetails = extendedDetails;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tClientMessage\r\n} from '@shared/implementations/application-data/client-message';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for sending application events.\r\n *\r\n * @export\r\n * @class EventHelper\r\n */\r\nexport class EventHelper\r\n{\r\n\t/**\r\n\t * Dispatches a drawer add event and adds it to the specified target\r\n\t * component.\r\n\t *\r\n\t * @static\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to be displayed in this drawer.\r\n\t * This can be either a string with the component name or the component\r\n\t * class sent directly.\r\n\t * @param {string} targetComponent\r\n\t * The drawer display component to add this drawer to.\r\n\t * @note 'UtilityMenuComponent' is the right side utility drawer display.\r\n\t * @param {string} label\r\n\t * The label to be displayed for this drawer.\r\n\t * @param {string} icon\r\n\t * The icon to be displayed for this drawer.\r\n\t * @param {number} order\r\n\t * The order to display this drawer.\r\n\t * @param {boolean} startOpen\r\n\t * If true, this will add the drawer and open it immediately in overlay\r\n\t * mode.\r\n\t * @param {boolean} disabled\r\n\t * If true, this will add the drawer but disable the open drawer action.\r\n\t * @param {string} disabledMessage\r\n\t * If sent, this will be the message displayed in the drawer utility menu\r\n\t * tooltip when disabled.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchAddDrawerEvent(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string,\r\n\t\tlabel: string,\r\n\t\ticon: string,\r\n\t\torder: number,\r\n\t\tstartOpen: boolean,\r\n\t\tdisabled: boolean = false,\r\n\t\tdisabledMessage: string = null,\r\n\t\tdisplayDrawerOverlay: boolean = false ,\r\n\t\toverlayClassName: string = null): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.addDrawer,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tcontentComponent: contentComponent,\r\n\t\t\t\t\t\ttargetComponent: targetComponent,\r\n\t\t\t\t\t\tlabel: label,\r\n\t\t\t\t\t\ticon: icon,\r\n\t\t\t\t\t\torder: order,\r\n\t\t\t\t\t\tstartOpen: startOpen,\r\n\t\t\t\t\t\tdisabled: disabled,\r\n\t\t\t\t\t\tdisabledMessage: disabledMessage,\r\n\t\t\t\t\t\tdisplayDrawerOverlay: displayDrawerOverlay,\r\n\t\t\t\t\t\toverlayClassName: overlayClassName\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a utility title alter event.\r\n\t *\r\n\t * @static\r\n\t * @param {string} utilityId\r\n\t * The utility id to alter the title for.\r\n\t * @param {string} title\r\n\t * The new title to set for the utility.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchAlterUtilityTitleEvent(\r\n\t\tutilityId: string,\r\n\t\ttitle: string): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.alterUtilityTitle,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tutilityId: utilityId,\r\n\t\t\t\t\t\ttitle: title\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a refresh component event that will notify the target\r\n\t * component of the need to redraw the sent content component.\r\n\t *\r\n\t * @static\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component that needs to be refreshed.\r\n\t * This can be either a string with the component name or the component\r\n\t * class sent directly.\r\n\t * @param {string} targetComponent\r\n\t * The display component to be targetted that holds the content component.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchRefreshComponentEvent(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.refreshComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tcontentComponent: contentComponent,\r\n\t\t\t\t\t\ttargetComponent: targetComponent\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a badge promise event that will notify the target\r\n\t * component of the need to set a badge promise against the content\r\n\t * component.\r\n\t *\r\n\t * @static\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component that needs to hold a badge promise.\r\n\t * This can be either a string with the component name or the component\r\n\t * class sent directly.\r\n\t * @param {string} targetComponent\r\n\t * The display component to be targetted that holds the content component.\r\n\t * @param {string} badgePromise\r\n\t * The badge promise to set against the target component.\r\n\t * This will be the promise as a string that returns a badge\r\n\t * item.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchSetBadgePromiseEvent(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string,\r\n\t\tbadgePromise: string): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.setBadgePromise,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tcontentComponent: contentComponent,\r\n\t\t\t\t\t\ttargetComponent: targetComponent,\r\n\t\t\t\t\t\tbadgePromise: badgePromise\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a refresh badge promise event that will notify the target\r\n\t * component of the need to recalculate the badge promise value for\r\n\t * display.\r\n\t *\r\n\t * @static\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component that needs to have a badge refreshed.\r\n\t * This can be either a string with the component name or the component\r\n\t * class sent directly.\r\n\t * @param {string} targetComponent\r\n\t * The display component to be targetted that holds the content component.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchRefreshBadgePromiseEvent(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.refreshBadgePromise,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tcontentComponent: contentComponent,\r\n\t\t\t\t\t\ttargetComponent: targetComponent\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a refresh badge promise events that will notify the target\r\n\t * component of the need to recalculate the badge promises value for\r\n\t * display.\r\n\t *\r\n\t * @static\r\n\t * @param {Component[] | string[]} contentComponents\r\n\t * The dynamic components that needs to have a badge refreshed.\r\n\t * This can be either an array of strings with the component name or\r\n\t * the component classes sent directly.\r\n\t * @param {string} targetComponent\r\n\t * The display component to be targetted that holds the content component.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchRefreshBadgePromiseEvents(\r\n\t\tcontentComponents: Component[] | string[],\r\n\t\ttargetComponent: string): void\r\n\t{\r\n\t\tfor (const component of contentComponents)\r\n\t\t{\r\n\t\t\twindow.dispatchEvent(\r\n\t\t\t\tnew CustomEvent(\r\n\t\t\t\t\tAppEventConstants.refreshBadgePromise,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\tcontentComponent: component,\r\n\t\t\t\t\t\t\ttargetComponent: targetComponent\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a login message display event.\r\n\t * @note This will fire on a half second timeout to allow the login\r\n\t * screen time to display before displaying this message.\r\n\t *\r\n\t * @static\r\n\t * @param {string} title\r\n\t * The login primary or title message.\r\n\t * @param {string} content\r\n\t * The login message details.\r\n\t * @param {string} status\r\n\t * The banner status. Available options found in AppConstants.messageLevels.\r\n\t * @memberof EventHelper\r\n\t */\r\n\t public static dispatchLoginMessageEvent(\r\n\t\ttitle: string,\r\n\t\tcontent: string,\r\n\t\tstatus: string): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.dispatchMessage(\r\n\t\t\t\t\tAppEventConstants.addLoginMessage,\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tcontent,\r\n\t\t\t\t\tstatus);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.halfSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a banner display event.\r\n\t *\r\n\t * @static\r\n\t * @param {string} title\r\n\t * The banner primary or title message (Html allowed).\r\n\t * @param {string} content\r\n\t * The banner content (Html allowed).\r\n\t * @param {string} status\r\n\t * The banner status. Available options found in\r\n\t * AppConstants.activityStatus.\r\n\t * @param {any} data\r\n\t * The banner message data.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchBannerEvent(\r\n\t\ttitle: string,\r\n\t\tcontent: string,\r\n\t\tstatus: string,\r\n\t\tdata: any = null): void\r\n\t{\r\n\t\tthis.dispatchMessage(\r\n\t\t\tAppEventConstants.addBanner,\r\n\t\t\ttitle,\r\n\t\t\tcontent,\r\n\t\t\tstatus,\r\n\t\t\tdata);\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a full screen banner display event.\r\n\t *\r\n\t * @static\r\n\t * @param {string} title\r\n\t * The banner primary or title message (Html allowed).\r\n\t * @param {string} content\r\n\t * The banner content (Html allowed).\r\n\t * @param {string} status\r\n\t * The banner status. Available options found in\r\n\t * AppConstants.activityStatus.\r\n\t * @param {MenuItem[]} actions\r\n\t * The banner message actions.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchFullScreenBannerEvent(\r\n\t\ttitle: string,\r\n\t\tcontent: string,\r\n\t\tstatus: string,\r\n\t\tactions: MenuItem[] = []): void\r\n\t{\r\n\t\tthis.dispatchMessage(\r\n\t\t\tAppEventConstants.addFullScreenBanner,\r\n\t\t\ttitle,\r\n\t\t\tcontent,\r\n\t\t\tstatus,\r\n\t\t\tnull,\r\n\t\t\tactions);\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a context menu active event. This is used\r\n\t * for site layout service calculations.\r\n\t *\r\n\t * @static\r\n\t * @param {boolean} active\r\n\t * The truthy defining if the context menu is displayed.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchContextMenuActiveEvent(\r\n\t\tactive: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.contextMenuActive,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tactive: active\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a chat modal displayed event. This is used to determine\r\n\t * if we need to add a mask over the modal IFrame minimize action and close\r\n\t * the overlay drawer on minimize.\r\n\t *\r\n\t * @static\r\n\t * @param {boolean} displayed\r\n\t * The truthy defining if the chat modal is displayed.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchChatModalDisplayedEvent(\r\n\t\tdisplayed: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.chatModalDisplayed,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tdisplayed: displayed\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a context overlay display event. This\r\n\t * is the primary overlay.\r\n\t *\r\n\t * @static\r\n\t * @param {boolean} overlay\r\n\t * The truthy defining if the context overlay\r\n\t * should be displayed.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchContextOverlayEvent(\r\n\t\toverlay: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.displayContextOverlay,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\toverlay: overlay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a drawer overlay display event.\r\n\t *\r\n\t * @static\r\n\t * @param {boolean} overlay\r\n\t * The truthy defining if the drawer overlay\r\n\t * should be displayed.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchDrawerOverlayEvent(\r\n\t\toverlay: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.displayDrawerOverlay,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\toverlay: overlay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a hide associated menus event. This will\r\n\t * ensure that relational overlays are able to close\r\n\t * when a sibling is opened.\r\n\t *\r\n\t * @static\r\n\t * @param {string} identifier\r\n\t * The overlay identifier sending this event.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchHideAssociatedMenusEvent(\r\n\t\tidentifier: string): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.hideAssociatedMenus,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tid: identifier\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a redraw dashboard event.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchRedrawDashboardEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew Event(\r\n\t\t\t\tAppEventConstants.redrawDashboard));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a reload product settings event.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchReloadProductSettingsEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew Event(\r\n\t\t\t\tAppEventConstants.reloadProductSettings));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a shared repeater item altered event which is used to ensure\r\n\t * shared repeaters are updated to accurately reflect the altered\r\n\t * data.\r\n\t *\r\n\t * @static\r\n\t * @param {string} repeaterKey\r\n\t * The repeater's data location key.\r\n\t * @param {string} repeaterFilter\r\n\t * The repeaters data filter for shared repeaters.\r\n\t * @param {number} itemIndex\r\n\t * The item index removed from the repeater. If this value is not sent\r\n\t * this event will be handled to update an on add event.\r\n\t * @memberof EventHelper\r\n\t */\r\n\t public static dispatchRepeaterItemAlteredEvent(\r\n\t\trepeaterKey: string,\r\n\t\trepeaterFilter: string,\r\n\t\trepeaterAction: string,\r\n\t\titemIndex: number = null): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.repeaterItemAltered,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\trepeaterKey: repeaterKey,\r\n\t\t\t\t\t\trepeaterFilter: repeaterFilter,\r\n\t\t\t\t\t\titemIndex: itemIndex,\r\n\t\t\t\t\t\trepeaterAction: repeaterAction\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a shared repeater clean model event which is used to ensure\r\n\t * the data is in sync with the latest cleaned model.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchRepeaterCleanModelEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.repeaterCleanModel));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a set content context event which is captured at the\r\n\t * application level and sent to listening children.\r\n\t *\r\n\t * @static\r\n\t * @param {IDynamicComponentContext} contentContext\r\n\t * The main site level content section context.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchSetContentContextEvent(\r\n\t\tcontentContext: IDynamicComponentContext): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.setContentContext,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tcontentContext: contentContext\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a set utility menu event which is captured at\r\n\t * the utility menu level.\r\n\t *\r\n\t * @static\r\n\t * @param {string} utilityMenuOperationGroupName\r\n\t * The utlity menu to display.\r\n\t * @param {string | Component} activeDrawerComponent\r\n\t * If sent, this will be the name or component to show as active when\r\n\t * the utility menu is loaded.\r\n\t * @param {string} activeDrawerItemDescription\r\n\t * If sent, this will be the unique string of the item in the utility menu\r\n\t * component to show as active when the active drawer is opened.\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchSetUtilityMenuEvent(\r\n\t\tutilityMenuOperationGroupName: string,\r\n\t\tactiveDrawerComponent: string | Component = AppConstants.empty,\r\n\t\tactiveDrawerItemDescription: string = AppConstants.empty): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.setUtilityMenu,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tutilityMenuOperationGroupName:\r\n\t\t\t\t\t\t\tutilityMenuOperationGroupName,\r\n\t\t\t\t\t\tactiveDrawerComponent:\r\n\t\t\t\t\t\t\tactiveDrawerComponent,\r\n\t\t\t\t\t\tactiveDrawerItemDescription:\r\n\t\t\t\t\t\t\tactiveDrawerItemDescription\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a site layout change event which notifies listening\r\n\t * components of changes in the site layout service values.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchSiteLayoutChangedEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.siteLayoutChanged));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches an event that signals to all listeners that a rule has been\r\n\t * overrode.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static ruleOverrideEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.ruleOverride));\r\n\t}\r\n\r\n\t/**\r\n\t * refreshes components.\r\n\t *\r\n\t * @param {string} component\r\n\t * the component name.\r\n\t * @param {string} targetType\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static refreshComponents(\r\n\t\tcomponents: string[],\r\n\t\ttargetType: string)\r\n\t{\r\n\t\tfor (const component of components)\r\n\t\t{\r\n\t\t\tthis.dispatchRefreshComponentEvent(\r\n\t\t\t\tcomponent,\r\n\t\t\t\ttargetType);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the access denied page. This page should be accessed\r\n\t * in cases where the view is not available to the user due to\r\n\t * security or ownership level permissions.\r\n\t *\r\n\t * @param {string} clientMessage\r\n\t * The details to display as additional information in content.\r\n\t * @memberof DisplayComponentParameterDirective\r\n\t */\r\n\tpublic static dispatchNavigateToAccessDeniedEvent(\r\n\t\troute: string,\r\n\t\tresources: string[],\r\n\t\tclientMessage: string = AppConstants.empty): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.navigateToAccessDenied,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\troute: route,\r\n\t\t\t\t\t\tresources: resources,\r\n\t\t\t\t\t\tclientMessage: clientMessage\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a walkthrough start event.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchWalkthroughStartEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.walkthroughStart));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a walkthrough end event.\r\n\t *\r\n\t * @static\r\n\t * @memberof EventHelper\r\n\t */\r\n\tpublic static dispatchWalkthroughEndEvent(): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.walkthroughEnd));\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches a message event of the sent event type.\r\n\t *\r\n\t * @static\r\n\t * @param {string} event\r\n\t * The event type to send the message to.\r\n\t * @param {string} title\r\n\t * The primary or title message (Html allowed).\r\n\t * @param {string} content\r\n\t * The message content (Html allowed).\r\n\t * @param {string} status\r\n\t * The message status. Available options found in\r\n\t * AppConstants.activityStatus for banners or AppConstants.messageLevel for\r\n\t * the login message handler.\r\n\t * @param {any} data\r\n\t * The message data value if applicable.\r\n\t * @param {MenuItem[]} actions\r\n\t * The banner message actions.\r\n\t * @memberof EventHelper\r\n\t */\r\n\t private static dispatchMessage(\r\n\t\tevent: string,\r\n\t\ttitle: string,\r\n\t\tcontent: string,\r\n\t\tstatus: string,\r\n\t\tdata: any = null,\r\n\t\tactions: MenuItem[] = []): void\r\n\t{\r\n\t\tconst clientMessage: ClientMessage =\r\n\t\t\tnew ClientMessage();\r\n\t\tclientMessage.content = content;\r\n\t\tclientMessage.data = data;\r\n\t\tclientMessage.status = status;\r\n\t\tclientMessage.title = title;\r\n\t\tclientMessage.actions = actions;\r\n\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tevent,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tclientMessage: clientMessage\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tIFileEntity\r\n} from '@shared/interfaces/files/file-entity.interface';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tAnyHelper\r\n} from './any.helper';\r\nimport {\r\n\tDateHelper\r\n} from './date.helper';\r\n\r\n/**\r\n * A class containining static methods for files.\r\n *\r\n * @export\r\n*/\r\nexport class FileHelper\r\n{\r\n\t/**\r\n\t * The base entity type of a file.\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static fileBaseType: string = AppConstants\r\n\t\t.fileBaseType;\r\n\r\n\t/**\r\n\t * The base file category name\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static fileBaseTypeCategory: string = AppConstants\r\n\t\t.fileBaseTypeCategory;\r\n\r\n\t/**\r\n\t * the amount of bytes in a kilobyte\r\n\t *\r\n\t * @static\r\n\t * @type {number}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static readonly oneKilobyte: number = 1024;\r\n\r\n\t/**\r\n\t * the amount of bytes in a megabyte\r\n\t * @note 1024 * 1024\r\n\t *\r\n\t * @static\r\n\t * @type {number}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static readonly oneMegabyte: number = 1048576;\r\n\r\n\t/**\r\n\t * the amount of bytes in a gigaabyte\r\n\t *\r\n\t * @static\r\n\t * @type {number}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static readonly oneGigabyte: number = 1073741824;\r\n\r\n\t/**\r\n\t * A mapping/dictionary of mime type keywords to css icon classes.\r\n\t *\r\n\t * @type {Map}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tprivate static readonly fileIcons: Map =\r\n\t\tnew Map(\r\n\t\t\t[\r\n\t\t\t\t['default', 'fa-file-o'],\r\n\t\t\t\t['excel', 'fa-file-excel-o'],\r\n\t\t\t\t['pdf', 'fa-file-pdf-o'],\r\n\t\t\t\t['audio', 'fa-file-audio-o'],\r\n\t\t\t\t['word', 'fa-file-word-o' ],\r\n\t\t\t\t['archive', 'fa-file-archive-o'],\r\n\t\t\t\t['image', 'fa-file-image-o'],\r\n\t\t\t\t['text', 'fa-file-text-o'],\r\n\t\t\t\t['zip', 'fa-file-zip-o'],\r\n\t\t\t\t['powerpoint', 'fa-file-powerpoint-o'],\r\n\t\t\t\t['video', 'fa-file-video-o']\r\n\t\t\t]\r\n\t\t);\r\n\r\n\t/**\r\n\t * A mapping/dictionary of file extensions to mime types.\r\n\t *\r\n\t * @type {Map}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tprivate static readonly mimeTypes: Map =\r\n\t\tnew Map(\r\n\t\t\t[\r\n\t\t\t\t[ '323', 'text/h323' ],\r\n\t\t\t\t[ '3g2', 'video/3gpp2' ],\r\n\t\t\t\t[ '3gp', 'video/3gpp' ],\r\n\t\t\t\t[ '3gp2', 'video/3gpp2' ],\r\n\t\t\t\t[ '3gpp', 'video/3gpp' ],\r\n\t\t\t\t[ '7z', 'application/x-7z-compressed' ],\r\n\t\t\t\t[ 'aa', 'audio/audible' ],\r\n\t\t\t\t[ 'AAC', 'audio/aac' ],\r\n\t\t\t\t[ 'aaf', 'application/octet-stream' ],\r\n\t\t\t\t[ 'aax', 'audio/vnd.audible.aax' ],\r\n\t\t\t\t[ 'ac3', 'audio/ac3' ],\r\n\t\t\t\t[ 'aca', 'application/octet-stream' ],\r\n\t\t\t\t[ 'accda', 'application/msaccess.addin' ],\r\n\t\t\t\t[ 'accdb', 'application/msaccess' ],\r\n\t\t\t\t[ 'accdc', 'application/msaccess.cab' ],\r\n\t\t\t\t[ 'accde', 'application/msaccess' ],\r\n\t\t\t\t[ 'accdr', 'application/msaccess.runtime' ],\r\n\t\t\t\t[ 'accdt', 'application/msaccess' ],\r\n\t\t\t\t[ 'accdw', 'application/msaccess.webapplication' ],\r\n\t\t\t\t[ 'accft', 'application/msaccess.ftemplate' ],\r\n\t\t\t\t[ 'acx', 'application/internet-property-stream' ],\r\n\t\t\t\t[ 'AddIn', 'text/xml' ],\r\n\t\t\t\t[ 'ade', 'application/msaccess' ],\r\n\t\t\t\t[ 'adobebridge', 'application/x-bridge-url' ],\r\n\t\t\t\t[ 'adp', 'application/msaccess' ],\r\n\t\t\t\t[ 'ADT', 'audio/vnd.dlna.adts' ],\r\n\t\t\t\t[ 'ADTS', 'audio/aac' ],\r\n\t\t\t\t[ 'afm', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ai', 'application/postscript' ],\r\n\t\t\t\t[ 'aif', 'audio/aiff' ],\r\n\t\t\t\t[ 'aifc', 'audio/aiff' ],\r\n\t\t\t\t[ 'aiff', 'audio/aiff' ],\r\n\t\t\t\t[ 'air', 'application/vnd.adobe.air-application-installer-package+zip' ],\r\n\t\t\t\t[ 'amc', 'application/mpeg' ],\r\n\t\t\t\t[ 'anx', 'application/annodex' ],\r\n\t\t\t\t[ 'apk', 'application/vnd.android.package-archive' ],\r\n\t\t\t\t[ 'application', 'application/x-ms-application' ],\r\n\t\t\t\t[ 'arc', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ark', 'application/octet-stream' ],\r\n\t\t\t\t[ 'art', 'image/x-jg' ],\r\n\t\t\t\t[ 'asa', 'application/xml' ],\r\n\t\t\t\t[ 'asax', 'application/xml' ],\r\n\t\t\t\t[ 'ascx', 'application/xml' ],\r\n\t\t\t\t[ 'asd', 'application/octet-stream' ],\r\n\t\t\t\t[ 'asf', 'video/x-ms-asf' ],\r\n\t\t\t\t[ 'ashx', 'application/xml' ],\r\n\t\t\t\t[ 'asi', 'application/octet-stream' ],\r\n\t\t\t\t[ 'asm', 'text/plain' ],\r\n\t\t\t\t[ 'asmx', 'application/xml' ],\r\n\t\t\t\t[ 'aspx', 'application/xml' ],\r\n\t\t\t\t[ 'asr', 'video/x-ms-asf' ],\r\n\t\t\t\t[ 'asx', 'video/x-ms-asf' ],\r\n\t\t\t\t[ 'atom', 'application/atom+xml' ],\r\n\t\t\t\t[ 'au', 'audio/basic' ],\r\n\t\t\t\t[ 'avi', 'video/x-msvideo' ],\r\n\t\t\t\t[ 'axa', 'audio/annodex' ],\r\n\t\t\t\t[ 'axs', 'application/olescript' ],\r\n\t\t\t\t[ 'axv', 'video/annodex' ],\r\n\t\t\t\t[ 'bas', 'text/plain' ],\r\n\t\t\t\t[ 'bcpio', 'application/x-bcpio' ],\r\n\t\t\t\t[ 'bin', 'application/octet-stream' ],\r\n\t\t\t\t[ 'bmp', 'image/bmp' ],\r\n\t\t\t\t[ 'c', 'text/plain' ],\r\n\t\t\t\t[ 'cab', 'application/octet-stream' ],\r\n\t\t\t\t[ 'caf', 'audio/x-caf' ],\r\n\t\t\t\t[ 'calx', 'application/vnd.ms-office.calx' ],\r\n\t\t\t\t[ 'cat', 'application/vnd.ms-pki.seccat' ],\r\n\t\t\t\t[ 'cc', 'text/plain' ],\r\n\t\t\t\t[ 'cd', 'text/plain' ],\r\n\t\t\t\t[ 'cdda', 'audio/aiff' ],\r\n\t\t\t\t[ 'cdf', 'application/x-cdf' ],\r\n\t\t\t\t[ 'cer', 'application/x-x509-ca-cert' ],\r\n\t\t\t\t[ 'cfg', 'text/plain' ],\r\n\t\t\t\t[ 'chm', 'application/octet-stream' ],\r\n\t\t\t\t[ 'class', 'application/x-java-applet' ],\r\n\t\t\t\t[ 'clp', 'application/x-msclip' ],\r\n\t\t\t\t[ 'cmd', 'text/plain' ],\r\n\t\t\t\t[ 'cmx', 'image/x-cmx' ],\r\n\t\t\t\t[ 'cnf', 'text/plain' ],\r\n\t\t\t\t[ 'cod', 'image/cis-cod' ],\r\n\t\t\t\t[ 'config', 'application/xml' ],\r\n\t\t\t\t[ 'contact', 'text/x-ms-contact' ],\r\n\t\t\t\t[ 'coverage', 'application/xml' ],\r\n\t\t\t\t[ 'cpio', 'application/x-cpio' ],\r\n\t\t\t\t[ 'cpp', 'text/plain' ],\r\n\t\t\t\t[ 'crd', 'application/x-mscardfile' ],\r\n\t\t\t\t[ 'crl', 'application/pkix-crl' ],\r\n\t\t\t\t[ 'crt', 'application/x-x509-ca-cert' ],\r\n\t\t\t\t[ 'cs', 'text/plain' ],\r\n\t\t\t\t[ 'csdproj', 'text/plain' ],\r\n\t\t\t\t[ 'csh', 'application/x-csh' ],\r\n\t\t\t\t[ 'csproj', 'text/plain' ],\r\n\t\t\t\t[ 'css', 'text/css' ],\r\n\t\t\t\t[ 'csv', 'text/csv' ],\r\n\t\t\t\t[ 'cur', 'application/octet-stream' ],\r\n\t\t\t\t[ 'cxx', 'text/plain' ],\r\n\t\t\t\t[ 'dat', 'application/octet-stream' ],\r\n\t\t\t\t[ 'datasource', 'application/xml' ],\r\n\t\t\t\t[ 'dbproj', 'text/plain' ],\r\n\t\t\t\t[ 'dcr', 'application/x-director' ],\r\n\t\t\t\t[ 'def', 'text/plain' ],\r\n\t\t\t\t[ 'deploy', 'application/octet-stream' ],\r\n\t\t\t\t[ 'der', 'application/x-x509-ca-cert' ],\r\n\t\t\t\t[ 'dgml', 'application/xml' ],\r\n\t\t\t\t[ 'dib', 'image/bmp' ],\r\n\t\t\t\t[ 'dif', 'video/x-dv' ],\r\n\t\t\t\t[ 'dir', 'application/x-director' ],\r\n\t\t\t\t[ 'disco', 'text/xml' ],\r\n\t\t\t\t[ 'divx', 'video/divx' ],\r\n\t\t\t\t[ 'dll', 'application/x-msdownload' ],\r\n\t\t\t\t[ 'dll.config', 'text/xml' ],\r\n\t\t\t\t[ 'dlm', 'text/dlm' ],\r\n\t\t\t\t[ 'doc', 'application/msword' ],\r\n\t\t\t\t[ 'docm', 'application/vnd.ms-word.document.macroEnabled.12' ],\r\n\t\t\t\t[ 'docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ],\r\n\t\t\t\t[ 'dot', 'application/msword' ],\r\n\t\t\t\t[ 'dotm', 'application/vnd.ms-word.template.macroEnabled.12' ],\r\n\t\t\t\t[ 'dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' ],\r\n\t\t\t\t[ 'dsp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'dsw', 'text/plain' ],\r\n\t\t\t\t[ 'dtd', 'text/xml' ],\r\n\t\t\t\t[ 'dtsConfig', 'text/xml' ],\r\n\t\t\t\t[ 'dv', 'video/x-dv' ],\r\n\t\t\t\t[ 'dvi', 'application/x-dvi' ],\r\n\t\t\t\t[ 'dwf', 'drawing/x-dwf' ],\r\n\t\t\t\t[ 'dwg', 'application/acad' ],\r\n\t\t\t\t[ 'dwp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'dxf', 'application/x-dxf' ],\r\n\t\t\t\t[ 'dxr', 'application/x-director' ],\r\n\t\t\t\t[ 'eml', 'message/rfc822' ],\r\n\t\t\t\t[ 'emf', 'image/emf' ],\r\n\t\t\t\t[ 'emz', 'application/octet-stream' ],\r\n\t\t\t\t[ 'eot', 'application/vnd.ms-fontobject' ],\r\n\t\t\t\t[ 'eps', 'application/postscript' ],\r\n\t\t\t\t[ 'es', 'application/ecmascript' ],\r\n\t\t\t\t[ 'etl', 'application/etl' ],\r\n\t\t\t\t[ 'etx', 'text/x-setext' ],\r\n\t\t\t\t[ 'evy', 'application/envoy' ],\r\n\t\t\t\t[ 'exe', 'application/vnd.microsoft.portable-executable' ],\r\n\t\t\t\t[ 'exe.config', 'text/xml' ],\r\n\t\t\t\t[ 'f4v', 'video/mp4' ],\r\n\t\t\t\t[ 'fdf', 'application/vnd.fdf' ],\r\n\t\t\t\t[ 'fif', 'application/fractals' ],\r\n\t\t\t\t[ 'filters', 'application/xml' ],\r\n\t\t\t\t[ 'fla', 'application/octet-stream' ],\r\n\t\t\t\t[ 'flac', 'audio/flac' ],\r\n\t\t\t\t[ 'flr', 'x-world/x-vrml' ],\r\n\t\t\t\t[ 'flv', 'video/x-flv' ],\r\n\t\t\t\t[ 'fsscript', 'application/fsharp-script' ],\r\n\t\t\t\t[ 'fsx', 'application/fsharp-script' ],\r\n\t\t\t\t[ 'generictest', 'application/xml' ],\r\n\t\t\t\t[ 'gif', 'image/gif' ],\r\n\t\t\t\t[ 'gpx', 'application/gpx+xml' ],\r\n\t\t\t\t[ 'group', 'text/x-ms-group' ],\r\n\t\t\t\t[ 'gsm', 'audio/x-gsm' ],\r\n\t\t\t\t[ 'gtar', 'application/x-gtar' ],\r\n\t\t\t\t[ 'gz', 'application/x-gzip' ],\r\n\t\t\t\t[ 'h', 'text/plain' ],\r\n\t\t\t\t[ 'hdf', 'application/x-hdf' ],\r\n\t\t\t\t[ 'hdml', 'text/x-hdml' ],\r\n\t\t\t\t[ 'hhc', 'application/x-oleobject' ],\r\n\t\t\t\t[ 'hhk', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hhp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hlp', 'application/winhlp' ],\r\n\t\t\t\t[ 'hpp', 'text/plain' ],\r\n\t\t\t\t[ 'hqx', 'application/mac-binhex40' ],\r\n\t\t\t\t[ 'hta', 'application/hta' ],\r\n\t\t\t\t[ 'htc', 'text/x-component' ],\r\n\t\t\t\t[ 'htm', 'text/html' ],\r\n\t\t\t\t[ 'html', 'text/html' ],\r\n\t\t\t\t[ 'htt', 'text/webviewhtml' ],\r\n\t\t\t\t[ 'hxa', 'application/xml' ],\r\n\t\t\t\t[ 'hxc', 'application/xml' ],\r\n\t\t\t\t[ 'hxd', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxe', 'application/xml' ],\r\n\t\t\t\t[ 'hxf', 'application/xml' ],\r\n\t\t\t\t[ 'hxh', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxi', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxk', 'application/xml' ],\r\n\t\t\t\t[ 'hxq', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxr', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxs', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxt', 'text/html' ],\r\n\t\t\t\t[ 'hxv', 'application/xml' ],\r\n\t\t\t\t[ 'hxw', 'application/octet-stream' ],\r\n\t\t\t\t[ 'hxx', 'text/plain' ],\r\n\t\t\t\t[ 'i', 'text/plain' ],\r\n\t\t\t\t[ 'ical', 'text/calendar' ],\r\n\t\t\t\t[ 'icalendar', 'text/calendar' ],\r\n\t\t\t\t[ 'ico', 'image/x-icon' ],\r\n\t\t\t\t[ 'ics', 'text/calendar' ],\r\n\t\t\t\t[ 'idl', 'text/plain' ],\r\n\t\t\t\t[ 'ief', 'image/ief' ],\r\n\t\t\t\t[ 'ifb', 'text/calendar' ],\r\n\t\t\t\t[ 'iii', 'application/x-iphone' ],\r\n\t\t\t\t[ 'inc', 'text/plain' ],\r\n\t\t\t\t[ 'inf', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ini', 'text/plain' ],\r\n\t\t\t\t[ 'inl', 'text/plain' ],\r\n\t\t\t\t[ 'ins', 'application/x-internet-signup' ],\r\n\t\t\t\t[ 'ipa', 'application/x-itunes-ipa' ],\r\n\t\t\t\t[ 'ipg', 'application/x-itunes-ipg' ],\r\n\t\t\t\t[ 'ipproj', 'text/plain' ],\r\n\t\t\t\t[ 'ipsw', 'application/x-itunes-ipsw' ],\r\n\t\t\t\t[ 'iqy', 'text/x-ms-iqy' ],\r\n\t\t\t\t[ 'isp', 'application/x-internet-signup' ],\r\n\t\t\t\t[ 'isma', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ismv', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ite', 'application/x-itunes-ite' ],\r\n\t\t\t\t[ 'itlp', 'application/x-itunes-itlp' ],\r\n\t\t\t\t[ 'itms', 'application/x-itunes-itms' ],\r\n\t\t\t\t[ 'itpc', 'application/x-itunes-itpc' ],\r\n\t\t\t\t[ 'IVF', 'video/x-ivf' ],\r\n\t\t\t\t[ 'jar', 'application/java-archive' ],\r\n\t\t\t\t[ 'java', 'application/octet-stream' ],\r\n\t\t\t\t[ 'jck', 'application/liquidmotion' ],\r\n\t\t\t\t[ 'jcz', 'application/liquidmotion' ],\r\n\t\t\t\t[ 'jfif', 'image/jpeg' ],\r\n\t\t\t\t[ 'jnlp', 'application/x-java-jnlp-file' ],\r\n\t\t\t\t[ 'jpb', 'application/octet-stream' ],\r\n\t\t\t\t[ 'jpe', 'image/jpeg' ],\r\n\t\t\t\t[ 'jpeg', 'image/jpeg' ],\r\n\t\t\t\t[ 'jpg', 'image/jpeg' ],\r\n\t\t\t\t[ 'js', 'application/javascript' ],\r\n\t\t\t\t[ 'json', 'application/json' ],\r\n\t\t\t\t[ 'jsx', 'text/jscript' ],\r\n\t\t\t\t[ 'jsxbin', 'text/plain' ],\r\n\t\t\t\t[ 'latex', 'application/x-latex' ],\r\n\t\t\t\t[ 'library-ms', 'application/windows-library+xml' ],\r\n\t\t\t\t[ 'lit', 'application/x-ms-reader' ],\r\n\t\t\t\t[ 'loadtest', 'application/xml' ],\r\n\t\t\t\t[ 'lpk', 'application/octet-stream' ],\r\n\t\t\t\t[ 'lsf', 'video/x-la-asf' ],\r\n\t\t\t\t[ 'lst', 'text/plain' ],\r\n\t\t\t\t[ 'lsx', 'video/x-la-asf' ],\r\n\t\t\t\t[ 'lzh', 'application/octet-stream' ],\r\n\t\t\t\t[ 'm13', 'application/x-msmediaview' ],\r\n\t\t\t\t[ 'm14', 'application/x-msmediaview' ],\r\n\t\t\t\t[ 'm1v', 'video/mpeg' ],\r\n\t\t\t\t[ 'm2t', 'video/vnd.dlna.mpeg-tts' ],\r\n\t\t\t\t[ 'm2ts', 'video/vnd.dlna.mpeg-tts' ],\r\n\t\t\t\t[ 'm2v', 'video/mpeg' ],\r\n\t\t\t\t[ 'm3u', 'audio/x-mpegurl' ],\r\n\t\t\t\t[ 'm3u8', 'audio/x-mpegurl' ],\r\n\t\t\t\t[ 'm4a', 'audio/m4a' ],\r\n\t\t\t\t[ 'm4b', 'audio/m4b' ],\r\n\t\t\t\t[ 'm4p', 'audio/m4p' ],\r\n\t\t\t\t[ 'm4r', 'audio/x-m4r' ],\r\n\t\t\t\t[ 'm4v', 'video/x-m4v' ],\r\n\t\t\t\t[ 'mac', 'image/x-macpaint' ],\r\n\t\t\t\t[ 'mak', 'text/plain' ],\r\n\t\t\t\t[ 'man', 'application/x-troff-man' ],\r\n\t\t\t\t[ 'manifest', 'application/x-ms-manifest' ],\r\n\t\t\t\t[ 'map', 'text/plain' ],\r\n\t\t\t\t[ 'master', 'application/xml' ],\r\n\t\t\t\t[ 'mbox', 'application/mbox' ],\r\n\t\t\t\t[ 'mda', 'application/msaccess' ],\r\n\t\t\t\t[ 'mdb', 'application/x-msaccess' ],\r\n\t\t\t\t[ 'mde', 'application/msaccess' ],\r\n\t\t\t\t[ 'mdp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'me', 'application/x-troff-me' ],\r\n\t\t\t\t[ 'mfp', 'application/x-shockwave-flash' ],\r\n\t\t\t\t[ 'mht', 'message/rfc822' ],\r\n\t\t\t\t[ 'mhtml', 'message/rfc822' ],\r\n\t\t\t\t[ 'mid', 'audio/mid' ],\r\n\t\t\t\t[ 'midi', 'audio/mid' ],\r\n\t\t\t\t[ 'mix', 'application/octet-stream' ],\r\n\t\t\t\t[ 'mk', 'text/plain' ],\r\n\t\t\t\t[ 'mk3d', 'video/x-matroska-3d' ],\r\n\t\t\t\t[ 'mka', 'audio/x-matroska' ],\r\n\t\t\t\t[ 'mkv', 'video/x-matroska' ],\r\n\t\t\t\t[ 'mmf', 'application/x-smaf' ],\r\n\t\t\t\t[ 'mno', 'text/xml' ],\r\n\t\t\t\t[ 'mny', 'application/x-msmoney' ],\r\n\t\t\t\t[ 'mod', 'video/mpeg' ],\r\n\t\t\t\t[ 'mov', 'video/quicktime' ],\r\n\t\t\t\t[ 'movie', 'video/x-sgi-movie' ],\r\n\t\t\t\t[ 'mp2', 'video/mpeg' ],\r\n\t\t\t\t[ 'mp2v', 'video/mpeg' ],\r\n\t\t\t\t[ 'mp3', 'audio/mpeg' ],\r\n\t\t\t\t[ 'mp4', 'video/mp4' ],\r\n\t\t\t\t[ 'mp4v', 'video/mp4' ],\r\n\t\t\t\t[ 'mpa', 'video/mpeg' ],\r\n\t\t\t\t[ 'mpe', 'video/mpeg' ],\r\n\t\t\t\t[ 'mpeg', 'video/mpeg' ],\r\n\t\t\t\t[ 'mpf', 'application/vnd.ms-mediapackage' ],\r\n\t\t\t\t[ 'mpg', 'video/mpeg' ],\r\n\t\t\t\t[ 'mpp', 'application/vnd.ms-project' ],\r\n\t\t\t\t[ 'mpv2', 'video/mpeg' ],\r\n\t\t\t\t[ 'mqv', 'video/quicktime' ],\r\n\t\t\t\t[ 'ms', 'application/x-troff-ms' ],\r\n\t\t\t\t[ 'msg', 'application/vnd.ms-outlook' ],\r\n\t\t\t\t[ 'msi', 'application/octet-stream' ],\r\n\t\t\t\t[ 'mso', 'application/octet-stream' ],\r\n\t\t\t\t[ 'mts', 'video/vnd.dlna.mpeg-tts' ],\r\n\t\t\t\t[ 'mtx', 'application/xml' ],\r\n\t\t\t\t[ 'mvb', 'application/x-msmediaview' ],\r\n\t\t\t\t[ 'mvc', 'application/x-miva-compiled' ],\r\n\t\t\t\t[ 'mxf', 'application/mxf' ],\r\n\t\t\t\t[ 'mxp', 'application/x-mmxp' ],\r\n\t\t\t\t[ 'nc', 'application/x-netcdf' ],\r\n\t\t\t\t[ 'nsc', 'video/x-ms-asf' ],\r\n\t\t\t\t[ 'nws', 'message/rfc822' ],\r\n\t\t\t\t[ 'ocx', 'application/octet-stream' ],\r\n\t\t\t\t[ 'oda', 'application/oda' ],\r\n\t\t\t\t[ 'odb', 'application/vnd.oasis.opendocument.database' ],\r\n\t\t\t\t[ 'odc', 'application/vnd.oasis.opendocument.chart' ],\r\n\t\t\t\t[ 'odf', 'application/vnd.oasis.opendocument.formula' ],\r\n\t\t\t\t[ 'odg', 'application/vnd.oasis.opendocument.graphics' ],\r\n\t\t\t\t[ 'odh', 'text/plain' ],\r\n\t\t\t\t[ 'odi', 'application/vnd.oasis.opendocument.image' ],\r\n\t\t\t\t[ 'odl', 'text/plain' ],\r\n\t\t\t\t[ 'odm', 'application/vnd.oasis.opendocument.text-master' ],\r\n\t\t\t\t[ 'odp', 'application/vnd.oasis.opendocument.presentation' ],\r\n\t\t\t\t[ 'ods', 'application/vnd.oasis.opendocument.spreadsheet' ],\r\n\t\t\t\t[ 'odt', 'application/vnd.oasis.opendocument.text' ],\r\n\t\t\t\t[ 'oga', 'audio/ogg' ],\r\n\t\t\t\t[ 'ogg', 'audio/ogg' ],\r\n\t\t\t\t[ 'ogv', 'video/ogg' ],\r\n\t\t\t\t[ 'ogx', 'application/ogg' ],\r\n\t\t\t\t[ 'one', 'application/onenote' ],\r\n\t\t\t\t[ 'onea', 'application/onenote' ],\r\n\t\t\t\t[ 'onepkg', 'application/onenote' ],\r\n\t\t\t\t[ 'onetmp', 'application/onenote' ],\r\n\t\t\t\t[ 'onetoc', 'application/onenote' ],\r\n\t\t\t\t[ 'onetoc2', 'application/onenote' ],\r\n\t\t\t\t[ 'opus', 'audio/ogg' ],\r\n\t\t\t\t[ 'orderedtest', 'application/xml' ],\r\n\t\t\t\t[ 'osdx', 'application/opensearchdescription+xml' ],\r\n\t\t\t\t[ 'otf', 'application/font-sfnt' ],\r\n\t\t\t\t[ 'otg', 'application/vnd.oasis.opendocument.graphics-template' ],\r\n\t\t\t\t[ 'oth', 'application/vnd.oasis.opendocument.text-web' ],\r\n\t\t\t\t[ 'otp', 'application/vnd.oasis.opendocument.presentation-template' ],\r\n\t\t\t\t[ 'ots', 'application/vnd.oasis.opendocument.spreadsheet-template' ],\r\n\t\t\t\t[ 'ott', 'application/vnd.oasis.opendocument.text-template' ],\r\n\t\t\t\t[ 'oxt', 'application/vnd.openofficeorg.extension' ],\r\n\t\t\t\t[ 'p10', 'application/pkcs10' ],\r\n\t\t\t\t[ 'p12', 'application/x-pkcs12' ],\r\n\t\t\t\t[ 'p7b', 'application/x-pkcs7-certificates' ],\r\n\t\t\t\t[ 'p7c', 'application/pkcs7-mime' ],\r\n\t\t\t\t[ 'p7m', 'application/pkcs7-mime' ],\r\n\t\t\t\t[ 'p7r', 'application/x-pkcs7-certreqresp' ],\r\n\t\t\t\t[ 'p7s', 'application/pkcs7-signature' ],\r\n\t\t\t\t[ 'pbm', 'image/x-portable-bitmap' ],\r\n\t\t\t\t[ 'pcast', 'application/x-podcast' ],\r\n\t\t\t\t[ 'pct', 'image/pict' ],\r\n\t\t\t\t[ 'pcx', 'application/octet-stream' ],\r\n\t\t\t\t[ 'pcz', 'application/octet-stream' ],\r\n\t\t\t\t[ 'pdf', 'application/pdf' ],\r\n\t\t\t\t[ 'pfb', 'application/octet-stream' ],\r\n\t\t\t\t[ 'pfm', 'application/octet-stream' ],\r\n\t\t\t\t[ 'pfx', 'application/x-pkcs12' ],\r\n\t\t\t\t[ 'pgm', 'image/x-portable-graymap' ],\r\n\t\t\t\t[ 'pic', 'image/pict' ],\r\n\t\t\t\t[ 'pict', 'image/pict' ],\r\n\t\t\t\t[ 'pkgdef', 'text/plain' ],\r\n\t\t\t\t[ 'pkgundef', 'text/plain' ],\r\n\t\t\t\t[ 'pko', 'application/vnd.ms-pki.pko' ],\r\n\t\t\t\t[ 'pls', 'audio/scpls' ],\r\n\t\t\t\t[ 'pma', 'application/x-perfmon' ],\r\n\t\t\t\t[ 'pmc', 'application/x-perfmon' ],\r\n\t\t\t\t[ 'pml', 'application/x-perfmon' ],\r\n\t\t\t\t[ 'pmr', 'application/x-perfmon' ],\r\n\t\t\t\t[ 'pmw', 'application/x-perfmon' ],\r\n\t\t\t\t[ 'png', 'image/png' ],\r\n\t\t\t\t[ 'pnm', 'image/x-portable-anymap' ],\r\n\t\t\t\t[ 'pnt', 'image/x-macpaint' ],\r\n\t\t\t\t[ 'pntg', 'image/x-macpaint' ],\r\n\t\t\t\t[ 'pnz', 'image/png' ],\r\n\t\t\t\t[ 'pot', 'application/vnd.ms-powerpoint' ],\r\n\t\t\t\t[ 'potm', 'application/vnd.ms-powerpoint.template.macroEnabled.12' ],\r\n\t\t\t\t[ 'potx', 'application/vnd.openxmlformats-officedocument.presentationml.template' ],\r\n\t\t\t\t[ 'ppa', 'application/vnd.ms-powerpoint' ],\r\n\t\t\t\t[ 'ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12' ],\r\n\t\t\t\t[ 'ppm', 'image/x-portable-pixmap' ],\r\n\t\t\t\t[ 'pps', 'application/vnd.ms-powerpoint' ],\r\n\t\t\t\t[ 'ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' ],\r\n\t\t\t\t[ 'ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' ],\r\n\t\t\t\t[ 'ppt', 'application/vnd.ms-powerpoint' ],\r\n\t\t\t\t[ 'pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' ],\r\n\t\t\t\t[ 'pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ],\r\n\t\t\t\t[ 'prf', 'application/pics-rules' ],\r\n\t\t\t\t[ 'prm', 'application/octet-stream' ],\r\n\t\t\t\t[ 'prx', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ps', 'application/postscript' ],\r\n\t\t\t\t[ 'psc1', 'application/PowerShell' ],\r\n\t\t\t\t[ 'psd', 'image/vnd.adobe.photoshop' ],\r\n\t\t\t\t[ 'psess', 'application/xml' ],\r\n\t\t\t\t[ 'psm', 'application/octet-stream' ],\r\n\t\t\t\t[ 'psp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'pst', 'application/vnd.ms-outlook' ],\r\n\t\t\t\t[ 'pub', 'application/x-mspublisher' ],\r\n\t\t\t\t[ 'pwz', 'application/vnd.ms-powerpoint' ],\r\n\t\t\t\t[ 'qht', 'text/x-html-insertion' ],\r\n\t\t\t\t[ 'qhtm', 'text/x-html-insertion' ],\r\n\t\t\t\t[ 'qt', 'video/quicktime' ],\r\n\t\t\t\t[ 'qti', 'image/x-quicktime' ],\r\n\t\t\t\t[ 'qtif', 'image/x-quicktime' ],\r\n\t\t\t\t[ 'qtl', 'application/x-quicktimeplayer' ],\r\n\t\t\t\t[ 'qxd', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ra', 'audio/x-pn-realaudio' ],\r\n\t\t\t\t[ 'ram', 'audio/x-pn-realaudio' ],\r\n\t\t\t\t[ 'rar', 'application/x-rar-compressed' ],\r\n\t\t\t\t[ 'ras', 'image/x-cmu-raster' ],\r\n\t\t\t\t[ 'rat', 'application/rat-file' ],\r\n\t\t\t\t[ 'rc', 'text/plain' ],\r\n\t\t\t\t[ 'rc2', 'text/plain' ],\r\n\t\t\t\t[ 'rct', 'text/plain' ],\r\n\t\t\t\t[ 'rdlc', 'application/xml' ],\r\n\t\t\t\t[ 'reg', 'text/plain' ],\r\n\t\t\t\t[ 'resx', 'application/xml' ],\r\n\t\t\t\t[ 'rf', 'image/vnd.rn-realflash' ],\r\n\t\t\t\t[ 'rgb', 'image/x-rgb' ],\r\n\t\t\t\t[ 'rgs', 'text/plain' ],\r\n\t\t\t\t[ 'rm', 'application/vnd.rn-realmedia' ],\r\n\t\t\t\t[ 'rmi', 'audio/mid' ],\r\n\t\t\t\t[ 'rmp', 'application/vnd.rn-rn_music_package' ],\r\n\t\t\t\t[ 'rmvb', 'application/vnd.rn-realmedia-vbr' ],\r\n\t\t\t\t[ 'roff', 'application/x-troff' ],\r\n\t\t\t\t[ 'rpm', 'audio/x-pn-realaudio-plugin' ],\r\n\t\t\t\t[ 'rqy', 'text/x-ms-rqy' ],\r\n\t\t\t\t[ 'rtf', 'application/rtf' ],\r\n\t\t\t\t[ 'rtx', 'text/richtext' ],\r\n\t\t\t\t[ 'rvt', 'application/octet-stream' ],\r\n\t\t\t\t[ 'ruleset', 'application/xml' ],\r\n\t\t\t\t[ 's', 'text/plain' ],\r\n\t\t\t\t[ 'safariextz', 'application/x-safari-safariextz' ],\r\n\t\t\t\t[ 'scd', 'application/x-msschedule' ],\r\n\t\t\t\t[ 'scr', 'text/plain' ],\r\n\t\t\t\t[ 'sct', 'text/scriptlet' ],\r\n\t\t\t\t[ 'sd2', 'audio/x-sd2' ],\r\n\t\t\t\t[ 'sdp', 'application/sdp' ],\r\n\t\t\t\t[ 'sea', 'application/octet-stream' ],\r\n\t\t\t\t[ 'searchConnector-ms', 'application/windows-search-connector+xml' ],\r\n\t\t\t\t[ 'setpay', 'application/set-payment-initiation' ],\r\n\t\t\t\t[ 'setreg', 'application/set-registration-initiation' ],\r\n\t\t\t\t[ 'settings', 'application/xml' ],\r\n\t\t\t\t[ 'sgimb', 'application/x-sgimb' ],\r\n\t\t\t\t[ 'sgml', 'text/sgml' ],\r\n\t\t\t\t[ 'sh', 'application/x-sh' ],\r\n\t\t\t\t[ 'shar', 'application/x-shar' ],\r\n\t\t\t\t[ 'shtml', 'text/html' ],\r\n\t\t\t\t[ 'sit', 'application/x-stuffit' ],\r\n\t\t\t\t[ 'sitemap', 'application/xml' ],\r\n\t\t\t\t[ 'skin', 'application/xml' ],\r\n\t\t\t\t[ 'skp', 'application/x-koan' ],\r\n\t\t\t\t[ 'sldm', 'application/vnd.ms-powerpoint.slide.macroEnabled.12' ],\r\n\t\t\t\t[ 'sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide' ],\r\n\t\t\t\t[ 'slk', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'sln', 'text/plain' ],\r\n\t\t\t\t[ 'slupkg-ms', 'application/x-ms-license' ],\r\n\t\t\t\t[ 'smd', 'audio/x-smd' ],\r\n\t\t\t\t[ 'smi', 'application/octet-stream' ],\r\n\t\t\t\t[ 'smx', 'audio/x-smd' ],\r\n\t\t\t\t[ 'smz', 'audio/x-smd' ],\r\n\t\t\t\t[ 'snd', 'audio/basic' ],\r\n\t\t\t\t[ 'snippet', 'application/xml' ],\r\n\t\t\t\t[ 'snp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'sol', 'text/plain' ],\r\n\t\t\t\t[ 'sor', 'text/plain' ],\r\n\t\t\t\t[ 'spc', 'application/x-pkcs7-certificates' ],\r\n\t\t\t\t[ 'spl', 'application/futuresplash' ],\r\n\t\t\t\t[ 'spx', 'audio/ogg' ],\r\n\t\t\t\t[ 'src', 'application/x-wais-source' ],\r\n\t\t\t\t[ 'srf', 'text/plain' ],\r\n\t\t\t\t[ 'SSISDeploymentManifest', 'text/xml' ],\r\n\t\t\t\t[ 'ssm', 'application/streamingmedia' ],\r\n\t\t\t\t[ 'sst', 'application/vnd.ms-pki.certstore' ],\r\n\t\t\t\t[ 'stl', 'application/vnd.ms-pki.stl' ],\r\n\t\t\t\t[ 'sv4cpio', 'application/x-sv4cpio' ],\r\n\t\t\t\t[ 'sv4crc', 'application/x-sv4crc' ],\r\n\t\t\t\t[ 'svc', 'application/xml' ],\r\n\t\t\t\t[ 'svg', 'image/svg+xml' ],\r\n\t\t\t\t[ 'swf', 'application/x-shockwave-flash' ],\r\n\t\t\t\t[ 'step', 'application/step' ],\r\n\t\t\t\t[ 'stp', 'application/step' ],\r\n\t\t\t\t[ 't', 'application/x-troff' ],\r\n\t\t\t\t[ 'tar', 'application/x-tar' ],\r\n\t\t\t\t[ 'tcl', 'application/x-tcl' ],\r\n\t\t\t\t[ 'testrunconfig', 'application/xml' ],\r\n\t\t\t\t[ 'testsettings', 'application/xml' ],\r\n\t\t\t\t[ 'tex', 'application/x-tex' ],\r\n\t\t\t\t[ 'texi', 'application/x-texinfo' ],\r\n\t\t\t\t[ 'texinfo', 'application/x-texinfo' ],\r\n\t\t\t\t[ 'tgz', 'application/x-compressed' ],\r\n\t\t\t\t[ 'thmx', 'application/vnd.ms-officetheme' ],\r\n\t\t\t\t[ 'thn', 'application/octet-stream' ],\r\n\t\t\t\t[ 'tif', 'image/tiff' ],\r\n\t\t\t\t[ 'tiff', 'image/tiff' ],\r\n\t\t\t\t[ 'tlh', 'text/plain' ],\r\n\t\t\t\t[ 'tli', 'text/plain' ],\r\n\t\t\t\t[ 'toc', 'application/octet-stream' ],\r\n\t\t\t\t[ 'tr', 'application/x-troff' ],\r\n\t\t\t\t[ 'trm', 'application/x-msterminal' ],\r\n\t\t\t\t[ 'trx', 'application/xml' ],\r\n\t\t\t\t[ 'ts', 'video/vnd.dlna.mpeg-tts' ],\r\n\t\t\t\t[ 'tsv', 'text/tab-separated-values' ],\r\n\t\t\t\t[ 'ttf', 'application/font-sfnt' ],\r\n\t\t\t\t[ 'tts', 'video/vnd.dlna.mpeg-tts' ],\r\n\t\t\t\t[ 'txt', 'text/plain' ],\r\n\t\t\t\t[ 'u32', 'application/octet-stream' ],\r\n\t\t\t\t[ 'uls', 'text/iuls' ],\r\n\t\t\t\t[ 'user', 'text/plain' ],\r\n\t\t\t\t[ 'ustar', 'application/x-ustar' ],\r\n\t\t\t\t[ 'vb', 'text/plain' ],\r\n\t\t\t\t[ 'vbdproj', 'text/plain' ],\r\n\t\t\t\t[ 'vbk', 'video/mpeg' ],\r\n\t\t\t\t[ 'vbproj', 'text/plain' ],\r\n\t\t\t\t[ 'vbs', 'text/vbscript' ],\r\n\t\t\t\t[ 'vcf', 'text/x-vcard' ],\r\n\t\t\t\t[ 'vcproj', 'application/xml' ],\r\n\t\t\t\t[ 'vcs', 'text/plain' ],\r\n\t\t\t\t[ 'vcxproj', 'application/xml' ],\r\n\t\t\t\t[ 'vddproj', 'text/plain' ],\r\n\t\t\t\t[ 'vdp', 'text/plain' ],\r\n\t\t\t\t[ 'vdproj', 'text/plain' ],\r\n\t\t\t\t[ 'vdx', 'application/vnd.ms-visio.viewer' ],\r\n\t\t\t\t[ 'vml', 'text/xml' ],\r\n\t\t\t\t[ 'vscontent', 'application/xml' ],\r\n\t\t\t\t[ 'vsct', 'text/xml' ],\r\n\t\t\t\t[ 'vsd', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'vsi', 'application/ms-vsi' ],\r\n\t\t\t\t[ 'vsix', 'application/vsix' ],\r\n\t\t\t\t[ 'vsixlangpack', 'text/xml' ],\r\n\t\t\t\t[ 'vsixmanifest', 'text/xml' ],\r\n\t\t\t\t[ 'vsmdi', 'application/xml' ],\r\n\t\t\t\t[ 'vspscc', 'text/plain' ],\r\n\t\t\t\t[ 'vss', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'vsscc', 'text/plain' ],\r\n\t\t\t\t[ 'vssettings', 'text/xml' ],\r\n\t\t\t\t[ 'vssscc', 'text/plain' ],\r\n\t\t\t\t[ 'vst', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'vstemplate', 'text/xml' ],\r\n\t\t\t\t[ 'vsto', 'application/x-ms-vsto' ],\r\n\t\t\t\t[ 'vsw', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'vsx', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'vtt', 'text/vtt' ],\r\n\t\t\t\t[ 'vtx', 'application/vnd.visio' ],\r\n\t\t\t\t[ 'wasm', 'application/wasm' ],\r\n\t\t\t\t[ 'wav', 'audio/wav' ],\r\n\t\t\t\t[ 'wave', 'audio/wav' ],\r\n\t\t\t\t[ 'wax', 'audio/x-ms-wax' ],\r\n\t\t\t\t[ 'wbk', 'application/msword' ],\r\n\t\t\t\t[ 'wbmp', 'image/vnd.wap.wbmp' ],\r\n\t\t\t\t[ 'wcm', 'application/vnd.ms-works' ],\r\n\t\t\t\t[ 'wdb', 'application/vnd.ms-works' ],\r\n\t\t\t\t[ 'wdp', 'image/vnd.ms-photo' ],\r\n\t\t\t\t[ 'webarchive', 'application/x-safari-webarchive' ],\r\n\t\t\t\t[ 'webm', 'video/webm' ],\r\n\t\t\t\t[ 'webp', 'image/webp' ], /* https,//en.wikipedia.org/wiki/WebP */\r\n\t\t\t\t[ 'webtest', 'application/xml' ],\r\n\t\t\t\t[ 'wiq', 'application/xml' ],\r\n\t\t\t\t[ 'wiz', 'application/msword' ],\r\n\t\t\t\t[ 'wks', 'application/vnd.ms-works' ],\r\n\t\t\t\t[ 'WLMP', 'application/wlmoviemaker' ],\r\n\t\t\t\t[ 'wlpginstall', 'application/x-wlpg-detect' ],\r\n\t\t\t\t[ 'wlpginstall3', 'application/x-wlpg3-detect' ],\r\n\t\t\t\t[ 'wm', 'video/x-ms-wm' ],\r\n\t\t\t\t[ 'wma', 'audio/x-ms-wma' ],\r\n\t\t\t\t[ 'wmd', 'application/x-ms-wmd' ],\r\n\t\t\t\t[ 'wmf', 'application/x-msmetafile' ],\r\n\t\t\t\t[ 'wml', 'text/vnd.wap.wml' ],\r\n\t\t\t\t[ 'wmlc', 'application/vnd.wap.wmlc' ],\r\n\t\t\t\t[ 'wmls', 'text/vnd.wap.wmlscript' ],\r\n\t\t\t\t[ 'wmlsc', 'application/vnd.wap.wmlscriptc' ],\r\n\t\t\t\t[ 'wmp', 'video/x-ms-wmp' ],\r\n\t\t\t\t[ 'wmv', 'video/x-ms-wmv' ],\r\n\t\t\t\t[ 'wmx', 'video/x-ms-wmx' ],\r\n\t\t\t\t[ 'wmz', 'application/x-ms-wmz' ],\r\n\t\t\t\t[ 'woff', 'application/font-woff' ],\r\n\t\t\t\t[ 'woff2', 'application/font-woff2' ],\r\n\t\t\t\t[ 'wpl', 'application/vnd.ms-wpl' ],\r\n\t\t\t\t[ 'wps', 'application/vnd.ms-works' ],\r\n\t\t\t\t[ 'wri', 'application/x-mswrite' ],\r\n\t\t\t\t[ 'wrl', 'x-world/x-vrml' ],\r\n\t\t\t\t[ 'wrz', 'x-world/x-vrml' ],\r\n\t\t\t\t[ 'wsc', 'text/scriptlet' ],\r\n\t\t\t\t[ 'wsdl', 'text/xml' ],\r\n\t\t\t\t[ 'wvx', 'video/x-ms-wvx' ],\r\n\t\t\t\t[ 'x', 'application/directx' ],\r\n\t\t\t\t[ 'xaf', 'x-world/x-vrml' ],\r\n\t\t\t\t[ 'xaml', 'application/xaml+xml' ],\r\n\t\t\t\t[ 'xap', 'application/x-silverlight-app' ],\r\n\t\t\t\t[ 'xbap', 'application/x-ms-xbap' ],\r\n\t\t\t\t[ 'xbm', 'image/x-xbitmap' ],\r\n\t\t\t\t[ 'xdr', 'text/plain' ],\r\n\t\t\t\t[ 'xht', 'application/xhtml+xml' ],\r\n\t\t\t\t[ 'xhtml', 'application/xhtml+xml' ],\r\n\t\t\t\t[ 'xla', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xlam', 'application/vnd.ms-excel.addin.macroEnabled.12' ],\r\n\t\t\t\t[ 'xlc', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xld', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xlk', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xll', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xlm', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xls', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' ],\r\n\t\t\t\t[ 'xlsm', 'application/vnd.ms-excel.sheet.macroEnabled.12' ],\r\n\t\t\t\t[ 'xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ],\r\n\t\t\t\t[ 'xlt', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xltm', 'application/vnd.ms-excel.template.macroEnabled.12' ],\r\n\t\t\t\t[ 'xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' ],\r\n\t\t\t\t[ 'xlw', 'application/vnd.ms-excel' ],\r\n\t\t\t\t[ 'xml', 'text/xml' ],\r\n\t\t\t\t[ 'xmp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'xmta', 'application/xml' ],\r\n\t\t\t\t[ 'xof', 'x-world/x-vrml' ],\r\n\t\t\t\t[ 'XOML', 'text/plain' ],\r\n\t\t\t\t[ 'xpm', 'image/x-xpixmap' ],\r\n\t\t\t\t[ 'xps', 'application/vnd.ms-xpsdocument' ],\r\n\t\t\t\t[ 'xrm-ms', 'text/xml' ],\r\n\t\t\t\t[ 'xsc', 'application/xml' ],\r\n\t\t\t\t[ 'xsd', 'text/xml' ],\r\n\t\t\t\t[ 'xsf', 'text/xml' ],\r\n\t\t\t\t[ 'xsl', 'text/xml' ],\r\n\t\t\t\t[ 'xslt', 'text/xml' ],\r\n\t\t\t\t[ 'xsn', 'application/octet-stream' ],\r\n\t\t\t\t[ 'xss', 'application/xml' ],\r\n\t\t\t\t[ 'xspf', 'application/xspf+xml' ],\r\n\t\t\t\t[ 'xtp', 'application/octet-stream' ],\r\n\t\t\t\t[ 'xwd', 'image/x-xwindowdump' ],\r\n\t\t\t\t[ 'z', 'application/x-compress' ],\r\n\t\t\t\t[ 'zip', 'application/zip' ]\r\n\t\t\t]);\r\n\r\n\t/**\r\n\t * Returns a friendly category name.\r\n\t * @param {string} entityType\r\n\t * The entity type name to convert.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static getCategoryFromType(entityType: string): string\r\n\t{\r\n\t\tif (entityType\r\n\t\t\t.startsWith(this.fileBaseType) === false)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'Cannot get category for invalid file entity type '\r\n\t\t\t\t\t+ `\"${entityType}\"`);\r\n\t\t}\r\n\r\n\t\tif (entityType === this.fileBaseType)\r\n\t\t{\r\n\t\t\treturn this.fileBaseTypeCategory;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\tentityType,\r\n\t\t\t\t'.'));\r\n\t}\r\n\r\n\t/**\r\n\t * find the extension in the string passed if it is known.\r\n\t *\r\n\t * @param {string} filename\r\n\t * the file name or string to search\r\n\t * @memberof FileHelper\r\n\t * @returns {string}\r\n\t * the extension.\r\n\t */\r\n\tpublic static findKnownExtension(filename: string): string\r\n\t{\r\n\t\tlet extension: string;\r\n\r\n\t\tconst segments: string[] =\r\n\t\t\tfilename\r\n\t\t\t\t.split('?')\r\n\t\t\t\t[0]\r\n\t\t\t\t.split('.');\r\n\r\n\t\tsegments.forEach(\r\n\t\t\t(segment: string) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.mimeTypes.has(segment))\r\n\t\t\t\t{\r\n\t\t\t\t\textension = segment;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn extension;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the mime type / content type of the file\r\n\t *\r\n\t * @param {string} extension\r\n\t * a file extension.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static getContentMimeType(extension: string): string\r\n\t{\r\n\t\treturn this.mimeTypes\r\n\t\t\t.get(extension\r\n\t\t\t\t.toLowerCase()\r\n\t\t\t\t.replace('.', ''));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an css class for an icon representing\r\n\t * this file content type.\r\n\t *\r\n\t * @param {string} contentMimeType\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static getFileIconClass(contentMimeType: string): string\r\n\t{\r\n\t\tconst mimeType: string = contentMimeType\r\n\t\t\t.toLowerCase();\r\n\r\n\t\tif (mimeType.includes('audio'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('audio');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('excel'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('excel');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('pdf'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('pdf');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('word'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('word');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('archive'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('archive');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('image'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('image');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('text'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('text');\r\n\t\t}\r\n\r\n\t\tif (mimeType.includes('zip'))\r\n\t\t{\r\n\t\t\treturn this.fileIcons.get('zip');\r\n\t\t}\r\n\r\n\t\treturn this.fileIcons.get('default');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the custom metadata in displayable key/value pairs.\r\n\t *\r\n\t * @param {IFileEntity} fileEntity\r\n\t * The file entity with the custom metadata.\r\n\t * @param {string[]} includeProperties\r\n\t * The optional filter of properties to include.\r\n\t * If this is null all properties will be included.\r\n\t * @returns {IKeyValuePair[]}\r\n\t * The filtered metadata as displayable key/value pairs\r\n\t * @memberof FileHelper\r\n\t */\r\n\t public static getCustomMetadata(\r\n\t\tfileEntity: IFileEntity,\r\n\t\tincludeProperties: string[]): IKeyValuePair[]\r\n\t{\r\n\t\tconst custom: any\r\n\t\t\t = fileEntity?.data?.metadata?.custom;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(custom))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst entries: any = AnyHelper.isNullOrEmpty(includeProperties)\r\n\t\t\t? Object.entries(custom)\r\n\t\t\t: Object.entries(custom)\r\n\t\t\t\t.filter(([key, _]) =>\r\n\t\t\t\t\tincludeProperties.includes(key));\r\n\r\n\t\treturn entries.map(\r\n\t\t\t([key, value]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: StringHelper.toProperCase(\r\n\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(key)),\r\n\t\t\t\t\tvalue: this.formatMetadataValue(value)\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a metadata value.\r\n\t *\r\n\t * @param {any} value\r\n\t * The file entity with the custom metadata.\r\n\t * @returns {string}\r\n\t * The filtered metadata as displayable key/value pairs\r\n\t * @memberof FileHelper\r\n\t */\r\n\tpublic static formatMetadataValue(\r\n\t\tvalue: any): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(value))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst valueString: string = `${value}`;\r\n\r\n\t\tif (isNaN(value)\r\n\t\t\t&& DateHelper.isDate(valueString))\r\n\t\t{\r\n\t\t\tconst localDate: Date = DateHelper\r\n\t\t\t\t.fromUtcSystemIsoToSimulatedLocalDate(valueString);\r\n\r\n\t\t\tconst dateTime: DateTime = DateTime\r\n\t\t\t\t.fromJSDate(localDate);\r\n\r\n\t\t\treturn DateHelper.formatDate(dateTime);\r\n\t\t}\r\n\r\n\t\treturn valueString;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAbstractControl\r\n} from '@angular/forms';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormEventConstants\r\n} from '@shared/constants/form-event.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from './string.helper';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for formly interactions.\r\n *\r\n * @export\r\n * @class FormlyHelper\r\n */\r\nexport class FormlyHelper\r\n{\r\n\t/**\r\n\t * Gets or sets the section index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static sectionIndex: number;\r\n\r\n\t/**\r\n\t * Gets or sets the tab index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static tabIndex: number;\r\n\r\n\t/**\r\n\t * This will add the sent additional method to the existing form controls\r\n\t * update value and validity function.\r\n\t * @note The fields logic check can likely be removed with an upgraded\r\n\t * Formly.\r\n\t * This was required starting with Formly v6.0.0-next.1.\r\n\t *\r\n\t * @static\r\n\t * @param {AbstractControl} formControl\r\n\t * The formly based form control that implements update value and validity.\r\n\t * @param {Function} additionalMethod\r\n\t * The additional method to run as part of the update value and validity\r\n\t * chain of the sent control.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static extendUpdateValueAndValidity(\r\n\t\tformControl: AbstractControl,\r\n\t\tadditionalMethod: Function): void\r\n\t{\r\n\t\t// Ensure we are not cloning validations if the same field is displayed\r\n\t\t// in multiple locations due to anyOf displays.\r\n\t\tif ((formControl)._fields?.length > 1)\r\n\t\t{\r\n\t\t\tdelete (formControl)._fields;\r\n\t\t}\r\n\r\n\t\tconst currentValidityMethod: Function =\r\n\t\t\tformControl.updateValueAndValidity.bind(formControl);\r\n\r\n\t\tformControl.updateValueAndValidity =\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tcurrentValidityMethod();\r\n\t\t\t\tadditionalMethod();\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fires a view check on a displayed formly form. This will reach into\r\n\t * each form control in the layout and update the value and validity.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} formlyEntityLayout\r\n\t * The formly field array to be recursively checked for validity.\r\n\t * @param {boolean} dipatchRepeaterCleanModelEvent\r\n\t * To dispatch the repeater clean model event. Defaults to false.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static fireViewCheck(\r\n\t\tformlyEntityLayout: FormlyFieldConfig[],\r\n\t\tdipatchRepeaterCleanModelEvent: boolean = false): void\r\n\t{\r\n\t\tformlyEntityLayout.forEach(\r\n\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tfield.formControl?.value)\r\n\t\t\t\t\t&& field.expressions?.hide?.valueOf() === true\r\n\t\t\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\t\t\t(field.formControl)?.defaultValue))\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.formControl.setValue(\r\n\t\t\t\t\t\t(field.formControl)?.defaultValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfield.formControl?.markAsDirty();\r\n\t\t\t\tfield.formControl?.updateValueAndValidity();\r\n\t\t\t\tthis.updateChildren(field);\r\n\t\t\t});\r\n\r\n\t\tif (dipatchRepeaterCleanModelEvent === true)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchRepeaterCleanModelEvent();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the layout json data\r\n\t * as Formly consumable layout fields. This is used for\r\n\t * translations from the valid JSON in the database\r\n\t * into a format the Formly expects.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig[]} jsonLayout\r\n\t * The formly field configuration to be created as a formly layout.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * A formly field configuration array ready for display in a formly\r\n\t * layout.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static getFormlyLayout(\r\n\t\tjsonLayout: FormlyFieldConfig[],\r\n\t\tcontext: object): FormlyFieldConfig[]\r\n\t{\r\n\t\tlet tabAdded: boolean = false;\r\n\t\tthis.sectionIndex = 0;\r\n\t\tthis.tabIndex = 0;\r\n\r\n\t\treturn jsonLayout.map(\r\n\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\tfieldIndex: number) =>\r\n\t\t\t{\r\n\t\t\t\tthis.mapField(\r\n\t\t\t\t\tfield,\r\n\t\t\t\t\tcontext,\r\n\t\t\t\t\tfieldIndex);\r\n\r\n\t\t\t\tif (this.isTabWrapper(\r\n\t\t\t\t\tfield) === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.props.visible = !tabAdded;\r\n\r\n\t\t\t\t\tif (tabAdded === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttabAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn field;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This will find the existing formly field config with a key\r\n\t * matching the sent fieldKey.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} formlyEntityLayout\r\n\t * The formly entity layout.\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @memberof FormlyHelper\r\n\t * @returns {FormlyFieldConfig}\r\n\t * If found, this will return the field config with the matching key.\r\n\t */\r\n\tpublic static getMatchingFieldConfigurations(\r\n\t\tformlyEntityLayout: FormlyFieldConfig[],\r\n\t\tfieldKey: string): FormlyFieldConfig[]\r\n\t{\r\n\t\tlet fields: FormlyFieldConfig[] = [];\r\n\r\n\t\tfor (const layoutField of formlyEntityLayout)\r\n\t\t{\r\n\t\t\tconst nestedFields: FormlyFieldConfig[] =\r\n\t\t\t\tthis.getMatchingChildFieldConfigurations(\r\n\t\t\t\t\tlayoutField,\r\n\t\t\t\t\tfieldKey);\r\n\r\n\t\t\tfields = fields.concat(nestedFields);\r\n\t\t}\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * This will find the existing child formly field config with a key\r\n\t * matching the sent fieldKey.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field.\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @memberof FormlyHelper\r\n\t * @returns {FormlyFieldConfig}\r\n\t * If found, this will return the field config with the child matching key.\r\n\t */\r\n\tpublic static getMatchingChildFieldConfigurations(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tfieldKey: string): FormlyFieldConfig[]\r\n\t{\r\n\t\tlet fields: FormlyFieldConfig[] = [];\r\n\r\n\t\tif (!AnyHelper.isNull(field.props?.attributes)\r\n\t\t\t&& field.props.attributes[\r\n\t\t\t\tFormlyConstants.attributeKeys.dataKey]?.toString()\r\n\t\t\t\t=== fieldKey\r\n\t\t\t|| field.key?.toString() === fieldKey)\r\n\t\t{\r\n\t\t\tfields.push(field);\r\n\t\t}\r\n\r\n\t\tconst fieldGroups: any[] =\r\n\t\t\t(field.fieldGroup || []);\r\n\r\n\t\tfor (const fieldGroup of fieldGroups)\r\n\t\t{\r\n\t\t\tfields = fields.concat(this.getMatchingChildFieldConfigurations(\r\n\t\t\t\tfieldGroup,\r\n\t\t\t\tfieldKey));\r\n\t\t}\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * This will check a formly field to see if this field is describing a tab\r\n\t * content wrapper.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration to check for a tab content wrapper.\r\n\t * @return {boolean}\r\n\t * A value signifying whether or not this field is a tab content wrapper.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static isTabWrapper(\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tconst wrapperTypes: string[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\tFormlyConstants.customControls.customTabContent\r\n\t\t\t];\r\n\r\n\t\treturn wrapperTypes.some(\r\n\t\t\t(wrapperType: string) =>\r\n\t\t\t\tfield.wrappers?.indexOf(wrapperType) >= 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the feild should be visible.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The field to check.\r\n\t * @param {any} context\r\n\t * the page context.\r\n\t * @returns {Promise}\r\n\t * A promise containg a bollean of true if the field should be visible.\r\n\t * @async\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static async visible(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcontext: any): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(field.props))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tfield.props.displayPromise))\r\n\t\t{\r\n\t\t\treturn AnyHelper.isNullOrEmpty(field.props.display)\r\n\t\t\t\t? true\r\n\t\t\t\t: field.props.display;\r\n\t\t}\r\n\r\n\t\treturn StringHelper\r\n\t\t\t.transformToDataPromise(\r\n\t\t\t\tfield.props.displayPromise,\r\n\t\t\t\tcontext);\r\n\t}\r\n\r\n\t/**\r\n\t * This will check a formly field to see if this field is describing a\r\n\t * custom empty wrapper\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration to check for a tab content wrapper.\r\n\t * @return {boolean}\r\n\t * A value signifying whether or not this field is a tab content wrapper.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static isEmptyWrapper(\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tconst wrapperTypes: string[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\tFormlyConstants.customControls.customEmptyWrapper\r\n\t\t\t];\r\n\r\n\t\treturn wrapperTypes.some(\r\n\t\t\t(wrapperType: string) =>\r\n\t\t\t\tfield.wrappers?.indexOf(wrapperType) >= 0);\r\n\t}\r\n\r\n\t/**\r\n\t * This will check a formly field to see if this field is describing a\r\n\t * custom field wrapper.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration to check for a custom field wrapper.\r\n\t * @return {boolean}\r\n\t * A value signifying whether or not this field is a custom field wrapper.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static isCustomFieldWrapper(\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tconst wrapperTypes: string[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t];\r\n\r\n\t\treturn wrapperTypes.some(\r\n\t\t\t(wrapperType: string) =>\r\n\t\t\t\tfield.wrappers?.indexOf(wrapperType) >= 0);\r\n\t}\r\n\r\n\t/**\r\n\t * This will check a formly field to see if this field is describing\r\n\t * nested field group.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration to check for a nested field group.\r\n\t * @return {boolean}\r\n\t * A value signifying whether or not this field has a nested field group.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static hasNestedFieldGroup(\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\treturn (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\t(field.fieldArray)?.fieldGroup)\r\n\t\t\t|| !AnyHelper.isNullOrEmptyArray(field.fieldGroup));\r\n\t}\r\n\r\n\t/**\r\n\t * This will find and set the provided value to the formly field config with\r\n\t * a key matching the sent fieldKey into the formly layout.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} jsonLayout\r\n\t * The formly field configuration to be created as a formly layout.\r\n\t * @param {string} fieldKey\r\n\t * The key of the field to acquire.\r\n\t * @param {any} fieldValue\r\n\t * The value of the field to acquire.\r\n\t * @param {boolean} fireValidityChange\r\n\t * Executes the validity of the form if true, otherwise the\r\n\t * validity is skipped.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static setFieldValue(\r\n\t\tjsonLayout: FormlyFieldConfig[],\r\n\t\tfieldKey: string,\r\n\t\tfieldValue: any = AppConstants.empty,\r\n\t\tfireValidityChange: boolean = false): void\r\n\t{\r\n\t\tconst field: FormlyFieldConfig = jsonLayout\r\n\t\t\t.find((fieldConfig) =>\r\n\t\t\t\tfieldConfig.key === fieldKey);\r\n\r\n\t\tfield.formControl?.setValue(fieldValue);\r\n\r\n\t\tif (fireValidityChange)\r\n\t\t{\r\n\t\t\tfield.formControl?.markAsDirty();\r\n\t\t\tfield.formControl?.markAsTouched();\r\n\t\t\tfield.formControl?.updateValueAndValidity();\r\n\t\t}\r\n\r\n\t\tconst element: any = document.getElementById(\r\n\t\t\tfield.id);\r\n\r\n\t\telement?.dispatchEvent(new Event(FormEventConstants.onChangeEvent));\r\n\t}\r\n\r\n\t/**\r\n\t * Translates string based synchronous or asynchronous validations\r\n\t * into runnable functions available in formly.\r\n\t *\r\n\t * @static\r\n\t * @param {any} validationSet\r\n\t * The synchronous or asynchronous validations that need mapped.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {any}\r\n\t * The mapped and formly available validator set running as functions\r\n\t * again the sent context.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static getValidatorFunctions(\r\n\t\tvalidationSet: any,\r\n\t\tcontext: object): any\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(validationSet))\r\n\t\t{\r\n\t\t\tObject.keys(validationSet)\r\n\t\t\t\t.forEach((key: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (validationSet[key].expression\r\n\t\t\t\t\t\t&& typeof validationSet[key].expression ===\r\n\t\t\t\t\t\t\tAppConstants.variableTypes.string)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvalidationSet[key].expression =\r\n\t\t\t\t\t\t\tFunction(\r\n\t\t\t\t\t\t\t\t'control',\r\n\t\t\t\t\t\t\t\t'field',\r\n\t\t\t\t\t\t\t\tvalidationSet[key].expression)\r\n\t\t\t\t\t\t\t\t.bind(context);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn validationSet;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent formly layout this will disable all fields and nested\r\n\t * fields found in this layout.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig[]} formlyEntityLayout\r\n\t * The formly field array to have all fields and nested fields set as\r\n\t * disabled.\r\n\t * @param {boolean} disabled\r\n\t * The set to disable all fields or if false then enable.\r\n\t * Default to true.\r\n\t * @param {boolean} clearDisabledExpressions\r\n\t * If sent and true, this will also remove any expressions of props.disabled\r\n\t * to enforce disables or enables.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The formly field array with all fields and nested fields set as the\r\n\t * parameter disabled.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static disableAllFields(\r\n\t\tformlyEntityLayout: FormlyFieldConfig[],\r\n\t\tdisabled: boolean = true,\r\n\t\tclearDisabledExpressions: boolean = false): FormlyFieldConfig[]\r\n\t{\r\n\t\tformlyEntityLayout.forEach(\r\n\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (clearDisabledExpressions === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.clearDisabledExpressions(field);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfield.props.disabled = disabled;\r\n\t\t\t\tthis.disableChildren(\r\n\t\t\t\t\tfield,\r\n\t\t\t\t\tdisabled,\r\n\t\t\t\t\tclearDisabledExpressions);\r\n\t\t\t});\r\n\r\n\t\treturn formlyEntityLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a Formly field's props based on the number of options.\r\n\t * Disables the field if no options are available.\r\n\t * Sets it to the first option if only one is available.\r\n\t * Otherwise, the field remains enabled for selection.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The Formly field configuration to update.\r\n\t * @param {any[]} options\r\n\t * Array of available options, affecting field behavior based on length.\r\n\t * @param {string} [valueKey]\r\n\t * Key in the option object to set as the field value.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tpublic static updateFieldBasedOnOptions(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\toptions: any[],\r\n\t\tvalueKey: string = 'id'): void\r\n\t{\r\n\t\tif (options.length === 0)\r\n\t\t{\r\n\t\t\tfield.props.disabled = true;\r\n\t\t\tfield.props.placeholder = 'No Available Options';\r\n\t\t}\r\n\t\telse if (options.length === 1)\r\n\t\t{\r\n\t\t\tfield.props.disabled = false;\r\n\t\t\tfield.formControl.setValue(String(options[0][valueKey]));\r\n\t\t\tfield.props.disabled = true;\r\n\t\t\tfield.formControl.updateValueAndValidity();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tfield.props.disabled = false;\r\n\t\t\tfield.props.placeholder = 'Select an Option';\r\n\t\t\tfield.formControl.updateValueAndValidity();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent formly layout this will disable all fields and nested\r\n\t * fields found in this layout. This disable will be called recursively\r\n\t * for each child of the sent field.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be set as disabled along with all children.\r\n\t * @param {boolean} disabled\r\n\t * The set to disable all fields or if false then enable.\r\n\t * Default to true.\r\n\t * @param {boolean} clearDisabledExpressions\r\n\t * If sent and true, this will also remove any expressions of props.disabled\r\n\t * to enforce disables or enables.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static disableChildren(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tdisabled: boolean,\r\n\t\tclearDisabledExpressions: boolean = false): void\r\n\t{\r\n\t\tfield.fieldGroup?.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (clearDisabledExpressions === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.clearDisabledExpressions(fieldGroup);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfieldGroup.props.disabled = disabled;\r\n\t\t\t\tthis.disableChildren(\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tdisabled,\r\n\t\t\t\t\tclearDisabledExpressions);\r\n\t\t\t});\r\n\r\n\t\t((field.fieldArray)?.fieldGroup)?.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (clearDisabledExpressions === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.clearDisabledExpressions(fieldGroup);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfieldGroup.props.disabled = disabled;\r\n\t\t\t\tthis.disableChildren(\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tdisabled,\r\n\t\t\t\t\tclearDisabledExpressions);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent formly layout this will clear any disabled expressions\r\n\t * found in this layout. This clear will be called recursively for each\r\n\t * child of the sent field.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be set as disabled along with all children.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static clearDisabledExpressions(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(field.expressions)\r\n\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\tfield.expressions[\r\n\t\t\t\t\tFormlyConstants.expressionMappings.propsDisabled]))\r\n\t\t{\r\n\t\t\tdelete field.expressions[\r\n\t\t\t\tFormlyConstants.expressionMappings.propsDisabled];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively calls an update of value and validity for each nested\r\n\t * set of form controls.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be recursively checked for validity.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static updateChildren(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\tfield.fieldGroup?.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tfieldGroup.formControl?.value)\r\n\t\t\t\t\t&& fieldGroup.expressions?.hide?.valueOf() === true\r\n\t\t\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\t\t\t(fieldGroup.formControl)?.defaultValue))\r\n\t\t\t\t{\r\n\t\t\t\t\tfieldGroup.formControl.setValue(\r\n\t\t\t\t\t\t(fieldGroup.formControl)?.defaultValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfieldGroup.formControl?.markAsDirty();\r\n\t\t\t\tfieldGroup.formControl?.updateValueAndValidity();\r\n\t\t\t\tthis.updateChildren(fieldGroup);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively maps children into a converted formly field.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be recursively converted and mapped.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @param {number} fieldIndex\r\n\t * field index position in the array.\r\n\t * @param {string} nestedLocation\r\n\t * If sent this will handle the convert with the nested field identifier.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static mapField(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcontext: object,\r\n\t\tfieldIndex: number,\r\n\t\tnestedLocation: string = null): void\r\n\t{\r\n\t\tif (FormlyHelper.isTabWrapper(field)\r\n\t\t\t|| (!FormlyHelper.isCustomFieldWrapper(field)\r\n\t\t\t\t&& FormlyHelper.hasNestedFieldGroup(field))\r\n\t\t\t|| field.type === FormlyConstants.customControls.customSectionTitle)\r\n\t\t{\r\n\t\t\tthis.sectionIndex ++;\r\n\t\t}\r\n\r\n\t\tif (field.type !== FormlyConstants.customControls.customSectionTitle\r\n\t\t\t&& (!FormlyHelper.isEmptyWrapper(field)\r\n\t\t\t\t|| FormlyHelper.isEmptyWrapper(field)\r\n\t\t\t\t\t&& AnyHelper.isNull(field.props))\r\n\t\t\t&& AnyHelper.isNull(field.key)\r\n\t\t\t&& !FormlyHelper.isTabWrapper(field))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.convertToFormlyField(\r\n\t\t\tfield,\r\n\t\t\tcontext,\r\n\t\t\tfieldIndex,\r\n\t\t\tnestedLocation);\r\n\r\n\t\tconst repeaterKey: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(nestedLocation)\r\n\t\t\t\t? field.key?.toString() || AppConstants.empty\r\n\t\t\t\t: `${nestedLocation}.${field.key?.toString()}`;\r\n\r\n\t\tthis.setActionPerFieldGroup(\r\n\t\t\tfield?.fieldGroup,\r\n\t\t\tcontext,\r\n\t\t\trepeaterKey);\r\n\r\n\t\tthis.setActionPerFieldGroup(\r\n\t\t\t(field.fieldArray)?.fieldGroup,\r\n\t\t\tcontext,\r\n\t\t\trepeaterKey);\r\n\r\n\t\tif (FormlyHelper.isTabWrapper(field))\r\n\t\t{\r\n\t\t\tthis.tabIndex ++;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field pulled from the layout, this will\r\n\t * alter stored JSON into a format that Formly expects.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The layout field to be cast into a Formly field for display.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @param {number} fieldIndex\r\n\t * field index position in the array.\r\n\t * @param {string} nestedLocation\r\n\t * If sent this will handle the convert with the nested field identifier.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\tprivate static convertToFormlyField(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcontext: object,\r\n\t\tfieldIndex: number,\r\n\t\tnestedLocation: string = null): FormlyFieldConfig\r\n\t{\r\n\t\tfield.props = field.props ?? {};\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(field.key))\r\n\t\t{\r\n\t\t\tfield.props.attributes =\r\n\t\t\t\t{\r\n\t\t\t\t\t'data-key':\r\n\t\t\t\t\t\t((!AnyHelper.isNullOrWhitespace(nestedLocation)\r\n\t\t\t\t\t\t\t? `${nestedLocation}.`\r\n\t\t\t\t\t\t\t: AppConstants.empty)\r\n\t\t\t\t\t\t\t\t+ field.key)\r\n\t\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\t\t/\\[\\d+\\]/g,\r\n\t\t\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tfield.props.attributes =\r\n\t\t\t{\r\n\t\t\t\t...field.props.attributes,\r\n\t\t\t\t...{\r\n\t\t\t\t\t'section-index': this.sectionIndex,\r\n\t\t\t\t\t'tab-index': this.tabIndex,\r\n\t\t\t\t\t'field-index': fieldIndex\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tfield.validators =\r\n\t\t\tthis.getValidatorFunctions(\r\n\t\t\t\tfield.validators,\r\n\t\t\t\tcontext);\r\n\t\tfield.asyncValidators =\r\n\t\t\tthis.getValidatorFunctions(\r\n\t\t\t\tfield.asyncValidators,\r\n\t\t\t\tcontext);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(field.props.change)\r\n\t\t\t&& !AnyHelper.isFunction(field.props.change))\r\n\t\t{\r\n\t\t\tfield.props.change =\r\n\t\t\t\tFunction(\r\n\t\t\t\t\t'field',\r\n\t\t\t\t\t'$event',\r\n\t\t\t\t\tfield.props.change.toString())\r\n\t\t\t\t\t.bind(context);\r\n\t\t}\r\n\r\n\t\treturn field;\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field pulled from the layout, this will\r\n\t * alter stored JSON into a format that Formly expects.\r\n\t *\r\n\t * @static\r\n\t * @param {FormlyFieldConfig[]} fieldGroups\r\n\t * The layout field groups.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @param {string} repeaterKey\r\n\t * The repeater key.\r\n\t * @memberof FormlyHelper\r\n\t */\r\n\t private static setActionPerFieldGroup(\r\n\t\tfieldGroups: FormlyFieldConfig[],\r\n\t\tcontext: object,\r\n\t\trepeaterKey: string): void\r\n\t{\r\n\t\tfieldGroups?.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig,\r\n\t\t\t\tfieldIndex: number) =>\r\n\t\t\t{\r\n\t\t\t\tthis.convertToFormlyField(\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tcontext,\r\n\t\t\t\t\tfieldIndex,\r\n\t\t\t\t\trepeaterKey);\r\n\r\n\t\t\t\tthis.mapField(\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tcontext,\r\n\t\t\t\t\tfieldIndex,\r\n\t\t\t\t\trepeaterKey);\r\n\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined available form\r\n * emitted events that can be consumed in listening components\r\n * via the host listener.\r\n *\r\n * @export\r\n * @const FormEventConstants\r\n */\r\nexport const FormEventConstants:\r\n{\r\n\tonChangeEvent: string;\r\n} = {\r\n\tonChangeEvent: 'onChange'\r\n};","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tget,\r\n\thas\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A class containing static helper methods for json schema definitions.\r\n *\r\n * @export\r\n * @class JsonSchemaHelper\r\n */\r\nexport class JsonSchemaHelper\r\n{\r\n\t/**\r\n\t * Gets the key used to define a description found in json schema.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tprivate static readonly descriptionJsonSchemaKey: string = 'description';\r\n\r\n\t/**\r\n\t * Gets the key used to define object properties in json schema.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tprivate static readonly propertiesJsonSchemaKey: string = 'properties';\r\n\r\n\t/**\r\n\t * Gets the key used to define items found in json schema arrays.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tprivate static readonly itemsJsonSchemaKey: string = 'items';\r\n\r\n\t/**\r\n\t * Gets the key used to define an object found in json schema.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tprivate static readonly objectJsonSchemaKey: string = 'object';\r\n\r\n\t/**\r\n\t * Gets an array item level definition this will filter to the item type\r\n\t * if the array signifies an any of definition.\r\n\t *\r\n\t * @param {any} arraySchemaDefinition\r\n\t * The array level schema definition holding a single item object definition\r\n\t * or an any of set of possible item object definitions.\r\n\t * @param {string} itemType\r\n\t * The item type to get an array item definition for if this definition\r\n\t * holds an any of set. This value defaults to an empty string if not\r\n\t * sent and will instead find the single item object definition.\r\n\t * @returns {any}\r\n\t * The array item object level schema definition regardless of the array\r\n\t * definition structure.\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tpublic static getArrayItemDefinition(\r\n\t\tarraySchemaDefinition: any,\r\n\t\titemType: string = AppConstants.empty): any\r\n\t{\r\n\t\treturn arraySchemaDefinition.items?.anyOf?.find(\r\n\t\t\t(anyOfDefinition: any) =>\r\n\t\t\t\t((AnyHelper.isNullOrWhitespace(itemType)\r\n\t\t\t\t\t&& AnyHelper.isNull(\r\n\t\t\t\t\t\tanyOfDefinition.properties?.type?.const))\r\n\t\t\t\t\t|| anyOfDefinition.properties?.type?.const === itemType))\r\n\t\t\t\t\t?? arraySchemaDefinition.items\r\n\t\t\t\t\t?? arraySchemaDefinition;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a schema definition value that can be found in the sent schema\r\n\t * definition and is defined by the sent object level property key.\r\n\t *\r\n\t * @param {any} schemaDefinition\r\n\t * The object level schema definition holding a nested schema definition.\r\n\t * @param {string} propertyKey\r\n\t * The property key to find a schema definition for as it is stored\r\n\t * in data. This function will translate that value into it's matched\r\n\t * schema definition.\r\n\t * @returns {any}\r\n\t * The matching schema definition for the property key found in the sent\r\n\t * schema definition.\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tpublic static getSchemaDefinition(\r\n\t\tschemaDefinition: any,\r\n\t\tpropertyKey: string): any\r\n\t{\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase has(\r\n\t\t\t\tschemaDefinition,\r\n\t\t\t\t`${this.propertiesJsonSchemaKey}.${propertyKey}`):\r\n\t\t\t\treturn get(\r\n\t\t\t\t\tschemaDefinition,\r\n\t\t\t\t\t`${this.propertiesJsonSchemaKey}.${propertyKey}`);\r\n\t\t\tcase has(\r\n\t\t\t\tschemaDefinition,\r\n\t\t\t\t`${AppConstants.commonProperties.characteristics}.`\r\n\t\t\t\t\t+ `${this.propertiesJsonSchemaKey}.${propertyKey}`):\r\n\t\t\t\treturn get(\r\n\t\t\t\t\tschemaDefinition,\r\n\t\t\t\t\t`${AppConstants.commonProperties.characteristics}.`\r\n\t\t\t\t\t\t+ `${this.propertiesJsonSchemaKey}.${propertyKey}`);\r\n\t\t\tcase has(\r\n\t\t\t\tschemaDefinition,\r\n\t\t\t\t`${this.propertiesJsonSchemaKey}.`\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.characteristics}.`\r\n\t\t\t\t\t+ `${this.propertiesJsonSchemaKey}.${propertyKey}`):\r\n\t\t\t\treturn get(\r\n\t\t\t\t\tschemaDefinition,\r\n\t\t\t\t\t`${this.propertiesJsonSchemaKey}.`\r\n\t\t\t\t\t\t+ `${AppConstants.commonProperties.characteristics}.`\r\n\t\t\t\t\t\t+ `${this.propertiesJsonSchemaKey}.${propertyKey}`);\r\n\t\t\tdefault:\r\n\t\t\t\treturn get (schemaDefinition, propertyKey);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets properties found in a json schema object. This is a recursive\r\n\t * method.\r\n\t *\r\n\t * @param {any} object\r\n\t * The json schema object to gather properties for.\r\n\t * @param {string} [parentObjectName]\r\n\t * If sent, this will append the parent object name\r\n\t * to the returned data key.\r\n\t * @param {string} [parentObjectDescription]\r\n\t * If sent, this will be set as the description of the parent object.\r\n\t * @param {IKeyValuePair[]} [existingSchemaProperties]\r\n\t * If sent, this will append the new found properties to the original set.\r\n\t * @returns {IKeyValuePair[]}\r\n\t * The full set of json schema properties found in this entity schema.\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\t public static getSchemaProperties(\r\n\t\tobject: any,\r\n\t\tparentObjectName?: string,\r\n\t\tparentObjectDescription?: string,\r\n\t\texistingSchemaProperties?: IKeyValuePair[]): IKeyValuePair[]\r\n\t{\r\n\t\tconst schemaProperties: IKeyValuePair[] =\r\n\t\t\texistingSchemaProperties || [];\r\n\t\tlet newObject: IKeyValuePair;\r\n\r\n\t\tfor (const objectPropertyName in object)\r\n\t\t{\r\n\t\t\tif (object.hasOwnProperty(objectPropertyName)\r\n\t\t\t\t&& !object[objectPropertyName]\r\n\t\t\t\t\t.hasOwnProperty(this.propertiesJsonSchemaKey)\r\n\t\t\t\t&& (!object[objectPropertyName]\r\n\t\t\t\t\t.hasOwnProperty(this.itemsJsonSchemaKey)\r\n\t\t\t\t\t|| (object[objectPropertyName].items.type\r\n\t\t\t\t\t\t!== this.objectJsonSchemaKey\r\n\t\t\t\t\t\t&& AnyHelper.isNull(\r\n\t\t\t\t\t\t\tobject[objectPropertyName].items.anyOf))))\r\n\t\t\t{\r\n\t\t\t\tobject[objectPropertyName].parentDescription =\r\n\t\t\t\t\tparentObjectDescription;\r\n\r\n\t\t\t\tnewObject =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: AnyHelper.isNullOrEmpty(parentObjectName)\r\n\t\t\t\t\t\t\t? objectPropertyName\r\n\t\t\t\t\t\t\t: `${parentObjectName}.${objectPropertyName}`,\r\n\t\t\t\t\t\tvalue: object[objectPropertyName]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tschemaProperties.push(newObject);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst currentObject: any = object[objectPropertyName];\r\n\t\t\t\tlet currentParentObjectDescription: string =\r\n\t\t\t\t\t(AnyHelper.isNullOrEmpty(parentObjectDescription)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: `${parentObjectDescription} `)\r\n\t\t\t\t\t\t+ (currentObject[this.descriptionJsonSchemaKey]\r\n\t\t\t\t\t\t\t\t|| StringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\t\tobjectPropertyName));\r\n\r\n\t\t\t\tif (object[objectPropertyName].hasOwnProperty(\r\n\t\t\t\t\tthis.itemsJsonSchemaKey))\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrentParentObjectDescription =\r\n\t\t\t\t\t\tcurrentObject[this.itemsJsonSchemaKey][\r\n\t\t\t\t\t\t\tthis.descriptionJsonSchemaKey]\r\n\t\t\t\t\t\t\t\t|| parentObjectDescription;\r\n\r\n\t\t\t\t\tlet itemProperties: IKeyValuePair[] = [];\r\n\t\t\t\t\tif (AnyHelper.isNull(\r\n\t\t\t\t\t\tobject[objectPropertyName].items.anyOf))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titemProperties =\r\n\t\t\t\t\t\t\tthis.getSchemaProperties(\r\n\t\t\t\t\t\t\t\tobject[objectPropertyName].items.properties,\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrEmpty(parentObjectName)\r\n\t\t\t\t\t\t\t\t\t? `${objectPropertyName}[]`\r\n\t\t\t\t\t\t\t\t\t: `${parentObjectName}.`\r\n\t\t\t\t\t\t\t\t\t\t+ `${objectPropertyName}[]`,\r\n\t\t\t\t\t\t\t\tcurrentParentObjectDescription,\r\n\t\t\t\t\t\t\t\tschemaProperties);\r\n\r\n\t\t\t\t\t\t// This is required for recursion.\r\n\t\t\t\t\t\t// The return value is not required.\r\n\t\t\t\t\t\tschemaProperties.concat(itemProperties);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (const item of\r\n\t\t\t\t\t\t\tobject[objectPropertyName].items.anyOf)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\titemProperties =\r\n\t\t\t\t\t\t\t\tthis.getSchemaProperties(\r\n\t\t\t\t\t\t\t\t\titem.properties,\r\n\t\t\t\t\t\t\t\t\tAnyHelper.isNullOrEmpty(parentObjectName)\r\n\t\t\t\t\t\t\t\t\t\t? `${objectPropertyName}[`\r\n\t\t\t\t\t\t\t\t\t\t\t+ `${item.properties.type.const}]`\r\n\t\t\t\t\t\t\t\t\t\t: `${parentObjectName}.`\r\n\t\t\t\t\t\t\t\t\t\t\t+ `${objectPropertyName}[`\r\n\t\t\t\t\t\t\t\t\t\t\t+ `${item.properties.type.const}]`,\r\n\t\t\t\t\t\t\t\t\tcurrentParentObjectDescription,\r\n\t\t\t\t\t\t\t\t\tschemaProperties);\r\n\r\n\t\t\t\t\t\t\t// This is required for recursion.\r\n\t\t\t\t\t\t\t// The return value is not required.\r\n\t\t\t\t\t\t\tschemaProperties.concat(itemProperties);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tconst objectProperties: IKeyValuePair[] =\r\n\t\t\t\t\t\tthis.getSchemaProperties(\r\n\t\t\t\t\t\t\tobject[objectPropertyName].properties,\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrEmpty(parentObjectName)\r\n\t\t\t\t\t\t\t\t? objectPropertyName\r\n\t\t\t\t\t\t\t\t: `${parentObjectName}.${objectPropertyName}`,\r\n\t\t\t\t\t\t\tcurrentParentObjectDescription,\r\n\t\t\t\t\t\t\tschemaProperties);\r\n\r\n\t\t\t\t\t// This is required for recursion.\r\n\t\t\t\t\t// The return value is not required.\r\n\t\t\t\t\tschemaProperties.concat(objectProperties);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn schemaProperties;\r\n\t}\r\n}","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nexport default differenceBy;\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tdifferenceBy,\r\n\tget\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A class containing static helper methods for the\r\n * object array type.\r\n *\r\n * @export\r\n * @class ObjectArrayHelper\r\n */\r\nexport class ObjectArrayHelper\r\n{\r\n\t/**\r\n\t * Returns an array of comma separated property values for\r\n\t * object arrays.\r\n\t *\r\n\t * @static\r\n\t * @param {object[]} array\r\n\t * The array to be evaluated.\r\n\t * @param {string} propertyName\r\n\t * The property value to concatenate.\r\n\t * @memberof ObjectArrayHelper\r\n\t * @returns {string}\r\n\t * A comma separated array of property values.\r\n\t */\r\n\tpublic static commaSeparatedPropertyValues(\r\n\t\tarray: object[],\r\n\t\tpropertyName: string): string\r\n\t{\r\n\t\treturn array\r\n\t\t\t.filter((item: object) =>\r\n\t\t\t\t!AnyHelper.isNullOrEmpty(item[propertyName]))\r\n\t\t\t.map((item: object) => item[propertyName])\r\n\t\t\t.join(AppConstants.characters.comma);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a consolidated list of the differences\r\n\t * between two arrays.\r\n\t *\r\n\t * @static\r\n\t * @param {object[]} initialArray\r\n\t * The array to be evaluated.\r\n\t * @param {object[]} comparisonArray\r\n\t * The list of data to check against.\r\n\t * @param {string} dataKey\r\n\t * The data key if any existing.\r\n\t * @memberof ObjectArrayHelper\r\n\t * @returns {object[]}\r\n\t * The object array diferences.\r\n\t */\r\n\tpublic static getObjectArrayDifferences(\r\n\t\tinitialArray: object[],\r\n\t\tcomparisonArray: object[],\r\n\t\tdataKey: string): object[]\r\n\t{\r\n\t\treturn differenceBy(\r\n\t\t\tinitialArray,\r\n\t\t\tcomparisonArray,\r\n\t\t\tdataKey)\r\n\t\t\t.concat(\r\n\t\t\t\tdifferenceBy(\r\n\t\t\t\t\tcomparisonArray,\r\n\t\t\t\t\tinitialArray,\r\n\t\t\t\t\tdataKey));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an object from an array based on a property value.\r\n\t * @remarks Nested property lookups are supported.\r\n\t *\r\n\t * @static\r\n\t * @param {object[]} array\r\n\t * The array to be evaluated.\r\n\t * @param {string} propertyName\r\n\t * The property to be evaluated in each array item.\r\n\t * @param {any} matchValue\r\n\t * The value to compare to find a match for.\r\n\t * @returns {object}\r\n\t * The object matching the property value.\r\n\t * @typeparam TReturnType\r\n\t * The object type to return.\r\n\t * @memberof ObjectArrayHelper\r\n\t */\r\n\tpublic static findByProperty(\r\n\t\tarray: object[],\r\n\t\tpropertyName: string,\r\n\t\tmatchValue: any): TReturnType\r\n\t{\r\n\t\tif (AnyHelper.isNull(array))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn array.find(\r\n\t\t\t(item: object) =>\r\n\t\t\t\tget(item, propertyName) ===\tmatchValue) as TReturnType\r\n\t\t\t\t?? null;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a grouped array of objects from an array based on a\r\n\t * pivot property value.\r\n\t *\r\n\t * @param {object[]} array\r\n\t * The array to group by the property name.\r\n\t * @param {string} propertyName\r\n\t * The property name to group by.\r\n\t * @returns {pivotProperty: string; items: any[]}\r\n\t * The grouped array of objects.\r\n\t * @memberof ObjectArrayHelper\r\n\t */\r\n\tpublic static groupByProperty(\r\n\t\tarray: object[],\r\n\t\tpropertyName: string): {pivotProperty: string; items: any[]}[]\r\n\t{\r\n\t\tconst groupedByProperty: any =\r\n\t\t\tarray.reduce(\r\n\t\t\t\t(accumulator: any,\r\n\t\t\t\t\titem: object) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst propertyValue: string =\r\n\t\t\t\t\t\tget(item, propertyName)?.toString();\r\n\r\n\t\t\t\t\tif (AnyHelper.isNull(accumulator[propertyValue]))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taccumulator[propertyValue] =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpivotProperty: propertyValue,\r\n\t\t\t\t\t\t\t\titems: []\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taccumulator[propertyValue]\r\n\t\t\t\t\t\t.items\r\n\t\t\t\t\t\t.push(item);\r\n\r\n\t\t\t\t\treturn accumulator;\r\n\t\t\t\t},\r\n\t\t\t\t{});\r\n\r\n\t\treturn Object.values(groupedByProperty);\r\n\t}\r\n}","///////////////////////////////////////////////////////////////////////////////// \r\n// JSONCrush v1.1.6 by Frank Force - https://github.com/KilledByAPixel/JSONCrush\r\n///////////////////////////////////////////////////////////////////////////////// \r\n\r\n'use strict';\r\n\r\nexport default\r\n{\r\n\r\ncrush: (string, maxSubstringLength=50)=>\r\n{\r\n const delimiter = '\\u0001'; // used to split parts of crushed string\r\n const JSCrush=(string, replaceCharacters)=>\r\n {\r\n // JSCrush Algorithm (repleace repeated substrings with single characters)\r\n let replaceCharacterPos = replaceCharacters.length;\r\n let splitString = '';\r\n \r\n const ByteLength =(string)=>encodeURI(encodeURIComponent(string)).replace(/%../g,'i').length;\r\n const HasUnmatchedSurrogate =(string)=>\r\n {\r\n // check ends of string for unmatched surrogate pairs\r\n let c1 = string.charCodeAt(0);\r\n let c2 = string.charCodeAt(string.length-1);\r\n return (c1 >= 0xDC00 && c1 <= 0xDFFF) || (c2 >= 0xD800 && c2 <= 0xDBFF);\r\n }\r\n \r\n // count instances of substrings\r\n let substringCount = {};\r\n for (let substringLength = 2; substringLength < maxSubstringLength; substringLength++)\r\n for (let i = 0; i < string.length - substringLength; ++i)\r\n {\r\n let substring = string.substr(i, substringLength);\r\n\r\n // don't recount if already in list\r\n if (substringCount[substring])\r\n continue;\r\n\r\n // prevent breaking up unmatched surrogates\r\n if (HasUnmatchedSurrogate(substring))\r\n continue;\r\n\r\n // count how many times the substring appears\r\n let count = 1;\r\n for (let substringPos = string.indexOf(substring, i+substringLength); substringPos >= 0; ++count)\r\n substringPos = string.indexOf(substring, substringPos + substringLength);\r\n \r\n // add to list if it appears multiple times\r\n if (count > 1)\r\n substringCount[substring] = count;\r\n }\r\n \r\n while(true) // loop while string can be crushed more\r\n {\r\n // get the next character that is not in the string\r\n for (;replaceCharacterPos-- && string.includes(replaceCharacters[replaceCharacterPos]);){}\r\n if (replaceCharacterPos < 0)\r\n break; // ran out of replacement characters\r\n let replaceCharacter = replaceCharacters[replaceCharacterPos];\r\n \r\n // find the longest substring to replace\r\n let bestSubstring; \r\n let bestLengthDelta = 0; \r\n let replaceByteLength = ByteLength(replaceCharacter);\r\n for (let substring in substringCount) \r\n {\r\n // calculate change in length of string if it substring was replaced\r\n let count = substringCount[substring];\r\n let lengthDelta = (count-1)*ByteLength(substring) - (count+1)*replaceByteLength;\r\n if (!splitString.length)\r\n lengthDelta -= ByteLength(delimiter); // include the delimiter length \r\n if (lengthDelta <= 0)\r\n delete substringCount[substring]\r\n else if (lengthDelta > bestLengthDelta)\r\n {\r\n bestSubstring = substring\r\n bestLengthDelta = lengthDelta;\r\n }\r\n }\r\n if (!bestSubstring)\r\n break; // string can't be compressed further\r\n \r\n // create new string with the split character\r\n string = string.split(bestSubstring).join(replaceCharacter) + replaceCharacter + bestSubstring;\r\n splitString = replaceCharacter + splitString;\r\n \r\n // update substring count list after the replacement\r\n let newSubstringCount = {};\r\n for (let substring in substringCount)\r\n {\r\n // make a new substring with the replacement\r\n let newSubstring = substring.split(bestSubstring).join(replaceCharacter);\r\n \r\n // count how many times the new substring appears\r\n let count = 0;\r\n for (let i = string.indexOf(newSubstring); i >= 0; ++count)\r\n i = string.indexOf(newSubstring, i + newSubstring.length);\r\n \r\n // add to list if it appears multiple times\r\n if (count > 1)\r\n newSubstringCount[newSubstring] = count;\r\n \r\n }\r\n substringCount = newSubstringCount;\r\n }\r\n\r\n return {a:string, b:splitString};\r\n }\r\n \r\n // create a string of replacement characters\r\n let characters = [];\r\n \r\n // prefer replacing with characters that will not be escaped by encodeURIComponent\r\n const unescapedCharacters = `-_.!~*'()`;\r\n for (let i=127; --i;)\r\n {\r\n if \r\n (\r\n (i>=48 && i<=57) || // 0-9\r\n (i>=65 && i<=90) || // A-Z\r\n (i>=97 && i<=122)|| // a-z\r\n unescapedCharacters.includes(String.fromCharCode(i))\r\n )\r\n characters.push(String.fromCharCode(i));\r\n }\r\n \r\n // pick from extended set last\r\n for (let i=32; i<255; ++i)\r\n {\r\n let c = String.fromCharCode(i);\r\n if (c!='\\\\' && !characters.includes(c))\r\n characters.unshift(c);\r\n }\r\n\r\n // remove delimiter if it is found in the string\r\n string = string.replace(new RegExp(delimiter,'g'),'');\r\n \r\n // swap out common json characters\r\n string = JSONCrushSwap(string);\r\n \r\n // crush with JS crush\r\n const crushed = JSCrush(string, characters);\r\n \r\n // insert delimiter between JSCrush parts\r\n let crushedString = crushed.a;\r\n if (crushed.b.length)\r\n crushedString += delimiter + crushed.b;\r\n \r\n // fix issues with some links not being recognized properly\r\n crushedString += '_';\r\n \r\n // return crushed string\r\n return crushedString;\r\n},\r\n\r\nuncrush: (string)=>\r\n{\r\n // remove last character\r\n string = string.substring(0, string.length - 1);\r\n\r\n // unsplit the string using the delimiter\r\n const stringParts = string.split('\\u0001');\r\n \r\n // JSUncrush algorithm\r\n let uncrushedString = stringParts[0];\r\n if (stringParts.length > 1)\r\n {\r\n let splitString = stringParts[1];\r\n for (let character of splitString)\r\n {\r\n // split the string using the current splitCharacter\r\n let splitArray = uncrushedString.split(character);\r\n\r\n // rejoin the string with the last element from the split\r\n uncrushedString = splitArray.join(splitArray.pop());\r\n }\r\n }\r\n \r\n // unswap the json characters in reverse direction\r\n return JSONCrushSwap(uncrushedString, 0);\r\n}\r\n\r\n} // JSONCrush\r\n\r\nconst JSONCrushSwap = (string, forward=1)=>\r\n{\r\n // swap out characters for lesser used ones that wont get escaped\r\n const swapGroups = \r\n [\r\n ['\"', \"'\"],\r\n [\"':\", \"!\"],\r\n [\",'\", \"~\"],\r\n ['}', \")\", '\\\\', '\\\\'],\r\n ['{', \"(\", '\\\\', '\\\\'],\r\n ];\r\n \r\n const swapInternal=(string, g)=>\r\n {\r\n let regex = new RegExp(`${(g[2]?g[2]:'')+g[0]}|${(g[3]?g[3]:'')+g[1]}`,'g');\r\n return string.replace(regex, $1 => ($1 === g[0] ? g[1] : g[0]));\r\n }\r\n\r\n // need to be able to swap characters in reverse direction for uncrush\r\n if (forward)\r\n for (let i = 0; i < swapGroups.length; ++i)\r\n string = swapInternal(string, swapGroups[i]);\r\n else\r\n for (let i = swapGroups.length; i--;)\r\n string = swapInternal(string, swapGroups[i]);\r\n\r\n return string;\r\n}","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n});\n\nexport default differenceWith;\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDescriptionDisplayDefinition\r\n} from '@shared/interfaces/application-objects/description-display-definition.interface';\r\nimport {\r\n\tIDifferenceDefinition\r\n} from '@shared/interfaces/application-objects/difference-definition.interface';\r\nimport JSONCrush from 'JSONCrush';\r\nimport {\r\n\tdifferenceWith,\r\n\teach,\r\n\tget,\r\n\tisArray,\r\n\tisEqual,\r\n\tisObject,\r\n\torderBy\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tcompressToEncodedURIComponent,\r\n\tdecompressFromEncodedURIComponent\r\n} from 'lz-string';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for the object type.\r\n *\r\n * @export\r\n * @class ObjectHelper\r\n */\r\nexport class ObjectHelper\r\n{\r\n\t/**\r\n\t * Gets the number of milliseconds difference allowed before considering\r\n\t * two datetimes as different. This is currently set to allow for\r\n\t * millisecond level differences.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static readonly dateComparisonDelta: number = 1000;\r\n\r\n\t/**\r\n\t * Gets the property name for an object acting as an array place holder.\r\n\t * This object is used in business logic array comparisons.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static readonly arrayPlaceholderIdentifier: string =\r\n\t\t'arrayPlaceholder';\r\n\r\n\t/**\r\n\t * Filter an array of objects by the sent filter by property.\r\n\t *\r\n\t * @static\r\n\t * @param {object} item\r\n\t * The item to be evaluated.\r\n\t * @param {string} filterBy\r\n\t * The string representing the property to filter by.\r\n\t * @returns {boolean}\r\n\t * The filtered value matching the criteria sent in.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static filterByNumberValue(\r\n\t\titem: object,\r\n\t\tfilterBy: string): boolean\r\n\t{\r\n\t\treturn item.hasOwnProperty(filterBy)\r\n\t\t\t&& typeof item[filterBy] === 'number';\r\n\t}\r\n\r\n\t/**\r\n\t * Sort array of objects by a property key.\r\n\t *\r\n\t * @static\r\n\t * @param {object} objectOne\r\n\t * The first Item to be compared.\r\n\t * @param {object} objectTwo\r\n\t * The second Item to be compared.\r\n\t * @param {string} sortBy\r\n\t * The string representing the property to sort by.\r\n\t * @param {boolean} useDateComparison\r\n\t * If sent and true, this will use a date based conversion and comparison\r\n\t * of the sent property. This value defaults to false.\r\n\t * @returns {number}\r\n\t * The comparison value of the sorted object.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static sortByPropertyValue(\r\n\t\tobjectOne: object,\r\n\t\tobjectTwo: object,\r\n\t\tsortBy: string,\r\n\t\tuseDateComparison: boolean = false): number\r\n\t{\r\n\t\tconst objectOneData: any =\r\n\t\t\tget(objectOne, sortBy);\r\n\t\tconst objectTwoData: any =\r\n\t\t\tget(objectTwo, sortBy);\r\n\t\tconst propertyOne: any =\r\n\t\t\tuseDateComparison === true\r\n\t\t\t\t? DateTime.fromISO(objectOneData)\r\n\t\t\t\t: objectOneData;\r\n\t\tconst propertyTwo: any =\r\n\t\t\tuseDateComparison === true\r\n\t\t\t\t? DateTime.fromISO(objectTwoData)\r\n\t\t\t\t: objectTwoData;\r\n\r\n\t\tif (propertyOne < propertyTwo\r\n\t\t\t|| (AnyHelper.isNullOrWhitespace(propertyOne)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(propertyTwo)))\r\n\t\t{\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tif (propertyOne > propertyTwo\r\n\t\t\t|| (!AnyHelper.isNullOrWhitespace(propertyOne)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(propertyTwo)))\r\n\t\t{\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts an array of objects based on an acceptable api filter order value\r\n\t * manually. This is used when querying multiple result sets so that\r\n\t * the combined value remains in the expected sort order.\r\n\t * @note This will sort up to two levels deep currently and will handle\r\n\t * inputs in data and without such as 'name desc, id asc'.\r\n\t *\r\n\t * @static\r\n\t * @param {any[]} data\r\n\t * The set of objects to be sorted programatically.\r\n\t * @param {string} sortOrder\r\n\t * The string value of the order by that would be sent to an api endpoint.\r\n\t * @returns {any[]}\r\n\t * The set of values sorted manually matching the sent order by.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static handleOrderBySort(\r\n\t\tdata: any[],\r\n\t\tsortOrder: string): any[]\r\n\t{\r\n\t\t// Manually handle up to two sort order values.\r\n\t\tconst sortSplitout: string[] =\r\n\t\t\tsortOrder.split(AppConstants.characters.comma);\r\n\t\tif (AnyHelper.isNullOrWhitespace(sortSplitout[0]))\r\n\t\t{\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Primary sort.\r\n\t\tconst primarySplitSort: string[] =\r\n\t\t\tsortSplitout[0].split(AppConstants.characters.space);\r\n\t\tconst primarySortKey =\r\n\t\t\tthis.getSortKey(primarySplitSort);\r\n\t\tconst primarySortDirection: number =\r\n\t\t\tthis.getSortDirection(primarySplitSort);\r\n\r\n\t\t// Secondary sort if applicable.\r\n\t\tconst secondarySplitSort: string[] =\r\n\t\t\tsortSplitout.length > 1\r\n\t\t\t\t? StringHelper\r\n\t\t\t\t\t.trim(sortSplitout[1])\r\n\t\t\t\t\t.split(AppConstants.characters.space)\r\n\t\t\t\t: [];\r\n\r\n\t\tlet secondarySortKey: string = null;\r\n\t\tlet secondarySortDirection: number = 1;\r\n\t\tif (secondarySplitSort.length > 0)\r\n\t\t{\r\n\t\t\tsecondarySortKey =\r\n\t\t\t\tthis.getSortKey(secondarySplitSort);\r\n\t\t\tsecondarySortDirection =\r\n\t\t\t\tthis.getSortDirection(secondarySplitSort);\r\n\t\t}\r\n\r\n\t\t// Manually sort this data.\r\n\t\tdata.sort(\r\n\t\t\t(objectOne: any,\r\n\t\t\t\tobjectTwo: any) =>\r\n\t\t\t\tthis.compareTwoObjects(\r\n\t\t\t\t\tobjectOne,\r\n\t\t\t\t\tobjectTwo,\r\n\t\t\t\t\tprimarySortKey,\r\n\t\t\t\t\tprimarySortDirection,\r\n\t\t\t\t\tsecondarySortKey,\r\n\t\t\t\t\tsecondarySortDirection));\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Compares two values and returns a boolean that defines whether or not\r\n\t * these objects are equal. The response result is considered equal in terms\r\n\t * of business logic purposes.\r\n\t * @note For the purposes of this equality check nulls and empty strings\r\n\t * are treated as equal, nulls and objects that will evaluate as null are\r\n\t * treated the same, and string based dates that have become javascript\r\n\t * dates will be converted and checked for equality as well.\r\n\t *\r\n\t * @static\r\n\t * @param {object} initialObject\r\n\t * The initial value to be evaluated.\r\n\t * @param {object} comparisonObject\r\n\t * The comparison value to be checked.\r\n\t * @memberof ObjectHelper\r\n\t * A boolean value representing whether or not the two sent objects are\r\n\t * equal.\r\n\t */\r\n\tpublic static checkBusinessLogicEquality(\r\n\t\tinitialObject: object,\r\n\t\tcomparisonObject: object): boolean\r\n\t{\r\n\t\tconst initialObjectKeys = Object.keys(initialObject ?? {});\r\n\t\tconst comparisonObjectKeys = Object.keys(comparisonObject ?? {});\r\n\r\n\t\tif (initialObjectKeys.length !== comparisonObjectKeys.length)\r\n\t\t{\r\n\t\t\t// Array size differences are not equivalent.\r\n\t\t\tif (isArray(initialObject) && isArray(comparisonObject))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// If an object holds a value that is non-null, not a resource\r\n\t\t\t// identifier, and different the object is altered.\r\n\t\t\tif (!this.checkNullBusinessLogicObjectEquality(\r\n\t\t\t\tcomparisonObjectKeys.filter(\r\n\t\t\t\t\t(propertyKey: string) =>\r\n\t\t\t\t\t\tpropertyKey !==\r\n\t\t\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier\r\n\t\t\t\t\t\t\t&& !initialObjectKeys.includes(\r\n\t\t\t\t\t\t\t\tpropertyKey)),\r\n\t\t\t\tcomparisonObject)\r\n\t\t\t\t|| !this.checkNullBusinessLogicObjectEquality(\r\n\t\t\t\t\tinitialObjectKeys.filter(\r\n\t\t\t\t\t\t(propertyKey: string) =>\r\n\t\t\t\t\t\t\tpropertyKey !==\r\n\t\t\t\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier\r\n\t\t\t\t\t\t\t\t&& !comparisonObjectKeys.includes(\r\n\t\t\t\t\t\t\t\t\tpropertyKey)),\r\n\t\t\t\t\tinitialObject))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet altered: boolean = false;\r\n\r\n\t\tfor (const key of initialObjectKeys)\r\n\t\t{\r\n\t\t\t// Check nested properties for differences.\r\n\t\t\taltered =\r\n\t\t\t\tthis.checkNestedBusinessLogicEquality(\r\n\t\t\t\t\tinitialObject[key],\r\n\t\t\t\t\tcomparisonObject[key]);\r\n\r\n\t\t\tif (altered === true)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn !altered;\r\n\t}\r\n\r\n\t/**\r\n\t * Compares two values and returns a collection of differences that defines\r\n\t * whether or not these objects are equal. The response result is\r\n\t * considered equal in terms of business logic purposes.\r\n\t * @note For the purposes of this equality check nulls and empty strings\r\n\t * are treated as equal, nulls, arrays, and objects that will evaluate as\r\n\t * null are treated the same, and string based dates that have become\r\n\t * javascript dates will be converted and checked for equality as well.\r\n\t * @note Array values must have resource identifiers decorated. This\r\n\t * is used to differentiate array inputs.\r\n\t *\r\n\t * @static\r\n\t * @param {string} key\r\n\t * The key value of the object being checked.\r\n\t * @param {any} initialObject\r\n\t * The initial value to be evaluated.\r\n\t * @param {any} comparisonObject\r\n\t * The comparison value to be checked.\r\n\t * @param {string[]} excludedPropertyKeys\r\n\t * The set of explicit fully defined property keys to remove as well\r\n\t * as possible wildcards that will remove any property of that sent name.\r\n\t * @returns {IDifferenceDefinition[]}\r\n\t * A collection of difference definitions that will define all differences\r\n\t * if they exist between the two objects.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static getBusinessLogicDifferences(\r\n\t\tkey: string,\r\n\t\tinitialObject: any,\r\n\t\tcomparisonObject: any,\r\n\t\texcludedPropertyKeys: string[] = []): IDifferenceDefinition[]\r\n\t{\r\n\t\tlet initialObjectValue: any = initialObject;\r\n\t\tlet comparisonObjectValue: any = comparisonObject;\r\n\t\tlet differences: IDifferenceDefinition[] = [];\r\n\r\n\t\tlet initialObjectKeys: string[] =\r\n\t\t\tthis.getFilteredPropertyKeys(\r\n\t\t\t\tinitialObjectValue,\r\n\t\t\t\tkey,\r\n\t\t\t\texcludedPropertyKeys);\r\n\t\tconst comparisonObjectKeys: string[] =\r\n\t\t\tthis.getFilteredPropertyKeys(\r\n\t\t\t\tcomparisonObjectValue,\r\n\t\t\t\tkey,\r\n\t\t\t\texcludedPropertyKeys);\r\n\r\n\t\tif (initialObjectKeys.length !== comparisonObjectKeys.length\r\n\t\t\t&& !isArray(initialObjectValue)\r\n\t\t\t&& !isArray(comparisonObjectValue)\r\n\t\t\t&& !(typeof(initialObjectValue) ===\r\n\t\t\t\tAppConstants.propertyTypes.string\r\n\t\t\t\t|| typeof(comparisonObjectValue) ===\r\n\t\t\t\t\tAppConstants.propertyTypes.string))\r\n\t\t{\r\n\t\t\t// Ensure all properties exist for comparison.\r\n\t\t\tinitialObjectValue =\r\n\t\t\t\tthis.createMissingProperties(\r\n\t\t\t\t\tinitialObjectValue,\r\n\t\t\t\t\tcomparisonObjectValue,\r\n\t\t\t\t\tinitialObjectKeys,\r\n\t\t\t\t\tcomparisonObjectKeys);\r\n\t\t\tcomparisonObjectValue =\r\n\t\t\t\tthis.createMissingProperties(\r\n\t\t\t\t\tcomparisonObjectValue,\r\n\t\t\t\t\tinitialObjectValue,\r\n\t\t\t\t\tcomparisonObjectKeys,\r\n\t\t\t\t\tinitialObjectKeys);\r\n\t\t\tinitialObjectKeys =\r\n\t\t\t\tthis.getFilteredPropertyKeys(\r\n\t\t\t\t\tinitialObjectValue,\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\texcludedPropertyKeys);\r\n\t\t}\r\n\r\n\t\tif (isArray(initialObjectValue) && isArray(comparisonObjectValue))\r\n\t\t{\r\n\t\t\t// Get deleted or added items.\r\n\t\t\tinitialObjectValue =\r\n\t\t\t\torderBy(initialObjectValue || []);\r\n\t\t\tcomparisonObjectValue =\r\n\t\t\t\torderBy(comparisonObjectValue || []);\r\n\r\n\t\t\tconst uniqueInitialValues: any[] =\r\n\t\t\t\tdifferenceWith(\r\n\t\t\t\t\tinitialObjectValue,\r\n\t\t\t\t\tcomparisonObjectValue,\r\n\t\t\t\t\tthis.isArrayItemUnique.bind(this));\r\n\t\t\tconst uniqueComparisonValues: any[] =\r\n\t\t\t\tdifferenceWith(\r\n\t\t\t\t\tcomparisonObjectValue,\r\n\t\t\t\t\tinitialObjectValue,\r\n\t\t\t\t\tthis.isArrayItemUnique.bind(this));\r\n\r\n\t\t\tif (uniqueInitialValues.length > 0\r\n\t\t\t\t|| uniqueComparisonValues.length > 0)\r\n\t\t\t{\r\n\t\t\t\tconst difference: any =\r\n\t\t\t\t\tuniqueInitialValues[0] ?? uniqueComparisonValues[0];\r\n\r\n\t\t\t\tdifferences.push(\r\n\t\t\t\t\tisObject(difference)\r\n\t\t\t\t\t\t? this.getDifferenceDefinition(\r\n\t\t\t\t\t\t\t`${key}`,\r\n\t\t\t\t\t\t\tthis.sortBusinessLogicArray(\r\n\t\t\t\t\t\t\t\tuniqueInitialValues || []),\r\n\t\t\t\t\t\t\tthis.sortBusinessLogicArray(\r\n\t\t\t\t\t\t\t\tuniqueComparisonValues || []),\r\n\t\t\t\t\t\t\tAppConstants.differenceTypes.array)\r\n\t\t\t\t\t\t: this.getDifferenceDefinition(\r\n\t\t\t\t\t\t\t`${key}`,\r\n\t\t\t\t\t\t\tthis.sortBusinessLogicArray(\r\n\t\t\t\t\t\t\t\tinitialObjectValue || []),\r\n\t\t\t\t\t\t\tthis.sortBusinessLogicArray(\r\n\t\t\t\t\t\t\t\tcomparisonObjectValue || []),\r\n\t\t\t\t\t\t\tAppConstants.differenceTypes.array));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const objectKey of initialObjectKeys)\r\n\t\t{\r\n\t\t\t// Get differences in nested objects.\r\n\t\t\tconst nestedDifferences: IDifferenceDefinition[] =\r\n\t\t\t\tthis.getNestedBusinessLogicDifferences(\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\tobjectKey,\r\n\t\t\t\t\tinitialObjectValue[objectKey],\r\n\t\t\t\t\tcomparisonObjectValue[objectKey],\r\n\t\t\t\t\texcludedPropertyKeys);\r\n\r\n\t\t\tdifferences =\r\n\t\t\t\tdifferences.concat(\r\n\t\t\t\t\tnestedDifferences);\r\n\t\t}\r\n\r\n\t\treturn differences;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks a list of properties of an object and returns a boolean that\r\n\t * defines whether or not all properties of the object are equal to null or\r\n\t * an empty string. The response result is considered equal in terms of\r\n\t * business logic purposes.\r\n\t * @note For the purposes of this equality check nulls and empty strings\r\n\t * are treated as equal as well as nulls and objects that hold only values\r\n\t * of null or empty strings.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} keysToCheck\r\n\t * The set of keys to be evaluated for null equivalency on this object.\r\n\t * @param {object} objectToCheck\r\n\t * The object value to be checked.\r\n\t * @returns {boolean}\r\n\t * A boolean value representing whether or not all of the sent properties\r\n\t * are equivalent to null in terms of business logic.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static checkNullBusinessLogicObjectEquality(\r\n\t\tkeysToCheck: string[],\r\n\t\tobjectToCheck: object): boolean\r\n\t{\r\n\t\tlet nullEqivalent: boolean = true;\r\n\r\n\t\tfor (const key of keysToCheck.filter(\r\n\t\t\t(keyToCheck: string) =>\r\n\t\t\t\tkeyToCheck !==\r\n\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier))\r\n\t\t{\r\n\t\t\tconst propertyValue: any =\r\n\t\t\t\tobjectToCheck[key];\r\n\r\n\t\t\tif (isObject(propertyValue))\r\n\t\t\t{\r\n\t\t\t\tnullEqivalent = isArray(propertyValue)\r\n\t\t\t\t\t? propertyValue.length === 0\r\n\t\t\t\t\t: this.checkNullBusinessLogicObjectEquality(\r\n\t\t\t\t\t\tObject.keys(propertyValue),\r\n\t\t\t\t\t\tpropertyValue);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tnullEqivalent = AnyHelper.isNullOrWhitespace(propertyValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (nullEqivalent !== true)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nullEqivalent;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks a list of properties of an object and cleans any object or value\r\n\t * that is null equivalent. An object holding properties that are all null\r\n\t * or whitespace or an array holding an object with all null or whitespace\r\n\t * properties are considered null equivalent for this clean operation.\r\n\t *\r\n\t * @static\r\n\t * @param {object} objectToClean\r\n\t * The object value to be clean.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static removeNullsInObject(\r\n\t\tobjectToClean: any): void\r\n\t{\r\n\t\tif (typeof objectToClean === AppConstants.variableTypes.string\r\n\t\t\t|| objectToClean === AppConstants.empty)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\teach(objectToClean,\r\n\t\t\t(value: any,\r\n\t\t\t\tkey: string) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(value))\r\n\t\t\t\t{\r\n\t\t\t\t\tdelete objectToClean[key];\r\n\t\t\t\t}\r\n\t\t\t\telse if (isArray(value))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (value.length === 0 )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdelete objectToClean[key];\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\teach(\r\n\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\tfunction(itemValue: any)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.removeNullsInObject(itemValue);\r\n\t\t\t\t\t\t}.bind(this));\r\n\r\n\t\t\t\t\tconst filteredItems =\r\n\t\t\t\t\t\tvalue.filter(\r\n\t\t\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\t\t\t!AnyHelper.isNull(item)\r\n\t\t\t\t\t\t\t\t\t&& Object.keys(item).length > 0);\r\n\r\n\t\t\t\t\tobjectToClean[key] = filteredItems;\r\n\t\t\t\t\tif (filteredItems.length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdelete objectToClean[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (typeof value === AppConstants.variableTypes.object\r\n\t\t\t\t\t&& !(value instanceof DateTime))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (Object.keys(value).length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdelete objectToClean[key];\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.removeNullsInObject(value);\r\n\r\n\t\t\t\t\tif (Object.keys(value).length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdelete objectToClean[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns query parameters that match the expected route data format from\r\n\t * a sent object.\r\n\t *\r\n\t * @static\r\n\t * @param {object} mapObject\r\n\t * The object to map into a route data object.\r\n\t * @returns {Params}\r\n\t * Query parameters with the expected route data object.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static mapRouteData(\r\n\t\tmapObject: object): string\r\n\t{\r\n\t\tconst stringified = JSON.stringify(mapObject);\r\n\r\n\t\tif (stringified.length > AppConstants.maxRouteDataSize)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`Cannot map route data larger than ${AppConstants.maxRouteDataSize}.`\r\n\t\t\t\t\t+ ` Size attemppted was ${stringified.length}.`);\r\n\t\t}\r\n\r\n\t\treturn compressToEncodedURIComponent(\r\n\t\t\tJSONCrush.crush(stringified));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns mapped route data from the sent parameters subscribed to in\r\n\t * a component expecting route data.\r\n\t *\r\n\t * @static\r\n\t * @param {Params} parameters\r\n\t * The parameters value to pull route data from.\r\n\t * @returns {any}\r\n\t * An expected parsed object value for the route data url parameters.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static mapFromRouteData(\r\n\t\tparameters: Params): any\r\n\t{\r\n\t\treturn AnyHelper.isNull(parameters)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(\r\n\t\t\t\tparameters[AppConstants.urlParameters.routeData])\r\n\t\t\t? {}\r\n\t\t\t: JSON.parse(\r\n\t\t\t\tJSONCrush.uncrush(\r\n\t\t\t\t\tdecompressFromEncodedURIComponent(\r\n\t\t\t\t\t\tparameters[\r\n\t\t\t\t\t\t\tAppConstants.urlParameters.routeData])));\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent object, this will map the UI description for that object\r\n\t * based on the sent property keys. If any value is null or an empty string,\r\n\t * this combined description will return as an emprt string.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The object to get a description for.\r\n\t * @param {IDescriptionDisplayDefinition[]} propertyKeys\r\n\t * The set of description display definitions to map into an object\r\n\t * description.\r\n\t * @returns {string}\r\n\t * A string based description of the object or an empty string if\r\n\t * description level values are null or an empty string.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static getObjectDescription(\r\n\t\titem: any,\r\n\t\tpropertyKeys: IDescriptionDisplayDefinition[]):\r\n\t\tstring\r\n\t{\r\n\t\tlet description: string = AppConstants.empty;\r\n\t\tfor (const propertyKey of propertyKeys)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tpropertyKey.inlineValue))\r\n\t\t\t{\r\n\t\t\t\tdescription += propertyKey.inlineValue;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconst value: any =\r\n\t\t\t\t\tget(item, propertyKey.key);\r\n\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(value))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn AppConstants.empty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst formattedValue: string =\r\n\t\t\t\t\tStringHelper.format(\r\n\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\tpropertyKey.outputFormat);\r\n\r\n\t\t\t\tdescription +=\r\n\t\t\t\t\t(AnyHelper.isNullOrWhitespace(description)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: AppConstants.characters.space)\r\n\t\t\t\t\t\t+ formattedValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn description;\r\n\t}\r\n\r\n\t/**\r\n\t * Add or updates a property.\r\n\t *\r\n\t * @param {object} item\r\n\t * The object on which to add or update the property.\r\n\t * @param {object} propertyKey\r\n\t * The property key/name.\r\n\t * @param {object} propertyValue\r\n\t * The new property value.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static addOrUpdateProperty(\r\n\t\titem: object,\r\n\t\tpropertyKey: string,\r\n\t\tpropertyValue: any): void\r\n\t{\r\n\t\tconst properties: object =\r\n\t\t\tObject.fromEntries(\r\n\t\t\t\t[\r\n\t\t\t\t\t[propertyKey, propertyValue]\r\n\t\t\t\t]);\r\n\r\n\t\tthis.addOrUpdateProperties(item, properties);\r\n\t}\r\n\r\n\t/**\r\n\t * Add or updates a properties.\r\n\t *\r\n\t * @param {object} item\r\n\t * The object on which to add or update the properties.\r\n\t * @param {object} properties\r\n\t * The properties and values to add or update.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static addOrUpdateProperties(\r\n\t\titem: object,\r\n\t\tproperties: object): void\r\n\t{\r\n\t\tObject.assign(item, properties);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent object, this will check each property key in that object\r\n\t * to ensure that it holds a value. Null, undefined, and empty strings\r\n\t * will all evaluate to false.\r\n\t *\r\n\t * @static\r\n\t * @param {object} item\r\n\t * The object to check for existing property values.\r\n\t * @param {object} propertyKeys\r\n\t * The set of object level properties to find on the sent object. This can\r\n\t * included nested lookups.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not all property values are set for each\r\n\t * property key sent.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static allPropertyValuesExist(\r\n\t\titem: object,\r\n\t\tpropertyKeys: string[]): boolean\r\n\t{\r\n\t\tfor (const propertyKey of propertyKeys)\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tget(item, propertyKey)))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent array and a possible comparison array, this value will\r\n\t * return the business logic or resource identifier based equivalent\r\n\t * array.\r\n\t * @note\r\n\t * This method will add array placeholder objects when the comparison\r\n\t * array is sent but no match was found in the sent array to enable\r\n\t * a business logic comparison.\r\n\t *\r\n\t * @static\r\n\t * @param {any[]} array\r\n\t * The array to be sorted.\r\n\t * @param {any[]} itemTwo\r\n\t * The comparison array that should be used to order object based arrays\r\n\t * in a matching business logic order.\r\n\t * @returns {any[]}\r\n\t * A sorted business logic array. If these values are primitives they will\r\n\t * return sorted with default logic. If these are object based arrays these\r\n\t * will return sorted by type if applicable and then by resource identifier.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tpublic static sortBusinessLogicArray(\r\n\t\tarray: any[],\r\n\t\tcomparisonArray: any[] = []): any[]\r\n\t{\r\n\t\tconst isObjectArray: boolean =\r\n\t\t\tarray?.length > 0 && isObject(array[0]);\r\n\r\n\t\tconst sortedArray: any[] =\r\n\t\t\torderBy(\r\n\t\t\t\tarray,\r\n\t\t\t\tisObjectArray === false\r\n\t\t\t\t\t? []\r\n\t\t\t\t\t: [\r\n\t\t\t\t\t\tAppConstants.commonProperties.type,\r\n\t\t\t\t\t\tAppConstants.commonProperties.resourceIdentifier\r\n\t\t\t\t\t]);\r\n\r\n\t\tif (isObjectArray === false\r\n\t\t\t|| comparisonArray.length === 0)\r\n\t\t{\r\n\t\t\treturn sortedArray;\r\n\t\t}\r\n\r\n\t\tconst sortedByComparisonArray: any[] = [];\r\n\t\tfor (const comparisonArrayItem of comparisonArray)\r\n\t\t{\r\n\t\t\tconst matchingArrayIndex: number =\r\n\t\t\t\tsortedArray.findIndex(\r\n\t\t\t\t\t(arrayItem: any) =>\r\n\t\t\t\t\t\tarrayItem.resourceIdentifier ===\r\n\t\t\t\t\t\t\tcomparisonArrayItem.resourceIdentifier);\r\n\r\n\t\t\tsortedByComparisonArray.push(\r\n\t\t\t\tmatchingArrayIndex !== -1\r\n\t\t\t\t\t? sortedArray.splice(matchingArrayIndex, 1)[0]\r\n\t\t\t\t\t: { arrayPlaceholder: true });\r\n\t\t}\r\n\r\n\t\tconst finalArray: any[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t...sortedByComparisonArray,\r\n\t\t\t\t...sortedArray\r\n\t\t\t];\r\n\r\n\t\treturn finalArray;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a difference definition of the sent values.\r\n\t *\r\n\t * @static\r\n\t * @param {string} key\r\n\t * The key for this difference definition.\r\n\t * @param {any} originalValue\r\n\t * The original value that has been altered.\r\n\t * @param {any} updatedValue\r\n\t * The updated value this was altered to.\r\n\t * @param {string} differenceType\r\n\t * The mapped difference type.\r\n\t * @returns {IDifferenceDefinition}\r\n\t * A difference definition with sufficient information to display\r\n\t * differences.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static getDifferenceDefinition(\r\n\t\tkey: string,\r\n\t\toriginalValue: any,\r\n\t\tupdatedValue: any,\r\n\t\tdifferenceType: string): IDifferenceDefinition\r\n\t{\r\n\t\tconst difference: IDifferenceDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tkey: key,\r\n\t\t\t\toriginalValue: originalValue,\r\n\t\t\t\tupdatedValue: updatedValue,\r\n\t\t\t\tdifferenceType: differenceType\r\n\t\t\t};\r\n\r\n\t\treturn difference;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets and returns a set of property keys that are applicable for the\r\n\t * sent object.\r\n\t * Note: If the sent excluded property ends with a #, this will exclude\r\n\t * numeric key based additions (IE: policy.data.reasons.0).\r\n\t *\r\n\t * @static\r\n\t * @param {object} objectValue\r\n\t * The object that requires property filters.\r\n\t * @param {string} nestedKey\r\n\t * The nested location of this object used to find explicit properties to\r\n\t * remove.\r\n\t * @param {string[]} excludedPropertyKeys\r\n\t * The set of explicit fully defined property keys to remove as well\r\n\t * as possible wildcards that will remove any property of that sent name.\r\n\t * @returns {string[]}\r\n\t * The set of property keys that are applicable following the filter logic.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static getFilteredPropertyKeys(\r\n\t\tobjectValue: object,\r\n\t\tnestedKey: string,\r\n\t\texcludedPropertyKeys: string[]): string[]\r\n\t{\r\n\t\tif (typeof(objectValue) === AppConstants.propertyTypes.string)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn Object.keys(objectValue)\r\n\t\t\t.filter(\r\n\t\t\t\t(filterKey: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst formattedFilterKey: string =\r\n\t\t\t\t\t\tfilterKey.replace(\r\n\t\t\t\t\t\t\t/\\d/g,\r\n\t\t\t\t\t\t\tAppConstants.characters.pound);\r\n\r\n\t\t\t\t\treturn excludedPropertyKeys.indexOf(\r\n\t\t\t\t\t\tformattedFilterKey)\t=== -1\r\n\t\t\t\t\t\t&& excludedPropertyKeys.indexOf(\r\n\t\t\t\t\t\t\t`${nestedKey}.${formattedFilterKey}`) === -1;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given an object and set of properties, this method will decorate the\r\n\t * object by adding null definitions where the property does not yet\r\n\t * exist.\r\n\t *\r\n\t * @static\r\n\t * @param {object} objectValue\r\n\t * The object that should have properties mapped to equal the desired\r\n\t * object.\r\n\t * @param {object} desiredObject\r\n\t * The object that should have properties mapped into the object value.\r\n\t * @param {string[]} objectKeys\r\n\t * The set of properties that exist on this initial object.\r\n\t * @param {string[]} desiredObjectKeys\r\n\t * The set of properties that when missing will be added to this object.\r\n\t * @returns {object}\r\n\t * A decorated object holding null valued properties for any missing\r\n\t * desired object key.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static createMissingProperties(\r\n\t\tobjectValue: object,\r\n\t\tdesiredObject: object,\r\n\t\tobjectKeys: string[],\r\n\t\tdesiredObjectKeys: string[]): object\r\n\t{\r\n\t\tconst keyDifferences: string[] =\r\n\t\t\tdesiredObjectKeys.filter(\r\n\t\t\t\t(propertyKey: string) =>\r\n\t\t\t\t\t!objectKeys.includes(\r\n\t\t\t\t\t\tpropertyKey));\r\n\r\n\t\tfor (const keyDifference of keyDifferences)\r\n\t\t{\r\n\t\t\tlet newValue: any = null;\r\n\t\t\tif (isArray(desiredObject[keyDifference]))\r\n\t\t\t{\r\n\t\t\t\tnewValue = [];\r\n\t\t\t}\r\n\t\t\telse if (isObject(desiredObject[keyDifference]))\r\n\t\t\t{\r\n\t\t\t\tnewValue = {};\r\n\t\t\t}\r\n\r\n\t\t\tobjectValue[keyDifference] = newValue;\r\n\t\t}\r\n\r\n\t\treturn objectValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of two array items, this value will return a value signifying\r\n\t * if it is unique. In the case of primitives this comparison will be one\r\n\t * to one, but in the case of object checks, this value will be based\r\n\t * on a matching resource identifier.\r\n\t * @throws {Error}\r\n\t * This method will throw an error if an array object item is sent and\r\n\t * a resouce identifier does not exist.\r\n\t *\r\n\t * @static\r\n\t * @param {any} itemOne\r\n\t * The first item to be compared.\r\n\t * @param {any} itemTwo\r\n\t * The second item to be compared.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not this array item is unique as defined.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static isArrayItemUnique(\r\n\t\titemOne: any,\r\n\t\titemTwo: any): boolean\r\n\t{\r\n\t\tif (isObject(itemOne) || isObject(itemTwo))\r\n\t\t{\r\n\t\t\tif (this.isArrayPlaceholder(itemOne) === true)\r\n\t\t\t{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (AnyHelper.isNull(itemOne.resourceIdentifier)\r\n\t\t\t\t&& AnyHelper.isNull(itemTwo.resourceIdentifier))\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'The array item unique method requires a resource '\r\n\t\t\t\t\t\t+ 'identifier in each item for object based arrays.');\r\n\t\t\t}\r\n\r\n\t\t\treturn itemOne.resourceIdentifier === itemTwo.resourceIdentifier;\r\n\t\t}\r\n\r\n\t\treturn isEqual(\r\n\t\t\titemOne,\r\n\t\t\titemTwo);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks an object to see if the value is an array placeholder or returns\r\n\t * false if it is a primitive value.\r\n\t *\r\n\t * @static\r\n\t * @param {any} item\r\n\t * The item to check for a match of an array placeholder object.\r\n\t * @returns {boolean}\r\n\t * A value that signifies whether or not the item sent in is an object\r\n\t * and also matches an array placeholder object.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static isArrayPlaceholder(\r\n\t\titem: any): boolean\r\n\t{\r\n\t\treturn isObject(item) && item[this.arrayPlaceholderIdentifier] === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a possible primitive, complex object, or array based value, this\r\n\t * method will check for any differences and if found return as true.\r\n\t *\r\n\t * @static\r\n\t * @param {any} initialValue\r\n\t * The initial value to compare.\r\n\t * @param {any} comparisonValue\r\n\t * The item to compare with the initial value for possible differences.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not the two sent objects are equal in\r\n\t * business logic terms. Null, empty strings, empty objects, empty arrays,\r\n\t * and undefined are all considered equal in terms of business logic\r\n\t * differences.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static checkNestedBusinessLogicEquality(\r\n\t\tinitialValue: any,\r\n\t\tcomparisonValue: any): boolean\r\n\t{\r\n\t\tlet altered: boolean = false;\r\n\r\n\t\tif (DateTime.fromISO(initialValue).isValid\r\n\t\t\t&& DateTime.fromISO(comparisonValue).isValid)\r\n\t\t{\r\n\t\t\taltered =\r\n\t\t\t\tMath.abs(\r\n\t\t\t\t\tDateHelper.fromUtcIso(initialValue)\r\n\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\tcomparisonValue))\r\n\t\t\t\t\t\t.toMillis()) > this.dateComparisonDelta;\r\n\t\t}\r\n\t\telse if (isArray(initialValue) && isArray(comparisonValue))\r\n\t\t{\r\n\t\t\taltered =\r\n\t\t\t\t!this.checkBusinessLogicEquality(\r\n\t\t\t\t\torderBy(initialValue || []),\r\n\t\t\t\t\torderBy(comparisonValue || []));\r\n\t\t}\r\n\t\telse if (isObject(initialValue) && isObject(comparisonValue))\r\n\t\t{\r\n\t\t\taltered =\r\n\t\t\t\t!this.checkBusinessLogicEquality(\r\n\t\t\t\t\tinitialValue,\r\n\t\t\t\t\tcomparisonValue);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\taltered =\r\n\t\t\t\t!isEqual(\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(initialValue)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: initialValue,\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(comparisonValue)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: comparisonValue);\r\n\t\t}\r\n\r\n\t\treturn altered;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a possible primitive, complex object, or array based value, this\r\n\t * method will check for any differences and if found return the combined\r\n\t * set of differences for this object.\r\n\t *\r\n\t * @static\r\n\t * @param {string} key\r\n\t * The key value representing the current data location.\r\n\t * @param {string} nestedKey\r\n\t * The nested key value representing the nested property being checked\r\n\t * for differences.\r\n\t * @param {any} initialValue\r\n\t * The initial value to compare.\r\n\t * @param {any} comparisonValue\r\n\t * The item to compare with the initial value for possible differences.\r\n\t * @param {any} excludedPropertyKeys\r\n\t * The current object being checked. This value is used to keep\r\n\t * a reference to the object holding these differences for later lookups.\r\n\t * @returns {IDifferenceDefinition[]}\r\n\t * A set of difference definitions found between the initial and comparison\r\n\t * value.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static getNestedBusinessLogicDifferences(\r\n\t\tkey: string,\r\n\t\tnestedKey: string,\r\n\t\tinitialValue: any,\r\n\t\tcomparisonValue: any,\r\n\t\texcludedPropertyKeys: string[]): IDifferenceDefinition[]\r\n\t{\r\n\t\tlet differences: IDifferenceDefinition[] = [];\r\n\t\tconst isObjectComparison: boolean =\r\n\t\t\tisObject(initialValue) || isObject(comparisonValue);\r\n\r\n\t\tif (this.isDateComparisonDifference(\r\n\t\t\tinitialValue,\r\n\t\t\tcomparisonValue) === true)\r\n\t\t{\r\n\t\t\tdifferences.push(\r\n\t\t\t\tthis.getDifferenceDefinition(\r\n\t\t\t\t\t`${key}.${nestedKey}`,\r\n\t\t\t\t\tinitialValue,\r\n\t\t\t\t\tcomparisonValue,\r\n\t\t\t\t\tAppConstants.differenceTypes.date));\r\n\r\n\t\t\treturn differences;\r\n\t\t}\r\n\r\n\t\tif (isArray(initialValue) || isArray(comparisonValue))\r\n\t\t{\r\n\t\t\tconst sortedInitialValue: any[] =\r\n\t\t\t\tthis.sortBusinessLogicArray(initialValue || []);\r\n\t\t\tconst sortedComparisonValue: any[] =\r\n\t\t\t\tthis.sortBusinessLogicArray(\r\n\t\t\t\t\t(comparisonValue || []),\r\n\t\t\t\t\tsortedInitialValue);\r\n\r\n\t\t\tdifferences =\r\n\t\t\t\tdifferences.concat(\r\n\t\t\t\t\tthis.getBusinessLogicDifferences(\r\n\t\t\t\t\t\t`${key}.${nestedKey}`,\r\n\t\t\t\t\t\tsortedInitialValue,\r\n\t\t\t\t\t\tsortedComparisonValue,\r\n\t\t\t\t\t\texcludedPropertyKeys));\r\n\r\n\t\t\treturn differences;\r\n\t\t}\r\n\r\n\t\tif (isObjectComparison === true)\r\n\t\t{\r\n\t\t\tif (this.isArrayPlaceholder(initialValue) !== true\r\n\t\t\t\t&& this.isArrayPlaceholder(comparisonValue) !== true)\r\n\t\t\t{\r\n\t\t\t\tdifferences =\r\n\t\t\t\t\tdifferences.concat(\r\n\t\t\t\t\t\tthis.getBusinessLogicDifferences(\r\n\t\t\t\t\t\t\t`${key}.${nestedKey}`,\r\n\t\t\t\t\t\t\tinitialValue || {},\r\n\t\t\t\t\t\t\tcomparisonValue || {},\r\n\t\t\t\t\t\t\texcludedPropertyKeys));\r\n\t\t\t}\r\n\r\n\t\t\treturn differences;\r\n\t\t}\r\n\r\n\t\tif (!isEqual(\r\n\t\t\tAnyHelper.isNullOrWhitespace(initialValue)\r\n\t\t\t\t? null\r\n\t\t\t\t: initialValue,\r\n\t\t\tAnyHelper.isNullOrWhitespace(comparisonValue)\r\n\t\t\t\t? null\r\n\t\t\t\t: comparisonValue))\r\n\t\t{\r\n\t\t\tdifferences.push(\r\n\t\t\t\tthis.getDifferenceDefinition(\r\n\t\t\t\t\t`${key}.${nestedKey}`,\r\n\t\t\t\t\tinitialValue,\r\n\t\t\t\t\tcomparisonValue,\r\n\t\t\t\t\tAppConstants.differenceTypes.property));\r\n\t\t}\r\n\r\n\t\treturn differences;\r\n\t}\r\n\r\n\t/**\r\n\t * Given an initial value and comparison value, this will confirm\r\n\t * that the sent values are ISO strings that are valid and that the\r\n\t * difference in time is sufficient to be considered a date time\r\n\t * difference.\r\n\t *\r\n\t * @static\r\n\t * @param {any} initialValue\r\n\t * The initial value to compare.\r\n\t * @param {any} comparisonValue\r\n\t * The item to compare with the initial value for possible differences.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not date comparison differences exist.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static isDateComparisonDifference(\r\n\t\tinitialValue: any,\r\n\t\tcomparisonValue: any): boolean\r\n\t{\r\n\t\treturn (!AnyHelper.isNullOrWhitespace(initialValue)\r\n\t\t\t&& typeof(initialValue) === AppConstants.propertyTypes.string\r\n\t\t\t|| !AnyHelper.isNullOrWhitespace(comparisonValue)\r\n\t\t\t\t&& typeof(comparisonValue) === AppConstants.propertyTypes.string)\r\n\t\t\t&& (DateHelper.fromUtcIso(initialValue).isValid\r\n\t\t\t\t|| DateHelper.fromUtcIso(comparisonValue).isValid)\r\n\t\t\t&& Math.abs(\r\n\t\t\t\tDateHelper\r\n\t\t\t\t\t.fromUtcIso(initialValue)\r\n\t\t\t\t\t.diff(DateHelper.fromUtcIso(comparisonValue))\r\n\t\t\t\t\t.toMillis()) > this.dateComparisonDelta;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a split singular sort value such as 'name desc', this will get the\r\n\t * expected sort key.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} splitSingularOrderBy\r\n\t * The string array of the singular order by value split by spaces.\r\n\t * @returns {string}\r\n\t * The key to be used for in place sorts.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static getSortKey(\r\n\t\tsplitSingularOrderBy: string[]): string\r\n\t{\r\n\t\treturn splitSingularOrderBy[0] === AppConstants.commonProperties.id\r\n\t\t\t? splitSingularOrderBy[0]\r\n\t\t\t: AppConstants.nestedDataIdentifier + splitSingularOrderBy[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Given a split singular sort value such as 'name desc', this will get the\r\n\t * expected sort direction.\r\n\t *\r\n\t * @static\r\n\t * @param {string[]} splitSingularOrderBy\r\n\t * The string array of the singular order by value split by spaces.\r\n\t * @returns {number}\r\n\t * The number value representing the direction where -1 is descending.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static getSortDirection(\r\n\t\tsplitSingularOrderBy: string[]): number\r\n\t{\r\n\t\treturn splitSingularOrderBy.length > 1\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(splitSingularOrderBy[1])\r\n\t\t\t&& splitSingularOrderBy[1] ===\r\n\t\t\t\tAppConstants.sortDirections.descending\r\n\t\t\t? -1\r\n\t\t\t: 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Given two objects and a primary with an option sort key and direction,\r\n\t * this will return the comparison value of the two objects. 1 will be\r\n\t * greater than, -1 will be less than, and 0 will be equal.\r\n\t *\r\n\t * @static\r\n\t * @param {any} objectOne\r\n\t * The first value to compare.\r\n\t * @param {any} objectTwo\r\n\t * The second value to compare.\r\n\t * @param {string} primarySortKey\r\n\t * The primary sort key defining the property to sort by.\r\n\t * @param {string} primarySortDirection\r\n\t * The primary sort direction defining the order to sort by.\r\n\t * @param {string} secondarySortKey\r\n\t * The secondary sort key defining the property to sort by if the first sort\r\n\t * is equal.\r\n\t * @param {string} secondarySortDirection\r\n\t * The secondary sort direction defining the order to sort by if the first\r\n\t * sort is equal.\r\n\t * @returns {number}\r\n\t * A value representing the first values sorted weight, 1 will be greater\r\n\t * than, -1 will be less than, and 0 will be equal.\r\n\t * @memberof ObjectHelper\r\n\t */\r\n\tprivate static compareTwoObjects(\r\n\t\tobjectOne: any,\r\n\t\tobjectTwo: any,\r\n\t\tprimarySortKey: string,\r\n\t\tprimarySortDirection: number,\r\n\t\tsecondarySortKey: string,\r\n\t\tsecondarySortDirection: number): number\r\n\t{\r\n\t\tconst firstValue: any =\r\n\t\t\tget(objectOne, primarySortKey)\r\n\t\t\t\t?.toString()\r\n\t\t\t\t.toLowerCase();\r\n\t\tconst secondValue: any =\r\n\t\t\tget(objectTwo, primarySortKey)\r\n\t\t\t\t?.toString()\r\n\t\t\t\t.toLowerCase();\r\n\r\n\t\tif (firstValue < secondValue\r\n\t\t\t|| (AnyHelper.isNullOrWhitespace(firstValue)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(secondValue)))\r\n\t\t{\r\n\t\t\treturn -1 * primarySortDirection;\r\n\t\t}\r\n\r\n\t\tif (firstValue > secondValue\r\n\t\t\t|| (!AnyHelper.isNullOrWhitespace(firstValue)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(secondValue)))\r\n\t\t{\r\n\t\t\treturn 1 * primarySortDirection;\r\n\t\t}\r\n\r\n\t\tconst firstSecondarySortValue: any =\r\n\t\t\tget(objectOne, secondarySortKey)\r\n\t\t\t\t?.toString()\r\n\t\t\t\t.toLowerCase();\r\n\t\tconst secondSecondarySortValue: any =\r\n\t\t\tget(objectTwo, secondarySortKey)\r\n\t\t\t\t?.toString()\r\n\t\t\t\t.toLowerCase();\r\n\r\n\t\tif (firstSecondarySortValue < secondSecondarySortValue\r\n\t\t\t|| (AnyHelper.isNullOrWhitespace(firstSecondarySortValue)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tsecondSecondarySortValue)))\r\n\t\t{\r\n\t\t\treturn -1 * secondarySortDirection;\r\n\t\t}\r\n\r\n\t\tif (firstSecondarySortValue > secondSecondarySortValue\r\n\t\t\t|| (!AnyHelper.isNullOrWhitespace(firstSecondarySortValue)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tsecondSecondarySortValue)))\r\n\t\t{\r\n\t\t\treturn 1 * secondarySortDirection;\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * A class containing static helper methods for rules.\r\n *\r\n * @export\r\n * @class RuleHelper\r\n */\r\nexport class RuleHelper\r\n{\r\n\t/**\r\n\t * Given a set of populated rule violations, this will filter down to find\r\n\t * if any violations are blocking, not overridden, and a match for the\r\n\t * sent workflow action name.\r\n\t *\r\n\t * @static\r\n\t * @param {IEntityInstanceRuleViolation[]} data\r\n\t * The set of rule violations to check for a matching blocking violation.\r\n\t * @param {string} workflowActionName\r\n\t * The workflow action name to check for a blocking match.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not the sent rule violations contain\r\n\t * a matching blocked rule violation for this action.\r\n\t * @memberof RuleHelper\r\n\t */\r\n\tpublic static isActionBlocked(\r\n\t\tpopulatedRuleViolations: IEntityInstanceRuleViolation[],\r\n\t\tworkflowActionName: string): boolean\r\n\t{\r\n\t\treturn populatedRuleViolations.filter(\r\n\t\t\t(populatedRuleViolation: IEntityInstanceRuleViolation) =>\r\n\t\t\t\tpopulatedRuleViolation.ruleDefinition\r\n\t\t\t\t\t.ruleViolationWorkflowActionDefinitions\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(ruleViolationWorkflowActionDefinition:\r\n\t\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\t\t\truleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t\t.blocked === true\r\n\t\t\t\t\t\t\t\t&& ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t\t\t.overridden === false\r\n\t\t\t\t\t\t\t\t&& ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t\t\t.workflowActionDefinition.name ===\r\n\t\t\t\t\t\t\t\t\t\tworkflowActionName)\r\n\t\t\t\t\t.length > 0)\r\n\t\t\t.length > 0;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tIEntityTypeDto\r\n} from '@api/interfaces/entities/entity-type.dto.interface';\r\nimport {\r\n\tISecurityItemDto\r\n} from '@api/interfaces/security/security-item.dto.interface';\r\nimport {\r\n\tISecurityRightDto\r\n} from '@api/interfaces/security/security-right.dto.interface';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSecurityRightCategory\r\n} from '@shared/constants/enums/security-right-category.enum';\r\nimport {\r\n\tSecurityRightType\r\n} from '@shared/constants/enums/security-right-type.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tISecureMenuItem\r\n} from '@shared/interfaces/secure-menu-item.interface';\r\nimport {\r\n\tISecurityDefinition\r\n} from '@shared/interfaces/security/security-definition.interface';\r\nimport {\r\n\tISecurityEntityTypeDefinition\r\n} from '@shared/interfaces/security/security-entity-type-definition.interface';\r\nimport {\r\n\tISecurityItem\r\n} from '@shared/interfaces/security/security-item.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the helper methods and properties\r\n * for security access related processes and items.\r\n *\r\n * @export\r\n * @class SecurityHelper\r\n */\r\nexport class SecurityHelper\r\n{\r\n\t/**\r\n\t * Gets the string '.*' wildcard identifier.\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static wildcardIdentifier: string =\r\n\t\tAppConstants.wildcardIdentifier;\r\n\r\n\t/**\r\n\t * Gets the regular expression that finds wildcards.\r\n\t *\r\n\t * @static\r\n\t * @readonly\r\n\t * @type {RegExp}\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static readonly wildCardFinder: RegExp = new RegExp(\r\n\t\t'(?(\\\\$\\\\.data){1}(\\\\.[\\\\w]+)*)(\\\\.[\\\\*]{1}){1}');\r\n\r\n\t/**\r\n\t * Gets the string '$.data.' data path prefix.\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static readonly dataPathPrefix: string =\r\n\t\tAppConstants.nestedDataKeyPrefix\r\n\t\t\t+ AppConstants.nestedDataIdentifier;\r\n\r\n\t/**\r\n\t * Gets the security rights for a given data property.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pathToFind\r\n\t * The data item path on which to find the rights.\r\n\t * @param {ISecurityItemDto[]} dataSecurityPermissions\r\n\t * The data object permissions to check.\r\n\t * @returns {ISecurityItemDto}\r\n\t * the wildcard paths sorted from most granular (most depth) first\r\n\t * to least granular ($.data) last.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static getDataSecurityRights(\r\n\t\tpathToFind: string,\r\n\t\tdataSecurityPermissions: ISecurityItemDto[]): ISecurityItemDto\r\n\t{\r\n\t\tlet permission: ISecurityItemDto = dataSecurityPermissions.find(\r\n\t\t\t(item: ISecurityItemDto) => item.path === pathToFind);\r\n\r\n\t\tif (!AnyHelper.isNull(permission)) {\r\n\t\t\treturn permission;\r\n\t\t}\r\n\r\n\t\tif (pathToFind.endsWith(\r\n\t\t\tAppConstants.characters.period\r\n\t\t\t\t+ AppConstants.commonProperties.resourceIdentifier))\r\n\t\t{\r\n\t\t\treturn \r\n\t\t\t\t{\r\n\t\t\t\t\tpath: pathToFind,\r\n\t\t\t\t\trights: \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcreate: true,\r\n\t\t\t\t\t\t\tread: true,\r\n\t\t\t\t\t\t\tupdate: false,\r\n\t\t\t\t\t\t\tdelete: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst wildcards: ISecurityItemDto[] =\r\n\t\t\tthis.getWildCardPermissions(dataSecurityPermissions);\r\n\r\n\t\tpermission = wildcards\r\n\t\t\t.find((wildcard: ISecurityItemDto) =>\r\n\t\t\t\tpathToFind.startsWith(wildcard.path)\r\n\t\t\t\t|| pathToFind.startsWith(\r\n\t\t\t\t\twildcard.path.replace(\r\n\t\t\t\t\t\tthis.wildcardIdentifier,\r\n\t\t\t\t\t\tAppConstants.empty)));\r\n\r\n\t\treturn permission;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the security rights for a given action.\r\n\t *\r\n\t * @static\r\n\t * @param {string} pathToFind\r\n\t * The data item path on which to find the rights.\r\n\t * @param {ISecurityItemDto[]} actionSecurityPermissions\r\n\t * The data object permissions to check.\r\n\t * @returns {ISecurityItemDto}\r\n\t * the security path and rights for this action path to find.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static getActionSecurityRights(\r\n\t\tpathToFind: string,\r\n\t\tactionSecurityPermissions: ISecurityItemDto[]): ISecurityItemDto\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmptyArray(actionSecurityPermissions))\r\n\t\t{\r\n\t\t\treturn this.getNullRights(pathToFind);\r\n\t\t}\r\n\r\n\t\tconst permission: ISecurityItemDto = actionSecurityPermissions.find(\r\n\t\t\t(item: ISecurityItemDto) => item.path === pathToFind);\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(permission))\r\n\t\t{\r\n\t\t\treturn this.getNullRights(pathToFind);\r\n\t\t}\r\n\r\n\t\treturn permission;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the index of the security right for the given data path.\r\n\t *\r\n\t * @static\r\n\t * @param {string} dataPath\r\n\t * The data item path on which to find the index.\r\n\t * @param {ISecurityItemDto[]} dataSecurityPermissions\r\n\t * The data object permissions to check.\r\n\t * @returns {number}\r\n\t * the index to the best match security rights.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static getSecurityPermissionIndex(\r\n\t\tdataPath: string,\r\n\t\tdataSecurityPermissions: ISecurityItemDto[]): number\r\n\t{\r\n\t\tconst pathToFind: string = dataPath.startsWith(this.dataPathPrefix)\r\n\t\t\t? dataPath\r\n\t\t\t: this.dataPathPrefix + dataPath;\r\n\r\n\t\tlet index: number = dataSecurityPermissions.findIndex(\r\n\t\t\t(data: ISecurityItemDto) => data.path === pathToFind);\r\n\r\n\t\tif (index > -1)\r\n\t\t{\r\n\t\t\treturn index;\r\n\t\t}\r\n\r\n\t\tconst foundWildCard: string = this\r\n\t\t\t.getWildCardPaths(dataSecurityPermissions)\r\n\t\t\t.find(path => dataPath.startsWith(path));\r\n\r\n\t\tif (AnyHelper.isNull(foundWildCard)) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tindex = dataSecurityPermissions.findIndex(\r\n\t\t\t(data: ISecurityItemDto) =>\r\n\t\t\t\tdata.path === foundWildCard + this.wildcardIdentifier);\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a set entity type security rights.\r\n\t *\r\n\t * @param {number} parentId\r\n\t * The path that should have the null rights.\r\n\t * @param {string} parentTypeGroup\r\n\t * The parent entity type goup.\r\n\t * @param {string} childTypeWildCard\r\n\t * The child wildcard entity type name.\r\n\t * @param {EntityDefinition}\r\n\t * The parent entity definition containbing the supported child types.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * An instance of entity instance api service.\r\n\t * @returns {Promise}\r\n\t * The entity tyype security rights.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static async getSupportedChildPermissions(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tchildTypeWildCard: string,\r\n\t\tentityDefinition: EntityDefinition,\r\n\t\tentityInstanceApiService: EntityInstanceApiService,\r\n\t\tentityTypeApiService: EntityTypeApiService):\r\n\t\tPromise\r\n\t{\r\n\t\tconst childBaseType: string =\r\n\t\t\tchildTypeWildCard.replace(\r\n\t\t\t\t'.*',\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst supportedTypeNames: string[] =\r\n\t\t\tentityDefinition.supportedChildTypes\r\n\t\t\t\t.filter((typeName: string) =>\r\n\t\t\t\t\ttypeName === childBaseType\r\n\t\t\t\t\t|| typeName.startsWith(`${childBaseType}.`));\r\n\r\n\t\tif (AnyHelper.isNullOrEmptyArray(supportedTypeNames))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst supportedEntityTypes = await entityTypeApiService\r\n\t\t\t.query(\r\n\t\t\t\t`(Name IN (\"${supportedTypeNames.join('\",\"')}\"))`,\r\n\t\t\t\t'Id');\r\n\r\n\t\tconst supportedEntityTypeGroups: string[] =\r\n\t\t\tsupportedEntityTypes.map(\r\n\t\t\t\t(entityType: IEntityTypeDto) =>\r\n\t\t\t\t\tentityType.group);\r\n\r\n\t\tentityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = parentTypeGroup;\r\n\r\n\t\tconst permissions: ISecurityEntityTypeDefinition[] =\r\n\t\t\tawait entityInstanceApiService\r\n\t\t\t\t.getHierarchyPermissions(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tsupportedEntityTypeGroups);\r\n\r\n\t\treturn permissions\r\n\t\t\t.filter((permission: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\tsupportedTypeNames.includes(permission.entityTypeName));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a set of null rights with the path given.\r\n\t *\r\n\t * @param path\r\n\t * The path that should have the null rights.\r\n\t * @returns {ISecurityItemDto}\r\n\t * The null security rights item.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static getNullRights(\r\n\t\tpath: string): ISecurityItemDto\r\n\t{\r\n\t\tconst nullRights: ISecurityItemDto =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tpath,\r\n\t\t\t\trights: \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcreate: null,\r\n\t\t\t\t\t\tread: null,\r\n\t\t\t\t\t\tupdate: null,\r\n\t\t\t\t\t\tdelete: null,\r\n\t\t\t\t\t\texecute: null\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn nullRights;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if an action is authorized.\r\n\t *\r\n\t * @param {string} entityType\r\n\t * The entity type name.\r\n\t * @param {string} actionName\r\n\t * The action name.\r\n\t * @param {ISecurityEntityTypeDefinition[]} securityDefinitions\r\n\t * the list of security definitions.\r\n\t * @returns {boolean}\r\n\t * the response of true if authorized; false otherwise.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static actionAuthorized(\r\n\t\tentityType: string,\r\n\t\tactionName: string,\r\n\t\tsecurityDefinitions: ISecurityEntityTypeDefinition[]): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmptyArray(securityDefinitions))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst actions: ISecurityItemDto[] =\r\n\t\t\tsecurityDefinitions\r\n\t\t\t\t.find((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\tdefinition.entityTypeName === entityType)\r\n\t\t\t\t.securityDefinition.actions;\r\n\r\n\t\tconst securityItem =\r\n\t\t\tthis.getActionSecurityRights(\r\n\t\t\t\tactionName,\r\n\t\t\t\tactions);\r\n\r\n\t\treturn securityItem.rights.execute === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks to see if the security permissions contain the\r\n\t * right and is true.\r\n\t *\r\n\t * @param {SecurityRightType} right\r\n\t * the right name.\r\n\t * @param {string} entityType\r\n\t * @param { ISecurityEntityTypeDefinition[]} securityDefinitions\r\n\t * The security definitions.\r\n\t * @returns\r\n\t * The boolean true if use permissions have the right and it is true.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static HasRight(\r\n\t\tright: SecurityRightType,\r\n\t\tentityType: string,\r\n\t\tsecurityDefinitions: ISecurityEntityTypeDefinition[]): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmptyArray(securityDefinitions))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst rights: ISecurityRightDto =\r\n\t\t\tsecurityDefinitions\r\n\t\t\t\t.find((definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\tdefinition.entityTypeName === entityType)\r\n\t\t\t\t?.securityDefinition\r\n\t\t\t\t?.rights;\r\n\r\n\t\tswitch (right)\r\n\t\t{\r\n\t\t\tcase SecurityRightType.create:\r\n\t\t\t\treturn rights?.create ?? false;\r\n\t\t\tcase SecurityRightType.read:\r\n\t\t\t\treturn rights?.read ?? false;\r\n\t\t\tcase SecurityRightType.update:\r\n\t\t\t\treturn rights?.update ?? false;\r\n\t\t\tcase SecurityRightType.delete:\r\n\t\t\t\treturn rights?.delete ?? false;\r\n\t\t\tcase SecurityRightType.execute:\r\n\t\t\t\treturn rights?.execute ?? false;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Security Right '${right}' is invalid.`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks to see if the current user has a role that is\r\n\t * in the allowed security groups.\r\n\t *\r\n\t * @param {string[]} allowedGroups\r\n\t * The allowed security groups.\r\n\t * @param {IUser} user\r\n\t * The logged in user.\r\n\t * @returns\r\n\t * The boolean true if the user has a role that is in the allowed groups.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static membershipExists(\r\n\t\tallowedGroups: string[],\r\n\t\tuser: IUser): boolean\r\n\t{\r\n\t\tconst memberGroups =\r\n\t\t\tuser?.membershipSecurityGroups ?? [];\r\n\r\n\t\treturn memberGroups\r\n\t\t\t.some((group: any) =>\r\n\t\t\t\tallowedGroups.includes(group.name));\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a security scrub on the menu items.\r\n\t *\r\n\t * @param {ISecureMenuItem[]} menuItems\r\n\t * The menu itesm to scrub.\r\n\t * @param {string} entityType\r\n\t * The entity type.\r\n\t * @param {ISecurityEntityTypeDefinition[]} securityDefinitions\r\n\t * The security definitions.\r\n\t * @param {string} directEntityType\r\n\t * If sent this will be the entity type specific to this scrub menu items\r\n\t * call and the direct access policy definition will replace the overall\r\n\t * security definitions for this instance only.\r\n\t * @param {ISecurityDefinition} directAccessPolicyDefinition\r\n\t * If sent this will be the access policy specific to this scrub menu items\r\n\t * call and the direct access policy definition will replace the overall\r\n\t * security definitions for this instance only.\r\n\t * @returns\r\n\t * The scrubbed menu items.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static scrubMenuItems(\r\n\t\tmenuItems: ISecureMenuItem[],\r\n\t\tentityType: string,\r\n\t\tsecurityDefinitions: ISecurityEntityTypeDefinition[],\r\n\t\tdirectEntityType: string = null,\r\n\t\tdirectAccessPolicyDefinition: ISecurityDefinition = null):\r\n\t\tISecureMenuItem[]\r\n\t{\r\n\t\tconst authorizedMenuItems: ISecureMenuItem[] = [];\r\n\r\n\t\tconst mergedSecurityDefinitions =\r\n\t\t\tAnyHelper.isNullOrWhitespace(directEntityType)\r\n\t\t\t\t? securityDefinitions\r\n\t\t\t\t: this.mergeDirectAccessPolicyDefinitions(\r\n\t\t\t\t\tcloneDeep(securityDefinitions),\r\n\t\t\t\t\tdirectEntityType,\r\n\t\t\t\t\tdirectAccessPolicyDefinition);\r\n\r\n\t\tfor (const action of menuItems)\r\n\t\t{\r\n\t\t\tlet hasRight: boolean = false;\r\n\r\n\t\t\tswitch (action.securityRightCategory)\r\n\t\t\t{\r\n\t\t\t\tcase SecurityRightCategory.TopLevelRight:\r\n\r\n\t\t\t\t\thasRight =\r\n\t\t\t\t\t\tSecurityHelper\r\n\t\t\t\t\t\t\t.HasRight(\r\n\t\t\t\t\t\t\t\taction.securityRightType,\r\n\t\t\t\t\t\t\t\tentityType,\r\n\t\t\t\t\t\t\t\tmergedSecurityDefinitions);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase SecurityRightCategory.Data:\r\n\r\n\t\t\t\t\tconst dataRights: ISecurityItem[] =\r\n\t\t\t\t\t\tmergedSecurityDefinitions\r\n\t\t\t\t\t\t\t.find(\r\n\t\t\t\t\t\t\t\t(definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\t\t\t\t\tdefinition.entityTypeName === entityType)\r\n\t\t\t\t\t\t\t.securityDefinition.data;\r\n\r\n\t\t\t\t\tif (!dataRights)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\thasRight = false;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst itemRights: ISecurityItem =\r\n\t\t\t\t\t\tSecurityHelper\r\n\t\t\t\t\t\t\t.getDataSecurityRights(\r\n\t\t\t\t\t\t\t\taction.securityRightPath,\r\n\t\t\t\t\t\t\t\tdataRights);\r\n\r\n\t\t\t\t\tswitch (action.securityRightType)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcase SecurityRightType.create:\r\n\t\t\t\t\t\t\thasRight = itemRights?.rights?.create ?? false;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase SecurityRightType.read:\r\n\t\t\t\t\t\t\thasRight = itemRights?.rights?.read ?? false;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase SecurityRightType.update:\r\n\t\t\t\t\t\t\thasRight = itemRights?.rights?.update ?? false;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase SecurityRightType.delete:\r\n\t\t\t\t\t\t\thasRight = itemRights?.rights?.delete ?? false;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t\t\t`Right '${action.securityRightType}' is invalid`\r\n\t\t\t\t\t\t\t\t+ ` for ${SecurityRightCategory.Data}.`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase SecurityRightCategory.Action:\r\n\r\n\t\t\t\t\thasRight =\r\n\t\t\t\t\t\tSecurityHelper\r\n\t\t\t\t\t\t\t.actionAuthorized(\r\n\t\t\t\t\t\t\t\tentityType,\r\n\t\t\t\t\t\t\t\taction.securityRightPath,\r\n\t\t\t\t\t\t\t\tmergedSecurityDefinitions);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t// Do we want to throw or log and revoke right?\r\n\t\t\t\t\t// hasRight = false;\r\n\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t'Could not scrub menu items. Invalid requirement '\r\n\t\t\t\t\t\t\t+ `category ${action.securityRightCategory}. `\r\n\t\t\t\t\t\t\t+ 'Right not given.');\r\n\t\t\t}\r\n\r\n\t\t\tif (hasRight)\r\n\t\t\t{\r\n\t\t\t\tauthorizedMenuItems.push(action);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn authorizedMenuItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the system security restrictions to define a password.\r\n\t *\r\n\t * @type {any}\r\n\t * @param {any} systemSecurity\r\n\t * The system security object.\r\n\t * @returns\r\n\t * Returns the security restrictions for a password, otherwise returns null.\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic static getSecurityRestrictions(\r\n\t\tsystemSecurity: any): any\r\n\t{\r\n\t\tif (AnyHelper.isNull(systemSecurity))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst password: any =\r\n\t\t\tsystemSecurity.passwords;\r\n\t\tconst passwordRestrictions: any =\r\n\t\t\tsystemSecurity.passwords.requires;\r\n\t\tconst allowPasswordReuse: string =\r\n\t\t\tsystemSecurity.passwords.historyReuseRestriction === true\r\n\t\t\t\t? 'Yes'\r\n\t\t\t\t: 'No';\r\n\r\n\t\tconst restrictions: any =\r\n\t\t\t{\r\n\t\t\t\tuppercase: passwordRestrictions.uppercase,\r\n\t\t\t\tlowercase: passwordRestrictions.lowercase,\r\n\t\t\t\tnumber: passwordRestrictions.number,\r\n\t\t\t\tspecial: passwordRestrictions.special,\r\n\t\t\t\tminimumLength: password.minimumLength,\r\n\t\t\t\tmaximumLength: password.maximumLength,\r\n\t\t\t\tallowPasswordReuse: allowPasswordReuse\r\n\t\t\t};\r\n\r\n\t\treturn restrictions;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies if the provided password is valid based on the system security\r\n\t * restrictions.\r\n\t *\r\n\t * @param {string} password\r\n\t * The password to verify.\r\n\t * @param {any} securityRestrictions\r\n\t * The system password security restrictions.\r\n\t * @param {boolean} required\r\n\t * Determines if the required check is needed.\r\n\t * @returns\r\n\t * Returns true if the provided password is valid, otherwise returns false.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tpublic static isValidPassword(\r\n\t\tpassword: string,\r\n\t\tsecurityRestrictions: any,\r\n\t\trequired: boolean = true): boolean\r\n\t{\r\n\t\tif (required === false && AnyHelper.isNullOrWhitespace(password))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(securityRestrictions))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(password)\r\n\t\t\t|| password.length\r\n\t\t\t\t< securityRestrictions.minimumLength\r\n\t\t\t|| password.length\r\n\t\t\t\t> securityRestrictions.maximumLength)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet upperCount: number = 0;\r\n\t\tlet lowerCount: number = 0;\r\n\t\tlet numberCount: number = 0;\r\n\t\tlet specialCount: number = 0;\r\n\r\n\t\tfor (let index = 0; index < password.length; index++)\r\n\t\t{\r\n\t\t\tconst char = password.charAt(index);\r\n\r\n\t\t\tif (/[A-Z]/.test(char))\r\n\t\t\t{\r\n\t\t\t\tupperCount++;\r\n\t\t\t}\r\n\t\t\telse if (/[a-z]/.test(char))\r\n\t\t\t{\r\n\t\t\t\tlowerCount++;\r\n\t\t\t}\r\n\t\t\telse if (/[0-9]/.test(char))\r\n\t\t\t{\r\n\t\t\t\tnumberCount++;\r\n\t\t\t}\r\n\t\t\telse if (/[#*$-+?_&=!%{}/]/.test(char))\r\n\t\t\t{\r\n\t\t\t\tspecialCount++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn upperCount >= securityRestrictions.uppercase\r\n\t\t\t&& lowerCount >= securityRestrictions.lowercase\r\n\t\t\t&& numberCount >= securityRestrictions.number\r\n\t\t\t&& specialCount >= securityRestrictions.special;\r\n\t}\r\n\r\n\t/**\r\n\t * sorts wildcard permissions from most granular first\r\n\t * to least granular ($.data) last.\r\n\t *\r\n\t * @static\r\n\t * @param {ISecurityItemDto[]} dataSecurityPermissions\r\n\t * The data object permissions to sort.\r\n\t * @returns {ISecurityItemDto[]}\r\n\t * the sorted rights\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static sort(\r\n\t\tdataSecurityPermissions: ISecurityItemDto[]): ISecurityItemDto[]\r\n\t{\r\n\t\tconst period: string = AppConstants.characters.period;\r\n\r\n\t\tconst sortedPermissions: ISecurityItemDto[] =\r\n\t\t\tArray.from(dataSecurityPermissions);\r\n\r\n\t\treturn sortedPermissions\r\n\t\t\t.sort(\r\n\t\t\t\tfunction (itemA, itemB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn itemB.path.split(period).length\r\n\t\t\t\t\t\t- itemA.path.split(period).length;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of wildcard permissions.\r\n\t *\r\n\t * @static\r\n\t * @param {ISecurityItemDto[]} dataSecurityPermissions\r\n\t * The data objetc permissions to check.\r\n\t * @returns {ISecurityItemDto[]}\r\n\t * the wildcard permissions sorted from most granular (most depth) first\r\n\t * to least granular ($.data) last.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static getWildCardPermissions(\r\n\t\tdataSecurityPermissions: ISecurityItemDto[]): ISecurityItemDto[] {\r\n\t\treturn this\r\n\t\t\t.sort(dataSecurityPermissions)\r\n\t\t\t.filter((data: ISecurityItemDto) =>\r\n\t\t\t\tthis.wildCardFinder.test(data.path));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of wildcard paths (no asterik).\r\n\t *\r\n\t * @static\r\n\t * @param {ISecurityItemDto[]} dataSecurityPermissions\r\n\t * The data objetc permissions to check.\r\n\t * @returns {string[]}\r\n\t * the wildcard paths sorted from most granular (most depth) first\r\n\t * to least granular ($.data) last.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static getWildCardPaths(\r\n\t\tdataSecurityPermissions: ISecurityItemDto[]): string[] {\r\n\t\treturn this.getWildCardPermissions(dataSecurityPermissions)\r\n\t\t\t.map((data: ISecurityItemDto) =>\r\n\t\t\t\tthis.wildCardFinder\r\n\t\t\t\t\t.exec(data.path)\r\n\t\t\t\t\t.groups\r\n\t\t\t\t\t.wildCardPath);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent entity type and direct access policy definition, this\r\n\t * will map the security definitions clone for that type to be specific\r\n\t * to the item instance based permissions.\r\n\t *\r\n\t * @static\r\n\t * @param {ISecurityEntityTypeDefinition[]} securityDefinitions\r\n\t * The set of security definitions to merge.\r\n\t * @param {string} directEntityType\r\n\t * The entity type associated to the sent direct access policy.\r\n\t * @param {ISecurityDefinition} directAccessPolicyDefinition\r\n\t * The direct access policy to override the security definitions with.\r\n\t * @returns {ISecurityEntityTypeDefinition[]}\r\n\t * The merged set of security entity type definitions with direct access\r\n\t * policy overrides.\r\n\t * @memberof SecurityHelper\r\n\t */\r\n\tprivate static mergeDirectAccessPolicyDefinitions(\r\n\t\tsecurityDefinitions: ISecurityEntityTypeDefinition[],\r\n\t\tdirectEntityType: string,\r\n\t\tdirectAccessPolicyDefinition: ISecurityDefinition):\r\n\t\tISecurityEntityTypeDefinition[]\r\n\t{\r\n\t\tconst securityDefinition: ISecurityEntityTypeDefinition =\r\n\t\t\tsecurityDefinitions.find(\r\n\t\t\t\t(definition: ISecurityEntityTypeDefinition) =>\r\n\t\t\t\t\tdefinition.entityTypeName === directEntityType);\r\n\r\n\t\tsecurityDefinition.securityDefinition =\r\n\t\t\tdirectAccessPolicyDefinition;\r\n\r\n\t\treturn securityDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * An enum for designating country names.\r\n */\r\nexport enum CountryCodeNames\r\n{\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tABW = 'Aruba',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAFG = 'Afghanistan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAGO = 'Angola',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAIA = 'Anguilla',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tALA = 'Åland Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tALB = 'Albania',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAND = 'Andorra',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tARE = 'United Arab Emirates',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tARG = 'Argentina',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tARM = 'Armenia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tASM = 'American Samoa',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tATA = 'Antarctica',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tATF = 'French Southern Territories',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tATG = 'Antigua and Barbuda',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAUS = 'Australia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAUT = 'Austria',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tAZE = 'Azerbaijan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBDI = 'Burundi',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBEL = 'Belgium',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBEN = 'Benin',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBES = 'Bonaire Sint Eustatius and Saba',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBFA = 'Burkina Faso',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBGD = 'Bangladesh',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBGR = 'Bulgaria',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBHR = 'Bahrain',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBHS = 'Bahamas',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBIH = 'Bosnia and Herzegovina',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBLM = 'Saint Barthélemy',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBLR = 'Belarus',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBLZ = 'Belize',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBMU = 'Bermuda',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBOL = 'Bolivia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBRA = 'Brazil',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBRB = 'Barbados',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBRN = 'Brunei Darussalam',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBTN = 'Bhutan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBVT = 'Bouvet Island',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tBWA = 'Botswana',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCAF = 'Central African Republic',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCAN = 'Canada',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCCK = 'Cocos (Keeling) Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCHE = 'Switzerland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCHL = 'Chile',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCHN = 'China',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCIV = 'Côte d\\'Ivoire',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCMR = 'Cameroon',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCOD = 'Congo Democratic Republic',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCOG = 'Congo',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCOK = 'Cook Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCOL = 'Colombia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCOM = 'Comoros',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCPV = 'Cabo Verde',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCRI = 'Costa Rica',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCUB = 'Cuba',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCUW = 'Curaçao',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCXR = 'Christmas Island',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCYM = 'Cayman Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCYP = 'Cyprus',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tCZE = 'Czechia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDEU = 'Germany',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDJI = 'Djibouti',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDMA = 'Dominica',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDNK = 'Denmark',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDOM = 'Dominican Republic',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tDZA = 'Algeria',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tECU = 'Ecuador',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tEGY = 'Egypt',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tERI = 'Eritrea',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tESH = 'Western Sahara',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tESP = 'Spain',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tEST = 'Estonia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tETH = 'Ethiopia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFIN = 'Finland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFJI = 'Fiji',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFLK = 'Falkland Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFRA = 'France',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFRO = 'Faroe Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tFSM = 'Micronesia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGAB = 'Gabon',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGBR = 'United Kingdom',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGEO = 'Georgia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGGY = 'Guernsey',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGHA = 'Ghana',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGIB = 'Gibraltar',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGIN = 'Guinea',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGLP = 'Guadeloupe',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGMB = 'Gambia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGNB = 'Guinea-Bissau',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGNQ = 'Equatorial Guinea',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGRC = 'Greece',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGRD = 'Grenada',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGRL = 'Greenland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGTM = 'Guatemala',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGUF = 'French Guiana',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGUM = 'Guam',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tGUY = 'Guyana',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHKG = 'Hong Kong',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHMD = 'Heard Island and McDonald Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHND = 'Honduras',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHRV = 'Croatia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHTI = 'Haiti',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tHUN = 'Hungary',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIDN = 'Indonesia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIMN = 'Isle of Man',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIND = 'India',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIOT = 'British Indian Ocean Territory',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIRL = 'Ireland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIRN = 'Iran',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tIRQ = 'Iraq',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tISL = 'Iceland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tISR = 'Israel',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tITA = 'Italy',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tJAM = 'Jamaica',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tJEY = 'Jersey',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tJOR = 'Jordan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tJPN = 'Japan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKAZ = 'Kazakhstan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKEN = 'Kenya',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKGZ = 'Kyrgyzstan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKHM = 'Cambodia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKIR = 'Kiribati',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKNA = 'Saint Kitts and Nevis',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKOR = 'Korea Republic of',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tKWT = 'Kuwait',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLAO = 'Lao',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLBN = 'Lebanon',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLBR = 'Liberia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLBY = 'Libya',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLCA = 'Saint Lucia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLIE = 'Liechtenstein',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLKA = 'Sri Lanka',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLSO = 'Lesotho',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLTU = 'Lithuania',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLUX = 'Luxembourg',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tLVA = 'Latvia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMAC = 'Macao',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMAF = 'Saint Martin',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMAR = 'Morocco',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMCO = 'Monaco',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMDA = 'Moldova',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMDG = 'Madagascar',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMDV = 'Maldives',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMEX = 'Mexico',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMHL = 'Marshall Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMKD = 'North Macedonia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMLI = 'Mali',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMLT = 'Malta',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMMR = 'Myanmar',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMNE = 'Montenegro',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMNG = 'Mongolia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMNP = 'Northern Mariana Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMOZ = 'Mozambique',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMRT = 'Mauritania',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMSR = 'Montserrat',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMTQ = 'Martinique',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMUS = 'Mauritius',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMWI = 'Malawi',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMYS = 'Malaysia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tMYT = 'Mayotte',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNAM = 'Namibia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNCL = 'New Caledonia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNER = 'Niger',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNFK = 'Norfolk Island',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNGA = 'Nigeria',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNIC = 'Nicaragua',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNIU = 'Niue',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNLD = 'Netherlands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNOR = 'Norway',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNPL = 'Nepal',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNRU = 'Nauru',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tNZL = 'New Zealand',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tOMN = 'Oman',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPAK = 'Pakistan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPAN = 'Panama',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPCN = 'Pitcairn',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPER = 'Peru',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPHL = 'Philippines',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPLW = 'Palau',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPNG = 'Papua New Guinea',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPOL = 'Poland',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPRI = 'Puerto Rico',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPRK = 'Korea Democratic People\\'s Republic',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPRT = 'Portugal',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPRY = 'Paraguay',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPSE = 'Palestine',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tPYF = 'French Polynesia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tQAT = 'Qatar',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tREU = 'Réunion',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tROU = 'Romania',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tRUS = 'Russian Federation',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tRWA = 'Rwanda',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSAU = 'Saudi Arabia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSDN = 'Sudan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSEN = 'Senegal',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSGP = 'Singapore',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSGS = 'South Georgia and South Sandwich Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSHN = 'Saint Helena Ascension and Tristan da Cunha',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSJM = 'Svalbard and Jan Mayen',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSLB = 'Solomon Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSLE = 'Sierra Leone',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSLV = 'El Salvador',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSMR = 'San Marino',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSOM = 'Somalia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSPM = 'Saint Pierre and Miquelon',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSRB = 'Serbia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSSD = 'South Sudan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSTP = 'Sao Tome and Principe',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSUR = 'Suriname',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSVK = 'Slovakia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSVN = 'Slovenia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSWE = 'Sweden',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSWZ = 'Eswatini',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSXM = 'Sint Maarten',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSYC = 'Seychelles',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tSYR = 'Syrian Arab Republic',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTCA = 'Turks and Caicos Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTCD = 'Chad',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTGO = 'Togo',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTHA = 'Thailand',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTJK = 'Tajikistan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTKL = 'Tokelau',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTKM = 'Turkmenistan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTLS = 'Timor-Leste',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTON = 'Tonga',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTTO = 'Trinidad and Tobago',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTUN = 'Tunisia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTUR = 'Türkiye',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTUV = 'Tuvalu',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTWN = 'Taiwan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tTZA = 'Tanzania',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tUGA = 'Uganda',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tUKR = 'Ukraine',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tUMI = 'United States Minor Outlying Islands',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tURY = 'Uruguay',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tUSA = 'United States of America',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tUZB = 'Uzbekistan',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVAT = 'Holy See',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVCT = 'Saint Vincent and the Grenadines',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVEN = 'Venezuela',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVGB = 'Virgin Islands British',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVIR = 'Virgin Islands U.S.',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVNM = 'Viet Nam',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tVUT = 'Vanuatu',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tWLF = 'Wallis and Futuna',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tWSM = 'Samoa',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tYEM = 'Yemen',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tZAF = 'South Africa',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tZMB = 'Zambia',\r\n\r\n\t/**\r\n\t * The {string} country code name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CountryCodeName\r\n\t */\r\n\tZWE = 'Zimbabwe',\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n/**\r\n * A class containing static methods for mapping data\r\n * with string interpolation\r\n *\r\n * @memberof InterpolationHelper\r\n */\r\nexport class InterpolationHelper\r\n{\r\n\t/**\r\n\t * an object to hold template parser functions\r\n\t * so that duplicates are not created if iterating.\r\n\t *\r\n\t * @static\r\n\t * @type {object}\r\n\t * @memberof InterpolationHelper\r\n\t */\r\n\tprivate static parserCache: object = {};\r\n\r\n\t/**\r\n\t * Gets the parsing function from the cache object\r\n\t * or creates a new one to return and saves to cache.\r\n\t *\r\n\t * @static\r\n\t * @param {string} template\r\n\t * @returns {Function}\r\n\t * @memberof InterpolationHelper\r\n\t */\r\n\tpublic static getTemplateParser(template: string): Function\r\n\t{\r\n\t\tconst parserCache: Function = this.parserCache[template];\r\n\r\n\t\tthis.parserCache[template] =\r\n\t\t\tparserCache || this.createParser(template);\r\n\r\n\t\treturn this.parserCache[template];\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the parsing function that takes\r\n\t * an array of any and applies it to the template.\r\n\t *\r\n\t * @static\r\n\t * @param {string} template\r\n\t * @returns {Function}\r\n\t * @memberof InterpolationHelper\r\n\t */\r\n\tprivate static createParser(template: string): Function\r\n\t{\r\n\t\t// Ensure single level objects can utilize\r\n\t\t// this mapping intuitively\r\n\t\tconst formattedTemplate: string =\r\n\t\t\ttemplate.replace(\r\n\t\t\t\t/\\${(.*?)\\}/gm,\r\n\t\t\t\t(match: string, cleanMatch: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (cleanMatch.indexOf('.') === -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn '${' + `data.${cleanMatch}` + '}';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn match;\r\n\t\t\t\t});\r\n\r\n\t\tconst dataName: string =\r\n\t\t\tthis.getDataName(formattedTemplate);\r\n\r\n\t\treturn Function(\r\n\t\t\tdataName ?? 'context',\r\n\t\t\t`return \\`${formattedTemplate}\\``);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the name of the data object to\r\n\t * use in function call.\r\n\t *\r\n\t * @static\r\n\t * @param {string} template\r\n\t * @returns {string}\r\n\t * @memberof InterpolationHelper\r\n\t */\r\n\tprivate static getDataName(template: string): string\r\n\t{\r\n\t\tconst dataExpressionMatches: string[]\r\n\t\t\t= template.match(/\\$\\{([\\s]*[^;\\s\\{]+[\\s]*)\\}/g);\r\n\r\n\t\tif (!dataExpressionMatches)\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst expressions: string[] = [];\r\n\r\n\t\tdataExpressionMatches\r\n\t\t\t.forEach(match =>\r\n\t\t\t{\r\n\t\t\t\texpressions.push(match\r\n\t\t\t\t\t.replace('${', '')\r\n\t\t\t\t\t.replace('}', ''));\r\n\t\t\t});\r\n\r\n\t\treturn expressions[0]\r\n\t\t\t.split('.')[0]\r\n\t\t\t.split('[')[0];\r\n\t}\r\n}","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/*\n\nTypeScript Md5\n==============\n\nBased on work by\n* Joseph Myers: http://www.myersdaily.org/joseph/javascript/md5-text.html\n* André Cruz: https://github.com/satazor/SparkMD5\n* Raymond Hill: https://github.com/gorhill/yamd5.js\n\nEffectively a TypeScrypt re-write of Raymond Hill JS Library\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Raymond Hill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n\n Copyright (C) 2015 André Cruz \n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT YOU WANT TO.\n\n\n*/\n;\nexport class Md5 {\n constructor() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state = new Int32Array(4);\n this._buffer = new ArrayBuffer(68);\n this._buffer8 = new Uint8Array(this._buffer, 0, 68);\n this._buffer32 = new Uint32Array(this._buffer, 0, 17);\n this.start();\n }\n static hashStr(str, raw = false) {\n return this.onePassHasher\n .start()\n .appendStr(str)\n .end(raw);\n }\n static hashAsciiStr(str, raw = false) {\n return this.onePassHasher\n .start()\n .appendAsciiStr(str)\n .end(raw);\n }\n static _hex(x) {\n const hc = Md5.hexChars;\n const ho = Md5.hexOut;\n let n;\n let offset;\n let j;\n let i;\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i];\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n }\n }\n return ho.join('');\n }\n static _md5cycle(x, k) {\n let a = x[0];\n let b = x[1];\n let c = x[2];\n let d = x[3];\n // ff()\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n // gg()\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n // hh()\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n // ii()\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n /**\n * Initialise buffer to be hashed\n */\n start() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state.set(Md5.stateIdentity);\n return this;\n }\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n appendStr(str) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let code;\n let i;\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n }\n else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xC0;\n buf8[bufLen++] = code & 0x3F | 0x80;\n }\n else if (code < 0xD800 || code > 0xDBFF) {\n buf8[bufLen++] = (code >>> 12) + 0xE0;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n else {\n code = ((code - 0xD800) * 0x400) + (str.charCodeAt(++i) - 0xDC00) + 0x10000;\n if (code > 0x10FFFF) {\n throw new Error('Unicode standard supports code points up to U+10FFFF');\n }\n buf8[bufLen++] = (code >>> 18) + 0xF0;\n buf8[bufLen++] = (code >>> 12 & 0x3F) | 0x80;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n if (bufLen >= 64) {\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16];\n }\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n appendAsciiStr(str) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i;\n let j = 0;\n for (;;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n appendByteArray(input) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i;\n let j = 0;\n for (;;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++];\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Get the state of the hash buffer\n */\n getState() {\n const s = this._state;\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [s[0], s[1], s[2], s[3]]\n };\n }\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n setState(state) {\n const buf = state.buffer;\n const x = state.state;\n const s = this._state;\n let i;\n this._dataLength = state.length;\n this._bufferLength = state.buflen;\n s[0] = x[0];\n s[1] = x[1];\n s[2] = x[2];\n s[3] = x[3];\n for (i = 0; i < buf.length; i += 1) {\n this._buffer8[i] = buf.charCodeAt(i);\n }\n }\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n end(raw = false) {\n const bufLen = this._bufferLength;\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n const i = (bufLen >> 2) + 1;\n this._dataLength += bufLen;\n const dataBitsLen = this._dataLength * 8;\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n if (bufLen > 55) {\n Md5._md5cycle(this._state, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n if (dataBitsLen <= 0xFFFFFFFF) {\n buf32[14] = dataBitsLen;\n }\n else {\n const matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n const lo = parseInt(matches[2], 16);\n const hi = parseInt(matches[1], 16) || 0;\n buf32[14] = lo;\n buf32[15] = hi;\n }\n Md5._md5cycle(this._state, buf32);\n return raw ? this._state : Md5._hex(this._state);\n }\n}\n// Private Static Variables\nMd5.stateIdentity = new Int32Array([1732584193, -271733879, -1732584194, 271733878]);\nMd5.buffer32Identity = new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\nMd5.hexChars = '0123456789abcdef';\nMd5.hexOut = [];\n// Permanent instance is to use for one-call hashing\nMd5.onePassHasher = new Md5();\nif (Md5.hashStr('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n throw new Error('Md5 self test failed.');\n}\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCountryCodeNames\r\n} from '@shared/constants/enums/country-code-names.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tInterpolationHelper\r\n} from '@shared/helpers/interpolation.helper';\r\nimport {\r\n\tcamelCase\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMd5\r\n} from 'ts-md5';\r\n\r\n/**\r\n * A class containing static helper methods\r\n * for the string type.\r\n *\r\n * @export\r\n * @class StringHelper\r\n */\r\nexport class StringHelper\r\n{\r\n\t/**\r\n\t * Gets the standard international format to use in this helper.\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof StringHelper\r\n\t */\r\n\tprivate static readonly internationalFormat: string = 'en-US';\r\n\r\n\t/**\r\n\t * Gets a collection of default whitespace characters.\r\n\t *\r\n\t * @static\r\n\t * @type {string[]}\r\n\t * @memberof StringHelper\r\n\t */\r\n\tprivate static readonly defaultWhitespace: string[]\r\n\t\t= [\r\n\t\t\tString.fromCodePoint(9), // Tab\r\n\t\t\tString.fromCodePoint(10), // LF\r\n\t\t\tString.fromCodePoint(11), // VT\r\n\t\t\tString.fromCodePoint(12), // FF\r\n\t\t\tString.fromCodePoint(13), // CR\r\n\t\t\tString.fromCodePoint(32) // Space\r\n\t\t];\r\n\r\n\t/**\r\n\t * List of country codes whose postal codes\r\n\t * are placed before the city in a full address format.\r\n\t *\r\n\t * @static\r\n\t * @type {string[]}\r\n\t * @memberof StringHelper\r\n\t */\r\n\tprivate static readonly offPostalCountryCodes: string[]\r\n\t\t= [\r\n\t\t\t'ALA',\r\n\t\t\t'AUT',\r\n\t\t\t'BEL',\r\n\t\t\t'CHE',\r\n\t\t\t'DEU',\r\n\t\t\t'DNK',\r\n\t\t\t'FIN',\r\n\t\t\t'FRA',\r\n\t\t\t'FRO',\r\n\t\t\t'ISL',\r\n\t\t\t'ISR',\r\n\t\t\t'LIE',\r\n\t\t\t'LUX',\r\n\t\t\t'NLD',\r\n\t\t\t'NOR',\r\n\t\t\t'SVK',\r\n\t\t\t'SVN',\r\n\t\t\t'SWE'\r\n\t\t];\r\n\r\n\t/**\r\n\t * The USA Country Code.\r\n\t *\r\n\t * @static\r\n\t * @type {string}\r\n\t * @memberof StringHelper\r\n\t */\r\n\tprivate static readonly uSACountryCode: string = 'USA';\r\n\r\n\t/**\r\n\t * Returns the string in proper case format.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string to set to a proper case value.\r\n\t * @returns {string}\r\n\t * The proper case string representation of the parameter\r\n\t * value.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static toProperCase(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn (value == null\r\n\t\t\t|| value.length === 0)\r\n\t\t\t? value\r\n\t\t\t: value\r\n\t\t\t\t.charAt(0)\r\n\t\t\t\t.toUpperCase()\r\n\t\t\t\t\t+ value.slice(1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the string with added spaces before each capital letter.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string value with capital letters.\r\n\t * @returns {string}\r\n\t * The string value with added spaces before each capital letter.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static beforeCapitalSpaces(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn (value == null\r\n\t\t\t|| value.length === 0)\r\n\t\t\t? value\r\n\t\t\t: value\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t/([a-z])([A-Z])/g,\r\n\t\t\t\t\t'$1 $2');\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the string with added spaces before each capital letter.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string value with numbers.\r\n\t * @returns {string}\r\n\t * The string value with added spaces between each number.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static betweenNumberSpaces(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn (value == null\r\n\t\t\t|| value.length === 0)\r\n\t\t\t? value\r\n\t\t\t: value\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t/(?:[a-z])(?=\\d)|(?:\\d)(?=[a-z])/gi,\r\n\t\t\t\t\t'$& ');\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a left and right trimmed version of the input $this value.\r\n\t * If no args are specified, the default whitespace characters are\r\n\t * used to trim the $this.\r\n\t *\r\n\t * @static\r\n\t * @param {string} $this A string to be trimmed.\r\n\t * @param {...string[]} args A collection of characters to trim.\r\n\t * @returns {string} A trimmed representation of $this.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static trim(\r\n\t\t$this: string,\r\n\t\t...args: string[]): string\r\n\t{\r\n\t\treturn this.trimRight(\r\n\t\t\tthis.trimLeft(\r\n\t\t\t\t$this,\r\n\t\t\t\t...args),\r\n\t\t\t...args);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a left trimmed version of the input $this value.\r\n\t * If no args are specified, the default whitespace characters are\r\n\t * used to trim the $this.\r\n\t *\r\n\t * @static\r\n\t * @param {string} $this A string to be trimmed.\r\n\t * @param {...string[]} args A collection of characters to trim.\r\n\t * @returns {string} A trimmed representation of $this.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static trimLeft(\r\n\t\t$this: string,\r\n\t\t...args: string[]): string\r\n\t{\r\n\t\tif (AnyHelper.isNull($this))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (args.length === 0)\r\n\t\t{\r\n\t\t\targs.push(...this.defaultWhitespace);\r\n\t\t}\r\n\r\n\t\twhile (args.includes($this.charAt(0)))\r\n\t\t{\r\n\t\t\t// eslint-disable-next-line no-param-reassign\r\n\t\t\t$this = $this.substring(1);\r\n\t\t}\r\n\r\n\t\treturn $this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a right trimmed version of the input $this value.\r\n\t * If no args are specified, the default whitespace characters are\r\n\t * used to trim the $this.\r\n\t *\r\n\t * @static\r\n\t * @param {string} $this A string to be trimmed.\r\n\t * @param {...string[]} args A collection of characters to trim.\r\n\t * @returns {string} A trimmed representation of $this.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static trimRight(\r\n\t\t$this: string,\r\n\t\t...args: string[]): string\r\n\t{\r\n\t\tif (AnyHelper.isNull($this))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (args.length === 0)\r\n\t\t{\r\n\t\t\targs.push(...this.defaultWhitespace);\r\n\t\t}\r\n\r\n\t\twhile (args.includes($this.charAt($this.length - 1)))\r\n\t\t{\r\n\t\t\t// eslint-disable-next-line no-param-reassign\r\n\t\t\t$this = $this.substring(0, $this.length - 1);\r\n\t\t}\r\n\r\n\t\treturn $this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an MD5 hash representing the inputed $this.\r\n\t *\r\n\t * @static\r\n\t * @param {string} $this A string to get MD5 hash for.\r\n\t * @returns {string} A string representing the MD5 hash for $this.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getHash(\r\n\t\t$this: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty($this))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn Md5.hashStr($this);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a cleaned string, this will accept an array of strings to be\r\n\t * removed and return the original with these no longer in the value.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string to set to clean.\r\n\t * @param {string[]} [stringsToRemove]\r\n\t * The array of strings to be removed.\r\n\t * The default value removes the space character.\r\n\t * @returns {string}\r\n\t * The string with all sent parameter strings removed.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getCleanedValue(\r\n\t\tvalue: string,\r\n\t\tstringsToRemove: string[] = [' ']): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(value))\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tlet formattedValue: string = value;\r\n\t\tlet regexReplace: RegExp;\r\n\t\tstringsToRemove.forEach((string: string) =>\r\n\t\t{\r\n\t\t\tregexReplace = new RegExp(string, 'g');\r\n\t\t\tformattedValue =\r\n\t\t\t\tformattedValue.replace(regexReplace, '');\r\n\t\t});\r\n\r\n\t\treturn formattedValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the final string value with trimmed whitespaces,\r\n\t * following the splitting of the string on the sent split\r\n\t * character.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string to split on the sent split character. Thi\r\n\t * @param {string} [splitCharacter]\r\n\t * The character to split this string on. If this character is not found,\r\n\t * the full trimmed string is returned. This defaults to the ',' character.\r\n\t * @returns {string}\r\n\t * The final string value following the split character sent.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getLastSplitValue(\r\n\t\tvalue: string,\r\n\t\tsplitCharacter: string = AppConstants.characters.comma): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(value))\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst splitStrings: string[] =\r\n\t\t\tvalue.split(splitCharacter);\r\n\r\n\t\treturn StringHelper.trim(\r\n\t\t\tsplitStrings[splitStrings.length - 1]);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string title representation of the entity type.\r\n\t *\r\n\t * @static\r\n\t * @param {string} entityType\r\n\t * the entity type.\r\n\t * @param {string} [subType]\r\n\t * THe optional sub type added after a hyphen.\r\n\t * @param {bool} [excludeBaseType]\r\n\t * The optional value indicating if the first or base\r\n\t * entity type should be included.\r\n\t * @returns {string}\r\n\t * The result title.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getEntityTypeTitle(\r\n\t\tentityType: string,\r\n\t\tsubType: string = null,\r\n\t\texcludeBaseType = true): string\r\n\t{\r\n\t\tconst split = entityType.split(AppConstants.characters.period);\r\n\r\n\t\tif (split.length <= 1)\r\n\t\t{\r\n\t\t\treturn entityType;\r\n\t\t}\r\n\r\n\t\tif (excludeBaseType)\r\n\t\t{\r\n\t\t\tsplit.shift();\r\n\t\t}\r\n\r\n\t\tconst title: string = this.beforeCapitalSpaces(\r\n\t\t\tsplit.join(AppConstants.empty));\r\n\r\n\t\treturn AnyHelper.isNullOrEmpty(subType)\r\n\t\t\t? title\r\n\t\t\t: title + ` - ${subType}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a concatenated string value.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string value to add to the concatenate string.\r\n\t * @param {string} concatenateString\r\n\t * The concatenated string.\r\n\t * @param {string} concatenateKey\r\n\t * The concatenate key.\r\n\t * @returns {string}\r\n\t * The concatenated string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\t public static getConcatenatedValue(\r\n\t\tvalue: string,\r\n\t\tconcatenateString: string,\r\n\t\tconcatenateKey: string = null): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(value))\r\n\t\t{\r\n\t\t\treturn concatenateString;\r\n\t\t}\r\n\r\n\t\treturn concatenateString.concat(\r\n\t\t\tAnyHelper.isNull(concatenateKey)\r\n\t\t\t\t? value\r\n\t\t\t\t: concatenateKey, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed camelcase string by separating each capitalized\r\n\t * word as space separated. This will return all values capitalized\r\n\t * unless the overload {useProperCase} is set to false.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The camelcase string to normalize by adding a space prior to\r\n\t * capitalizations.\r\n\t * @param {boolean} [useProperCase]\r\n\t * A truthy defining if each camel case 'word' is capitalized.\r\n\t * @returns {string}\r\n\t * The normalized with spaces camelcase string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static normalizeCamelcase(\r\n\t\tvalue: string,\r\n\t\tuseProperCase: boolean = true): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(value))\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst formattedValue: string =\r\n\t\t\tStringHelper.trim(\r\n\t\t\t\tvalue.replace(/([A-Z])/g, ' $1'));\r\n\r\n\t\treturn useProperCase\r\n\t\t\t? formattedValue.replace(/^./,\r\n\t\t\t\tfunction(substring: string)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn substring.toUpperCase();\r\n\t\t\t\t})\r\n\t\t\t: formattedValue.toLowerCase();\r\n\t}\r\n\r\n\t// Original algorithm\r\n\t// eslint-disable-next-line max-len\r\n\t// https://ourcodeworld.com/articles/read/353/how-to-convert-numbers-to-words-number-spelling-in-javascript\r\n\t/**\r\n\t * Accepts whole number inputs and returns the english representation of the\r\n\t * number sent.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string that will have digits translated into words.\r\n\t * @param {boolean} [useProperCase]\r\n\t * Whether or not number values should be capitalized in the output.\r\n\t * The default value is to not capitalize number values.\r\n\t * @returns {string}\r\n\t * An english number to word translation for the sent value.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static numberToWords(\r\n\t\tvalue: string,\r\n\t\tuseProperCase: boolean = false): string\r\n\t{\r\n\t\t/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\t\tconst string = value.toString();\r\n\t\tconst and = 'and';\r\n\r\n\t\tlet end: number;\r\n\t\tlet chunk: number;\r\n\t\tlet ints: number[];\r\n\t\tlet index: number;\r\n\t\tlet word: string;\r\n\r\n\t\tif (!/^\\d+$/.test(string))\r\n\t\t{\r\n\t\t\treturn 'NaN';\r\n\t\t}\r\n\r\n\t\t// Is number zero?\r\n\t\tif (parseInt(string, 10) === 0) {\r\n\t\t\treturn useProperCase\r\n\t\t\t\t? 'Zero'\r\n\t\t\t\t: 'zero';\r\n\t\t}\r\n\r\n\t\t// Array of units as words.\r\n\t\tconst units: string[] =\r\n\t\t[\r\n\t\t\t'',\r\n\t\t\t'one',\r\n\t\t\t'two',\r\n\t\t\t'three',\r\n\t\t\t'four',\r\n\t\t\t'five',\r\n\t\t\t'six',\r\n\t\t\t'seven',\r\n\t\t\t'eight',\r\n\t\t\t'nine',\r\n\t\t\t'ten',\r\n\t\t\t'eleven',\r\n\t\t\t'twelve',\r\n\t\t\t'thirteen',\r\n\t\t\t'fourteen',\r\n\t\t\t'fifteen',\r\n\t\t\t'sixteen',\r\n\t\t\t'seventeen',\r\n\t\t\t'eighteen',\r\n\t\t\t'nineteen'\r\n\t\t];\r\n\r\n\t\t// Array of tens as words.\r\n\t\tconst tens: string[] =\r\n\t\t[\r\n\t\t\t'',\r\n\t\t\t'',\r\n\t\t\t'twenty',\r\n\t\t\t'thirty',\r\n\t\t\t'forty',\r\n\t\t\t'fifty',\r\n\t\t\t'sixty',\r\n\t\t\t'seventy',\r\n\t\t\t'eighty',\r\n\t\t\t'ninety'\r\n\t\t];\r\n\r\n\t\t// Array of scales as words.\r\n\t\tconst scales: string[] =\r\n\t\t[\r\n\t\t\t'',\r\n\t\t\t'thousand',\r\n\t\t\t'million',\r\n\t\t\t'billion',\r\n\t\t\t'trillion',\r\n\t\t\t'quadrillion',\r\n\t\t\t'quintillion',\r\n\t\t\t'sextillion',\r\n\t\t\t'septillion',\r\n\t\t\t'octillion',\r\n\t\t\t'nonillion',\r\n\t\t\t'decillion',\r\n\t\t\t'undecillion',\r\n\t\t\t'duodecillion',\r\n\t\t\t'tredecillion',\r\n\t\t\t'quatttuor-decillion',\r\n\t\t\t'quindecillion',\r\n\t\t\t'sexdecillion',\r\n\t\t\t'septen-decillion',\r\n\t\t\t'octodecillion',\r\n\t\t\t'novemdecillion',\r\n\t\t\t'vigintillion',\r\n\t\t\t'centillion'\r\n\t\t];\r\n\r\n\t\t// Split user argument into 3 digit chunks from right to left.\r\n\t\tlet start: number = string.length;\r\n\t\tconst chunks: any[] | string[] = [];\r\n\r\n\t\twhile (start > 0)\r\n\t\t{\r\n\t\t\tend = start;\r\n\t\t\tstart = Math.max(0, start - 3);\r\n\t\t\tchunks.push(\r\n\t\t\t\tstring.slice(\r\n\t\t\t\t\tstart,\r\n\t\t\t\t\tend));\r\n\t\t}\r\n\r\n\t\t// Check if function has enough scale words\r\n\t\t// to be able to stringify the user argument.\r\n\t\tconst chunksLen: number = chunks.length;\r\n\t\tif (chunksLen > scales.length)\r\n\t\t{\r\n\t\t\treturn 'Overflow';\r\n\t\t}\r\n\r\n\t\t// Stringify each integer in each chunk.\r\n\t\tconst words: any[] = [];\r\n\t\tfor (index = 0; index < chunksLen; index++)\r\n\t\t{\r\n\t\t\tchunk = parseInt(chunks[index], 10);\r\n\r\n\t\t\tif (!AnyHelper.isNullOrEmpty(chunk))\r\n\t\t\t{\r\n\t\t\t\t// Split chunk into array of individual integers.\r\n\t\t\t\tconst intChunks =\r\n\t\t\t\t\tchunks[index]\r\n\t\t\t\t\t\t.split('')\r\n\t\t\t\t\t\t.reverse();\r\n\t\t\t\tints = intChunks\r\n\t\t\t\t\t.map(parseFloat);\r\n\r\n\t\t\t\t// If tens integer is 1, i.e. 10, then add 10 to units integer.\r\n\t\t\t\tif (ints[1] === 1)\r\n\t\t\t\t{\r\n\t\t\t\t\tints[0] += 10;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add scale word if chunk is not zero and array item exists.\r\n\t\t\t\tword = scales[index];\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(word))\r\n\t\t\t\t{\r\n\t\t\t\t\twords.push(\r\n\t\t\t\t\t\tuseProperCase\r\n\t\t\t\t\t\t\t? this.toProperCase(word)\r\n\t\t\t\t\t\t\t: word);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add unit word if array item exists.\r\n\t\t\t\tword = units[ints[0]];\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(word))\r\n\t\t\t\t{\r\n\t\t\t\t\twords.push(\r\n\t\t\t\t\t\tuseProperCase\r\n\t\t\t\t\t\t\t? this.toProperCase(word)\r\n\t\t\t\t\t\t\t: word);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add tens word if array item exists.\r\n\t\t\t\tword = tens[ints[1]];\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(word))\r\n\t\t\t\t{\r\n\t\t\t\t\twords.push(\r\n\t\t\t\t\t\tuseProperCase\r\n\t\t\t\t\t\t\t? this.toProperCase(word)\r\n\t\t\t\t\t\t\t: word);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add 'and' string after units or tens integer if:\r\n\t\t\t\tif (ints[0] || ints[1])\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\t// Chunk has a hundreds integer or chunk is the first\r\n\t\t\t\t\t// of multiple chunks.\r\n\t\t\t\t\t// Altered check for chunksLen > 1 to remove 'and'\r\n\t\t\t\t\t// on single digits.\r\n\t\t\t\t\tif (ints[2] || !index && chunksLen > 1) {\r\n\t\t\t\t\t\twords.push(and);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add hundreds word if array item exists.\r\n\t\t\t\tword = units[ints[2]];\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(word))\r\n\t\t\t\t{\r\n\t\t\t\t\twords.push(\r\n\t\t\t\t\t\tuseProperCase\r\n\t\t\t\t\t\t\t? this.toProperCase(word) + ' Hundred'\r\n\t\t\t\t\t\t\t: word + ' hundred');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twords.reverse();\r\n\r\n\t\treturn words.join(AppConstants.characters.space);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps the provided data to the provided template\r\n\t * using string interpolation syntax.\r\n\t *\r\n\t * @static\r\n\t * @param template\r\n\t * the template.\r\n\t * @param data\r\n\t * thet data to map to the template.\r\n\t * @returns {string}\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static interpolate(\r\n\t\ttemplate: string,\r\n\t\tdata: any): string\r\n\t{\r\n\t\treturn InterpolationHelper\r\n\t\t\t.getTemplateParser(template)(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed string as a context level function.\r\n\t * Sample usage:\r\n\t * StringHelper.transformToFunction(\r\n\t * \t'return function() { return { chartColors: [ \\\"primary\\\" ] }; }',\r\n\t * \tthis);\r\n\t *\r\n\t * @static\r\n\t * @param {string} functionAsString\r\n\t * The function as a string.\r\n\t * @param {any} context\r\n\t * The data context or closure this function will run against.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static transformToFunction(\r\n\t\tfunctionAsString: string,\r\n\t\tcontext: any): Function\r\n\t{\r\n\t\treturn Function(functionAsString)()\r\n\t\t\t.bind(context);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a boolean value from a parsed string as a context level data\r\n\t * promise.\r\n\t *\r\n\t * @static\r\n\t * @async\r\n\t * @param {string} booleanPromiseAsString\r\n\t * The function as a string.\r\n\t * @param {any} pageContext\r\n\t * The data context or closure this function will run against.\r\n\t * @returns {Promise}\r\n\t * The value found via executing this function against the page context.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static async transformAndExecuteBooleanPromise(\r\n\t\tbooleanPromiseAsString: string,\r\n\t\tpageContext: any): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(pageContext))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst booleanPromise: Promise =\r\n\t\t\tStringHelper.transformToDataPromise(\r\n\t\t\t\tbooleanPromiseAsString,\r\n\t\t\t\tpageContext);\r\n\r\n\t\treturn booleanPromise;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed string as a context level data promise.\r\n\t * Sample usage:\r\n\t * StringHelper.transformToDataPromise(\r\n\t * \t'return function() { return this.apiService.apiMethod(); }',\r\n\t * \tthis);\r\n\t *\r\n\t * @static\r\n\t * @param {string} dataPromise\r\n\t * The function as a string.\r\n\t * @param {any} context\r\n\t * The data context or closure this function will run against.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static transformToDataPromise(\r\n\t\tdataPromise: string,\r\n\t\tcontext: any): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tfunction(resolve: any)\r\n\t\t\t{\r\n\t\t\t\tresolve(\r\n\t\t\t\t\tFunction(dataPromise)()\r\n\t\t\t\t\t\t.bind(context)());\r\n\t\t\t}.bind(context));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed string as a field and context level data promise.\r\n\t * Sample usage:\r\n\t * StringHelper.transformToFieldDataPromise(\r\n\t * \t'return function() { return if (field.formControl.value == true)\r\n\t * \t\t{this.apiService.apiMethod();} }',\r\n\t * \tthis);\r\n\t *\r\n\t * @static\r\n\t * @param {string} dataPromise\r\n\t * The function as a string.\r\n\t * @param {any} context\r\n\t * The data context or closure this function will run against.\r\n\t * @param {any} field\r\n\t * The field context this function will run against.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static transformToFieldDataPromise(\r\n\t\tdataPromise: string,\r\n\t\tcontext: any,\r\n\t\tfield: any): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tfunction(resolve: any)\r\n\t\t\t{\r\n\t\t\t\tresolve(\r\n\t\t\t\t\tFunction(dataPromise)()\r\n\t\t\t\t\t\t.bind(context, field)());\r\n\t\t\t}.bind(context));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed string as a parameter and context level data promise.\r\n\t * Sample usage:\r\n\t * StringHelper.transformToValueDataPromise(\r\n\t * \t'return function(value) { return if (value == true)\r\n\t * \t\t{this.apiService.apiMethod();} }',\r\n\t * \tthis);\r\n\t *\r\n\t * @static\r\n\t * @param {string} dataPromise\r\n\t * The function as a string.\r\n\t * @param {any} context\r\n\t * The data context or closure this function will run against.\r\n\t * @param {any} field\r\n\t * The field context this function will run against.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static transformToValueDataPromise(\r\n\t\tdataPromise: string,\r\n\t\tcontext: any,\r\n\t\tparameter: any): Promise\r\n\t{\r\n\t\treturn this.transformToFieldDataPromise(\r\n\t\t\tdataPromise,\r\n\t\t\tcontext,\r\n\t\t\tparameter);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a parsed string as a context level layout promise.\r\n\t * Sample usage:\r\n\t * StringHelper.transformToLayoutPromise(\r\n\t * \t'return function(field, event) { return console.log(this.field); }',\r\n\t * \tthis.field,\r\n\t * \tevent,\r\n\t * \tthis.field.props.context);\r\n\t *\r\n\t * @static\r\n\t * @param {string} promiseString\r\n\t * The function as a string.\r\n\t * @param {any} field\r\n\t * The formly layout field.\r\n\t * @param {any} event\r\n\t * The event being triggered.\r\n\t * @param {any} context\r\n\t * The data context or closure this function will run against.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static transformToLayoutPromise(\r\n\t\tpromiseString: string,\r\n\t\tfield: any,\r\n\t\tevent: any,\r\n\t\tcontext: any): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tfunction(resolve: any)\r\n\t\t\t{\r\n\t\t\t\tresolve(\r\n\t\t\t\t\t(Function(promiseString)()\r\n\t\t\t\t\t\t.bind(context,\r\n\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\tevent))());\r\n\r\n\t\t\t}.bind(context));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a text area element that accepts new lines\r\n\t * and sets the value as the sent text. This value is\r\n\t * then copied as formatted text into the clipboard.\r\n\t *\r\n\t * @async\r\n\t * @param {string} text\r\n\t * The text value to copy to the clipboard.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static async copyToClipboard(\r\n\t\ttext: string): Promise\r\n\t{\r\n\t\tawait navigator.clipboard.writeText(text);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a comma separated string representation of the sent\r\n\t * array string values.\r\n\t *\r\n\t * @param {enumeration: string[]} enumeration\r\n\t * The array of values to translate into a sentence structured list\r\n\t * of values.\r\n\t * @param {enumeration: string[]} useAnd\r\n\t * If sent and true, this will use the and value for lists larger than two\r\n\t * in size otherwise the last item will be appended with or. This value\r\n\t * defaults to true.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getProperEnumeration(\r\n\t\tenumeration: string[],\r\n\t\tuseAnd: boolean = true): string\r\n\t{\r\n\t\tif (AnyHelper.isNull(enumeration))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tlet filter: string = AppConstants.empty;\r\n\t\tconst commaOrEmpty: string =\r\n\t\t\tenumeration.length === 2\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: AppConstants.characters.comma;\r\n\t\tenumeration.forEach((enumerable: string, index: number) =>\r\n\t\t{\r\n\t\t\tconst predicate: string =\r\n\t\t\t\tuseAnd === true\r\n\t\t\t\t\t? 'and'\r\n\t\t\t\t\t: 'or';\r\n\t\t\tconst existingFilterCriteria =\r\n\t\t\t\tindex === enumeration.length - 1\r\n\t\t\t\t\t? `${commaOrEmpty} `\r\n\t\t\t\t\t\t+ `${predicate} ${enumerable}`\r\n\t\t\t\t\t: `${commaOrEmpty} ${enumerable}`;\r\n\r\n\t\t\tfilter +=\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? `${enumerable}`\r\n\t\t\t\t\t: existingFilterCriteria;\r\n\t\t});\r\n\r\n\t\treturn filter;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a returns a string value used to interpolate properties\r\n\t * in a nested data object.\r\n\t *\r\n\t * @param {string} value\r\n\t * The string to gather the data key value for.\r\n\t * @returns {string}\r\n\t * A a key value for use in an object containing nested data.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static clearNestedDataIdentifier(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn value?.replace(\r\n\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\tAppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a number to a currency value.\r\n\t *\r\n\t * @param {number} value\r\n\t * The number to be formatted to currency.\r\n\t * @param {currency} value\r\n\t * The currency option. USD by default.\r\n\t * @param {locales} value\r\n\t * The locale currency format. en-US by default.\r\n\t * @returns {string}\r\n\t * A currency representation of the provided number.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static numberToCurrency(\r\n\t\tvalue: number,\r\n\t\tcurrency: string = 'USD',\r\n\t\tlocales: string = this.internationalFormat): string\r\n\t{\r\n\t\tconst currencyOptions: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tstyle: 'currency',\r\n\t\t\t\tcurrency: currency\r\n\t\t\t};\r\n\r\n\t\t// Add whole number rounding if applicable.\r\n\t\tif (value % 1 === 0)\r\n\t\t{\r\n\t\t\tcurrencyOptions.maximumSignificantDigits = 10;\r\n\t\t}\r\n\r\n\t\tconst currencyFormat =\r\n\t\t\tnew Intl.NumberFormat(\r\n\t\t\t\tlocales,\r\n\t\t\t\tcurrencyOptions);\r\n\r\n\t\treturn currencyFormat.format(\r\n\t\t\tparseFloat(value.toFixed(2)));\r\n\t}\r\n\r\n\t/**\r\n\t * Capitalizes every initial letter on a string value that\r\n\t * is separated by spaces.\r\n\t *\r\n\t * @param {string} value\r\n\t * The string value to be formatted.\r\n\t * @returns {string}\r\n\t * A string value capitalized on every initial letter.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static capitalizeAllWords(value: string): string\r\n\t{\r\n\t\tconst splitValues: string[] =\r\n\t\t\tvalue.split(AppConstants.characters.space);\r\n\t\tconst upperCaseArray: string[] = [];\r\n\t\tfor (const splitValue of splitValues)\r\n\t\t{\r\n\t\t\tupperCaseArray.push(StringHelper.toProperCase(splitValue));\r\n\t\t}\r\n\r\n\t\treturn upperCaseArray.join(AppConstants.characters.space);\r\n\t}\r\n\r\n\t/**\r\n\t * Shortens a string value to the sent length.\r\n\t *\r\n\t * @param {string} value\r\n\t * The string value to be shortened.\r\n\t * @param {number} length\r\n\t * The length to shorten the string value to.\r\n\t * @returns {string}\r\n\t * A shortened string value.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static shorten(\r\n\t\tvalue: string,\r\n\t\tlength: number): string\r\n\t{\r\n\t\tif ((value?.length ?? 0) <= length)\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn value.substring(\r\n\t\t\t0,\r\n\t\t\tlength)\r\n\t\t\t+ '...';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a string value representing all separated by period types\r\n\t * proper-cased and with spaces replacing each period.\r\n\t * @remarks Example: 'this.is.a.testItem' -> 'This Is A Test Item'\r\n\t * @remarks See also: StringHelper.format with the type of\r\n\t * entityTypeDisplay for the short display name of an entity type.\r\n\t *\r\n\t * @param {string} value\r\n\t * The string value to be formatted.\r\n\t * @param {string} replaceValue\r\n\t * The value to be replaced with an empty string. This is used to remove\r\n\t * prefixes such as 'Organization.'.\r\n\t * @returns {string}\r\n\t * A string value used to get the long display name of an entity.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static getLongEntityDisplayName(\r\n\t\tvalue: string,\r\n\t\treplaceValue: string = null): string\r\n\t{\r\n\t\tlet formattedValue: string =\r\n\t\t\t!AnyHelper.isNullOrEmpty(replaceValue)\r\n\t\t\t\t? value.replace(\r\n\t\t\t\t\treplaceValue,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t: value;\r\n\r\n\t\tformattedValue =\r\n\t\t\tStringHelper.toProperCase(\r\n\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\tformattedValue));\r\n\r\n\t\treturn formattedValue\r\n\t\t\t.replace(\r\n\t\t\t\tnew RegExp(\r\n\t\t\t\t\t`\\\\${AppConstants.characters.period}`,\r\n\t\t\t\t\tAppConstants.regularExpressionFlags.global),\r\n\t\t\t\tAppConstants.characters.space);\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the string into an specific format type.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The string value to be formatted.\r\n\t * @param {string} formatType\r\n\t * The format type to format the string.\r\n\t * Available format types in AppConstants.formatTypes.\r\n\t * @returns {string}\r\n\t * The formatted string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static format(\r\n\t\tvalue: string,\r\n\t\tformatType: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNull(value)\r\n\t\t\t|| formatType === AppConstants.formatTypes.none)\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tlet formattedValue: string;\r\n\t\tconst parsedInt: number =\r\n\t\t\tparseInt(\r\n\t\t\t\tvalue,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\t\tconst parsedFloat: number =\r\n\t\t\tparseFloat(\r\n\t\t\t\tvalue);\r\n\r\n\t\tswitch (formatType)\r\n\t\t{\r\n\t\t\tcase AppConstants.formatTypes.boolean:\r\n\t\t\tcase AppConstants.formatTypes.yesNoBoolean:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tStringHelper.formatBooleanValue(\r\n\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\tformatType === AppConstants.formatTypes.yesNoBoolean);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.currency:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tthis.numberToCurrency(\r\n\t\t\t\t\t\tparsedFloat);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.longDate:\r\n\t\t\tcase AppConstants.formatTypes.shortDate:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tDateHelper.formatDate(\r\n\t\t\t\t\t\tDateTime.fromISO(value),\r\n\t\t\t\t\t\tformatType === AppConstants.formatTypes.longDate\r\n\t\t\t\t\t\t\t? DateHelper.presetFormats.longDateFormat\r\n\t\t\t\t\t\t\t: DateHelper.presetFormats.shortDateFormat);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.percent:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tIntl.NumberFormat(\r\n\t\t\t\t\t\tthis.internationalFormat,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstyle: 'percent',\r\n\t\t\t\t\t\t\tminimumFractionDigits: 0\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.format(parsedFloat);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.number:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tIntl.NumberFormat(\r\n\t\t\t\t\t\tthis.internationalFormat)\r\n\t\t\t\t\t\t.format(parsedInt);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.beforeCapitalSpaces:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tvalue));\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.formatTypes.entityTypeDisplay:\r\n\t\t\t\tformattedValue =\r\n\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\tAppConstants.characters.period));\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tformattedValue = value;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formattedValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a string representing a boolean value into a formatted value\r\n\t * of True/False or Yes/No depending on the yesNoOutput paramater.\r\n\t *\r\n\t * @static\r\n\t * @param {string | boolean} value\r\n\t * The string value to be checked for true equivalence.\r\n\t * @param {boolean} yesNoOutput\r\n\t * If sent this will format true as Yes and false as No. This value\r\n\t * defaults to false.\r\n\t * @returns {string}\r\n\t * The formatted boolean based string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static formatBooleanValue(\r\n\t\tvalue: string | boolean,\r\n\t\tyesNoOutput: boolean = false): string\r\n\t{\r\n\t\tlet nullHandler: string;\r\n\t\tlet formattedValue: string;\r\n\t\tconst booleanValue: boolean =\r\n\t\t\tvalue === 'true' || value === true;\r\n\r\n\t\tif (yesNoOutput === false)\r\n\t\t{\r\n\t\t\tnullHandler =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(value)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: 'False';\r\n\r\n\t\t\tformattedValue =\r\n\t\t\t\tbooleanValue === true\r\n\t\t\t\t\t? 'True'\r\n\t\t\t\t\t: nullHandler;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tnullHandler =\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(value)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: 'No';\r\n\r\n\t\t\tformattedValue =\r\n\t\t\t\tbooleanValue === true\r\n\t\t\t\t\t? 'Yes'\r\n\t\t\t\t\t: nullHandler;\r\n\t\t}\r\n\r\n\t\treturn formattedValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a name value that will combine the first and last name if both\r\n\t * exist, return one or the other if only one exists, or returns\r\n\t * an empty string if neither value exists.\r\n\t *\r\n\t * @static\r\n\t * @param {string} firstName\r\n\t * The first name string.\r\n\t * @param {string} lastName\r\n\t * The last name string.\r\n\t * @param {string} legalName\r\n\t * The legal name string.\r\n\t * @returns {string}\r\n\t * A formatted name based string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static toNameString(\r\n\t\tfirstName: string,\r\n\t\tlastName: string,\r\n\t\tlegalName: string = null): string\r\n\t{\r\n\t\tconst firstNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(firstName);\r\n\t\tconst lastNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(lastName);\r\n\t\tconst legalNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(legalName);\r\n\r\n\t\tif (legalNameExists === false)\r\n\t\t{\r\n\t\t\tif (firstNameExists === false && lastNameExists === false)\r\n\t\t\t{\r\n\t\t\t\treturn AppConstants.empty;\r\n\t\t\t}\r\n\r\n\t\t\tif (firstNameExists === true && lastNameExists === true)\r\n\t\t\t{\r\n\t\t\t\treturn `${firstName} ${lastName}`;\r\n\t\t\t}\r\n\r\n\t\t\treturn firstNameExists\r\n\t\t\t\t? firstName\r\n\t\t\t\t: lastName;\r\n\t\t}\r\n\r\n\t\tif (firstNameExists === false && lastNameExists === false)\r\n\t\t{\r\n\t\t\treturn legalName;\r\n\t\t}\r\n\r\n\t\tif (firstNameExists === true && lastNameExists === true)\r\n\t\t{\r\n\t\t\treturn `${legalName}, ${firstName} ${lastName}`;\r\n\t\t}\r\n\r\n\t\treturn firstNameExists\r\n\t\t\t? `${legalName}, ${firstName}`\r\n\t\t\t: `${legalName}, ${lastName}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a name value by checking display name,\r\n\t * legal name, and first/last names in order. Returns\r\n\t * '[Deleted]' if none of the above exist.\r\n\t *\r\n\t * @static\r\n\t * @param {any} nameObject\r\n\t * The interest name object.\r\n\t * @param {any} namePrefix\r\n\t * The prefix added to the returned name value.\r\n\t * @returns {string}\r\n\t * A formatted name based string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static fromNameObject(\r\n\t\tnameObject: any,\r\n\t\tnamePrefix: string = null): string\r\n\t{\r\n\t\tconst displayNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(nameObject?.displayName);\r\n\t\tconst firstNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(nameObject?.firstName);\r\n\t\tconst lastNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(nameObject?.lastName);\r\n\t\tconst legalNameExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(nameObject?.legalName);\r\n\t\tconst interestTypeExists: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(namePrefix);\r\n\t\tconst interestTypePrefix =\r\n\t\t\tinterestTypeExists === false\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.format(\r\n\t\t\t\t\tnamePrefix,\r\n\t\t\t\t\tAppConstants.formatTypes.beforeCapitalSpaces)\r\n\t\t\t\t\t.replace('Co ', 'Co-');\r\n\r\n\t\tif (displayNameExists === true)\r\n\t\t{\r\n\t\t\treturn interestTypeExists\r\n\t\t\t\t? `${interestTypePrefix} - ${nameObject.displayName}`\r\n\t\t\t\t: `${nameObject.displayName}`;\r\n\t\t}\r\n\r\n\t\tif (legalNameExists === true)\r\n\t\t{\r\n\t\t\treturn interestTypeExists\r\n\t\t\t\t? `${interestTypePrefix} - ${nameObject.legalName}`\r\n\t\t\t\t: `${nameObject.legalName}`;\r\n\t\t}\r\n\r\n\t\tif (firstNameExists || lastNameExists)\r\n\t\t{\r\n\t\t\tconst combinedName: string =\r\n\t\t\t\t[nameObject?.firstName, nameObject?.lastName]\r\n\t\t\t\t\t.filter(name =>\r\n\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(name))\r\n\t\t\t\t\t.join(\r\n\t\t\t\t\t\tAppConstants.characters.space);\r\n\r\n\t\t\treturn interestTypeExists\r\n\t\t\t\t? `${interestTypePrefix} - ${combinedName}`\r\n\t\t\t\t: combinedName;\r\n\t\t}\r\n\r\n\t\treturn '[Deleted]';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an address value that will return the full set of existing data\r\n\t * without extra spaces.\r\n\t *\r\n\t * @static\r\n\t * @param {string} address\r\n\t * The address string.\r\n\t * @param {string} city\r\n\t * The city string.\r\n\t * @param {string} state\r\n\t * The state string.\r\n\t * @param {string} principalSubdivision\r\n\t * The principal subdivision string.\r\n\t * @param {string} postalCode\r\n\t * The postal code string.\r\n\t * @param {string} countryCode\r\n\t * The country string.\r\n\t * @returns {string}\r\n\t * A formatted address based string.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static toAddressString(\r\n\t\taddress: string,\r\n\t\tcity: string,\r\n\t\tstate: string,\r\n\t\tpostalCode: string,\r\n\t\tprincipalSubdivision: string = null,\r\n\t\tcountryCode: string = this.uSACountryCode): string\r\n\t{\r\n\t\tconst commaPossibleValue: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(state) ||\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(postalCode)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: ', ';\r\n\r\n\t\tconst addressValue: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(address)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: `${address} `;\r\n\t\tconst cityValue: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(city)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: `${city} `;\r\n\t\tconst stateValue: string =\r\n\t\t\t(AnyHelper.isNullOrWhitespace(state)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: state)\r\n\t\t\t\t+ commaPossibleValue;\r\n\t\tconst principalSubdivisionValue: string =\r\n\t\t\t(AnyHelper.isNullOrWhitespace(principalSubdivision)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: `${principalSubdivision} `);\r\n\t\tconst postalCodeValue: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(postalCode)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: postalCode;\r\n\t\tconst countryName: string =\r\n\t\t\tCountryCodeNames[countryCode] ?? null;\r\n\r\n\t\tconst internationalAddress: string =\r\n\t\t\tthis.offPostalCountryCodes\r\n\t\t\t\t.some((country: string) =>\r\n\t\t\t\t\tcountry === countryCode)\r\n\t\t\t\t? `${addressValue}${postalCodeValue} ${cityValue}`\r\n\t\t\t\t\t+ `${principalSubdivisionValue}${countryName}`\r\n\t\t\t\t: `${addressValue}${cityValue}${principalSubdivisionValue}`\r\n\t\t\t\t\t+ `${postalCodeValue} ${countryName}`;\r\n\r\n\t\tconst uSPSStandardAddress: string =\r\n\t\t\tAnyHelper.isNullOrEmpty(countryName)\r\n\t\t\t|| countryCode === this.uSACountryCode\r\n\t\t\t\t? `${addressValue}${cityValue}${stateValue}`\r\n\t\t\t\t\t+ `${postalCodeValue}`\r\n\t\t\t\t: internationalAddress;\r\n\r\n\t\treturn uSPSStandardAddress.toUpperCase();\r\n\t}\r\n\r\n\t/**\r\n\t * Remove tabs and NewLines from the provided string.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value.\r\n\t * @returns {string} A string without tabs and NewLines.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static removeTabsAndNewLines(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn value\r\n\t\t\t.replace(/(?:\\n|\\r|\\t)/g, AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a given string into a camel-case string.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The input string to convert.\r\n\t * @return {string}\r\n\t * Returns a new camel case string representing the input value.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static toCamelCase(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn camelCase(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether the sent string is a valid GUID.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The input string to check.\r\n\t * @return {boolean}\r\n\t * Returns whether or not the sent string is a GUID value.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static isGuid(\r\n\t\tvalue: string): boolean\r\n\t{\r\n\t\tconst partOne: string = '^[0-9a-fA-F]{8}-';\r\n\t\tconst partTwo: string = '[0-9a-fA-F]{4}-';\r\n\t\tconst partThree: string = '[1-5][0-9a-fA-F]{3}-';\r\n\t\tconst partFour: string = '[89abAB][0-9a-fA-F]{3}-';\r\n\t\tconst partFive: string = '[0-9a-fA-F]{12}$';\r\n\r\n\t\tconst guidRegularExpression: RegExp =\r\n\t\t\tnew RegExp(\r\n\t\t\t\t`${partOne}${partTwo}${partThree}${partFour}${partFive}`);\r\n\r\n\t\treturn guidRegularExpression.test(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Splits numbers and words in a string by adding a space between them.\r\n\t *\r\n\t * @static\r\n\t * @param {string} value\r\n\t * The input string to split.\r\n\t * @return {string}\r\n\t * Returns the modified string with spaces between numbers and words.\r\n\t * @memberof StringHelper\r\n\t */\r\n\tpublic static splitNumbersAndWords(value: string): string\r\n\t{\r\n\t\treturn value\r\n\t\t\t?.replace(\r\n\t\t\t\t/(\\d)([a-zA-Z])/g,\r\n\t\t\t\t'$1 $2')\r\n\t\t\t?.replace(/([a-zA-Z])(\\d)/g,\r\n\t\t\t\t'$1 $2')\r\n\t\t\t?? null;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\n\r\n/**\r\n * A class representing an application Activity that will interact\r\n * with the Activity List component.\r\n *\r\n * @export\r\n * @class Activity\r\n */\r\nexport class Activity\r\n{\r\n\t/**\r\n\t * Creates an instance of an Activity.\r\n\t *\r\n\t * @param {Promise} action\r\n\t * The activity action as a Promise, when resolved as expected the success\r\n\t * message will be returned as the status message and marked as successful,\r\n\t * else the failure message will be set and the status set as errored.\r\n\t * If null, a guaranteed promise resolve becomes the action and this will\r\n\t * act as others with only a success message.\r\n\t * @param {string} pendingMessage\r\n\t * The primary or title message for this activity. This is displayed while\r\n\t * the activity is executing. Ie. 'Saving Agency'.\r\n\t * @param {string} completedMessage\r\n\t * The primary or title message for this activity. This is displayed when\r\n\t * the activity has completed successfully. Ie 'Saved Agency'.\r\n\t * @param {string} successDetails\r\n\t * The status message to set for this Activity when the action completes\r\n\t * successfully. Ie. 'Saved ABC Agency.'.\r\n\t * @param {string} failureDetails\r\n\t * The status message to set for this Activity when the action fires an\r\n\t * http or application error. Ie. 'Unable to save ABC Agency.'.\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic constructor(\r\n\t\taction: Promise,\r\n\t\tpendingMessage: string,\r\n\t\tcompletedMessage: string,\r\n\t\tsuccessDetails: string,\r\n\t\tfailureDetails: string)\r\n\t{\r\n\t\tlet activityAction: Promise = action;\r\n\r\n\t\tif (activityAction == null)\r\n\t\t{\r\n\t\t\tactivityAction =\r\n\t\t\t\tPromise.resolve(null);\r\n\t\t}\r\n\r\n\t\tthis.message = pendingMessage;\r\n\r\n\t\tthis.command =\r\n\t\t\tnew Promise(\r\n\t\t\t\t(resolve, reject) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tactivityAction.then(\r\n\t\t\t\t\t\t(data) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.message = completedMessage;\r\n\t\t\t\t\t\t\tthis.data = data;\r\n\t\t\t\t\t\t\tresolve(successDetails);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(error) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.message =\r\n\t\t\t\t\t\t\t\tAppConstants.messages.genericErrorMessage;\r\n\t\t\t\t\t\t\tthis.data = error;\r\n\t\t\t\t\t\t\treject(failureDetails);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the command for this activity.\r\n\t * This will be of type Promise and when completed\r\n\t * successfully will display the resolve string or when failed\r\n\t * this will display the reject string of the promise.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic command: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the data for the action called by this activity.\r\n\t *\r\n\t * @type {TDataType}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic data: TDataType;\r\n\r\n\t/**\r\n\t * Gets or sets the time for the last activity event.\r\n\t * This is set as the initial start of the activity execution and is set\r\n\t * again when the activity is completed.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic lastActivityTime: number;\r\n\r\n\t/**\r\n\t * Gets or sets the icon for this activity.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic icon: string;\r\n\r\n\t/**\r\n\t * Gets or sets the unique identifier of this activity. This is\r\n\t * generated at run time to allow for distinct gets.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic id: string;\r\n\r\n\t/**\r\n\t * Gets or sets the primary message or type of activity.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic message: string;\r\n\r\n\t/**\r\n\t * Gets or sets the status of this activity as defined in\r\n\t * AppConstants.activityStatus.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic status: string;\r\n\r\n\t/**\r\n\t * Gets or sets the message for the activity when complete.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof Activity\r\n\t */\r\n\tpublic statusMessage: string;\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\n\r\n/**\r\n * A class containing helper methods\r\n * for the any type.\r\n *\r\n * @export\r\n * @class JsonSchemaLayout\r\n */\r\nexport class JsonSchemaLayout\r\n{\r\n\t/**\r\n\t * Gets or sets the Definition Description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionDescription: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Enum.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionEnum: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Format.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionFormat: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Required Value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionRequired: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Items.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionItems: any;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Items Enum.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionItemsEnum: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Default Layout.\r\n\t *\r\n\t * @type {Object[]}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic defaultLayout: object[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Properties.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionProperties: object;\r\n\r\n\t/**\r\n\t * Gets or sets the Definition Type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic definitionType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Disabled Layout.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic disabledLayout: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the if it is a repeater layout definition.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic isRepeater: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the JSON Key Name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic jsonKeyName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the JSON Recursive Key Name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic jsonRecursiveKeyName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Field Array.\r\n\t *\r\n\t * @type {{fieldArray:{fieldGroup:any}}}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutfieldArray:\r\n\t{\r\n\t\tfieldArray:\r\n\t\t{\r\n\t\t\tfieldGroup: any;\r\n\t\t};\r\n\t};\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Key.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutKey: object;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Template Options.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutProperties: any;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Type.\r\n\t *\r\n\t * @type {{type: string}}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutType:\r\n\t{\r\n\t\ttype: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Wrapper.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutWrapper: object;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Template Options.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic mapperKey: object;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Template Options.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic mapperProperties: object;\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Template Options.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic mapperType: object;\r\n\r\n\t/**\r\n\t * Gets or sets the object-mapper class.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic objectMapper: any = require('object-mapper');\r\n\r\n\t/**\r\n\t * Gets or sets the Repeater Layout Type.\r\n\t *\r\n\t * @type {{type: string}}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic repeaterLayoutType:\r\n\t{\r\n\t\ttype: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets or sets the required fields by key for each\r\n\t * property in the current layout object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic requiredFields: any = {};\r\n\r\n\t/**\r\n\t * Gets or sets the value parsed and dereferenced from the\r\n\t * initial json schema definition.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic dereferencedSchema: any;\r\n\r\n\t/**\r\n\t * Gets the Layout Object Identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tprivate readonly objectIdentifier: string = 'object';\r\n\r\n\t/**\r\n\t * Gets the Layout Array Identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tprivate readonly arrayIdentifier: string = 'array';\r\n\r\n\t/**\r\n\t * Gets the Custom Select placeholder.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tprivate readonly customSelectPlaceHolder: string =\r\n\t\tAppConstants.placeholders.selectAnOption;\r\n\r\n\t/**\r\n\t * Builds the Default Layout.\r\n\t *\r\n\t * @param {string} jsonKeyName\r\n\t * The entity definition.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic defaultLayoutBuilder(jsonKeyName: string): void\r\n\t{\r\n\t\tconst layoutType =\r\n\t\t\tStringHelper.betweenNumberSpaces(\r\n\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\tStringHelper.toProperCase(jsonKeyName)));\r\n\r\n\t\tconst layoutBuilder = Object.assign(\r\n\t\t\tthis.layoutKey,\r\n\t\t\tthis.layoutType,\r\n\t\t\tthis.layoutWrapper,\r\n\t\t\tthis.layoutProperties,\r\n\t\t\tthis.layoutfieldArray);\r\n\r\n\t\tlayoutBuilder.props.label = layoutType;\r\n\t\tlayoutBuilder.props.disabled = this.disabledLayout;\r\n\r\n\t\tthis.defaultLayout.push(layoutBuilder);\r\n\t}\r\n\r\n\t/**\r\n\t * Generates the Default Layout upon any given JSON definition.\r\n\t *\r\n\t * @param {Object} entityDefinition\r\n\t * The JsonData entity definition.\r\n\t * @param {boolean} isDisabled\r\n\t * Defines if the Layout is disabled or not. The default value is true.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic generateDefaultLayout(\r\n\t\tentityDefinition: object,\r\n\t\tisDisabled: boolean = true): string\r\n\t{\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-var-requires\r\n\t\tconst jref = require('jref');\r\n\t\tthis.dereferencedSchema =\r\n\t\t\tjref.dereference(entityDefinition);\r\n\t\tconst definitions = this.dereferencedSchema\r\n\t\t\t.properties.data.properties;\r\n\r\n\t\tthis.requiredFields =\r\n\t\t\tthis.getRequiredFields(\r\n\t\t\t\tthis.dereferencedSchema\r\n\t\t\t\t\t.properties.data);\r\n\r\n\t\tthis.disabledLayout = isDisabled;\r\n\r\n\t\tfor (const definition of Object.keys(definitions))\r\n\t\t{\r\n\t\t\tthis.layoutfieldArray = undefined;\r\n\t\t\tthis.jsonKeyName = definition;\r\n\t\t\tthis.setDefinitionValues(definitions[definition]);\r\n\r\n\t\t\tif (this.definitionType === this.objectIdentifier)\r\n\t\t\t{\r\n\t\t\t\tthis.requiredFields =\r\n\t\t\t\t\tthis.getRequiredFields(\r\n\t\t\t\t\t\tthis.dereferencedSchema\r\n\t\t\t\t\t\t\t.properties.data.properties[this.jsonKeyName]);\r\n\t\t\t\tthis.recursiveDefinitions(\r\n\t\t\t\t\tthis.jsonKeyName,\r\n\t\t\t\t\tthis.definitionProperties);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.layoutTypeDefinition(definitions[definition]);\r\n\r\n\t\t\t\tif (this.definitionType === this.arrayIdentifier)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.jsonRecursiveKeyName = null;\r\n\t\t\t\t}\r\n\t\t\t\tthis.mappingLogic();\r\n\r\n\t\t\t\tthis.layoutObjectMapper(definitions[definition]);\r\n\t\t\t\tthis.defaultLayoutBuilder(this.jsonKeyName);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(this.defaultLayout);\r\n\t}\r\n\r\n\t/**\r\n\t * Generates the mapping object for the Key Layout.\r\n\t *\r\n\t * @param {string} jsonKeyName\r\n\t * The JSON Key Name of an object.\r\n\t * @param {string} jsonRecursiveKeyName\r\n\t * The JSON Key Name of a recursive object.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic keyMap(\r\n\t\tjsonKeyName: string,\r\n\t\tjsonRecursiveKeyName: string): object\r\n\t{\r\n\t\tlet keyLayout: object;\r\n\t\tif (this.isRepeater)\r\n\t\t{\r\n\t\t\tkeyLayout =\r\n\t\t\t\t{\r\n\t\t\t\t\t'description': [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'key',\r\n\t\t\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn jsonRecursiveKeyName;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t};\r\n\r\n\t\t\treturn keyLayout;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(jsonRecursiveKeyName))\r\n\t\t{\r\n\t\t\tkeyLayout =\r\n\t\t\t{\r\n\t\t\t\t'description': [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: 'key',\r\n\t\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn `data.${jsonKeyName}`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}]\r\n\t\t\t};\r\n\r\n\t\t\treturn keyLayout;\r\n\t\t}\r\n\r\n\t\tkeyLayout =\r\n\t\t{\r\n\t\t\t'description': [\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'key',\r\n\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn `data.${jsonKeyName}.${jsonRecursiveKeyName}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}]\r\n\t\t};\r\n\r\n\t\treturn keyLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the Layout schema elements by mapping with object-mapper.\r\n\t *\r\n\t * @param {any} definition\r\n\t * The entity definition.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutObjectMapper(definition: any): void\r\n\t{\r\n\t\tdefinition.type = this.definitionType;\r\n\t\tthis.layoutKey = this.objectMapper.merge(\r\n\t\t\tdefinition,\r\n\t\t\tthis.mapperKey);\r\n\r\n\t\tthis.layoutWrapper =\r\n\t\t\t(this.layoutType.type !==\r\n\t\t\t\tFormlyConstants.customControls.customRepeater\r\n\t\t\t\t&& this.definitionType !== this.objectIdentifier\r\n\t\t\t\t&& this.layoutType.type !==\r\n\t\t\t\t\tFormlyConstants.customControls.customResourceIdentifier)\r\n\t\t\t\t? {\r\n\t\t\t\t\t'wrappers': [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper]\r\n\t\t\t\t}\r\n\t\t\t\t: undefined;\r\n\r\n\t\tthis.layoutProperties = this.objectMapper\r\n\t\t\t.merge(\r\n\t\t\t\tdefinition,\r\n\t\t\t\tthis.mapperProperties);\r\n\r\n\t\tif (this.layoutType.type ===\r\n\t\t\t\tFormlyConstants.customControls.customSelect)\r\n\t\t{\r\n\t\t\tthis.layoutProperties =\r\n\t\t\t\tthis.customSelectOptionsSetup(this.layoutProperties);\r\n\t\t}\r\n\r\n\t\tif (this.layoutType.type !==\r\n\t\t\tFormlyConstants.customControls.customRepeater)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setRepeater();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets repeater data for each layout repeater type.\r\n\t *\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic setRepeater(): void\r\n\t{\r\n\t\tthis.isRepeater = true;\r\n\t\tconst repeaterProperties =\r\n\t\t\tthis.definitionItems?.properties ||\r\n\t\t\tthis.definitionItems?.anyOf[0].properties;\r\n\r\n\t\tthis.layoutfieldArray =\r\n\t\t{\r\n\t\t\t'fieldArray':\r\n\t\t\t\t{\r\n\t\t\t\t\t'fieldGroup': []\r\n\t\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(repeaterProperties))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const repeaterProperty of Object.keys(repeaterProperties))\r\n\t\t{\r\n\t\t\tthis.jsonRecursiveKeyName = repeaterProperty;\r\n\t\t\tthis.setDefinitionValues(\r\n\t\t\t\trepeaterProperties[repeaterProperty]);\r\n\r\n\t\t\tlet nestedPropertyArray: any = null;\r\n\t\t\tif (this.definitionType === this.arrayIdentifier)\r\n\t\t\t{\r\n\t\t\t\tconst values =\r\n\t\t\t\t\trepeaterProperties[repeaterProperty].items.properties ||\r\n\t\t\t\t\trepeaterProperties[repeaterProperty]\r\n\t\t\t\t\t\t.items.anyOf[0].properties;\r\n\r\n\t\t\t\tnestedPropertyArray =\r\n\t\t\t\t\tthis.getNestedRepeater(\r\n\t\t\t\t\t\trepeaterProperty,\r\n\t\t\t\t\t\tvalues);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setDefinitionValues(\r\n\t\t\t\trepeaterProperties[repeaterProperty]);\r\n\t\t\tthis.layoutTypeDefinition(repeaterProperties\r\n\t\t\t\t[repeaterProperty]);\r\n\t\t\tthis.mappingLogic();\r\n\r\n\t\t\tconst repeaterLayoutKey = this.objectMapper.merge(\r\n\t\t\t\trepeaterProperties[repeaterProperty],\r\n\t\t\t\tthis.mapperKey);\r\n\t\t\tconst repeaterLayoutWrapper =\r\n\t\t\t\t(this.definitionType !== this.objectIdentifier\r\n\t\t\t\t\t&& this.definitionType !== this.arrayIdentifier\r\n\t\t\t\t\t&& this.repeaterLayoutType.type !==\r\n\t\t\t\t\t\tFormlyConstants.customControls.customResourceIdentifier)\r\n\t\t\t\t\t? {\r\n\t\t\t\t\t\t'wrappers': [\r\n\t\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper]\r\n\t\t\t\t\t}\r\n\t\t\t\t\t: undefined;\r\n\r\n\t\t\tlet repeaterLayoutProperties =\r\n\t\t\t\tthis.objectMapper.merge(\r\n\t\t\t\t\trepeaterProperties[repeaterProperty],\r\n\t\t\t\t\tthis.mapperProperties);\r\n\r\n\t\t\tconst layoutType = StringHelper.toProperCase(\r\n\t\t\t\tthis.jsonRecursiveKeyName);\r\n\r\n\t\t\trepeaterLayoutProperties.props.label =\r\n\t\t\t\tlayoutType;\r\n\t\t\trepeaterLayoutProperties.props.disabled =\r\n\t\t\t\tthis.disabledLayout;\r\n\r\n\t\t\tif (this.repeaterLayoutType.type ===\r\n\t\t\t\t\tFormlyConstants.customControls.customSelect)\r\n\t\t\t{\r\n\t\t\t\trepeaterLayoutProperties =\r\n\t\t\t\t\tthis.customSelectOptionsSetup(\r\n\t\t\t\t\t\trepeaterLayoutProperties);\r\n\t\t\t}\r\n\r\n\t\t\tconst repeaterBuilder =\r\n\t\t\t\tObject.assign(\r\n\t\t\t\t\trepeaterLayoutKey,\r\n\t\t\t\t\tthis.repeaterLayoutType,\r\n\t\t\t\t\trepeaterLayoutWrapper,\r\n\t\t\t\t\trepeaterLayoutProperties,\r\n\t\t\t\t\tnestedPropertyArray);\r\n\r\n\t\t\tthis.layoutfieldArray.fieldArray.fieldGroup\r\n\t\t\t\t.push(repeaterBuilder);\r\n\t\t}\r\n\r\n\t\tthis.isRepeater = false;\r\n\t\tthis.repeaterLayoutType = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively loops through each repeater in a main level\r\n\t * repeater item and adds definitions and properties and\r\n\t * nested repeater displays.\r\n\t *\r\n\t * @returns {any}\r\n\t * The field array for the nested repeater holding definitions\r\n\t * and nested array based repeaters.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic getNestedRepeater(\r\n\t\tprimaryRepeaterName: string,\r\n\t\trepeaterItemProperties: any[]): any\r\n\t{\r\n\t\tconst repeaterPropertyArray: any =\r\n\t\t\t{\r\n\t\t\t\t'fieldArray':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'fieldGroup': []\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t\tlet nestedPropertyArray: any = null;\r\n\r\n\t\tfor (const nestedRepeaterPropertyName of Object.keys(\r\n\t\t\trepeaterItemProperties))\r\n\t\t{\r\n\t\t\tthis.jsonRecursiveKeyName = nestedRepeaterPropertyName;\r\n\t\t\tconst arrayProperty: any =\r\n\t\t\t\trepeaterItemProperties[nestedRepeaterPropertyName];\r\n\r\n\t\t\tthis.setDefinitionValues(arrayProperty);\r\n\r\n\t\t\tif (this.definitionType === this.arrayIdentifier)\r\n\t\t\t{\r\n\t\t\t\tnestedPropertyArray =\r\n\t\t\t\t\tthis.getNestedRepeater(\r\n\t\t\t\t\t\tnestedRepeaterPropertyName,\r\n\t\t\t\t\t\trepeaterItemProperties[nestedRepeaterPropertyName]\r\n\t\t\t\t\t\t\t.items.properties);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setDefinitionValues(arrayProperty);\r\n\t\t\tthis.layoutTypeDefinition(arrayProperty);\r\n\t\t\tthis.mappingLogic();\r\n\r\n\t\t\tconst repeaterLayoutKey =\r\n\t\t\t\tthis.objectMapper.merge(\r\n\t\t\t\t\tarrayProperty,\r\n\t\t\t\t\tthis.mapperKey);\r\n\r\n\t\t\tconst repeaterLayoutWrapper =\r\n\t\t\t\t(this.definitionType !== this.objectIdentifier\r\n\t\t\t\t\t&& this.definitionType !== this.arrayIdentifier\r\n\t\t\t\t\t&& this.repeaterLayoutType.type !==\r\n\t\t\t\t\t\tFormlyConstants.customControls.customResourceIdentifier)\r\n\t\t\t\t\t? {\r\n\t\t\t\t\t\t'wrappers': [\r\n\t\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper]\r\n\t\t\t\t\t}\r\n\t\t\t\t\t: undefined;\r\n\r\n\t\t\tlet repeaterLayoutProperties =\r\n\t\t\t\tthis.objectMapper.merge(\r\n\t\t\t\t\tarrayProperty,\r\n\t\t\t\t\tthis.mapperProperties);\r\n\r\n\t\t\tconst layoutType = StringHelper.toProperCase(\r\n\t\t\t\tnestedRepeaterPropertyName);\r\n\t\t\trepeaterLayoutProperties.props.label =\r\n\t\t\t\tlayoutType;\r\n\t\t\trepeaterLayoutProperties.props.disabled =\r\n\t\t\t\tthis.disabledLayout;\r\n\r\n\t\t\tif (this.repeaterLayoutType.type ===\r\n\t\t\t\t\tFormlyConstants.customControls.customSelect)\r\n\t\t\t{\r\n\t\t\t\trepeaterLayoutProperties =\r\n\t\t\t\t\tthis.customSelectOptionsSetup(\r\n\t\t\t\t\t\trepeaterLayoutProperties);\r\n\t\t\t}\r\n\r\n\t\t\tconst repeaterBuilder =\r\n\t\t\t\tObject.assign(\r\n\t\t\t\t\trepeaterLayoutKey,\r\n\t\t\t\t\tthis.repeaterLayoutType,\r\n\t\t\t\t\trepeaterLayoutWrapper,\r\n\t\t\t\t\trepeaterLayoutProperties,\r\n\t\t\t\t\tnestedPropertyArray);\r\n\r\n\t\t\trepeaterPropertyArray.fieldArray.fieldGroup.push(\r\n\t\t\t\trepeaterBuilder);\r\n\r\n\t\t\tthis.jsonRecursiveKeyName = primaryRepeaterName;\r\n\t\t}\r\n\r\n\t\treturn repeaterPropertyArray;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the custom select template options.\r\n\t *\r\n\t * @param {any} selectProperties\r\n\t * The custom select template options to be formated.\r\n\t * @returns {object}\r\n\t * The templace options for a custom select.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic customSelectOptionsSetup(selectProperties: any): object\r\n\t{\r\n\t\tselectProperties.props.placeholder =\r\n\t\t\tthis.customSelectPlaceHolder;\r\n\r\n\t\tselectProperties.props.showClear =\r\n\t\t\t(AnyHelper\r\n\t\t\t\t.isNullOrEmpty(\r\n\t\t\t\t\tselectProperties.props.options[0].value));\r\n\r\n\t\tselectProperties.props.options =\r\n\t\t\tselectProperties.props.options\r\n\t\t\t\t.filter((option: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNullOrEmpty(option.value))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn option;\r\n\t\t\t\t});\r\n\r\n\t\treturn selectProperties;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the Layout Types.\r\n\t *\r\n\t * @param {any} definition\r\n\t * The entity definition.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic layoutTypeDefinition(definition: any): void\r\n\t{\r\n\t\tdefinition.type = this.definitionType;\r\n\r\n\t\tthis.mapperType = this.typeMap(\r\n\t\t\tthis.definitionEnum,\r\n\t\t\tthis.definitionDescription,\r\n\t\t\tthis.definitionFormat,\r\n\t\t\tthis.definitionItemsEnum,\r\n\t\t\tthis.definitionItems,\r\n\t\t\tthis.disabledLayout);\r\n\r\n\t\tif (this.isRepeater === true)\r\n\t\t{\r\n\t\t\tthis.repeaterLayoutType =\r\n\t\t\t\tthis.objectMapper(\r\n\t\t\t\t\tdefinition,\r\n\t\t\t\t\tthis.mapperType);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.layoutType =\r\n\t\t\t\tthis.objectMapper(\r\n\t\t\t\t\tdefinition,\r\n\t\t\t\t\tthis.mapperType);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the Mapping Logic for Wrappers, Keys and Template Options.\r\n\t *\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic mappingLogic(): void\r\n\t{\r\n\t\tthis.mapperKey = this.keyMap(\r\n\t\t\tthis.jsonKeyName,\r\n\t\t\tthis.jsonRecursiveKeyName);\r\n\r\n\t\tthis.mapperProperties = this.propsMap();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the recursive definitions.\r\n\t *\r\n\t * @param {string} jsonKeyName\r\n\t * The entity definition.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic recursiveDefinitions(\r\n\t\tjsonKeyName: string,\r\n\t\trecursiveProperties: object): void\r\n\t{\r\n\t\tconst titleName =\r\n\t\t\tStringHelper.betweenNumberSpaces(\r\n\t\t\t\t(StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t(StringHelper.toProperCase(jsonKeyName)))));\r\n\r\n\t\tconst layoutSectionTitle =\r\n\t\t\t{\r\n\t\t\t\t'type': 'custom-section-title',\r\n\t\t\t\t'props':\r\n\t\t\t\t{\r\n\t\t\t\t\t'label': titleName\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\tthis.defaultLayout.push(layoutSectionTitle);\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(recursiveProperties))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const recursiveProperty of\r\n\t\t\tObject.keys(recursiveProperties))\r\n\t\t{\r\n\t\t\tthis.jsonRecursiveKeyName = recursiveProperty;\r\n\t\t\tthis.setDefinitionValues(\r\n\t\t\t\trecursiveProperties[recursiveProperty]);\r\n\t\t\tthis.layoutTypeDefinition(\r\n\t\t\t\trecursiveProperties[recursiveProperty]);\r\n\t\t\tthis.mappingLogic();\r\n\t\t\tthis.layoutObjectMapper(\r\n\t\t\t\trecursiveProperties[recursiveProperty]);\r\n\t\t\tthis.defaultLayoutBuilder(this.jsonRecursiveKeyName);\r\n\t\t\tthis.jsonRecursiveKeyName = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the definition values from entity definition JSON.\r\n\t *\r\n\t * @param {any} definition\r\n\t * The entity definition.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic setDefinitionValues(definition: any): void\r\n\t{\r\n\t\tthis.definitionEnum = definition.enum;\r\n\t\tthis.definitionItems = definition.items;\r\n\t\tthis.definitionDescription = definition.description;\r\n\t\tthis.definitionFormat = definition.format;\r\n\t\tthis.definitionProperties = definition.properties;\r\n\t\tthis.definitionItemsEnum = null;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.definitionItems))\r\n\t\t{\r\n\t\t\tthis.definitionItemsEnum = definition.items.enum;\r\n\t\t\tthis.requiredFields =\r\n\t\t\t\tAnyHelper.isNullOrEmpty(this.definitionItems?.required)\r\n\t\t\t\t\t? []\r\n\t\t\t\t\t: this.definitionItems.required;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(definition.type))\r\n\t\t{\r\n\t\t\tconst tempType = (typeof definition.type !== this.objectIdentifier)\r\n\t\t\t\t? definition.type\r\n\t\t\t\t: definition.type[0];\r\n\r\n\t\t\tthis.definitionType = tempType.toLowerCase();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.definitionType = definition.type;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the mapping object for the Template Options Layout.\r\n\t *\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic propsMap(): object\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.repeaterLayoutType))\r\n\t\t{\r\n\t\t\treturn this.propsMapBuilder(this.repeaterLayoutType.type);\r\n\t\t}\r\n\t\telse if (!AnyHelper.isNullOrEmpty(this.layoutType))\r\n\t\t{\r\n\t\t\treturn this.propsMapBuilder(this.layoutType.type);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates the mapping object for the Template Options Layout.\r\n\t *\r\n\t * @param {string} layoutType\r\n\t * The layout type.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic propsMapBuilder(\r\n\t\tlayoutType: string): object\r\n\t{\r\n\t\tconst required =\r\n\t\t\tthis.requiredFields.filter(\r\n\t\t\t\t(filterKey: string) =>\r\n\t\t\t\t\tfilterKey === this.jsonRecursiveKeyName\r\n\t\t\t\t\t\t|| filterKey === this.jsonKeyName).length > 0;\r\n\r\n\t\tlet layoutProperties = {};\r\n\t\tconst commonProperties =\r\n\t\t\t{\r\n\t\t\t\t'type': [\r\n\t\t\t\t\t'props.label',\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: 'props.disabled',\r\n\t\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t'description': [\r\n\t\t\t\t\t'props.description'\r\n\t\t\t\t],\r\n\t\t\t\t'default': [\r\n\t\t\t\t\t'props.default'\r\n\t\t\t\t],\r\n\t\t\t\t'required': [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey : 'props.required',\r\n\t\t\t\t\t\ttransform: function (\r\n\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (definition.type === this.arrayIdentifier\r\n\t\t\t\t\t\t\t\t&& definition.minItems > 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn required;\r\n\t\t\t\t\t\t}.bind(this)\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\t\tlet specificProperties: any;\r\n\r\n\t\tswitch (layoutType)\r\n\t\t{\r\n\t\t\tcase FormlyConstants.customControls.customSelect:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'enum': [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey : 'props.options[]',\r\n\t\t\t\t\t\t\t\ttransform: (value: any) =>\r\n\t\t\t\t\t\t\t\t\tthis.getOption(value)\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.customMultiSelect:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'items.enum': [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey : 'props.options[]',\r\n\t\t\t\t\t\t\t\ttransform: (value: any) =>\r\n\t\t\t\t\t\t\t\t\tthis.getOption(value)\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.customCalendar:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'default':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey : 'props.showTime',\r\n\t\t\t\t\t\t\ttransform: function () {\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.customImageInput:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'default': [\r\n\t\t\t\t\t\t\t'props.altText'\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.customRepeater:\r\n\t\t\t{\r\n\t\t\t\tconst values =\r\n\t\t\t\t\tthis.definitionItems?.properties\r\n\t\t\t\t\t|| this.definitionItems?.anyOf[0].properties;\r\n\r\n\t\t\t\tif (AnyHelper.isNullOrEmpty(values))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst titleFormat = [];\r\n\t\t\t\tfor (const value of Object.keys(values))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (titleFormat.length < 1\r\n\t\t\t\t\t\t&& value.indexOf('resourceIdentifier') === -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitleFormat.push({value});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'default': [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.singular',\r\n\t\t\t\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn 'Item';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.titleFormat',\r\n\t\t\t\t\t\t\t\ttransform: function()\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn '{' + titleFormat[0].value + '}';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.minItems',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn definition.minItems;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.maxItems',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn definition.maxItems;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.input:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'default': [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.pattern',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tdefinition.pattern)\r\n\t\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t\t: definition.pattern;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase FormlyConstants.customControls.customInputNumber:\r\n\t\t\t{\r\n\t\t\t\tspecificProperties =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'default': [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.max',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tdefinition.maximum)\r\n\t\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t\t: definition.maximum;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.min',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tdefinition.minimum)\r\n\t\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t\t: definition.minimum;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.multipleOf',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tdefinition.multipleOf)\r\n\t\t\t\t\t\t\t\t\t\t? 1\r\n\t\t\t\t\t\t\t\t\t\t: definition.multipleOf;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'props.pattern',\r\n\t\t\t\t\t\t\t\ttransform: function(\r\n\t\t\t\t\t\t\t\t\t_value: any,\r\n\t\t\t\t\t\t\t\t\tdefinition: any)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tdefinition.pattern)\r\n\t\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t\t: definition.pattern;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlayoutProperties = Object.assign(\r\n\t\t\tcommonProperties,\r\n\t\t\tspecificProperties);\r\n\r\n\t\treturn layoutProperties;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates the mapping object for the Type Layout.\r\n\t *\r\n\t * @param {string} definitionEnum\r\n\t * The JSON Key Name of an object.\r\n\t * @param {string} definitionDescription\r\n\t * The JSON Key Name of a recursive object.\r\n\t * @param {string} _definitionFormat\r\n\t * The JSON Key Name of a recursive object.\r\n\t * @param {string} definitionItemsEnum\r\n\t * The JSON Key Name of a recursive object.\r\n\t * @param {string} definitionItems\r\n\t * The JSON Key Name of a recursive object.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tpublic typeMap(\r\n\t\tdefinitionEnum: string,\r\n\t\tdefinitionDescription: string,\r\n\t\tdefinitionFormat: string,\r\n\t\tdefinitionItemsEnum: string,\r\n\t\tdefinitionItems: string,\r\n\t\tdisabledLayout: boolean): object\r\n\t{\r\n\t\treturn {\r\n\t\t\t'type': [\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'type',\r\n\t\t\t\t\ttransform: function(value: any)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet tempType: string;\r\n\t\t\t\t\t\tswitch (value)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcase 'string':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(definitionEnum))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttempType = 'custom-select';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (definitionDescription ===\r\n\t\t\t\t\t\t\t\t\t'Resource Identifier')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttempType = 'custom-resource-identifier';\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst description = StringHelper\r\n\t\t\t\t\t\t\t\t\t\t.normalizeCamelcase(\r\n\t\t\t\t\t\t\t\t\t\t\tdefinitionDescription);\r\n\t\t\t\t\t\t\t\t\tconst standardDefinitionFormat: string =\r\n\t\t\t\t\t\t\t\t\t\t(definitionFormat === 'date'\r\n\t\t\t\t\t\t\t\t\t\t|| definitionFormat ===\r\n\t\t\t\t\t\t\t\t\t\t\t'date-time')\r\n\t\t\t\t\t\t\t\t\t\t\t? 'custom-calendar'\r\n\t\t\t\t\t\t\t\t\t\t\t: 'input';\r\n\r\n\t\t\t\t\t\t\t\t\ttempType =\r\n\t\t\t\t\t\t\t\t\t\t(description === 'Logo'\r\n\t\t\t\t\t\t\t\t\t\t\t|| description === 'Image')\r\n\t\t\t\t\t\t\t\t\t\t\t? 'custom-image-input'\r\n\t\t\t\t\t\t\t\t\t\t\t: standardDefinitionFormat;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase 'array':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tdefinitionItemsEnum))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttempType = (!disabledLayout)\r\n\t\t\t\t\t\t\t\t\t\t? 'custom-multi-select'\r\n\t\t\t\t\t\t\t\t\t\t: 'input';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttempType =\r\n\t\t\t\t\t\t\t\t\t(!AnyHelper.isNullOrEmpty(definitionItems))\r\n\t\t\t\t\t\t\t\t\t\t? 'custom-repeater'\r\n\t\t\t\t\t\t\t\t\t\t: 'custom-select';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase 'object':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttempType = 'custom-section-title';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase 'boolean':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttempType = 'custom-checkbox';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase 'number':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttempType = 'custom-input-number';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttempType = 'input';\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn tempType;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Parses the object and returns the string array of required values\r\n\t * for the current layout object.\r\n\t *\r\n\t * @param {any} object\r\n\t * The current layout object being parsed.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tprivate getRequiredFields(\r\n\t\tobject: any): string[]\r\n\t{\r\n\t\treturn AnyHelper.isNull(object?.required)\r\n\t\t\t? []\r\n\t\t\t: object.required;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses the value and returns a dropdown option representing the sent\r\n\t * value.\r\n\t *\r\n\t * @param {any} value\r\n\t * The current layout object being mapped.\r\n\t * @returns {IDropdownOption}\r\n\t * A mapped and cleaned dropdown option ready for display.\r\n\t * @memberof JsonSchemaLayout\r\n\t */\r\n\tprivate getOption(value: any): IDropdownOption\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tvalue: value,\r\n\t\t\t\tlabel:\r\n\t\t\t\t\tStringHelper.betweenNumberSpaces(\r\n\t\t\t\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tStringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\tvalue)))\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the available methods (business logic) for a\r\n * display component instance.\r\n *\r\n * @export\r\n * @class DisplayComponentDefinition\r\n * @implements {DisplayComponentDefinition}\r\n */\r\nexport class DisplayComponentDefinition\r\nimplements IDisplayComponentDefinition\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component instance.\r\n\t *\r\n\t * @param {DisplayComponentDefinition} iDisplayComponentDefinition\r\n\t * The display component definition interface to create this\r\n\t * new object from.\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iDisplayComponentDefinition: IDisplayComponentDefinition)\r\n\t{\r\n\t\tObject.assign(this, iDisplayComponentDefinition);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the component definition.\r\n\t * This is an ivy creatable component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic componentDefinition: string;\r\n\r\n\t/**\r\n\t * Gets or sets the component name.\r\n\t * This is a display or generic component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic componentName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the json data.\r\n\t * This is the required configuration schema.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic jsonData: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display component type id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic typeId: number;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership public or read allowed value.\r\n\t*\r\n\t* @type {boolean}\r\n\t* @memberof DisplayComponentDefinition\r\n\t*/\r\n\tpublic public: boolean;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership security group or alter allowed value.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof DisplayComponentDefinition\r\n\t*/\r\n\tpublic ownershipSecurityGroupId: number;\r\n\r\n\t/**\r\n\t* Gets or sets the created by id. This user will have read and alter\r\n\t* permissions.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof DisplayComponentDefinition\r\n\t*/\r\n\tpublic createdById: number;\r\n\r\n\t/**\r\n\t * Returns the definition json data object.\r\n\t *\r\n\t * @type {any[] | any}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic get jsonDefinition(): any[] | any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.definitionKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the interpolation json data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic get jsonInterpolationSchema(): any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.interpolationSchemaKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the display component\r\n\t * instance json data.\r\n\t *\r\n\t * @type {any}\r\n\t * The json parsed json data object.\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic get parsedJson(): any\r\n\t{\r\n\t\treturn JSON.parse(this.jsonData);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key used to find the definition data\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tprivate readonly definitionKey: string = 'definition';\r\n\r\n\t/**\r\n\t * Gets the key used to find the interpolation schema data\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tprivate readonly interpolationSchemaKey: string =\r\n\t\t'interpolationSchema';\r\n\r\n\t/**\r\n\t * Sets a value in the definition instance json data.\r\n\t *\r\n\t * @param {string} propertyName\r\n\t * The property to set in the definition instance.\r\n\t * @param {any} newValue\r\n\t * The value to set the property as.\r\n\t * @memberof DisplayComponentDefinition\r\n\t */\r\n\tpublic setDefinitionProperty(\r\n\t\tpropertyName: string,\r\n\t\tnewValue: any): void\r\n\t{\r\n\t\tconst updatedJsonData: any =\r\n\t\t\tthis.parsedJson;\r\n\t\tupdatedJsonData[this.definitionKey][propertyName] =\r\n\t\t\tnewValue === AppConstants.undefined\r\n\t\t\t\t? null\r\n\t\t\t\t: newValue;\r\n\r\n\t\tthis.jsonData = JSON.stringify(updatedJsonData);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tJsonSchemaHelper\r\n} from '@shared/helpers/json-schema.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tISummaryDataPath\r\n} from '@shared/interfaces/application-objects/summary-data-path';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A class representing the available methods (business logic) for an\r\n * entity definition.\r\n *\r\n * @export\r\n * @class EntityDefinition\r\n * @implements {IEntityDefinition}\r\n */\r\nexport class EntityDefinition\r\nimplements IEntityDefinition\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityDefinition.\r\n\t *\r\n\t * @param {IEntityDefinition} iEntityDefinition\r\n\t * The entity definition interface to create this new\r\n\t * object from.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iEntityDefinition: IEntityDefinition)\r\n\t{\r\n\t\tObject.assign(this, iEntityDefinition);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the typeId.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic typeId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the versionId.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic versionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the jsonData.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic jsonData: string;\r\n\r\n\t/**\r\n\t * Gets or sets the createDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic createDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the startDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic startDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the endDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic endDate: string;\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the entity definition\r\n\t * json data.\r\n\t *\r\n\t * @type {any}\r\n\t * The json parsed json data object.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get jsonEntityDefinition(): any\r\n\t{\r\n\t\treturn JSON.parse(this.jsonData);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the operation group name for the entity definition.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the primary operation menu\r\n\t * button set.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get operationGroupName(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.operationGroupNameKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the operation group name for the page level context\r\n\t * menu.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the page level context menu\r\n\t * navigation group.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get pageContextOperationGroupName(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.pageContextOperationGroupNameKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the operation group name for the page level utility menu.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the page level utility menu group.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get utilityMenuOperationGroupName(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.utilityMenuOperationGroupNameKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the operation group name for an action menu.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the action operation menu\r\n\t * button set.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get actionMenuOperationGroupName(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.actionMenuOperationGroupNameKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the information menu display component name for the entity\r\n\t * definition.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the information menu display\r\n\t * component.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get informationMenuDisplayComponentInstanceName(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.informationMenuDisplayComponentInstanceNameKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the module associated with this entity\r\n\t * definition.\r\n\t *\r\n\t * @type {string}\r\n\t * The json parsed value defining the context menu module.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get contextMenuModule(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition[\r\n\t\t\tthis.contextMenuModuleKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the supported child types of this definition.\r\n\t *\r\n\t * @type {string[]}\r\n\t * The array of entity type names that are supported as children\r\n\t * of this definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get supportedChildTypes(): string[]\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.supportedChildTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the parent required value of this entity definition.\r\n\t *\r\n\t * @type {boolean}\r\n\t * The truthy that defines if creating this entity requires a\r\n\t * selected parent.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get requiresParent(): boolean\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.requiresParent;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the title function of this entity definition if set.\r\n\t *\r\n\t * @type {string}\r\n\t * If defined this will return the title data promise which is used\r\n\t * in page headers and other very descriptive entity locations.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get titleFunction(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.titleFunction;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the title function of this entity definition if set.\r\n\t *\r\n\t * @type {string}\r\n\t * If defined this will return the title data promise which is used\r\n\t * in page headers and other very descriptive entity locations.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get titlePromise(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.titlePromise;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the final title of this entity definition, this is\r\n\t * defined as the final string following all '.' notation\r\n\t * in the JSON title property.\r\n\t *\r\n\t * @type {string}\r\n\t * The title property of this entity definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get displayTitle(): string\r\n\t{\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\tthis.jsonEntityDefinition.title,\r\n\t\t\t\tAppConstants.characters.period));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the chat data promise if set.\r\n\t *\r\n\t * @type {string}\r\n\t * If defined this will return the chat data promise which is used\r\n\t * when opening the chat window.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get chatDataPromise(): string\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.chatDataPromise;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the summary data paths.\r\n\t *\r\n\t * @type {ISummaryDataPath[]}\r\n\t * If defined this will return the set of summary data paths in the\r\n\t * definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get summaryDataPaths(): ISummaryDataPath[]\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.summaryDataPaths;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the excluded difference properties.\r\n\t *\r\n\t * @type {string[]}\r\n\t * If defined this will return the set of excluded differences to use\r\n\t * when displaying history difference records.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get excludedDifferenceProperties(): string[]\r\n\t{\r\n\t\treturn this.jsonEntityDefinition.excludedDifferenceProperties;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the defined properties as a key value pair object\r\n\t * in sorted order. This data is a merge of the definition\r\n\t * and data properties.\r\n\t *\r\n\t * @type {IKeyValuePair[]}\r\n\t * The sorted key value pair definition of properties of this\r\n\t * entity definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get properties(): IKeyValuePair[]\r\n\t{\r\n\t\treturn JsonSchemaHelper.getSchemaProperties(\r\n\t\t\tthis.dereferencedDataProperties);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the data properties object available in the\r\n\t * entity definiton json. This uses the JRef Library\r\n\t * to dereference JSON Schema #ref.\r\n\t * https://libraries.io/npm/jref\r\n\t *\r\n\t * @type {object}\r\n\t * A dereferenced json schema definition with resolved ref pointers as\r\n\t * a flattened object.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic get dereferencedDataProperties(): object\r\n\t{\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-var-requires\r\n\t\tconst jref = require('jref');\r\n\r\n\t\treturn jref.dereference(this.jsonEntityDefinition)\r\n\t\t\t.properties.data.properties;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key used to find the operation group name\r\n\t * from the entity definition json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly operationGroupNameKey: string = 'operationGroupName';\r\n\r\n\t/**\r\n\t * Gets the key used to find the page context level operation group name\r\n\t * from the entity definition json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly pageContextOperationGroupNameKey: string =\r\n\t\t'contextMenuPage';\r\n\r\n\t/**\r\n\t * Gets the key used to find the page context level operation group name\r\n\t * from the entity definition json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly utilityMenuOperationGroupNameKey: string =\r\n\t\t'utilityMenuOperationGroupName';\r\n\r\n\t/**\r\n\t * Gets the key used to find the action menu operation group name\r\n\t * from the entity definition json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly actionMenuOperationGroupNameKey: string =\r\n\t\t'actionMenuOperationGroupName';\r\n\r\n\t/**\r\n\t * Gets the key used to find the information menu display component name\r\n\t * from the entity definition json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly informationMenuDisplayComponentInstanceNameKey: string =\r\n\t\t'informationMenuDisplayComponentInstanceName';\r\n\r\n\t/**\r\n\t * Gets the key used to find the module that this entity definition\r\n\t * is associated with.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tprivate readonly contextMenuModuleKey: string =\r\n\t\t'contextMenuModule';\r\n\r\n\t/**\r\n\t * Gets a per entity definition title for created items.\r\n\t * This will use the summary value if available but fall back to\r\n\t * a type and id display if not found.\r\n\t *\r\n\t * @param {IEntityIstance} item\r\n\t * The entity instance to gather a summary defined title for.\r\n\t * @returns {string}\r\n\t * The created item title property of this entity definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic getItemTitle(item: IEntityInstance): string\r\n\t{\r\n\t\tconst summaryTitle: string =\r\n\t\t\tthis.summaryDataPaths?.length > 0\r\n\t\t\t\t? get(\r\n\t\t\t\t\titem,\r\n\t\t\t\t\tthis.summaryDataPaths[0].path\r\n\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\tAppConstants.nestedDataKeyPrefix,\r\n\t\t\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t: null;\r\n\r\n\t\treturn AnyHelper.isNullOrWhitespace(summaryTitle)\r\n\t\t\t? `${this.displayTitle} ${item.id}`\r\n\t\t\t: summaryTitle;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key activities description promise for this entity definition.\r\n\t *\r\n\t * @returns {string}\r\n\t * The key activities description promise for the sent entity definition.\r\n\t * @memberof JsonSchemaHelper\r\n\t */\r\n\tpublic getKeyActivitiesDescriptionPromise(): string\r\n\t{\r\n\t\treturn (this.dereferencedDataProperties)\r\n\t\t\t?.keyActivities?.descriptionPromise;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a property definition at the sent path.\r\n\t *\r\n\t * @param {string} path\r\n\t * The property definition path.\r\n\t * @returns {any}\r\n\t * The property definition matching the sent path.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\t public getPropertyDefinition(\r\n\t\tpath: string): any\r\n\t{\r\n\t\treturn this.properties\r\n\t\t\t.find(\r\n\t\t\t\t(item: IKeyValuePair) =>\r\n\t\t\t\t\titem.key === path);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the summary data values.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance of this definition type to get summary data values\r\n\t * for.\r\n\t * @returns {any[]}\r\n\t * The set of summary data values matching the sent entity instance\r\n\t * and this implementation of an entity definition.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\t public getSummaryDataValues(\r\n\t\tentityInstance: IEntityInstance): any[]\r\n\t{\r\n\t\tconst summaryDataValues: any[] = [];\r\n\t\tfor (const dataPath of this.jsonEntityDefinition.summaryDataPaths)\r\n\t\t{\r\n\t\t\tsummaryDataValues.push(\r\n\t\t\t\tget(\r\n\t\t\t\t\tentityInstance,\r\n\t\t\t\t\tdataPath.path.replace(\r\n\t\t\t\t\t\tAppConstants.nestedDataKeyPrefix,\r\n\t\t\t\t\t\tAppConstants.empty)));\r\n\t\t}\r\n\r\n\t\treturn summaryDataValues;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the summary data value.\r\n\t *\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance of this definition type to get summary data values\r\n\t * for.\r\n\t * @param {number} summaryIndex\r\n\t * The index to get a summary data value for.\r\n\t * @returns {any}\r\n\t * The summary data value matching the sent entity instance\r\n\t * and this implementation of an entity definition at the sent\r\n\t * summary index.\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic getSummaryDataValue(\r\n\t\tentityInstance: IEntityInstance,\r\n\t\tsummaryIndex: number): any\r\n\t{\r\n\t\treturn get(\r\n\t\t\tentityInstance,\r\n\t\t\tthis.jsonEntityDefinition.summaryDataPaths[summaryIndex]\r\n\t\t\t\t.path.replace(\r\n\t\t\t\t\tAppConstants.nestedDataKeyPrefix,\r\n\t\t\t\t\tAppConstants.empty));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tISecurityItemDto\r\n} from '@api/interfaces/security/security-item.dto.interface';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tIEntitySecurityConfiguration\r\n} from '@shared/interfaces/entities/entity-security-configuration.interface';\r\nimport {\r\n\tIIterableFormly\r\n} from '@shared/interfaces/formly/formly-iterable-configuration.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the available methods (business logic) for an\r\n * entity security.\r\n *\r\n * @export\r\n * @class EntitySecurity\r\n */\r\nexport class EntitySecurity\r\n{\r\n\t/**\r\n\t * Gets the entity section title identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySecurity\r\n\t */\r\n\tprivate readonly sectionTitle: string =\r\n\t\tFormlyConstants.customControls.customSectionTitle;\r\n\r\n\t/**\r\n\t * Gets the entity repeater identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySecurity\r\n\t */\r\n\tprivate readonly repeater: string =\r\n\t\tFormlyConstants.customControls.customRepeater;\r\n\r\n\t/**\r\n\t * Gets the entity tab content identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySecurity\r\n\t */\r\n\tprivate readonly tabContent: string =\r\n\t\tFormlyConstants.customControls.customTabContent;\r\n\r\n\t/**\r\n\t * Gets the entity tab content identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySecurity\r\n\t */\r\n\tprivate readonly emptyWrapper: string =\r\n\t\tFormlyConstants.customControls.customEmptyWrapper;\r\n\r\n\t/**\r\n\t * Gets the Scrubbed formly layout. This will remove from the layout those\r\n\t * fields, groups and sections when the access policy is not true.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} formlyLayout\r\n\t * The formly layout.\r\n\t * @param {ISecurityDefinitionDto[]} securityPermissions\r\n\t * The security access policies.\r\n\t * @returns {Promise}\r\n\t * A promise containing the scrubbed formly layout.\r\n\t * @async\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic async getScrubbedFormlyLayout(\r\n\t\tformlyLayout: FormlyFieldConfig[],\r\n\t\tsecurityPermissions: ISecurityItemDto[],\r\n\t\tcontext: any): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(securityPermissions)\r\n\t\t\t|| securityPermissions.length === 0)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t'Something went wrong.',\r\n\t\t\t\t'Check your security access policies or contact support.',\r\n\t\t\t\tAppConstants.activityStatus.error);\r\n\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst securityLayout: FormlyFieldConfig[] =\r\n\t\t\tthis.getGenericScrubbedLayout(\r\n\t\t\t\tformlyLayout,\r\n\t\t\t\t{\r\n\t\t\t\t\tsecurityScrub: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\titerableFormly.formlyField.wrappers)\r\n\t\t\t\t\t\t\t&& iterableFormly.formlyField.wrappers\r\n\t\t\t\t\t\t\t\t.indexOf(this.emptyWrapper) >= 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\titerableFormly.formlyField.props\r\n\t\t\t\t\t\t\t.securityAccessPolicy =\r\n\t\t\t\t\t\t\t(!AnyHelper.isNull(securityPermissions)\r\n\t\t\t\t\t\t\t\t|| securityPermissions?.length > 0)\r\n\t\t\t\t\t\t\t\t&& !AnyHelper.isNull(iterableFormly.formlyField\r\n\t\t\t\t\t\t\t\t\t.props?.attributes)\r\n\t\t\t\t\t\t\t\t? securityPermissions[\r\n\t\t\t\t\t\t\t\t\tthis.getSecurityIndex(\r\n\t\t\t\t\t\t\t\t\t\titerableFormly.formlyField,\r\n\t\t\t\t\t\t\t\t\t\tsecurityPermissions)]\r\n\t\t\t\t\t\t\t\t: null;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tconst scrubbedFieldsLayout: FormlyFieldConfig[] =\r\n\t\t\tthis.getGenericScrubbedLayout(\r\n\t\t\t\tsecurityLayout,\r\n\t\t\t\t{\r\n\t\t\t\t\trepeaterCondition: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t\titerableFormly.formlyField.props\r\n\t\t\t\t\t\t\t?.securityAccessPolicy?.rights.read === true,\r\n\t\t\t\t\tfieldCondition: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t\titerableFormly.formlyField.props\r\n\t\t\t\t\t\t\t?.securityAccessPolicy?.rights.read === true\r\n\t\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\titerableFormly.formlyField.key)\r\n\t\t\t\t});\r\n\r\n\t\tconst scrubbedSectionsLayout: FormlyFieldConfig[] =\r\n\t\t\tthis.getGenericScrubbedLayout(\r\n\t\t\t\tscrubbedFieldsLayout,\r\n\t\t\t\t{\r\n\t\t\t\t\tfieldCondition: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t\t(iterableFormly.formlyField.type === this.sectionTitle\r\n\t\t\t\t\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\titerableFormly.formlyLayout[\r\n\t\t\t\t\t\t\t\t\titerableFormly.fieldIndex + 1])\r\n\t\t\t\t\t\t\t&& (iterableFormly.formlyLayout[\r\n\t\t\t\t\t\t\t\titerableFormly.fieldIndex + 1].type\r\n\t\t\t\t\t\t\t\t!== this.sectionTitle\r\n\t\t\t\t\t\t\t\t&& iterableFormly.formlyLayout[\r\n\t\t\t\t\t\t\t\t\titerableFormly.fieldIndex + 1].type\r\n\t\t\t\t\t\t\t\t\t!== this.repeater))\r\n\t\t\t\t\t\t\t|| iterableFormly.formlyField.type\r\n\t\t\t\t\t\t\t\t!== this.sectionTitle\r\n\t\t\t\t});\r\n\r\n\t\tconst scrubbedRepeatersLayout: FormlyFieldConfig[] =\r\n\t\t\tthis.getGenericScrubbedLayout(\r\n\t\t\t\tscrubbedSectionsLayout,\r\n\t\t\t\t{\r\n\t\t\t\t\trepeaterCondition: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst fieldArray: any =\r\n\t\t\t\t\t\t\titerableFormly.formlyField.fieldArray;\r\n\r\n\t\t\t\t\t\treturn (!AnyHelper.isNull(fieldArray.fieldGroup)\r\n\t\t\t\t\t\t\t&& fieldArray.fieldGroup.length > 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tconst scrubbedTabsLayout: FormlyFieldConfig[] =\r\n\t\t\tthis.getGenericScrubbedLayout(\r\n\t\t\t\tscrubbedRepeatersLayout,\r\n\t\t\t\t{\r\n\t\t\t\t\ttabCondition: (iterableFormly: IIterableFormly) =>\r\n\t\t\t\t\t\t(!AnyHelper.isNull(\r\n\t\t\t\t\t\t\titerableFormly.formlyField.fieldGroup)\r\n\t\t\t\t\t\t\t&& iterableFormly.formlyField.fieldGroup.length > 0)\r\n\t\t\t\t});\r\n\r\n\t\treturn this.getScrubbedVisibleTabs(\r\n\t\t\tscrubbedTabsLayout,\r\n\t\t\tcontext);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the generic scrubbed layout.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} initialLayout\r\n\t * The initial formly layout.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The scrubbed layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getGenericScrubbedLayout(\r\n\t\tinitialLayout: FormlyFieldConfig[],\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig[]\r\n\t{\r\n\t\treturn this.getNestedFormlyLayout(\r\n\t\t\tinitialLayout,\r\n\t\t\tentitySecurityConfiguration);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the scrubbed layout.\r\n\t *\r\n\t * @param {IIterableFormly} iterableFormly\r\n\t * The iterable formly.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The scrubbed layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getScrubbedLayout(\r\n\t\titerableFormly: IIterableFormly,\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig[]\r\n\t{\r\n\t\tconst scrubbedLayout: FormlyFieldConfig[] = [];\r\n\t\tlet getScrubbedFormlyField:\r\n\t\t\t(iterableFormly: IIterableFormly,\r\n\t\t\t\tentitySecurityConfiguration: IEntitySecurityConfiguration) =>\r\n\t\t\t\tFormlyFieldConfig =\r\n\t\t\t\tthis.getScrubbedField.bind(this);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(iterableFormly.formlyField.wrappers)\r\n\t\t\t&& iterableFormly.formlyField.wrappers\r\n\t\t\t\t.indexOf(this.tabContent) >= 0)\r\n\t\t{\r\n\t\t\tgetScrubbedFormlyField = this.getScrubbedTab.bind(this);\r\n\t\t}\r\n\t\telse if (iterableFormly.formlyField.type === this.repeater)\r\n\t\t{\r\n\t\t\tgetScrubbedFormlyField = this.getScrubbedRepeater.bind(this);\r\n\t\t}\r\n\r\n\t\tthis.setGenericScrubbedFormlyField(\r\n\t\t\tscrubbedLayout,\r\n\t\t\tgetScrubbedFormlyField,\r\n\t\t\titerableFormly,\r\n\t\t\tentitySecurityConfiguration);\r\n\r\n\t\treturn scrubbedLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the scrubbed tab.\r\n\t *\r\n\t * @param {IIterableFormly} iterableFormly\r\n\t * The iterable formly.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @returns {FormlyFieldConfig}\r\n\t * The scrubbed tab.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getScrubbedTab(\r\n\t\titerableFormly: IIterableFormly,\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig\r\n\t{\r\n\t\tconst conditionMet: boolean =\r\n\t\t\t!AnyHelper.isNull(entitySecurityConfiguration.tabCondition)\r\n\t\t\t\t? entitySecurityConfiguration\r\n\t\t\t\t\t.tabCondition(iterableFormly)\r\n\t\t\t\t: true;\r\n\r\n\t\tif (conditionMet !== true)\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\titerableFormly.formlyField.fieldGroup =\r\n\t\t\tthis.getNestedFormlyLayout(\r\n\t\t\t\titerableFormly.formlyField.fieldGroup,\r\n\t\t\t\tentitySecurityConfiguration);\r\n\r\n\t\treturn iterableFormly.formlyField;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the scrubbed repeater.\r\n\t *\r\n\t * @param {IIterableFormly} iterableFormly\r\n\t * The iterable formly.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @returns {FormlyFieldConfig}\r\n\t * The scrubbed repeater.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getScrubbedRepeater(\r\n\t\titerableFormly: IIterableFormly,\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig\r\n\t{\r\n\t\tconst conditionMet: boolean =\r\n\t\t\t!AnyHelper.isNull(entitySecurityConfiguration.repeaterCondition)\r\n\t\t\t\t? entitySecurityConfiguration\r\n\t\t\t\t\t.repeaterCondition(iterableFormly)\r\n\t\t\t\t: true;\r\n\r\n\t\tif (conditionMet !== true)\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst fieldArray: any =\r\n\t\t\titerableFormly.formlyField.fieldArray;\r\n\t\tfieldArray.fieldGroup =\r\n\t\t\tthis.getNestedFormlyLayout(\r\n\t\t\t\tfieldArray.fieldGroup,\r\n\t\t\t\tentitySecurityConfiguration);\r\n\r\n\t\tif (!AnyHelper.isNull(entitySecurityConfiguration.securityScrub))\r\n\t\t{\r\n\t\t\tentitySecurityConfiguration.securityScrub(iterableFormly);\r\n\t\t}\r\n\r\n\t\treturn iterableFormly.formlyField;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the scrubbed field.\r\n\t *\r\n\t * @param {IIterableFormly} iterableFormly\r\n\t * The iterable formly.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @returns {FormlyFieldConfig}\r\n\t * The scrubbed field.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getScrubbedField(\r\n\t\titerableFormly: IIterableFormly,\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig\r\n\t{\r\n\t\tconst conditionMet =\r\n\t\t\t!AnyHelper.isNull(entitySecurityConfiguration.fieldCondition)\r\n\t\t\t\t? entitySecurityConfiguration\r\n\t\t\t\t\t.fieldCondition(iterableFormly)\r\n\t\t\t\t: true;\r\n\r\n\t\tif (conditionMet !== true)\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(entitySecurityConfiguration.securityScrub))\r\n\t\t{\r\n\t\t\tentitySecurityConfiguration.securityScrub(iterableFormly);\r\n\t\t}\r\n\r\n\t\t// Disable if no update permissions.\r\n\t\tif (!AnyHelper.isNull(iterableFormly.formlyField.type)\r\n\t\t\t&& iterableFormly.formlyField.type\r\n\t\t\t\t!== FormlyConstants.customControls.customTableDisplay\r\n\t\t\t&& iterableFormly.formlyField.type\r\n\t\t\t\t!== FormlyConstants.customControls.customSummaryCard)\r\n\t\t{\r\n\t\t\tconst props: any =\r\n\t\t\t\tAnyHelper.isNull(iterableFormly.formlyField.props)\r\n\t\t\t\t\t? {}\r\n\t\t\t\t\t: iterableFormly.formlyField.props;\r\n\r\n\t\t\tconst canUpdate: boolean =\r\n\t\t\t\tAnyHelper.isNull(props?.securityAccessPolicy?.rights)\r\n\t\t\t\t\t? false\r\n\t\t\t\t\t: props?.securityAccessPolicy?.rights.update;\r\n\r\n\t\t\tprops.disabled = !canUpdate;\r\n\r\n\t\t\titerableFormly.formlyField.props = props;\r\n\t\t}\r\n\r\n\t\treturn iterableFormly.formlyField;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the scrubbed formly field.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} scrubbedLayout\r\n\t * The scrubbed layout.\r\n\t * @param {(iterableFormly: IIterableFormly,\r\n\t * entitySecurityConfiguration: IEntitySecurityConfiguration) =>\r\n\t * FormlyFieldConfig} getScrubbedFormlyField\r\n\t * The method passed to get the scrubbed formly field.\r\n\t * @param {IIterableFormly} iterableFormly\r\n\t * The iterable formly.\r\n\t * @param {IEntitySecurityConfiguration} entitySecurityConfiguration\r\n\t * The security configuration.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate setGenericScrubbedFormlyField(\r\n\t\tscrubbedLayout: FormlyFieldConfig[],\r\n\t\tgetScrubbedFormlyField:\r\n\t\t\t(iterableFormly: IIterableFormly,\r\n\t\t\t\tentitySecurityConfiguration: IEntitySecurityConfiguration) =>\r\n\t\t\t\tFormlyFieldConfig,\r\n\t\titerableFormly: IIterableFormly,\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration): void\r\n\t{\r\n\t\tconst scrubbedField: FormlyFieldConfig =\r\n\t\t\tgetScrubbedFormlyField(\r\n\t\t\t\titerableFormly,\r\n\t\t\t\tentitySecurityConfiguration);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(scrubbedField))\r\n\t\t{\r\n\t\t\tscrubbedLayout.push(scrubbedField);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the visible tabs scrubbed layout.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} scrubbedLayout\r\n\t * The scrubbed layout.\r\n\t * @returns {Promise}\r\n\t * A promise containing the visible tabs scrubbed layout.\r\n\t * @async\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate async getScrubbedVisibleTabs(\r\n\t\tscrubbedLayout: FormlyFieldConfig[],\r\n\t\tcontext: any):\r\n\t\tPromise\r\n\t{\r\n\t\tlet tabAdded: boolean = false;\r\n\r\n\t\tconst tabs: FormlyFieldConfig[] = scrubbedLayout.map(\r\n\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif (FormlyHelper.isTabWrapper(\r\n\t\t\t\t\tfield) === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.props.visible = !tabAdded;\r\n\r\n\t\t\t\t\tif (tabAdded === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttabAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn field;\r\n\t\t\t});\r\n\r\n\t\tconst visibleTabs = [];\r\n\r\n\t\tfor (const item of tabs)\r\n\t\t{\r\n\t\t\tconst visible: boolean =\r\n\t\t\t\tawait FormlyHelper.visible(\r\n\t\t\t\t\titem,\r\n\t\t\t\t\tcontext);\r\n\r\n\t\t\tif (visible)\r\n\t\t\t{\r\n\t\t\t\tvisibleTabs.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn visibleTabs;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the security access policy index.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field.\r\n\t * @param {ISecurityPermission[]} securityPermissions\r\n\t * The security access policies permissions.\r\n\t * @returns {number}\r\n\t * The security access policy index.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getSecurityIndex(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tsecurityPermissions: ISecurityItemDto[]): number\r\n\t{\r\n\t\tconst fieldKey: string =\r\n\t\t\t`${AppConstants.nestedDataKeyPrefix}`\r\n\t\t\t\t+ `${field.props.attributes[\r\n\t\t\t\t\tFormlyConstants.attributeKeys.dataKey]}`;\r\n\r\n\t\treturn SecurityHelper\r\n\t\t\t.getSecurityPermissionIndex(\r\n\t\t\t\tfieldKey,\r\n\t\t\t\tsecurityPermissions);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the nested formly layout.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} fieldGroup\r\n\t * The formly field group.\r\n\t * @param {ISecurityPermission[]} entitySecurityConfiguration\r\n\t * The entity security configuration.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The nested formly layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate getNestedFormlyLayout(\r\n\t\tfieldGroup: FormlyFieldConfig[],\r\n\t\tentitySecurityConfiguration: IEntitySecurityConfiguration):\r\n\t\tFormlyFieldConfig[]\r\n\t{\r\n\t\tlet layout: FormlyFieldConfig[] = [];\r\n\t\tfieldGroup.forEach(\r\n\t\t\t(nestedField: FormlyFieldConfig,\r\n\t\t\t\tnestedIndex: number,\r\n\t\t\t\tnestedLayout: FormlyFieldConfig[]) =>\r\n\t\t\t{\r\n\t\t\t\tconst nestedIterableFormly: IIterableFormly =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformlyField: nestedField,\r\n\t\t\t\t\t\tfieldIndex: nestedIndex,\r\n\t\t\t\t\t\tformlyLayout: nestedLayout\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tlayout = [\r\n\t\t\t\t\t... layout,\r\n\t\t\t\t\t... this.getScrubbedLayout(\r\n\t\t\t\t\t\tnestedIterableFormly,\r\n\t\t\t\t\t\tentitySecurityConfiguration)\r\n\t\t\t\t];\r\n\t\t\t});\r\n\r\n\t\treturn layout;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tISecurityItemDto\r\n} from '@api/interfaces/security/security-item.dto.interface';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tEntitySecurity\r\n} from './entity-security';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the available methods (business logic) for an\r\n * entity layout.\r\n *\r\n * @export\r\n * @class EntityLayout\r\n * @implements {IEntityLayout}\r\n */\r\nexport class EntityLayout\r\nimplements IEntityLayout\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityLayout.\r\n\t *\r\n\t * @param {IEntityLayout} iEntityLayout\r\n\t * The entity layout interface to create this new\r\n\t * object from.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iEntityLayout: IEntityLayout)\r\n\t{\r\n\t\tObject.assign(this, iEntityLayout);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the typeId.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic typeId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the layoutTypeId.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic layoutTypeId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the versionId.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic versionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the jsonData.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic jsonData: string;\r\n\r\n\t/**\r\n\t * Gets or sets the createDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic createDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the startDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic startDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the endDate.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic endDate: string;\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the entity layout\r\n\t * json data.\r\n\t *\r\n\t * @type {any}\r\n\t * The json parsed json data object.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic get jsonEntityLayout(): any\r\n\t{\r\n\t\treturn JSON.parse(this.jsonData);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the entity layout\r\n\t * json data as Formly consumable layout fields. This is used\r\n\t * for translations from the valid JSON in the database\r\n\t * into a format the Formly expects.\r\n\t *\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @param {ISecurityItemDto[]} securityPermissions\r\n\t * An optional parameter of security permissions.\r\n\t * @returns {Promise}\r\n\t * A promise containing the layout.\r\n\t * @async\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic async getFormlyEntityLayout(\r\n\t\tcontext: any,\r\n\t\tsecurityPermissions: ISecurityItemDto[] = null\r\n\t): Promise\r\n\t{\r\n\t\tconst formlyLayout =\r\n\t\t\tFormlyHelper.getFormlyLayout(\r\n\t\t\t\tthis.jsonEntityLayout,\r\n\t\t\t\tcontext);\r\n\r\n\t\treturn new EntitySecurity()\r\n\t\t\t.getScrubbedFormlyLayout(\r\n\t\t\t\tformlyLayout,\r\n\t\t\t\tsecurityPermissions,\r\n\t\t\t\tcontext);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the data tabs that are used for tab based navigation.\r\n\t * This currently includes a custom-tab-content layout field.\r\n\t *\r\n\t * @returns {MenuItem[]}\r\n\t * The tabs to be displayed in this entity layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic getDataTabs(entityLayout: FormlyFieldConfig[]): MenuItem[]\r\n\t{\r\n\t\treturn entityLayout\r\n\t\t\t.filter(\r\n\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\tFormlyHelper.isTabWrapper(field))\r\n\t\t\t.map(\r\n\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst nestedSections: MenuItem[] =\r\n\t\t\t\t\t\tthis.mapDataSections(\r\n\t\t\t\t\t\t\tfield.fieldGroup);\r\n\r\n\t\t\t\t\treturn \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: field.props.label,\r\n\t\t\t\t\t\t\tid: StringHelper.getCleanedValue(\r\n\t\t\t\t\t\t\t\tfield.props.label),\r\n\t\t\t\t\t\t\titems: nestedSections.length > 1\r\n\t\t\t\t\t\t\t\t? nestedSections\r\n\t\t\t\t\t\t\t\t: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the data sections that are used for section based scroll to\r\n\t * navigation.\r\n\t * This currently includes custom-repeaters and custom-section-title\r\n\t * layout elements.\r\n\t *\r\n\t * @returns {MenuItem[]}\r\n\t * The sections for horizontal scroll functionality in this entity layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tpublic getDataSections(entityLayout: any): MenuItem[]\r\n\t{\r\n\t\treturn this.mapDataSections(\r\n\t\t\tentityLayout);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps a field groups data sections that are used for section based scroll\r\n\t * to navigation.\r\n\t * This currently includes custom-repeaters and custom-section-title\r\n\t * layout elements.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} fieldGroup\r\n\t * The field group to have mapped data sections, the can be the entire\r\n\t * layout or a field group defined via a tab content wrapper.\r\n\t * @returns {MenuItem[]}\r\n\t * The mapped sections for horizontal scroll functionality in this entity\r\n\t * layout.\r\n\t * @memberof EntityLayout\r\n\t */\r\n\tprivate mapDataSections(\r\n\t\tfieldGroup: FormlyFieldConfig[]): MenuItem[]\r\n\t{\r\n\t\tconst dataSectionTypes = [\r\n\t\t\tFormlyConstants .customControls.customSectionTitle,\r\n\t\t\tFormlyConstants .customControls.customRepeater\r\n\t\t];\r\n\r\n\t\tconst mappedSections: MenuItem[] =\r\n\t\t\tfieldGroup\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\tdataSectionTypes.includes(field.type?.toString()))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: field.props.label,\r\n\t\t\t\t\t\t\tid: StringHelper.getCleanedValue(\r\n\t\t\t\t\t\t\t\tfield.props.label)\r\n\t\t\t\t\t\t});\r\n\r\n\t\tif (mappedSections.length > 1\r\n\t\t\t&& fieldGroup.length > 0\r\n\t\t\t&& !dataSectionTypes.includes(fieldGroup[0].type.toString()))\r\n\t\t{\r\n\t\t\tmappedSections.unshift(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: AppConstants.basePageSections.topIdentifier,\r\n\t\t\t\t\tid: AppConstants.basePageSections.topIdentifier\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn mappedSections;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\n\r\n/**\r\n * A class representing the available methods (business logic) for an\r\n * entity layout.\r\n *\r\n * @export\r\n * @class EntityType\r\n * @implements {IEntityType}\r\n */\r\nexport class EntityType implements IEntityType\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityType.\r\n\t *\r\n\t * @param {IEntityType} iEntityType\r\n\t * The entity type interface to create this new\r\n\t * object from.\r\n\t * @memberof EntityType\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iEntityType: IEntityType)\r\n\t{\r\n\t\tObject.assign(this, iEntityType);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityDefinition\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityType\r\n\t */\r\n\tpublic name: string;\r\n\r\n\t/**\r\n\t * Gets or sets the group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityType\r\n\t */\r\n\tpublic group: string;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership public or read allowed value.\r\n\t*\r\n\t* @type {boolean}\r\n\t* @memberof EntityType\r\n\t*/\r\n\tpublic public: boolean;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership security group or alter allowed value.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof EntityType\r\n\t*/\r\n\tpublic ownershipSecurityGroupId: number;\r\n\r\n\t/**\r\n\t* Gets or sets the created by id. This user will have read and alter\r\n\t* permissions.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof EntityType\r\n\t*/\r\n\tpublic createdById: number;\r\n\r\n\t/**\r\n\t * Gets the display name for this, which is defined as\r\n\t * the last element in a '.' delimited string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityType\r\n\t */\r\n\tpublic get displayName(): string\r\n\t{\r\n\t\treturn StringHelper.beforeCapitalSpaces(\r\n\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\tthis.name,\r\n\t\t\t\tAppConstants.characters.period));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\n\r\n/**\r\n * A class representing the available methods (business logic) for a\r\n * session user.\r\n *\r\n * @export\r\n * @class User\r\n * @implements {IUser}\r\n */\r\nexport class User implements IUser\r\n{\r\n\t/**\r\n\t * Creates an instance of a User.\r\n\t *\r\n\t * @param {IUser} iUser\r\n\t * The yser interface to create this new\r\n\t * object from.\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iUser: IUser)\r\n\t{\r\n\t\tObject.assign(this, iUser);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic data: any;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic entityType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the security groups the user is a member of.\r\n\t *\r\n\t * @type {ISecurityGroup[]}\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic membershipSecurityGroups: ISecurityGroup[];\r\n\r\n\t/**\r\n\t * Checks against the set list of security groups and returns\r\n\t * true if the current user holds a membership to one of the\r\n\t * sent roles.\r\n\t *\r\n\t * @param {string[]} securityGroups\r\n\t * The string array of allowed security groups.\r\n\t * @returns {boolean}\r\n\t * A boolean value representing user membership in one of the sent\r\n\t * security roles.\r\n\t * @memberof IUser\r\n\t */\r\n\tpublic hasMembership(\r\n\t\tsecurityGroups: string[]): boolean\r\n\t{\r\n\t\tconst mappedUserGroups: string[] =\r\n\t\t\tthis.membershipSecurityGroups.map(\r\n\t\t\t\t(securityGroup: ISecurityGroup) =>\r\n\t\t\t\t\tsecurityGroup.name);\r\n\r\n\t\treturn mappedUserGroups.filter(\r\n\t\t\t(mappedGroup: string) =>\r\n\t\t\t\tsecurityGroups.includes(\r\n\t\t\t\t\tmappedGroup)).length > 0;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tPipe,\r\n\tPipeTransform\r\n} from '@angular/core';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Pipe({\r\n\tname: 'dateTimeToTrueLocal'\r\n})\r\n\r\n/**\r\n * A class representing a date time pipe.\r\n * This will calculate and the date time value in a true local time.\r\n *\r\n * @export\r\n * @class DateTimeToTrueLocalPipe\r\n * @implements {PipeTransform}\r\n */\r\nexport class DateTimeToTrueLocalPipe implements PipeTransform\r\n{\r\n\t/**\r\n\t * Returns the date time shifted over to match the client's true local\r\n\t * time as opposed to a system time. The expected string should be an input\r\n\t * of a system DateTime.\r\n\t *\r\n\t * @param {string} value\r\n\t * The value piped in, representing a system based DateTime.\r\n\t * @memberof DateTimeToTrueLocalPipe\r\n\t */\r\n\tpublic transform(\r\n\t\tvalue: DateTime): DateTime\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(value))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn DateHelper.convertToTrueLocal(value);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tEmailValidator\r\n} from '@shared/validators/email.validator';\r\nimport {\r\n\tMaximumLengthValidator\r\n} from '@shared/validators/maximum-length.validator';\r\nimport {\r\n\tMaximumNumberValidator\r\n} from '@shared/validators/maximum-number.validator';\r\nimport {\r\n\tMinimumLengthValidator\r\n} from '@shared/validators/minimum-length.validator';\r\nimport {\r\n\tMinimumNumberValidator\r\n} from '@shared/validators/minimum-number.validator';\r\nimport {\r\n\tPasswordValidator\r\n} from '@shared/validators/password.validator';\r\nimport {\r\n\tRegularExpressionValidator\r\n} from '@shared/validators/regular-expression.validator';\r\nimport {\r\n\tRequiredValidator\r\n} from '@shared/validators/required.validator';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const EmailValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'Email');\r\nexport const MaximumLengthValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'MaximumLength');\r\nexport const MinimumLengthValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'MinimumLength');\r\nexport const MaximumNumberValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'MaximumNumber');\r\nexport const MinimumNumberValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'MinimumNumber');\r\nexport const PasswordValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'Password');\r\nexport const RegularExpressionValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'RegularExpressionFormat');\r\nexport const RequiredValidatorToken =\r\n\tnew InjectionToken(\r\n\t\t'Required');\r\n\r\n/**\r\n * A lookup to be shared accross the application used for presentation logic\r\n * available in the formly rules system.\r\n *\r\n * @export\r\n * @class RuleTokenLookup\r\n */\r\nexport class RuleTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof RuleTokenLookup\r\n\t */\r\n\tpublic static tokens =\r\n\t\t{\r\n\t\t\t'Email':\r\n\t\t\t\tEmailValidatorToken,\r\n\t\t\t'MaximumLength':\r\n\t\t\t\tMaximumLengthValidatorToken,\r\n\t\t\t'MinimumLength':\r\n\t\t\t\tMinimumLengthValidatorToken,\r\n\t\t\t'MaximumNumber':\r\n\t\t\t\tMaximumNumberValidatorToken,\r\n\t\t\t'MinimumNumber':\r\n\t\t\t\tMinimumNumberValidatorToken,\r\n\t\t\t'Password':\r\n\t\t\t\tPasswordValidatorToken,\r\n\t\t\t'RegularExpressionFormat':\r\n\t\t\t\tRegularExpressionValidatorToken,\r\n\t\t\t'Required':\r\n\t\t\t\tRequiredValidatorToken\r\n\t\t};\r\n}","import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nexport default uniqueId;\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEventEmitter,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tuniqueId\r\n} from 'lodash-es';\r\n\r\n/**\r\n * A singleton service representing all current application activities that\r\n * will be displayed in the Activity List Component.\r\n *\r\n * @export\r\n * @class ActivityService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ActivityService\r\n{\r\n\t/**\r\n\t * Creates an instance of an activity service. This will check and\r\n\t * load the indexed database storage map for our session based\r\n\t * activity list.\r\n\t *\r\n\t * @param {StorageMap} storageMap\r\n\t * The local storage map used for activity list caching.\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly storageMap: StorageMap)\r\n\t{\r\n\t\tthis.storageMap.get(this.localStorageKey)\r\n\t\t\t.subscribe(\r\n\t\t\t\t(activities: Activity[]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNull(activities) === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tactivities.forEach(\r\n\t\t\t\t\t\t\t(activity: Activity) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tactivity.data =\r\n\t\t\t\t\t\t\t\t\tactivity.status ===\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.activityStatus.error\r\n\t\t\t\t\t\t\t\t\t\t&& !AnyHelper\r\n\t\t\t\t\t\t\t\t\t\t\t.isNullOrEmpty(activity.data)\r\n\t\t\t\t\t\t\t\t\t\t? JSON.parse(activity.data)\r\n\t\t\t\t\t\t\t\t\t\t: activity.data;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.activities = activities;\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.activities = [];\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the activity changed event emitter.\r\n\t *\r\n\t * @type {EventEmitter>}\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic activityChanged: EventEmitter>\r\n\t\t= new EventEmitter>();\r\n\r\n\t/**\r\n\t * Gets or sets the list of all activities currently being handled by the\r\n\t * activity service and not yet dismissed.\r\n\t *\r\n\t * @type {Activity[]}\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic activities: Activity[] = [];\r\n\r\n\t/**\r\n\t * Gets the identifier used for the session based activity list storage.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActivityService\r\n\t */\r\n\tprivate readonly localStorageKey: string = 'NautixActivities';\r\n\r\n\t/**\r\n\t * Handles an activity by setting this activity in a pending status then\r\n\t * executing the command action. Upon completion of this action, the message\r\n\t * returned from the resolve/reject of the command promise will become this\r\n\t * activity's status message.\r\n\t *\r\n\t * @async\r\n\t * @param {Activity} activity\r\n\t * The activity to be handled by this service.\r\n\t * @param {string} successStatus\r\n\t * The status to display upon success.\r\n\t * @param {boolean} throwException\r\n\t * If requested to throw an exception on a reject/error case.\r\n\t * Defaults to false.\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic async handleActivity(\r\n\t\tactivity: Activity,\r\n\t\tsuccessStatus: string = AppConstants.activityStatus.complete,\r\n\t\tthrowException: boolean = false):\r\n\t\tPromise\r\n\t{\r\n\t\tactivity.status = AppConstants.activityStatus.pending;\r\n\t\tactivity.id = uniqueId();\r\n\t\tactivity.lastActivityTime = Date.now();\r\n\t\tthis.activities.push(activity);\r\n\t\tthis.activityChanged.emit(activity);\r\n\t\tawait activity.command\r\n\t\t\t.then(\r\n\t\t\t\tasync(message: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.generateActivityBanner(\r\n\t\t\t\t\t\tactivity,\r\n\t\t\t\t\t\tsuccessStatus,\r\n\t\t\t\t\t\tmessage);\r\n\t\t\t\t},\r\n\t\t\t\tasync(message: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.generateActivityBanner(\r\n\t\t\t\t\t\tactivity,\r\n\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\tmessage);\r\n\r\n\t\t\t\t\tif (throwException === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthrow message;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t.finally(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tactivity.lastActivityTime = Date.now();\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\treturn activity.data;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all current activities being handled in this service.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic async dismissAllActivities(): Promise\r\n\t{\r\n\t\tawait this.syncActivitiesLocally(\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\ttrue);\r\n\r\n\t\tthis.activityChanged\r\n\t\t\t.emit(null);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears a specific activity being handled in this service.\r\n\t *\r\n\t * @async\r\n\t * @param {Activity} dismissActivity\r\n\t * The activity to be dismissed.\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic async dismissActivity(\r\n\t\tdismissActivity: Activity): Promise\r\n\t{\r\n\t\tawait this.syncActivitiesLocally(\r\n\t\t\tnull,\r\n\t\t\tdismissActivity);\r\n\r\n\t\tthis.activityChanged\r\n\t\t\t.emit(dismissActivity);\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a banner message to interact with the banner component\r\n\t * based on the activity command's success or failure and resulting\r\n\t * status message.\r\n\t *\r\n\t * @async\r\n\t * @param {Activity} activity\r\n\t * The activity to be displayed.\r\n\t * @param {string} status\r\n\t * The status to display.\r\n\t * @param {string} message\r\n\t * The meessage to display.\r\n\t * @memberof ActivityService\r\n\t */\r\n\tpublic async generateActivityBanner(\r\n\t\tactivity: Activity,\r\n\t\tstatus: string,\r\n\t\tmessage: string): Promise\r\n\t{\r\n\t\tactivity.status = status;\r\n\t\tactivity.statusMessage = message;\r\n\t\tactivity.lastActivityTime ??= Date.now();\r\n\r\n\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\tactivity.message,\r\n\t\t\tactivity.statusMessage,\r\n\t\t\tactivity.status,\r\n\t\t\tactivity.data);\r\n\r\n\t\tawait this.syncActivitiesLocally(\r\n\t\t\tactivity);\r\n\r\n\t\tthis.activityChanged\r\n\t\t\t.emit(activity);\r\n\t}\r\n\r\n\t/**\r\n\t * Locally stores and synchronizes the existing activities list.\r\n\t *\r\n\t * @async\r\n\t * @param {Activity} newActivity\r\n\t * If sent this represents a new activity to be added to the local\r\n\t * storage list.\r\n\t * @param {Activity} dismissActivity\r\n\t * If sent this represents an activity to be removed from the local\r\n\t * storage list.\r\n\t * @param {Activity} clearActivities\r\n\t * If sent this represents a command to clear the activity list.\r\n\t * @memberof ActivityService\r\n\t */\r\n\tprivate async syncActivitiesLocally(\r\n\t\tnewActivity: Activity = null,\r\n\t\tdismissActivity: Activity = null,\r\n\t\tclearActivities: boolean = false): Promise\r\n\t{\r\n\t\treturn new Promise((resolve: any) =>\r\n\t\t{\r\n\t\t\tlet updatedActivities: Activity[] = [];\r\n\r\n\t\t\tif (clearActivities === true)\r\n\t\t\t{\r\n\t\t\t\treturn this.storageMap.set(\r\n\t\t\t\t\tthis.localStorageKey,\r\n\t\t\t\t\tupdatedActivities)\r\n\t\t\t\t\t.subscribe(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.activities = updatedActivities;\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn this.storageMap.get(this.localStorageKey)\r\n\t\t\t\t.subscribe((activities: Activity[]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst safeActivities: Activity[] =\r\n\t\t\t\t\t\tactivities || [];\r\n\r\n\t\t\t\t\tif (AnyHelper.isNull(newActivity) === false\r\n\t\t\t\t\t\t&& newActivity.status ===\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.error)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Serialize promise errors for Firefox.\r\n\t\t\t\t\t\tnewActivity.data =\r\n\t\t\t\t\t\t\tJSON.stringify(newActivity.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tupdatedActivities =\r\n\t\t\t\t\t\tAnyHelper.isNull(dismissActivity) === false\r\n\t\t\t\t\t\t\t? safeActivities.filter(\r\n\t\t\t\t\t\t\t\t(activity: Activity) =>\r\n\t\t\t\t\t\t\t\t\tdismissActivity.id\r\n\t\t\t\t\t\t\t\t\t\t!== activity.id)\r\n\t\t\t\t\t\t\t: [\r\n\t\t\t\t\t\t\t\t...safeActivities,\r\n\t\t\t\t\t\t\t\tnewActivity\r\n\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\tconst storageSafeActivities: Activity[] = [];\r\n\t\t\t\t\tupdatedActivities.forEach(\r\n\t\t\t\t\t\t(activity: Activity) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst clonedActivity: Activity =\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t...activity\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t// Clear headers for serialization.\r\n\t\t\t\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\tclonedActivity.data?.headers))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tclonedActivity.data.headers = null;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tstorageSafeActivities.push(\r\n\t\t\t\t\t\t\t\tclonedActivity);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.storageMap.set(\r\n\t\t\t\t\t\tthis.localStorageKey,\r\n\t\t\t\t\t\tstorageSafeActivities)\r\n\t\t\t\t\t\t.subscribe(() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.activities = updatedActivities;\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tIStoredVariableDefinition\r\n} from '@shared/interfaces/application-objects/stored-variable-definition';\r\nimport {\r\n\tIStoredVariableService\r\n} from '@shared/interfaces/application-objects/stored-variable-service.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing logic for handling common stored variable service\r\n * based logic.\r\n *\r\n * @export\r\n * @abstract\r\n * @class BaseStoredVariableService\r\n */\r\n@Injectable()\r\nexport abstract class BaseStoredVariableService\r\nimplements IStoredVariableService\r\n{\r\n\t/**\r\n\t * Gets or sets the lock value for when this is setting local storage\r\n\t * values.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseStoredVariableService\r\n\t */\r\n\tpublic settingLocalStorage: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the local variable that allows this to query for the\r\n\t * max result set. If this value is set as false, this will instead call\r\n\t * for the api helper get full data set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseStoredVariableService\r\n\t */\r\n\tpublic allowedMaxResultSet: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the storage variables that will be stored in this\r\n\t * singleton service.\r\n\t *\r\n\t * @type {IStoredVariableDefinition[]}\r\n\t * @memberof BaseStoredVariableService\r\n\t */\r\n\tpublic storedVariables: IStoredVariableDefinition[] = [];\r\n\r\n\t/**\r\n\t * Clears the set of stored variables used in this rule service.\r\n\t *\r\n\t * @memberof BaseStoredVariableService\r\n\t */\r\n\tpublic clearStoredVariables(): void\r\n\t{\r\n\t\tthis.settingLocalStorage = true;\r\n\r\n\t\tthis.storedVariables.forEach(\r\n\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tthis[storedVariable.storageProperty] = [];\r\n\t\t\t});\r\n\r\n\t\tthis.settingLocalStorage = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the set of stored variables used in this rule service.\r\n\t *\r\n\t * @async\r\n\t * @memberof BaseStoredVariableService\r\n\t */\r\n\tpublic async setStoredVariables(): Promise\r\n\t{\r\n\t\tif (this.settingLocalStorage === true)\r\n\t\t{\r\n\t\t\treturn new Promise(\r\n\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait this.setStoredVariables();\r\n\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.settingLocalStorage = true;\r\n\r\n\t\tconst storedPromiseArray: Promise[] = [];\r\n\t\tthis.storedVariables\r\n\t\t\t.forEach(\r\n\t\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this[storedVariable.storageProperty].length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst promise: Promise =\r\n\t\t\t\t\t\tthis.allowedMaxResultSet\r\n\t\t\t\t\t\t\t? storedVariable.apiService.query(\r\n\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\tAppConstants.dataLimits.maxResultSet)\r\n\t\t\t\t\t\t\t: ApiHelper.getFullDataSet(\r\n\t\t\t\t\t\t\t\tstoredVariable.apiService,\r\n\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\tstoredPromiseArray.push(\r\n\t\t\t\t\t\tnew Promise(\r\n\t\t\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis[storedVariable.storageProperty] =\r\n\t\t\t\t\t\t\t\t\tawait promise;\r\n\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}));\r\n\t\t\t\t});\r\n\r\n\t\tawait Promise.all(storedPromiseArray);\r\n\r\n\t\tthis.settingLocalStorage = false;\r\n\r\n\t\treturn null;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpRequest,\r\n\tHttpResponse,\r\n\tHttpXhrBackend\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIServiceWorkerDataGroup\r\n} from '@shared/interfaces/application-objects/service-worker-data-group';\r\nimport {\r\n\tSubscription,\r\n\tlastValueFrom\r\n} from 'rxjs';\r\n\r\n/**\r\n * A singleton class representing a service worker based application cache.\r\n *\r\n * @export\r\n * @class CacheService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CacheService\r\n{\r\n\t/**\r\n\t * Creates an instance of a cache service.\r\n\t *\r\n\t * @param {StorageMap} storageMap\r\n\t * The local storage map used for ETag handling.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly storageMap: StorageMap)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the currently running revalidation subscription set.\r\n\t *\r\n\t * @type {Subscription[]}\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic currentSubscriptions: Subscription[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the service worker configuration from the base directory.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic serviceWorkerConfiguration: any;\r\n\r\n\t/**\r\n\t * Gets the identifier for ngsw.config.json freshness property.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic readonly freshnessStrategyIdentifier: string = 'freshness';\r\n\r\n\t/**\r\n\t * Gets the identifier for ngsw.config.json freshness property.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic readonly performanceStrategyIdentifier: string = 'performance';\r\n\r\n\t/**\r\n\t * Gets the identifier for ngsw.config.json file name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CacheService\r\n\t */\r\n\tprivate readonly serviceWorkerConfigFileIdentifier: string =\r\n\t\t'ngsw-config.json';\r\n\r\n\t/**\r\n\t * Gets the service worker configured data groups at runtime.\r\n\t *\r\n\t * @async\r\n\t * @returns {IServiceWorkerDataGroup[]}\r\n\t * The data groups that are set for service worker handling in this project.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async getServiceWorkerConfigurationDataGroups():\r\n\t\tPromise\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.serviceWorkerConfiguration))\r\n\t\t{\r\n\t\t\treturn this.serviceWorkerConfiguration.dataGroups;\r\n\t\t}\r\n\r\n\t\tconst http: HttpClient = new HttpClient(\r\n\t\t\tnew HttpXhrBackend({ build: () => new XMLHttpRequest() }));\r\n\r\n\t\tthis.serviceWorkerConfiguration =\r\n\t\t\tawait lastValueFrom(\r\n\t\t\t\thttp.get(this.serviceWorkerConfigFileIdentifier));\r\n\r\n\t\treturn this.serviceWorkerConfiguration.dataGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all existing cached data.\r\n\t *\r\n\t * @async\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async clearAllCaches(): Promise\r\n\t{\r\n\t\t// If caches are not available or insecure, nothing to clear.\r\n\t\tif (this.cachesAreNullOrInsecure() === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentApiCaches: string[] =\r\n\t\t\tawait caches.keys();\r\n\r\n\t\tfor (let index = 0; index <= currentApiCaches.length; index++)\r\n\t\t{\r\n\t\t\tconst cacheToClear: Cache =\r\n\t\t\t\tawait caches.open(currentApiCaches[index]);\r\n\r\n\t\t\tconst urlCacheKeys: readonly Request[] =\r\n\t\t\t\tawait cacheToClear.keys();\r\n\r\n\t\t\turlCacheKeys.forEach(async(eachRequest: Request) =>\r\n\t\t\t{\r\n\t\t\t\tawait cacheToClear.delete(eachRequest);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all current stale while revalidate subscriptions.\r\n\t *\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic clearAllSubscriptions(): void\r\n\t{\r\n\t\tthis.currentSubscriptions\r\n\t\t\t.forEach((subscription: Subscription) =>\r\n\t\t\t{\r\n\t\t\t\tsubscription.unsubscribe();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Searches cached data for the matching cached response.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated response for.\r\n\t * @returns {Promise | Void>}\r\n\t * An awaitable promise holding the found cache service value\r\n\t * as an HttpResponse consumable in the application or null\r\n\t * if not found.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async getCachedResponse(\r\n\t\trequest: HttpRequest): Promise>\r\n\t{\r\n\t\tconst matchingResponse: Response =\r\n\t\t\tawait this.lookupMatchingResponse(request);\r\n\t\tconst responseArrayBuffer: ArrayBuffer =\r\n\t\t\tawait matchingResponse?.clone()\r\n\t\t\t\t.arrayBuffer();\r\n\r\n\t\tif (!AnyHelper.isNull(matchingResponse))\r\n\t\t{\r\n\t\t\tconst response: HttpResponse =\r\n\t\t\t\tnew HttpResponse({\r\n\t\t\t\t\tstatus: 200,\r\n\t\t\t\t\tbody: JSON.parse(\r\n\t\t\t\t\t\tnew TextDecoder()\r\n\t\t\t\t\t\t\t.decode(responseArrayBuffer))\r\n\t\t\t\t});\r\n\r\n\t\t\treturn response;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an observer on the cached response row for changes that\r\n\t * occur to the ETag value.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated ETag observer for.\r\n\t * @returns {Promise>}\r\n\t * An awaitable promise holding an observer on the ETag value of the\r\n\t * cache data row.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async getCachedETag(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\tconst matchingResponse: Response =\r\n\t\t\tawait this.lookupMatchingResponse(request);\r\n\r\n\t\tif (!AnyHelper.isNull(matchingResponse))\r\n\t\t{\r\n\t\t\treturn matchingResponse.headers.get(\r\n\t\t\t\tAppConstants.webApi.eTag);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies that the request is part of the configured cache set of\r\n\t * urls.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated value for.\r\n\t * @returns {boolean}\r\n\t * A truthy defining if this url is part of the PWA service worker cache.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async isCachedRequest(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\tconst serviceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tawait this.getServiceWorkerConfigurationDataGroups();\r\n\r\n\t\tconst matchingServiceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tserviceWorkerDefinitions.filter((\r\n\t\t\t\tdataGroup: IServiceWorkerDataGroup) =>\r\n\t\t\t\tdataGroup.urls.filter((urlIdentifier: string) =>\r\n\t\t\t\t\trequest.url.startsWith(urlIdentifier)).length > 0);\r\n\r\n\t\treturn matchingServiceWorkerDefinitions.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies that the request is part of a stale while revalidate pattern\r\n\t * specified by the freshness setting in ngsw-config.json.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated freshness value for.\r\n\t * @returns {boolean}\r\n\t * A truthy defining if this url is part of the PWA service worker cache\r\n\t * and part of the freshness set.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async isFreshnessRequest(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\tconst serviceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tawait this.getServiceWorkerConfigurationDataGroups();\r\n\r\n\t\tconst matchingServiceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tserviceWorkerDefinitions.filter((\r\n\t\t\t\tdataGroup: IServiceWorkerDataGroup) =>\r\n\t\t\t\tdataGroup.urls.filter((urlIdentifier: string) =>\r\n\t\t\t\t\trequest.url.startsWith(urlIdentifier)).length > 0);\r\n\r\n\t\treturn matchingServiceWorkerDefinitions.length > 0\r\n\t\t\t&& matchingServiceWorkerDefinitions[0].cacheConfig.strategy ===\r\n\t\t\t\tthis.freshnessStrategyIdentifier;\r\n\t}\r\n\r\n\t/**\r\n\t * Verifies that the request is part of always display from the cache set\r\n\t * specified by the performance setting in ngsw-config.json.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated performance value for.\r\n\t * @returns {boolean}\r\n\t * A truthy defining if this url is part of the PWA service worker cache\r\n\t * and part of the performance set.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async isPerformanceRequest(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\tconst serviceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tawait this.getServiceWorkerConfigurationDataGroups();\r\n\r\n\t\tconst matchingServiceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tserviceWorkerDefinitions.filter((\r\n\t\t\t\tdataGroup: IServiceWorkerDataGroup) =>\r\n\t\t\t\tdataGroup.urls.filter((urlIdentifier: string) =>\r\n\t\t\t\t\trequest.url.startsWith(urlIdentifier)).length > 0);\r\n\r\n\t\treturn matchingServiceWorkerDefinitions.length > 0\r\n\t\t\t&& matchingServiceWorkerDefinitions[0].cacheConfig.strategy ===\r\n\t\t\t\tthis.performanceStrategyIdentifier;\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers and returns the associated url identifier for this request\r\n\t * found in the service worker configuration.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated configuration identifier for.\r\n\t * @param {string} configurationStrategy\r\n\t * If sent this will search matching configuration strategy types. The\r\n\t * default will search in the performance url set.\r\n\t * @returns {string}\r\n\t * The defined service worker configuration URL for the sent request\r\n\t * and strategy type.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async getRequestConfigurationIdentifier(\r\n\t\trequest: HttpRequest,\r\n\t\tconfigurationStrategy: string = this.performanceStrategyIdentifier):\r\n\t\tPromise\r\n\t{\r\n\t\tconst serviceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tawait this.getServiceWorkerConfigurationDataGroups();\r\n\r\n\t\tconst matchingServiceWorkerDefinitions: IServiceWorkerDataGroup[] =\r\n\t\t\tserviceWorkerDefinitions.filter((\r\n\t\t\t\tdataGroup: IServiceWorkerDataGroup) =>\r\n\t\t\t\tdataGroup.cacheConfig.strategy\r\n\t\t\t\t\t\t=== configurationStrategy);\r\n\r\n\t\tconst matchingUrls: string[] =\r\n\t\t\tmatchingServiceWorkerDefinitions[0].urls.filter(\r\n\t\t\t\t(urlIdentifier: string) =>\r\n\t\t\t\t\trequest.url.startsWith(urlIdentifier));\r\n\r\n\t\treturn matchingUrls.length > 0\r\n\t\t\t? matchingUrls[0]\r\n\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears an existing cached response or partial url responses matching\r\n\t * the sent request value.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to delete the associated response for.\r\n\t * @param {HttpRequest} clearPartials\r\n\t * If sent and true, this will delete any cached responses that match\r\n\t * the url without query parameters. This defaults to false and will\r\n\t * delete only the single cache value if false.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async clearExistingResponse(\r\n\t\trequest: HttpRequest,\r\n\t\tclearPartials: boolean = false): Promise\r\n\t{\r\n\t\t// If caches are not available or insecure, nothing to clear.\r\n\t\tif (this.cachesAreNullOrInsecure() === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentApiCaches: string[] =\r\n\t\t\tawait caches.keys();\r\n\r\n\t\tfor (const currentApiCache of currentApiCaches)\r\n\t\t{\r\n\t\t\tconst cacheToSearch: Cache =\r\n\t\t\t\tawait caches.open(currentApiCache);\r\n\r\n\t\t\tconst urlCacheResponses: readonly Response[] =\r\n\t\t\t\tawait cacheToSearch.matchAll(\r\n\t\t\t\t\tencodeURI(request.url),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Ignores query parameters.\r\n\t\t\t\t\t\tignoreSearch: clearPartials\r\n\t\t\t\t\t});\r\n\r\n\t\t\tfor (const urlCacheResponse of urlCacheResponses)\r\n\t\t\t{\r\n\t\t\t\tthis.storageMap.set(\r\n\t\t\t\t\turlCacheResponse.url,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// No implementation.\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait cacheToSearch.delete(\r\n\t\t\t\t\turlCacheResponse.url);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all existing cached responses starting with the sent\r\n\t * request value.\r\n\t *\r\n\t * @async\r\n\t * @param {string} startsWithUrl\r\n\t * The request url to delete the associated responses for.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic async clearExistingStartsWithResponses(\r\n\t\tstartsWithUrl: string): Promise\r\n\t{\r\n\t\tthis.clearExistingResponse(\r\n\t\t\tnew HttpRequest(\r\n\t\t\t\tAppConstants.httpRequestTypes.get,\r\n\t\t\t\tstartsWithUrl),\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests for null caches and for a possible operation is insecure error\r\n\t * found when using firefox with their setting of\r\n\t * Options -> Privacy and Security ->\r\n\t * 'Delete cookies and site data when Firefox is closed'\r\n\t * without allowing an exclusion to this site\r\n\t * or when opened in a private Firefox window.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * A value that signifies that the caches are insecure or null and\r\n\t * cannot be used for this session.\r\n\t * @memberof CacheService\r\n\t */\r\n\tpublic cachesAreNullOrInsecure(): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNull(navigator.serviceWorker)\r\n\t\t\t|| AnyHelper.isNull(window.caches))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns the matching cached response if it exists.\r\n\t * This will be null if not found.\r\n\t *\r\n\t * @async\r\n\t * @param {HttpRequest} request\r\n\t * The request to lookup the associated response for.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding the cached response of the\r\n\t * cache data row\r\n\t * @memberof CacheService\r\n\t */\r\n\tprivate async lookupMatchingResponse(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\treturn caches.match(encodeURI(request.url));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDisplayComponentDefinition\r\n} from '@shared/implementations/display-components/display-component-definition';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the available methods (business logic) for a\r\n * display component instance.\r\n *\r\n * @export\r\n * @class DisplayComponentInstance\r\n * @implements {DisplayComponentInstance}\r\n */\r\nexport class DisplayComponentInstance implements IDisplayComponentInstance\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component instance.\r\n\t *\r\n\t * @param {DisplayComponentInstance} iDisplayComponentInstance\r\n\t * The display component instance interface to create this new\r\n\t * object from.\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic iDisplayComponentInstance: IDisplayComponentInstance)\r\n\t{\r\n\t\tObject.assign(this, iDisplayComponentInstance);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the display component definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic definitionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic description: string;\r\n\r\n\t/**\r\n\t * Gets or sets array display mode and the associated instances.\r\n\t *\r\n\t * @type {DisplayComponentInstance[]}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic displayArray: DisplayComponentInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display component definition.\r\n\t *\r\n\t * @type {DisplayComponentDefinition}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic displayComponentDefinition: DisplayComponentDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic id: number;\r\n\r\n\t/**\r\n\t * Gets or sets the json data.\r\n\t * This is an implemented instance of the configuration.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic jsonData: string;\r\n\r\n\t/**\r\n\t * Gets or sets the name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic name: string;\r\n\r\n\t/**\r\n\t * Gets or sets the order.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic order: number;\r\n\r\n\t/**\r\n\t * Gets or sets the display component type id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic typeId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the visible value that is calculated when running the\r\n\t * raw display promise of this display component instance.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic visible: boolean;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership public or read allowed value.\r\n\t*\r\n\t* @type {boolean}\r\n\t* @memberof DisplayComponentInstance\r\n\t*/\r\n\tpublic public: boolean;\r\n\r\n\t/**\r\n\t* Gets or sets the ownership security group or alter allowed value.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof DisplayComponentInstance\r\n\t*/\r\n\tpublic ownershipSecurityGroupId: number;\r\n\r\n\t/**\r\n\t* Gets or sets the created by id. This user will have read and alter\r\n\t* permissions.\r\n\t*\r\n\t* @type {number}\r\n\t* @memberof DisplayComponentInstance\r\n\t*/\r\n\tpublic createdById: number;\r\n\r\n\t/**\r\n\t * Returns the initial parameter json data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get jsonInitialParameters(): any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.initialParametersDataKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the interpolation json data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get jsonInterpolationData(): any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.interpolationDataKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the string based boolean display data promise available in\r\n\t * the interpolation data of this instance.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get rawDisplayPromise(): string\r\n\t{\r\n\t\treturn this.jsonInterpolationData.display;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parameter definition json data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get jsonParameterDefinition(): any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.parameterDefinitiontDataKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parameter layout json data object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get jsonParameterLayout(): any\r\n\t{\r\n\t\treturn this.parsedJson[\r\n\t\t\tthis.parameterLayoutDataKey];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the parsed json object from the display component\r\n\t * instance json data.\r\n\t *\r\n\t * @type {any}\r\n\t * The json parsed json data object.\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get parsedJson(): any\r\n\t{\r\n\t\treturn JSON.parse(this.jsonData);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the display component instance title for a data parameter\r\n\t * definition.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tpublic get title(): string\r\n\t{\r\n\t\treturn AnyHelper.isNull(this.jsonParameterDefinition)\r\n\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.jsonParameterDefinition[\r\n\t\t\t\t\tthis.titleDataKey])\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: this.jsonParameterDefinition[\r\n\t\t\t\tthis.titleDataKey\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the key used to find the initial parameter data\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tprivate readonly initialParametersDataKey: string = 'initialParameters';\r\n\r\n\t/**\r\n\t * Gets the key used to find the interpolation data\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tprivate readonly interpolationDataKey: string = 'interpolationData';\r\n\r\n\t/**\r\n\t * Gets the key used to find the parameter definition\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tprivate readonly parameterDefinitiontDataKey: string =\r\n\t\t'parameterDefinition';\r\n\r\n\t/**\r\n\t * Gets the key used to find the parameter layout\r\n\t * from the display component instance json.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tprivate readonly parameterLayoutDataKey: string = 'parameterLayout';\r\n\r\n\t/**\r\n\t * Gets the key used to find the title held in the parameter\r\n\t * definition.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentInstance\r\n\t */\r\n\tprivate readonly titleDataKey: string = 'title';\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentDefinition\r\n} from '@shared/implementations/display-components/display-component-definition';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIStoredVariableDefinition\r\n} from '@shared/interfaces/application-objects/stored-variable-definition';\r\nimport {\r\n\tIDisplayComponentContainer\r\n} from '@shared/interfaces/display-components/display-component-container.interface';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentIdentifier\r\n} from '@shared/interfaces/display-components/display-component-identifier.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIDisplayComponentType\r\n} from '@shared/interfaces/display-components/display-component-type.interface';\r\nimport {\r\n\tBaseStoredVariableService\r\n} from '@shared/services/base/base-stored-variable.service';\r\nimport {\r\n\tfrom,\r\n\tmap\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton class representing a display component service.\r\n *\r\n * @export\r\n * @class DisplayComponentService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class DisplayComponentService\r\n\textends BaseStoredVariableService\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component service.\r\n\t *\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The api service for display component definitions.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The api service for display component instances.\r\n\t * @param {displayComponentTypeApiService}\r\n\t * DisplayComponentTypeApiService\r\n\t * The api service for display component types.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService)\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.storedVariables =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.displayComponentDefinitions,\r\n\t\t\t\t\tapiService: this.displayComponentDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.displayComponentInstances,\r\n\t\t\t\t\tapiService: this.displayComponentInstanceApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.displayComponentTypes,\r\n\t\t\t\t\tapiService: this.displayComponentTypeApiService\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.storedVariables.forEach(\r\n\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tstoredVariable.apiService.displayComponentService = this;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the display component definitions.\r\n\t *\r\n\t * @type {IDisplayComponentDefinitionDto[]}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic displayComponentDefinitions: IDisplayComponentDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display component instances.\r\n\t *\r\n\t * @type {IDisplayComponentInstance[]}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic displayComponentInstances: IDisplayComponentInstance[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display component types.\r\n\t *\r\n\t * @type {IDisplayComponentType[]}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic displayComponentTypes: IDisplayComponentType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the storage variables that will be stored in this\r\n\t * singleton service.\r\n\t *\r\n\t * @type {IStoredVariableDefinition[]}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic storedVariables: IStoredVariableDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets the key for the container key for a display component\r\n\t * name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tprivate readonly stringInterpolationIdentifier: string =\r\n\t\t'${interpolationData.';\r\n\r\n\t/**\r\n\t * Gets the key for the container key for a display component\r\n\t * name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tprivate readonly propertyInterpolationIdentifier: string =\r\n\t\t'#{interpolationData.';\r\n\r\n\t/**\r\n\t * Loads and subscribes to an array of display components used in a display\r\n\t * container.\r\n\t *\r\n\t * @async\r\n\t * @param {string} displayComponentInstanceName\r\n\t * The display component instance name to load and subscribe to.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The page context of this display component.\r\n\t * @returns {Promise}\r\n\t * A populated display component container ready for subscriptions\r\n\t * to child items.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic async populateDisplayComponentContainer(\r\n\t\tdisplayComponentInstanceName: string,\r\n\t\tpageContext: IDynamicComponentContext):\r\n\t\tPromise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst displayComponent: DisplayComponentInstance =\r\n\t\t\tawait this.populateDisplayComponentInstance(\r\n\t\t\t\tdisplayComponentInstanceName,\r\n\t\t\t\tpageContext,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(displayComponent))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst displayContainerSubscription: IDisplayComponentContainer =\r\n\t\t\tthis.subscribeToDisplayComponentContainer(\r\n\t\t\t\tdisplayComponent,\r\n\t\t\t\tdisplayComponent.jsonInterpolationData.displayComponents,\r\n\t\t\t\tpageContext);\r\n\r\n\t\tif (AnyHelper.isNull(displayContainerSubscription.container)\r\n\t\t\t|| AnyHelper.isNull(displayContainerSubscription.components))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn displayContainerSubscription;\r\n\t}\r\n\r\n\t/**\r\n\t * Populates a definition of a display component.\r\n\t *\r\n\t * @async\r\n\t * @param {string} displayComponentTypeName\r\n\t * The name of the display component definition to populate.\r\n\t * @param {string} displayComponentDefinitionComponentName\r\n\t * The name of the display component definition external component for\r\n\t * lookup matches.\r\n\t * @returns {Promise}\r\n\t * An awaitable populated display component definition matching the sent\r\n\t * parameters.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic async populateDisplayComponentDefinition(\r\n\t\tdisplayComponentTypeName: string,\r\n\t\tdisplayComponentDefinitionComponentName: string):\r\n\t\tPromise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst displayComponentType: IDisplayComponentType =\r\n\t\t\tthis.displayComponentTypes.find(\r\n\t\t\t\t(displayType: IDisplayComponentType) =>\r\n\t\t\t\t\tdisplayType.name === displayComponentTypeName);\r\n\t\tconst displayComponentDefinition: IDisplayComponentDefinition =\r\n\t\t\tthis.displayComponentDefinitions.find(\r\n\t\t\t\t(displayDefinition: IDisplayComponentDefinition) =>\r\n\t\t\t\t\tdisplayDefinition.typeId === displayComponentType.id\r\n\t\t\t\t\t\t&& displayDefinition.componentName ===\r\n\t\t\t\t\t\t\tdisplayComponentDefinitionComponentName);\r\n\r\n\t\treturn displayComponentDefinition;\r\n\t}\r\n\r\n\t/**\r\n\t * Populates an instance of a display component.\r\n\t *\r\n\t * @async\r\n\t * @param {string} displayComponentInstanceName\r\n\t * The name of the display component instance to populate.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The page context of this display component.\r\n\t * @param {number} order\r\n\t * If sent, this will signify the order of the display component\r\n\t * in it's associated container. The default value is 1.\r\n\t * @param {IDisplayComponentInstance} iDisplayComponentInstance\r\n\t * Handler that allows for a pre-loaded display component instance.\r\n\t * @param {boolean} returnInstanceIfHidden\r\n\t * If sent and true, this will return the display component instance with a\r\n\t * visible value.\r\n\t * @returns {Promise}\r\n\t * An awaitable populated display component instance ready for\r\n\t * display component factory creation.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic async populateDisplayComponentInstance(\r\n\t\tdisplayComponentInstanceName: string,\r\n\t\tpageContext: IDynamicComponentContext,\r\n\t\torder: number = 1,\r\n\t\tiDisplayComponentInstance: IDisplayComponentInstance = null,\r\n\t\treturnInstanceIfHidden: boolean = false):\r\n\t\tPromise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst displayComponentInstance: DisplayComponentInstance =\r\n\t\t\tawait this.getDisplayComponentInstance(\r\n\t\t\t\tdisplayComponentInstanceName,\r\n\t\t\t\torder,\r\n\t\t\t\tiDisplayComponentInstance);\r\n\r\n\t\tif (AnyHelper.isNull(displayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst interpolatedDisplayComponentInstance: DisplayComponentInstance =\r\n\t\t\tthis.interpolateDisplayComponent(\r\n\t\t\t\tdisplayComponentInstance);\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tinterpolatedDisplayComponentInstance.rawDisplayPromise))\r\n\t\t{\r\n\t\t\treturn interpolatedDisplayComponentInstance;\r\n\t\t}\r\n\r\n\t\tinterpolatedDisplayComponentInstance.visible =\r\n\t\t\tawait StringHelper.transformAndExecuteBooleanPromise(\r\n\t\t\t\tinterpolatedDisplayComponentInstance.rawDisplayPromise,\r\n\t\t\t\tpageContext);\r\n\r\n\t\treturn interpolatedDisplayComponentInstance.visible === false\r\n\t\t\t&& returnInstanceIfHidden === false\r\n\t\t\t? null\r\n\t\t\t: interpolatedDisplayComponentInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Subscribes to an array of display components used in a display\r\n\t * container.\r\n\t *\r\n\t * @async\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance to subscribe to.\r\n\t * @param {IDisplayComponentIdentifier[]} displayComponentArray\r\n\t * The array of defined display component identifiers to populate\r\n\t * as a subscribable response.\r\n\t * @param {IDynamicComponentContext} pageContext\r\n\t * The page context of this display component.\r\n\t * @returns {Promise}\r\n\t * A populated display component container ready for subscriptions\r\n\t * to child items.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic subscribeToDisplayComponentContainer(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance,\r\n\t\tdisplayComponentArray: IDisplayComponentIdentifier[],\r\n\t\tpageContext: IDynamicComponentContext):\r\n\t\tIDisplayComponentContainer\r\n\t{\r\n\t\tif (AnyHelper.isNull(displayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tcontainer: displayComponentInstance,\r\n\t\t\t\tcomponents: from(displayComponentArray)\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tmap(async(\r\n\t\t\t\t\t\t\tdisplayComponent: IDisplayComponentIdentifier,\r\n\t\t\t\t\t\t\tindex: number) =>\r\n\t\t\t\t\t\t\tthis.populateDisplayComponentInstance(\r\n\t\t\t\t\t\t\t\tdisplayComponent.displayComponent,\r\n\t\t\t\t\t\t\t\tpageContext,\r\n\t\t\t\t\t\t\t\tindex)))\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Searches in a filtered set of display component definitions that start\r\n\t * with the supplied display type name for a json definition that has\r\n\t * the supplied property name with the supplied property value.\r\n\t *\r\n\t * @async\r\n\t * @param {string} startsWithDisplayTypeName\r\n\t * The display type that will filter the set of display component\r\n\t * definitions to check for this property value.\r\n\t * @param {string} propertyName\r\n\t * The property name to search for in the json definition.\r\n\t * @param {any} requiredPropertyValue\r\n\t * The property value to find a match for in the json definition.\r\n\t * @returns {Promise}\r\n\t * A filtered display component definition set where all have a property\r\n\t * name matching the supplied property value.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tpublic async getDisplayDefinitionsWithPropertyValue(\r\n\t\tstartsWithDisplayTypeName: string,\r\n\t\tpropertyName: string,\r\n\t\trequiredPropertyValue: any): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst matchingDisplayComponentDefinitions:\r\n\t\t\tDisplayComponentDefinition[] = [];\r\n\t\tconst displayTypes: IDisplayComponentType[] =\r\n\t\t\tthis.displayComponentTypes.filter(\r\n\t\t\t\t(displayType: IDisplayComponentType) =>\r\n\t\t\t\t\tdisplayType.name.indexOf(\r\n\t\t\t\t\t\tstartsWithDisplayTypeName) === 0);\r\n\t\tconst displayTypeIds: number[] =\r\n\t\t\tdisplayTypes.map(\r\n\t\t\t\t(displayType: IDisplayComponentType) =>\r\n\t\t\t\t\tdisplayType.id);\r\n\t\tconst availableReportDefinitions: IDisplayComponentDefinition[] =\r\n\t\t\tthis.displayComponentDefinitions.filter(\r\n\t\t\t\t(displayDefinition: IDisplayComponentDefinition) =>\r\n\t\t\t\t\tdisplayTypeIds.indexOf(\r\n\t\t\t\t\t\tdisplayDefinition.typeId) !== -1);\r\n\r\n\t\tavailableReportDefinitions.forEach(\r\n\t\t\t(definitionInterface: IDisplayComponentDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tconst definition: DisplayComponentDefinition =\r\n\t\t\t\t\tnew DisplayComponentDefinition(definitionInterface);\r\n\t\t\t\tconst mappedValue: any =\r\n\t\t\t\t\tdefinition.jsonDefinition[propertyName];\r\n\t\t\t\tif (!AnyHelper.isNullOrWhitespace(mappedValue)\r\n\t\t\t\t\t&& mappedValue.indexOf('${') === -1\r\n\t\t\t\t\t&& mappedValue === requiredPropertyValue)\r\n\t\t\t\t{\r\n\t\t\t\t\tmatchingDisplayComponentDefinitions\r\n\t\t\t\t\t\t.push(definition);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn matchingDisplayComponentDefinitions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers data via api actions to create an instance of a display\r\n\t * component.\r\n\t *\r\n\t * @async\r\n\t * @param {string} displayComponentInstanceName\r\n\t * The name of the display component instance to populate.\r\n\t * @param {number} order\r\n\t * If sent, this will signify the order of the display component\r\n\t * in it's associated container. The default value is 1.\r\n\t * @param {IDisplayComponentInstance} iDisplayComponentInstance\r\n\t * Handler that allows for a pre-loaded display component instance.\r\n\t * @returns {Promise}\r\n\t * An awaitable display component instance populated via api lookups.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tprivate async getDisplayComponentInstance(\r\n\t\tdisplayComponentInstanceName: string,\r\n\t\torder: number = 1,\r\n\t\tiDisplayComponentInstance: IDisplayComponentInstance = null):\r\n\t\tPromise\r\n\t{\r\n\t\tconst currentDisplayComponentInstance: IDisplayComponentInstance =\r\n\t\t\tAnyHelper.isNull(iDisplayComponentInstance)\r\n\t\t\t\t? this.displayComponentInstances.find(\r\n\t\t\t\t\t(displayInstance: IDisplayComponentInstance) =>\r\n\t\t\t\t\t\tdisplayInstance.name ===\r\n\t\t\t\t\t\t\tdisplayComponentInstanceName)\r\n\t\t\t\t: iDisplayComponentInstance;\r\n\r\n\t\tif (AnyHelper.isNull(currentDisplayComponentInstance))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst displayComponentInstance: DisplayComponentInstance =\r\n\t\t\tnew DisplayComponentInstance(\r\n\t\t\t\tcurrentDisplayComponentInstance);\r\n\t\tdisplayComponentInstance.order = order;\r\n\r\n\t\tconst iDisplayComponentDefinition: IDisplayComponentDefinition =\r\n\t\t\tthis.displayComponentDefinitions.find(\r\n\t\t\t\t(displayDefinition: IDisplayComponentDefinition) =>\r\n\t\t\t\t\tdisplayDefinition.id ===\r\n\t\t\t\t\tdisplayComponentInstance.definitionId);\r\n\r\n\t\tdisplayComponentInstance.displayComponentDefinition =\r\n\t\t\tnew DisplayComponentDefinition(\r\n\t\t\t\tiDisplayComponentDefinition);\r\n\r\n\t\treturn displayComponentInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Interpolates property values between the definition and the instance\r\n\t * interpolation data.\r\n\t *\r\n\t * @param {DisplayComponentInstance} displayComponentInstance\r\n\t * The display component instance ready for data interpolation.\r\n\t * @returns {DisplayComponentInstance}\r\n\t * A display component instance with a mapped and interpolated\r\n\t * definition.\r\n\t * @memberof DisplayComponentService\r\n\t */\r\n\tprivate interpolateDisplayComponent(\r\n\t\tdisplayComponentInstance: DisplayComponentInstance):\r\n\t\tDisplayComponentInstance\r\n\t{\r\n\t\tconst displayComponentDefinition: DisplayComponentDefinition =\r\n\t\t\tdisplayComponentInstance.displayComponentDefinition;\r\n\r\n\t\tObject.keys(displayComponentDefinition.jsonDefinition)\r\n\t\t\t.forEach((propertyName: string) =>\r\n\t\t\t{\r\n\t\t\t\tconst propertyValue: any =\r\n\t\t\t\t\tdisplayComponentDefinition.jsonDefinition[propertyName];\r\n\r\n\t\t\t\t// String interpolation\r\n\t\t\t\tif (AnyHelper.isString(propertyValue) === true\r\n\t\t\t\t\t&& propertyValue.indexOf(\r\n\t\t\t\t\t\tthis.stringInterpolationIdentifier) !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponentDefinition\r\n\t\t\t\t\t\t.setDefinitionProperty(\r\n\t\t\t\t\t\t\tpropertyName,\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tdisplayComponentDefinition\r\n\t\t\t\t\t\t\t\t\t.jsonDefinition[propertyName],\r\n\t\t\t\t\t\t\t\tdisplayComponentInstance\r\n\t\t\t\t\t\t\t\t\t.jsonInterpolationData));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Property Interpolation\r\n\t\t\t\tif (AnyHelper.isString(propertyValue) === true\r\n\t\t\t\t\t&& propertyValue.indexOf(\r\n\t\t\t\t\t\tthis.propertyInterpolationIdentifier\r\n\t\t\t\t\t\t\t+ propertyName) !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst interpolationDataName: string =\r\n\t\t\t\t\t\tpropertyValue\r\n\t\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\t\t/\\#{interpolationData.(.*?)\\}/gm,\r\n\t\t\t\t\t\t\t\t'$1');\r\n\r\n\t\t\t\t\tdisplayComponentDefinition\r\n\t\t\t\t\t\t.setDefinitionProperty(\r\n\t\t\t\t\t\t\tpropertyName,\r\n\t\t\t\t\t\t\tdisplayComponentInstance.jsonInterpolationData[\r\n\t\t\t\t\t\t\t\tinterpolationDataName]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn displayComponentInstance;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tLogApiService\r\n} from '@api/services/logs/log.api.service';\r\nimport {\r\n\tILogEntry\r\n} from '@shared/interfaces/logs/log-entry.interface';\r\nimport {\r\n\tILogMessage\r\n} from '@shared/interfaces/logs/log-message.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * An enum representing the different log levels.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum LogLevel\r\n{\r\n\tNone = 0,\r\n\tError = 1,\r\n\tWarning = 2,\r\n\tInformation = 3,\r\n\tDebug = 4,\r\n\tTrace = 5\r\n}\r\n\r\n/**\r\n * A class representing a Logger Service.\r\n *\r\n * @export\r\n * @class LoggerService\r\n */\r\n@Injectable(\r\n\t{\r\n\t\tprovidedIn: 'root'\r\n\t})\r\nexport class LoggerService\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the LoggerService class.\r\n\t *\r\n\t * @param {NGXLogger} logger An NGXLogger used for logging.\r\n\t * information.\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly logApiService: LogApiService,\r\n\t\tprivate readonly sessionService: SessionService)\r\n\t{\r\n\t\tthis.consoleLogEnabled =\r\n\t\t\tAppConfig.settings.logging.consoleLogEnabled\r\n\t\t\t\t.toLowerCase() === 'true';\r\n\t\tthis.consoleLogLevel =\r\n\t\t\tLogLevel[AppConfig.settings.logging.consoleLogLevel];\r\n\t\tthis.serverLogLevel =\r\n\t\t\tLogLevel[AppConfig.settings.logging.serverLogLevel];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the log level that is sent to the server to be logged.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic serverLogLevel: LogLevel;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether console logging should occur.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoggerService\r\n\t */\r\n\tprivate readonly consoleLogEnabled: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the log level that is used for logging to client logs\r\n\t * such as the console.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoggerService\r\n\t */\r\n\tprivate readonly consoleLogLevel: LogLevel;\r\n\r\n\t/**\r\n\t * Gets the available log messages.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @param {number} [last]\r\n\t * A number representing the last count.\r\n\t * @returns {Promise}\r\n\t * A promise representing the set of available log messages.\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic async getLogMessages(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset?: number,\r\n\t\tlimit?: number,\r\n\t\tlast?: number): Promise\r\n\t{\r\n\t\treturn this.logApiService.getLogMessages(\r\n\t\t\tfilter,\r\n\t\t\torderBy,\r\n\t\t\toffset,\r\n\t\t\tlimit,\r\n\t\t\tlast);\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates a debug message to this.logger.\r\n\t *\r\n\t * @param {string} message The message to log.\r\n\t * @param {any[]} additional Any additional arguments to format into message\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logDebug(\r\n\t\tmessage: string | ILogEntry): void\r\n\t{\r\n\t\tthis.logEntry(\r\n\t\t\tmessage,\r\n\t\t\tLogLevel.Debug);\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates a error message to this.logger.\r\n\t *\r\n\t * @param {string} message The message to log.\r\n\t * @param {any[]} additional Any additional arguments to format into message\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logError(\r\n\t\tmessage: string | ILogEntry): void\r\n\t{\r\n\t\tthis.logEntry(\r\n\t\t\tmessage,\r\n\t\t\tLogLevel.Error);\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates a info message to this.logger.\r\n\t *\r\n\t * @param {string} message The message to log.\r\n\t * @param {any[]} additional Any additional arguments to format into message\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logInformation(\r\n\t\tmessage: string | ILogEntry): void\r\n\t{\r\n\t\tthis.logEntry(\r\n\t\t\tmessage,\r\n\t\t\tLogLevel.Information);\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates a trace message to this.logger.\r\n\t *\r\n\t * @param {string} message The message to log.\r\n\t * @param {any[]} additional Any additional arguments to format into message\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logTrace(\r\n\t\tmessage: string | ILogEntry): void\r\n\t{\r\n\t\tthis.logEntry(\r\n\t\t\tmessage,\r\n\t\t\tLogLevel.Trace);\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates a warn message to this.logger.\r\n\t *\r\n\t * @param {string} message The message to log.\r\n\t * @param {any[]} additional Any additional arguments to format into message\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logWarning(\r\n\t\tmessage: string | ILogEntry): void\r\n\t{\r\n\t\tthis.logEntry(\r\n\t\t\tmessage,\r\n\t\t\tLogLevel.Warning);\r\n\t}\r\n\r\n\t/**\r\n\t * Logs a single entry to the console and to the server.\r\n\t *\r\n\t * @private\r\n\t * @param {(string | ILogEntry)} log - Either an ILogEntry or a string.\r\n\t * If it is a string, then an ILogEntry is creaated and sent to the\r\n\t * appropriate log.\r\n\t *\r\n\t * @param {LogLevel} [level=LogLevel.Debug] - The level the log should\r\n\t * be. If it is not provided then the default is debug.\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tpublic logEntry(\r\n\t\tlog: string | ILogEntry,\r\n\t\tlevel: LogLevel = LogLevel.Debug): void\r\n\t{\r\n\t\tif (typeof log === 'string')\r\n\t\t{\r\n\t\t\tconst logEntry = \r\n\t\t\t\t{\r\n\t\t\t\t\t'level': LogLevel[level],\r\n\t\t\t\t\t'message': log\r\n\t\t\t\t};\r\n\t\t\tthis.sendEntryToConsole(logEntry);\r\n\t\t\tthis.sendEntryToServer(logEntry);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.sendEntryToConsole(log);\r\n\t\t\tthis.sendEntryToServer(log);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sends the @see logEntry to the console.\r\n\t *\r\n\t * @private\r\n\t * @param {ILogEntry} logEntry - The entry to send to the console.\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tprivate sendEntryToConsole(\r\n\t\tlogEntry: ILogEntry): void\r\n\t{\r\n\t\tconst shouldLog: boolean = this.shouldLog(\r\n\t\t\tlogEntry,\r\n\t\t\tthis.consoleLogLevel);\r\n\r\n\t\tif (this.consoleLogEnabled\r\n\t\t\t&& shouldLog)\r\n\t\t{\r\n\t\t\tconst logLevel: LogLevel = LogLevel[logEntry.level];\r\n\t\t\tswitch (logLevel)\r\n\t\t\t{\r\n\t\t\t\tcase LogLevel.Trace:\r\n\t\t\t\t\tconsole.log(logEntry.message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase LogLevel.Debug:\r\n\t\t\t\t\tconsole.log(logEntry.message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase LogLevel.Information:\r\n\t\t\t\t\tconsole.log(logEntry.message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase LogLevel.Warning:\r\n\t\t\t\t\tconsole.warn(logEntry.message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase LogLevel.Error:\r\n\t\t\t\t\tconsole.error(logEntry.message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sends the @see logEntry to the server.\r\n\t *\r\n\t * @private\r\n\t * @param {ILogEntry} logEntry - The entry to send to the server.\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tprivate sendEntryToServer(\r\n\t\tlogEntry: ILogEntry): void\r\n\t{\r\n\t\tlet shouldLog: boolean =\r\n\t\t\tthis.sessionService.isValid\r\n\t\t\t&& this.shouldLog(\r\n\t\t\t\tlogEntry,\r\n\t\t\t\tthis.serverLogLevel);\r\n\r\n\t\tif (!AppConfig.settings.logging.serverLogUrl)\r\n\t\t{\r\n\t\t\tshouldLog = false;\r\n\t\t}\r\n\r\n\t\tif (shouldLog)\r\n\t\t{\r\n\t\t\tthis.logApiService.addLogEntry(logEntry)\r\n\t\t\t\t.catch((error) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.sendEntryToConsole({\r\n\t\t\t\t\t\tlevel: 'Error',\r\n\t\t\t\t\t\tmessage: 'Unable to send log to server.',\r\n\t\t\t\t\t\texception: error.message\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether the @see logEntry should be logged. The decision is\r\n\t * based on the @see configuredLevel and the level of @see logEntry.\r\n\t *\r\n\t * @private\r\n\t * @param {ILogEntry} logEntry - The entry to test\r\n\t * @param {boolean} configuredLogLevel - The level from the config file to\r\n\t * compare against.\r\n\t * @returns {boolean}\r\n\t *\r\n\t * @memberof LoggerService\r\n\t */\r\n\tprivate shouldLog(\r\n\t\tlogEntry: ILogEntry,\r\n\t\tconfiguredLogLevel: LogLevel): boolean\r\n\t{\r\n\t\tconst entryLevel: number = LogLevel[logEntry.level];\r\n\t\tconst shouldLog: boolean = entryLevel <= configuredLogLevel;\r\n\r\n\t\treturn shouldLog;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\n\r\n/**\r\n * A singleton class representing module based data.\r\n *\r\n * @export\r\n * @class ModuleService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ModuleService\r\n{\r\n\t/**\r\n\t * Gets or sets the current module name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ModuleService\r\n\t */\r\n\tpublic name: string;\r\n\r\n\t/**\r\n\t * Gets a formatted name to use when looking up the values for\r\n\t * a module based context menu.\r\n\t *\r\n\t * @returns {string}\r\n\t * A formatted operation group name defining the current module's\r\n\t * set of context menu operations.\r\n\t * @memberof ModuleService\r\n\t */\r\n\tpublic getContextMenuName(): string\r\n\t{\r\n\t\treturn `${StringHelper.toProperCase(this.name)}`\r\n\t\t\t+ AppConstants.OperationIdentifiers.contextMenuModule;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpHeaders\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIPowerBiDashboard\r\n} from '@shared/interfaces/reports/power-bi/power-bi-dashboard.interface';\r\nimport {\r\n\tIPowerBiDataset\r\n} from '@shared/interfaces/reports/power-bi/power-bi-dataset.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tIPowerBiReportLookup\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-lookup.interface';\r\nimport {\r\n\tIPowerBiReport\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report.interface';\r\nimport {\r\n\tIPowerBiTile\r\n} from '@shared/interfaces/reports/power-bi/power-bi-tile.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tIEmbedConfiguration,\r\n\tIVisualEmbedConfiguration,\r\n\tmodels\r\n} from 'powerbi-client';\r\nimport {\r\n\tlastValueFrom,\r\n\tmap\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton class representing a power bi api service.\r\n *\r\n * @export\r\n * @class PowerBiApiService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PowerBiApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a helper class for interacting with\r\n\t * the power bi rest api service.\r\n\t * @see https://docs.microsoft.com/en-us/rest/api/power-bi/reports\r\n\t *\r\n\t * @param {HttpClient} httpClient\r\n\t * The http client used when making rest api calls.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used for workflow action requests.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for handling site layout.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic httpClient: HttpClient,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the current access token promise\r\n\t * if being called in parallel.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic accessTokenPromise: Promise;\r\n\r\n\t/**\r\n\t * Gets the number of minutes prior to the application\r\n\t * access token expiring to call out for new data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic readonly minutesBeforeExpireToRenew: number = 5;\r\n\r\n\t/**\r\n\t * Gets or sets the access token expiry time getter and setter.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic get accessTokenExpiry(): DateTime\r\n\t{\r\n\t\treturn this._accessTokenExpiry;\r\n\t}\r\n\tpublic set accessTokenExpiry(\r\n\t\taccessTokenExpiry: DateTime)\r\n\t{\r\n\t\tthis._accessTokenExpiry = accessTokenExpiry;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the access token expiry time.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate _accessTokenExpiry: DateTime;\r\n\r\n\t/**\r\n\t * Gets or sets the access token variable.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate accessToken: string;\r\n\r\n\t/**\r\n\t * Gets or sets the embed effective identity user name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate embedUsername: string;\r\n\r\n\t/**\r\n\t * Gets the available embed report roles for effective identity tokens.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate readonly embedReportRoles:\r\n\t\t{\r\n\t\t\tdataReader: string;\r\n\t\t} = {\r\n\t\t\tdataReader: 'DataReaders'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the base power bi rest api url for all queries.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate readonly basePowerBiApiUrl: string =\r\n\t\t'https://api.powerbi.com/v1.0/myorg';\r\n\r\n\t/**\r\n\t * Gets the generate token command used when requesting an access token.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate readonly generateTokenIdentifier: string = 'GenerateToken';\r\n\r\n\t/**\r\n\t * Gets a value representing the current expired value\r\n\t * of this services access token.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate get expiredToken(): boolean\r\n\t{\r\n\t\treturn AnyHelper.isNull(this.accessToken)\r\n\t\t\t|| this.accessTokenExpiry <= DateTime.local();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns authentication headers from the sent external\r\n\t * authentication access token.\r\n\t *\r\n\t * @param {string} accessToken\r\n\t * The access token received from external azure authentication.\r\n\t * @returns {HttpHeaders}\r\n\t * The set of authentication headers required to query the power\r\n\t * bi rest api service.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic getAuthenticationHeaders(\r\n\t\taccessToken: string): HttpHeaders\r\n\t{\r\n\t\tlet authenticationHeaders =\r\n\t\t\tnew HttpHeaders();\r\n\t\tauthenticationHeaders =\r\n\t\t\tauthenticationHeaders.set(\r\n\t\t\t\tAppConstants.webApi.authorizationKey,\r\n\t\t\t\t`Bearer ${accessToken}`);\r\n\r\n\t\treturn authenticationHeaders;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns an embed token that can be used for\r\n\t * embed configurations.\r\n\t *\r\n\t * @async\r\n\t * @param {string} reportId\r\n\t * The report id this embed token will grant access to.\r\n\t * @param {string} groupId\r\n\t * The group id this embed token will grant access to.\r\n\t * @param {string} datasetId\r\n\t * The dataset id this embed token will grant access to.\r\n\t * @param {string} reportType\r\n\t * The report type this embed token will grant access to.\r\n\t * This value defaults to a type of report.\r\n\t * @param {string} dashboardTileId\r\n\t * The dashboard tile id this embed token will grant access to.\r\n\t * This value defaults to an empty string.\r\n\t * @param {boolean} viewOnly\r\n\t * If this is false, the report will display in edit mode. This\r\n\t * value defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding the embed token return from the\r\n\t * power bi rest api service matching the server access token.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async generateEmbedToken(\r\n\t\treportId: string,\r\n\t\tgroupId: string,\r\n\t\tdatasetId: string,\r\n\t\tdatasetGroupId: string,\r\n\t\treportType: string = ReportConstants.powerBiObjectTypes.report,\r\n\t\tdashboardTileId: string = AppConstants.empty,\r\n\t\tviewOnly: boolean = true): Promise\r\n\t{\r\n\t\tconst calculatedReportType: string =\r\n\t\t\tthis.getCalculatedReportType(\r\n\t\t\t\treportType);\r\n\r\n\t\tlet url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/groups/`\r\n\t\t\t\t+ `${groupId}/${calculatedReportType}s/`\r\n\t\t\t\t+ `${reportId}/${this.generateTokenIdentifier}`;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(dashboardTileId))\r\n\t\t{\r\n\t\t\turl = url.replace(\r\n\t\t\t\tthis.generateTokenIdentifier,\r\n\t\t\t\t`tiles/${dashboardTileId}/${this.generateTokenIdentifier}`);\r\n\t\t}\r\n\r\n\t\tconst queryParameters: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\taccessLevel:\r\n\t\t\t\t\tviewOnly === true\r\n\t\t\t\t\t\t? AppConstants.viewTypes.view\r\n\t\t\t\t\t\t: AppConstants.viewTypes.edit\r\n\t\t\t};\r\n\r\n\t\tconst dataSets: IPowerBiDataset[] =\r\n\t\t\tawait this.groupLevelData(\r\n\t\t\t\tdatasetGroupId,\r\n\t\t\t\tReportConstants.powerBiObjectTypes.dataset);\r\n\t\tconst dataSet: IPowerBiDataset =\r\n\t\t\tdataSets.filter(\r\n\t\t\t\t(item: IPowerBiDataset) =>\r\n\t\t\t\t\titem.id === datasetId)[0];\r\n\r\n\t\treturn this.generateToken(\r\n\t\t\turl,\r\n\t\t\tqueryParameters,\r\n\t\t\tdataSet);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns an create token that can be used to create a\r\n\t * report from an existing dataset.\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiDataset} dataset\r\n\t * The dataset this create token will grant access to.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding the create token return from the\r\n\t * power bi rest api service matching the server access token.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async generateCreateToken(\r\n\t\tdataSet: IPowerBiDataset): Promise\r\n\t{\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/${this.generateTokenIdentifier}`;\r\n\r\n\t\tconst queryParameters: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\taccessLevel: models.Permissions.ReadWrite,\r\n\t\t\t\tdatasets: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: dataSet.id\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t};\r\n\r\n\t\treturn this.generateToken(\r\n\t\t\turl,\r\n\t\t\tqueryParameters,\r\n\t\t\tdataSet);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns base level data from the rest power bi api\r\n\t * service.\r\n\t *\r\n\t * @async\r\n\t * @param {string} dataType\r\n\t * The url based data type to gather base level power bi data for.\r\n\t * The default value is app.\r\n\t * @returns {Promise(\r\n\t\tdataType: string = 'app'): Promise\r\n\t{\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/${dataType}s`;\r\n\r\n\t\treturn this.getData(\r\n\t\t\turl);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns group level data from the rest power bi api\r\n\t * service.\r\n\t *\r\n\t * @async\r\n\t * @param {string} groupId\r\n\t * The group id to gather group level data for.\r\n\t * @param {string} dataType\r\n\t * The url based data type to gather group level power bi data for.\r\n\t * The default value is report.\r\n\t * @returns {Promise(\r\n\t\tgroupId: string,\r\n\t\tdataType: string = ReportConstants.powerBiObjectTypes.report):\r\n\t\tPromise\r\n\t{\r\n\t\tconst calculatedReportType: string =\r\n\t\t\tthis.getCalculatedReportType(\r\n\t\t\t\tdataType);\r\n\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/groups/`\r\n\t\t\t\t+ `${groupId}/${calculatedReportType}s`;\r\n\r\n\t\treturn this.getData(\r\n\t\t\turl);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns grouped report level data from the rest power bi api\r\n\t * service.\r\n\t *\r\n\t * @async\r\n\t * @param {string} groupId\r\n\t * The group id to gather grouped report level data for.\r\n\t * @param {string} reportId\r\n\t * The report id to gather grouped report level data for.\r\n\t * @param {string} reportType\r\n\t * The url based report type to gather grouped report level power bi data\r\n\t * for.\r\n\t * The default value is report.\r\n\t * @param {string} reportDataType\r\n\t * The url based report data type to gather grouped report level power bi\r\n\t * data for. The default value is page.\r\n\t * @returns {Promise(\r\n\t\tgroupId: string,\r\n\t\treportId: string,\r\n\t\treportType: string = ReportConstants.powerBiObjectTypes.report,\r\n\t\treportDataType: string = ReportConstants.powerBiObjectTypes.page):\r\n\t\tPromise\r\n\t{\r\n\t\tconst calculatedReportType: string =\r\n\t\t\tthis.getCalculatedReportType(\r\n\t\t\t\treportType);\r\n\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/groups/`\r\n\t\t\t\t+ `${groupId}/${calculatedReportType}s/`\r\n\t\t\t\t+ `${reportId}/${reportDataType}s`;\r\n\r\n\t\treturn this.getData(\r\n\t\t\turl);\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns data from the rest power bi api service.\r\n\t *\r\n\t * @async\r\n\t * @param {string} url\r\n\t * The power bi rest api url used to query for data.\r\n\t * @returns {Promise(\r\n\t\turl: string): Promise\r\n\t{\r\n\t\tconst accessToken: string =\r\n\t\t\tawait this.getAccessToken();\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.get(\r\n\t\t\t\turl,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.getAuthenticationHeaders(\r\n\t\t\t\t\t\taccessToken)\r\n\t\t\t\t})\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tmap((response: any) =>\r\n\t\t\t\t\t\tresponse.value.map(\r\n\t\t\t\t\t\t\t(item: TDataType) =>\r\n\t\t\t\t\t\t\t\titem))));\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and populates an external report configuration ready to be\r\n\t * embedded via the power bi embedded service.\r\n\t * @see https://microsoft.github.io/PowerBI-JavaScript/interfaces\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiReportDefinition} componentDefinition\r\n\t * A power bi report definition holding all of the necessary\r\n\t * inputs for configuration creation.\r\n\t * @returns {IEmbedConfiguration}\r\n\t * An awaitable power bi configuration ready for display.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async populatePowerBiEmbedConfiguration(\r\n\t\tcomponentDefinition: IPowerBiReportDefinition):\r\n\t\tPromise\r\n\t{\r\n\t\tconst powerBiBaseUrl: string =\r\n\t\t\tReportConstants.powerBiEmbedEndpoint;\r\n\t\tconst embedToken: any =\r\n\t\t\tawait this.generateEmbedToken(\r\n\t\t\t\tcomponentDefinition.reportId,\r\n\t\t\t\tcomponentDefinition.groupId,\r\n\t\t\t\tcomponentDefinition.datasetId,\r\n\t\t\t\tcomponentDefinition.datasetGroupId,\r\n\t\t\t\tcomponentDefinition.reportType,\r\n\t\t\t\tcomponentDefinition.tileId,\r\n\t\t\t\tcomponentDefinition.viewOnly);\r\n\r\n\t\tconst embedConfiguration: IEmbedConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: componentDefinition.reportId,\r\n\t\t\t\ttype: componentDefinition.reportType,\r\n\t\t\t\ttokenType: models.TokenType.Embed,\r\n\t\t\t\taccessToken: embedToken.token,\r\n\t\t\t\tpermissions: models.Permissions.Read,\r\n\t\t\t\tviewMode: models.ViewMode.View,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tbars: {\r\n\t\t\t\t\t\tactionBar: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpanes: {\r\n\t\t\t\t\t\tbookmarks: {\r\n\t\t\t\t\t\t\texpand: false,\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfilters: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tpageNavigation: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tselection: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsyncSlicers: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tvisualizations: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif (componentDefinition.viewOnly === false)\r\n\t\t{\r\n\t\t\tembedConfiguration.permissions =\r\n\t\t\t\tmodels.Permissions.ReadWrite;\r\n\t\t\tembedConfiguration.viewMode =\r\n\t\t\t\tmodels.ViewMode.Edit;\r\n\r\n\t\t\tembedConfiguration.settings\r\n\t\t\t\t.bars.actionBar.visible = true;\r\n\t\t\tembedConfiguration.settings.panes\r\n\t\t\t\t.bookmarks.visible = true;\r\n\t\t\tembedConfiguration.settings.panes\r\n\t\t\t\t.fields.visible = true;\r\n\t\t\tembedConfiguration.settings.panes\r\n\t\t\t\t.filters.visible = true;\r\n\t\t\tembedConfiguration.settings.panes\r\n\t\t\t\t.pageNavigation.visible = true;\r\n\t\t\tembedConfiguration.settings.panes\r\n\t\t\t\t.visualizations.visible = true;\r\n\t\t}\r\n\r\n\t\tif (this.siteLayoutService.windowWidth\r\n\t\t\t<= AppConstants.layoutBreakpoints.phone)\r\n\t\t{\r\n\t\t\tembedConfiguration.settings.layoutType =\r\n\t\t\t\t(this.siteLayoutService.windowWidth\r\n\t\t\t\t\t< this.siteLayoutService.windowHeight)\r\n\t\t\t\t\t? models.LayoutType.MobilePortrait\r\n\t\t\t\t\t: models.LayoutType.MobileLandscape;\r\n\t\t}\r\n\r\n\t\tlet visualEmbedConfiguration: IVisualEmbedConfiguration;\r\n\r\n\t\tswitch (componentDefinition.reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.visual:\r\n\t\t\t\tvisualEmbedConfiguration =\r\n\t\t\t\t\t embedConfiguration;\r\n\t\t\t\tvisualEmbedConfiguration.pageName =\r\n\t\t\t\t\tcomponentDefinition.pageName;\r\n\t\t\t\tvisualEmbedConfiguration.visualName =\r\n\t\t\t\t\tcomponentDefinition.visualName;\r\n\t\t\t/* falls through */\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.report:\r\n\t\t\t\tconst embedUrl: string =\r\n\t\t\t\t\t`${powerBiBaseUrl}/reportEmbed`\r\n\t\t\t\t\t\t+ `?reportId=${componentDefinition.reportId}`\r\n\t\t\t\t\t\t+ `&groupId=${componentDefinition.groupId}`\r\n\t\t\t\t\t\t+ componentDefinition.reportFilter;\r\n\t\t\t\tif (componentDefinition.reportType ===\r\n\t\t\t\t\tReportConstants.powerBiObjectTypes.visual)\r\n\t\t\t\t{\r\n\t\t\t\t\tvisualEmbedConfiguration.id =\r\n\t\t\t\t\t\tcomponentDefinition.reportId;\r\n\t\t\t\t\tvisualEmbedConfiguration.embedUrl = embedUrl;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tembedConfiguration.id =\r\n\t\t\t\t\t\tcomponentDefinition.reportId;\r\n\t\t\t\t\tembedConfiguration.embedUrl = embedUrl;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.dashboard:\r\n\t\t\t\tembedConfiguration.dashboardId =\r\n\t\t\t\t\tcomponentDefinition.reportId;\r\n\t\t\t\tembedConfiguration.embedUrl =\r\n\t\t\t\t\t`${powerBiBaseUrl}/dashboardEmbed`\r\n\t\t\t\t\t\t+ `?dashboardId=${componentDefinition.reportId}`\r\n\t\t\t\t\t\t+ `&groupId=${componentDefinition.groupId}`\r\n\t\t\t\t\t\t+ componentDefinition.reportFilter;\r\n\t\t\t\tbreak;\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.tile:\r\n\t\t\t\tembedConfiguration.id =\r\n\t\t\t\t\tcomponentDefinition.tileId;\r\n\t\t\t\tembedConfiguration.dashboardId =\r\n\t\t\t\t\tcomponentDefinition.reportId;\r\n\t\t\t\tembedConfiguration.embedUrl =\r\n\t\t\t\t\t`${powerBiBaseUrl}/embed`\r\n\t\t\t\t\t\t+ `?dashboardId=${componentDefinition.reportId}`\r\n\t\t\t\t\t\t+ `&tileid=${componentDefinition.tileId}`\r\n\t\t\t\t\t\t+ `&groupId=${componentDefinition.groupId}`\r\n\t\t\t\t\t\t+ componentDefinition.reportFilter;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`'${componentDefinition.reportType}' embeds require `\r\n\t\t\t\t\t\t+ AppConstants.messages.switchCaseNotHandled);\r\n\t\t}\r\n\r\n\t\treturn AnyHelper.isNull(visualEmbedConfiguration)\r\n\t\t\t? embedConfiguration\r\n\t\t\t: visualEmbedConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and populates an external report configuration ready to be\r\n\t * used to create a new report in the power bi embed service.\r\n\t * @see https://microsoft.github.io/PowerBI-JavaScript/interfaces\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiReportDefinition} componentDefinition\r\n\t * A power bi report definition holding all of the necessary\r\n\t * inputs for a create report configuration.\r\n\t * @param {string} dataset\r\n\t * The dataset this created report will point to.\r\n\t * @returns {IEmbedConfiguration}\r\n\t * An awaitable power bi configuration ready for creating a new report.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async populatePowerBiCreateConfiguration(\r\n\t\tcomponentDefinition: IPowerBiReportDefinition,\r\n\t\tdataSet: IPowerBiDataset): Promise\r\n\t{\r\n\t\tconst embedToken: any =\r\n\t\t\tawait this.generateCreateToken(\r\n\t\t\t\tdataSet);\r\n\r\n\t\tconst createConfiguration: IEmbedConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdatasetId: dataSet.id,\r\n\t\t\t\ttype: componentDefinition.reportType,\r\n\t\t\t\ttokenType: models.TokenType.Embed,\r\n\t\t\t\taccessToken: embedToken.token,\r\n\t\t\t\tembedUrl: dataSet.createReportEmbedURL,\r\n\t\t\t\tpermissions: models.Permissions.ReadWrite,\r\n\t\t\t\tviewMode: models.ViewMode.Edit,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tbars: {\r\n\t\t\t\t\t\tactionBar: {\r\n\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpanes: {\r\n\t\t\t\t\t\tbookmarks: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfilters: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tpageNavigation: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tselection: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsyncSlicers: {\r\n\t\t\t\t\t\t\tvisible: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tvisualizations: {\r\n\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn createConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns a cloned report based on the sent power bi report.\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiReport} report\r\n\t * The power bi report to be cloned.\r\n\t * @param {string} reportGroupId\r\n\t * The report group id of the existing report to be cloned.\r\n\t * @param {string} newReportName\r\n\t * The report name of the new cloned report.\r\n\t * @param {string} newDatasetId\r\n\t * If sent and true, this will clone the report with a new dataset. This\r\n\t * value defaults to null and will keep the existing report's dataset.\r\n\t * @param {string} newGroupId\r\n\t * If sent and true, this will clone the report into an existing group. This\r\n\t * value defaults to null and will keep the existing report's group.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding a cloned power bi report used\r\n\t * to define report and dataset identifiers.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async cloneExistingReport(\r\n\t\treport: IPowerBiReport,\r\n\t\treportGroupId: string,\r\n\t\tnewReportName: string,\r\n\t\tnewDatasetId: string = null,\r\n\t\tnewGroupId: string = null): Promise\r\n\t{\r\n\t\tconst accessToken: string =\r\n\t\t\tawait this.getAccessToken();\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/groups/`\r\n\t\t\t\t+ `${reportGroupId}/`\r\n\t\t\t\t+ `${ReportConstants.powerBiObjectTypes.report}s/`\r\n\t\t\t\t+ `${report.id}/Clone`;\r\n\t\tconst queryParameters: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tname: newReportName\r\n\t\t\t};\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(newDatasetId))\r\n\t\t{\r\n\t\t\tqueryParameters.targetModelId = newDatasetId;\r\n\t\t}\r\n\t\tif (!AnyHelper.isNullOrWhitespace(newGroupId))\r\n\t\t{\r\n\t\t\tqueryParameters.targetWorkspaceId = newGroupId;\r\n\t\t}\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\tqueryParameters,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.getAuthenticationHeaders(\r\n\t\t\t\t\t\taccessToken)\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing report based on the sent power bi report and group\r\n\t * identifiers.\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiReportDefinition} reportDefinition\r\n\t * The power bi report definition to be deleted.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async deleteReport(\r\n\t\treportDefinition: IPowerBiReportDefinition): Promise\r\n\t{\r\n\t\tconst accessToken: string =\r\n\t\t\tawait this.getAccessToken();\r\n\t\tconst powerBiReportLookup: IPowerBiReportLookup =\r\n\t\t\tawait this.lookupReportData(reportDefinition);\r\n\t\tconst url: string =\r\n\t\t\t`${this.basePowerBiApiUrl}/groups/`\r\n\t\t\t\t+ `${reportDefinition.groupId}/`\r\n\t\t\t\t+ `${ReportConstants.powerBiObjectTypes.report}s/`\r\n\t\t\t\t+ `${powerBiReportLookup.reportId}`;\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.delete(\r\n\t\t\t\turl,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.getAuthenticationHeaders(\r\n\t\t\t\t\t\taccessToken)\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Queries and returns report data from the rest power bi api service\r\n\t * based on the send component definitions report name value.\r\n\t *\r\n\t * @async\r\n\t * @param {IPowerBiReportDefinition} componentDefinition\r\n\t * The report definition for this power bi report.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding a power bi report lookup used\r\n\t * to define report and dataset identifiers.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tpublic async lookupReportData(\r\n\t\tcomponentDefinition: IPowerBiReportDefinition):\r\n\t\tPromise\r\n\t{\r\n\t\tconst reportLookup: IPowerBiReportLookup =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\treportId: null,\r\n\t\t\t\tdatasetId: null\r\n\t\t\t};\r\n\r\n\t\tswitch (componentDefinition.reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.visual:\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.report:\r\n\t\t\t\tconst reports: IPowerBiReport[] =\r\n\t\t\t\t\tawait this.groupLevelData(\r\n\t\t\t\t\t\tcomponentDefinition.groupId);\r\n\r\n\t\t\t\tconst apiReport: IPowerBiReport =\r\n\t\t\t\t\treports.filter(\r\n\t\t\t\t\t\t(item: IPowerBiReport) =>\r\n\t\t\t\t\t\t\titem.name\r\n\t\t\t\t\t\t\t\t=== componentDefinition.reportName)[0];\r\n\r\n\t\t\t\treportLookup.reportId = apiReport.id;\r\n\t\t\t\treportLookup.datasetId = apiReport.datasetId;\r\n\t\t\t\tbreak;\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.dashboard:\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.tile:\r\n\t\t\t\tconst dashboards: IPowerBiDashboard[] =\r\n\t\t\t\t\tawait this.groupLevelData(\r\n\t\t\t\t\t\tcomponentDefinition.groupId,\r\n\t\t\t\t\t\tcomponentDefinition.reportType);\r\n\t\t\t\tconst apiDashboard: IPowerBiDashboard =\r\n\t\t\t\t\tdashboards.filter(\r\n\t\t\t\t\t\t(item: IPowerBiDashboard) =>\r\n\t\t\t\t\t\t\titem.displayName\r\n\t\t\t\t\t\t\t\t=== componentDefinition.reportName)[0];\r\n\r\n\t\t\t\treportLookup.reportId = apiDashboard.id;\r\n\r\n\t\t\t\tconst tiles: IPowerBiTile[] =\r\n\t\t\t\t\tawait this.reportLevelData(\r\n\t\t\t\t\t\tcomponentDefinition.groupId,\r\n\t\t\t\t\t\treportLookup.reportId,\r\n\t\t\t\t\t\tReportConstants.powerBiObjectTypes.dashboard,\r\n\t\t\t\t\t\tReportConstants.powerBiObjectTypes.tile);\r\n\r\n\t\t\t\treportLookup.datasetId =\r\n\t\t\t\t\tcomponentDefinition.reportType !==\r\n\t\t\t\t\t\tReportConstants.powerBiObjectTypes.tile\r\n\t\t\t\t\t\t? tiles[0].datasetId\r\n\t\t\t\t\t\t: tiles.filter(\r\n\t\t\t\t\t\t\t(item: IPowerBiTile) =>\r\n\t\t\t\t\t\t\t\titem.id\r\n\t\t\t\t\t\t\t\t=== componentDefinition.tileId)[0].datasetId;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`'${componentDefinition.reportType}' lookups require `\r\n\t\t\t\t\t\t+ AppConstants.messages.switchCaseNotHandled);\r\n\t\t}\r\n\r\n\t\treturn reportLookup;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the expected api report types matching\r\n\t * embed report types when querying for power bi rest api data.\r\n\t *\r\n\t * @async\r\n\t * @param {string} reportType\r\n\t * The embed report type to be calculated into queryable api report tpye.\r\n\t * @returns {string}\r\n\t * A string holding the proper queryable value for the embed report type.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate getCalculatedReportType(\r\n\t\treportType: string): string\r\n\t{\r\n\t\tswitch (reportType)\r\n\t\t{\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.visual:\r\n\t\t\t\treturn ReportConstants.powerBiObjectTypes.report;\r\n\t\t\tcase ReportConstants.powerBiObjectTypes.tile:\r\n\t\t\t\treturn ReportConstants.powerBiObjectTypes.dashboard;\r\n\t\t\tdefault:\r\n\t\t\t\treturn reportType;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current access token for this api service. If this value\r\n\t * has expired a new access token will be returned.\r\n\t *\r\n\t * @returns {string}\r\n\t * A string representing the current azure based access token that can be\r\n\t * used for power bi api service calls and embed configurations.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate async getAccessToken(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.accessToken)\r\n\t\t\t|| this.expiredToken === true)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\t\t// Ensure parallel calls await the same value.\r\n\t\t\tthis.accessTokenPromise =\r\n\t\t\t\tAnyHelper.isNull(this.accessTokenPromise)\r\n\t\t\t\t\t? this.entityInstanceApiService\r\n\t\t\t\t\t\t.getExternalReportConfiguration(\r\n\t\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\t\t\tReportConstants.externalReportTypes.powerBi)\r\n\t\t\t\t\t: this.accessTokenPromise;\r\n\r\n\t\t\tconst castResponse: any =\r\n\t\t\t\t(await this.accessTokenPromise).value.data;\r\n\r\n\t\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tcastResponse.accessToken)\r\n\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tcastResponse.accessTokenExpiry))\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Unable to create an external PowerBI token from '\r\n\t\t\t\t\t\t+ 'the external report configuration action.');\r\n\t\t\t}\r\n\r\n\t\t\tthis.accessToken =\r\n\t\t\t\tcastResponse.accessToken;\r\n\t\t\tthis.accessTokenExpiry =\r\n\t\t\t\tDateHelper.addTimeUnit(\r\n\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\tcastResponse.accessTokenExpiry),\r\n\t\t\t\t\t-this.minutesBeforeExpireToRenew,\r\n\t\t\t\t\tDateHelper.timeUnits.minute);\r\n\t\t\tthis.embedUsername = castResponse.clientEmbedUsername;\r\n\r\n\t\t\treturn this.accessToken;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.accessTokenPromise = null;\r\n\r\n\t\t\treturn this.accessToken;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns an embed token matching the sent url and\r\n\t * query parameters.\r\n\t *\r\n\t * @async\r\n\t * @param {string} url\r\n\t * The url this embed token will grant access to.\r\n\t * @param {any} queryParameters\r\n\t * The query parameters to send in this access token request.\r\n\t * @param {dataSet} dataset\r\n\t * The dataset this embed token will grant access to.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding the embed token return from the\r\n\t * power bi rest api service matching the server access token.\r\n\t * @memberof PowerBiApiService\r\n\t */\r\n\tprivate async generateToken(\r\n\t\turl: string,\r\n\t\tqueryParameters: any,\r\n\t\tdataSet: IPowerBiDataset): Promise\r\n\t{\r\n\t\tconst accessToken: string =\r\n\t\t\tawait this.getAccessToken();\r\n\r\n\t\tif (dataSet.isEffectiveIdentityRequired === true)\r\n\t\t{\r\n\t\t\tqueryParameters.identities = [\r\n\t\t\t\t{\r\n\t\t\t\t\tusername: this.embedUsername,\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tthis.embedReportRoles.dataReader\r\n\t\t\t\t\t],\r\n\t\t\t\t\tdatasets: [\r\n\t\t\t\t\t\tdataSet.id\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn lastValueFrom(\r\n\t\t\tthis.httpClient.post(\r\n\t\t\t\turl,\r\n\t\t\t\tqueryParameters,\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: this.getAuthenticationHeaders(\r\n\t\t\t\t\t\taccessToken)\r\n\t\t\t\t}));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEmbed,\r\n\tIEmbedConfiguration,\r\n\tfactories,\r\n\tservice\r\n} from 'powerbi-client';\r\n\r\n/**\r\n * A singleton class representing a power bi service used to display\r\n * configured power bi elements.\r\n *\r\n * @export\r\n * @class PowerBiService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PowerBiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a helper class for interacting with\r\n\t * the power bi javascript service.\r\n\t * @see https://github.com/Microsoft/PowerBI-JavaScript/wiki\r\n\t *\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic constructor()\r\n\t{\r\n\t\tthis.powerBiCoreService =\r\n\t\t\tnew service.Service(\r\n\t\t\t\tfactories.hpmFactory,\r\n\t\t\t\tfactories.wpmpFactory,\r\n\t\t\t\tfactories.routerFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the singleton core service to be used\r\n\t * in this power bi service.\r\n\t *\r\n\t * @type {pbi.service.Service}\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tprivate readonly powerBiCoreService: service.Service;\r\n\r\n\t/**\r\n\t * Creates a new power bi report.\r\n\t *\r\n\t * @param {HTMLElement} element\r\n\t * The element to create this report in.\r\n\t * @param {IEmbedConfiguration} configuration\r\n\t * The embed configuration to create.\r\n\t * @returns {Embed}\r\n\t * The embedded newly created report.\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic createReport(\r\n\t\telement: HTMLElement,\r\n\t\tconfiguration: IEmbedConfiguration): Embed\r\n\t{\r\n\t\treturn this.powerBiCoreService\r\n\t\t\t.createReport(\r\n\t\t\t\telement,\r\n\t\t\t\tconfiguration);\r\n\t}\r\n\r\n\t/**\r\n\t * Embeds a power bi report. If the element is already in use,\r\n\t * this will reuse the existing element and iframe with\r\n\t * a new report display.\r\n\t *\r\n\t * @param {HTMLElement} element\r\n\t * The element to embed this report in.\r\n\t * @param {IEmbedConfiguration} configuration\r\n\t * The embed configuration to embed.\r\n\t * @returns {Embed}\r\n\t * The embedded report.\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic embed(\r\n\t\telement: HTMLElement,\r\n\t\tconfiguration: IEmbedConfiguration): Embed\r\n\t{\r\n\t\treturn this.powerBiCoreService\r\n\t\t\t.embed(\r\n\t\t\t\telement,\r\n\t\t\t\tconfiguration);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads a new power bi report. If the element is already in use,\r\n\t * this will reuse the existing element and iframe with a\r\n\t * new report display. This is available for phased loads and the\r\n\t * render event will be available following a successful load.\r\n\t *\r\n\t * @param {HTMLElement} element\r\n\t * The element to load this report in.\r\n\t * @param {IEmbedConfiguration} configuration\r\n\t * The embed configuration to load.\r\n\t * @returns {Embed}\r\n\t * The loaded report.\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic load(\r\n\t\telement: HTMLElement,\r\n\t\tconfiguration: IEmbedConfiguration): Embed\r\n\t{\r\n\t\treturn this.powerBiCoreService\r\n\t\t\t.load(\r\n\t\t\t\telement,\r\n\t\t\t\tconfiguration);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of the power bi display associated with\r\n\t * the sent element.\r\n\t *\r\n\t * @param {HTMLElement} element\r\n\t * The element to find a displayed report in.\r\n\t * @returns {Embed}\r\n\t * The embedded object displayed in the sent element.\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic get(\r\n\t\telement: HTMLElement): Embed\r\n\t{\r\n\t\treturn this.powerBiCoreService\r\n\t\t\t.get(element);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets an instance of the power bi display associated with\r\n\t * the sent element.\r\n\t *\r\n\t * @param {HTMLElement} element\r\n\t * The element to reset a displayed report in.\r\n\t * @memberof PowerBiService\r\n\t */\r\n\tpublic reset(\r\n\t\telement: HTMLElement)\r\n\t{\r\n\t\tthis.powerBiCoreService\r\n\t\t\t.reset(element);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIChannelFeed\r\n} from '@shared/interfaces/really-simple-syndication/channel-feed.interface';\r\nimport {\r\n\tIImageFeed\r\n} from '@shared/interfaces/really-simple-syndication/image-feed.interface';\r\nimport {\r\n\tIItemFeed\r\n} from '@shared/interfaces/really-simple-syndication/item-feed.interface';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tXMLParser\r\n} from 'fast-xml-parser';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton class representing the\r\n * really simple sindication feed reader service.\r\n *\r\n * @export\r\n * @class ReallySimpleSyndicationFeedReaderService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ReallySimpleSyndicationFeedReaderService\r\n{\r\n\t/** Initializes a new instance of the\r\n\t * Really Simple Syndication Feed Reader Service.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service to get the feed xml data.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\t public constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or Sets the feed channel content.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate feedChannelContent: any;\r\n\r\n\t/**\r\n\t * Gets or sets the access token expiry time.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate localDataExpiry: DateTime;\r\n\r\n\t/**\r\n\t * Gets the number of minutes prior to the application\r\n\t * access token expiring to call out for new data.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate readonly minutesBeforeRefresh: number =\r\n\t\tAppConstants.time.thirtyMinutes;\r\n\r\n\t/**\r\n\t * Gets a value representing the current expired value\r\n\t * of this services access token.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof PowerBiApiService\r\n\t*/\r\n\tprivate get expiredData(): boolean\r\n\t{\r\n\t\treturn this.localDataExpiry <= DateTime.local();\r\n\t}\r\n\r\n\t/**\r\n\t * An awaitable promise to read the rss feed content.\r\n\t *\r\n\t * @async\r\n\t * @param {string} feedSourceUrl\r\n\t * The feed source url to get the content from.\r\n\t * @returns {Promise}\r\n\t * The feed content translated into a standardized view model.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tpublic async readFeedContent(feedSourceUrl: string): Promise\r\n\t{\r\n\t\tthis.feedChannelContent =\r\n\t\t\tawait this.getLocalData(\r\n\t\t\t\tthis.feedChannelContent,\r\n\t\t\t\tfeedSourceUrl,\r\n\t\t\t\tthis.getReallySimpleSyndicationFeedResponse.bind(this));\r\n\r\n\t\treturn this.convertfeedContentToDataModel(\r\n\t\t\tthis.feedChannelContent);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears any stored variables.\r\n\t * This will allow to get new data\r\n\t * on the next data call.\r\n\t *\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t */\r\n\t public clearStoredVariables(): void\r\n\t {\r\n\t\t this.feedChannelContent = null;\r\n\t }\r\n\r\n\t/**\r\n\t * Gets the weather forecast mapped data object.\r\n\t *\r\n\t * @param {any} cachedData\r\n\t * The local cached data.\r\n\t * @param {string} feedSourceUrl\r\n\t * The feed source url.\r\n\t * @param {() => Promise} getFreshData\r\n\t * Gets new data for the local cache.\r\n\t * @returns {Promise}\r\n\t * The local data either fresh or cached.\r\n\t * If data is null or the time has expired then\r\n\t * it will get fresh data, otherwise will use cached.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate async getLocalData(\r\n\t\tcachedData: any,\r\n\t\tfeedSourceUrl: string,\r\n\t\tgetFreshData: (feedSourceUrl: string) =>\r\n\t\t\tPromise): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(cachedData)\r\n\t\t\t|| this.expiredData === true)\r\n\t\t{\r\n\t\t\tthis.localDataExpiry =\r\n\t\t\t\tDateHelper.addTimeUnit(\r\n\t\t\t\t\tDateTime.local(),\r\n\t\t\t\t\tthis.minutesBeforeRefresh,\r\n\t\t\t\t\tDateHelper.timeUnits.minute);\r\n\r\n\t\t\treturn Promise.resolve(getFreshData(feedSourceUrl));\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn cachedData;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts the rss feed data response into an\r\n\t * standardized and generic view model.\r\n\t *\r\n\t * @param {any} feedChannelContent\r\n\t * This is the actual rss feed content response.\r\n\t * @returns {IChannelFeed}\r\n\t * The feed content converted into a standardized view model.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t */\r\n\tprivate convertfeedContentToDataModel(\r\n\t\tfeedChannelContent: any): IChannelFeed\r\n\t{\r\n\t\tconst feedItems: IItemFeed[] =\r\n\t\t\tthis.getFeedItems(feedChannelContent.item);\r\n\r\n\t\tconst channelFeed: IChannelFeed =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttitle: feedChannelContent.title,\r\n\t\t\t\tdescription: feedChannelContent.description,\r\n\t\t\t\timage:\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\theight: feedChannelContent.image.height,\r\n\t\t\t\t\twidth: feedChannelContent.image.width,\r\n\t\t\t\t\tlink: feedChannelContent.image.link,\r\n\t\t\t\t\ttitle: feedChannelContent.image.title,\r\n\t\t\t\t\turl: feedChannelContent.image.url\r\n\t\t\t\t},\r\n\t\t\t\titems: feedItems,\r\n\t\t\t\tmainLink: feedChannelContent.link,\r\n\t\t\t\tupdateFrequency: feedChannelContent['sy:updateFrequency'],\r\n\t\t\t\tupdatePeriod: feedChannelContent['sy:updatePeriod'],\r\n\t\t\t\tgenerator: feedChannelContent.generator,\r\n\t\t\t\tlastBuildDate: feedChannelContent.lastBuildDate,\r\n\t\t\t\tlanguage: feedChannelContent.language\r\n\t\t\t};\r\n\r\n\t\treturn channelFeed;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the standardized feed items.\r\n\t *\r\n\t * @param {any[]} feedItems\r\n\t * The feed items from the rss response.\r\n\t * @returns {IItemFeed[]}\r\n\t * The standardized feed items.\r\n\t * @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate getFeedItems(feedItems: any[]): IItemFeed[]\r\n\t{\r\n\t\tconst channelFeedItems: IItemFeed[] = [];\r\n\t\tfor (const feedItem of feedItems)\r\n\t\t{\r\n\t\t\tchannelFeedItems.push({\r\n\t\t\t\ttitle: feedItem.title,\r\n\t\t\t\tdescription: feedItem.description,\r\n\t\t\t\tlink: feedItem.link,\r\n\t\t\t\tpublicationDate: feedItem.pubDate,\r\n\t\t\t\tcategorizationTaxonomy: feedItem.category,\r\n\t\t\t\tgloballyUniqueid: feedItem.guid\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn channelFeedItems;\r\n\t}\r\n\r\n\t/**\r\n\t* Gets the really simple syndication feed response data.\r\n\t*\r\n\t* @async\r\n\t* @param {string} feedSourceUrl\r\n\t* This is the rss feed source url used to get the data response.\r\n\t* @returns {Promise}\r\n\t* The feed reponse data.\r\n\t* @memberof ReallySimpleSyndicationFeedReaderService\r\n\t*/\r\n\tprivate async getReallySimpleSyndicationFeedResponse(\r\n\t\tfeedSourceUrl: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.systems;\r\n\t\tconst syndicationFeed: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.getReallySimpleSyndicationFeed(\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\tfeedSourceUrl);\r\n\t\tconst xmlContentOutput =\r\n\t\t\tnew XMLParser().parse(syndicationFeed.value.data.feed);\r\n\r\n\t\treturn xmlContentOutput.rss.channel;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tApiTokenLookup\r\n} from '@api/api-token.lookup';\r\nimport {\r\n\tBaseApiService\r\n} from '@api/services/base/base.api.service';\r\nimport {\r\n\tClaimsTokenLookup\r\n} from '@claims/claims.token-lookup';\r\nimport {\r\n\tCommissionsHelper\r\n} from '@insurance/helpers/commissions..helper';\r\nimport {\r\n\tInsuranceHelper\r\n} from '@insurance/helpers/insurance.helper';\r\nimport {\r\n\tInsuranceTokenLookup\r\n} from '@insurance/insurance.token-lookup';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tChartHelper\r\n} from '@shared/helpers/chart.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tRuleHelper\r\n} from '@shared/helpers/rule.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSharedTokenLookup\r\n} from '@shared/shared-token.lookup';\r\nimport {\r\n\tWorkItemTokenLookup\r\n} from '@workItems/work-item-token.lookup';\r\n\r\n/**\r\n * A singleton service representing the ability to resolve providers\r\n * in the application by name.\r\n *\r\n * @export\r\n * @class ResolverService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ResolverService\r\n{\r\n\t/**\r\n\t * Creates an instance of a resolver service.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router available from the resolver service.\r\n\t * @param {Injector} injector\r\n\t * The injector used to instantiate and resolve dynamic providers.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tprivate readonly injector: Injector)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the list of defined and allowed helper classes available\r\n\t * in this resolver service.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic readonly helperClasses:\r\n\t{\r\n\t\tanyHelper: string;\r\n\t\tapiFilterHelper: string;\r\n\t\tapiHelper: string;\r\n\t\tchartHelper: string;\r\n\t\tdateHelper: string;\r\n\t\tformlyHelper: string;\r\n\t\tinsuranceHelper: string;\r\n\t\tobjectArrayHelper: string;\r\n\t\tcommissionsHelper: string;\r\n\t\tobjectHelper: string;\r\n\t\truleHelper: string;\r\n\t\tstringHelper: string;\r\n\t\teventHelper: string;\r\n\t} = {\r\n\t\t\tanyHelper: 'AnyHelper',\r\n\t\t\tapiFilterHelper: 'ApiFilterHelper',\r\n\t\t\tapiHelper: 'ApiHelper',\r\n\t\t\tchartHelper: 'ChartHelper',\r\n\t\t\tdateHelper: 'DateHelper',\r\n\t\t\tformlyHelper: 'FormlyHelper',\r\n\t\t\tinsuranceHelper: 'InsuranceHelper',\r\n\t\t\tobjectArrayHelper: 'ObjectArrayHelper',\r\n\t\t\tcommissionsHelper: 'CommissionsHelper',\r\n\t\t\tobjectHelper: 'ObjectHelper',\r\n\t\t\truleHelper: 'RuleHelper',\r\n\t\t\tstringHelper: 'StringHelper',\r\n\t\t\teventHelper: 'EventHelper'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Resolves api services via the api service name.\r\n\t *\r\n\t * @param {string} providerName\r\n\t * The api service to resolve.\r\n\t * @returns {BaseApiService}\r\n\t * An instance of the requested api service.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveApiService(\r\n\t\tproviderName: string): BaseApiService\r\n\t{\r\n\t\treturn this.injector.get(\r\n\t\t\tApiTokenLookup.tokens[providerName]);\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves a common router for use in the resolver.\r\n\t *\r\n\t * @returns {Router}\r\n\t * The router to be used for resolver based navigation.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveRouter(): Router\r\n\t{\r\n\t\treturn this.router;\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves shared classes via the shared token lookup name.\r\n\t *\r\n\t * @param {string} providerName\r\n\t * The shared class name to resolve.\r\n\t * @returns {any}\r\n\t * An instance of the requested shared class.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveShared(\r\n\t\tproviderName: string): any\r\n\t{\r\n\t\treturn this.injector.get(\r\n\t\t\tSharedTokenLookup.tokens[providerName]);\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves static helper methods via method name and\r\n\t * sent parameters.\r\n\t *\r\n\t * @param {string} helperName\r\n\t * The helper class to use.\r\n\t * @param {string} helperMethod\r\n\t * The method to call.\r\n\t * @param {any[]} helperParameters\r\n\t * The parameters to send to this method.\r\n\t * @returns {any}\r\n\t * The return value of the called static method.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveStatic(\r\n\t\thelperName: string,\r\n\t\thelperMethod: string,\r\n\t\thelperParameters: any[]): any\r\n\t{\r\n\t\tswitch (helperName)\r\n\t\t{\r\n\t\t\tcase this.helperClasses.anyHelper:\r\n\t\t\t\treturn AnyHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.apiFilterHelper:\r\n\t\t\t\treturn ApiFilterHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.apiHelper:\r\n\t\t\t\treturn ApiHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.chartHelper:\r\n\t\t\t\treturn ChartHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.dateHelper:\r\n\t\t\t\treturn DateHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.formlyHelper:\r\n\t\t\t\treturn FormlyHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.insuranceHelper:\r\n\t\t\t\treturn InsuranceHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.commissionsHelper:\r\n\t\t\t\treturn CommissionsHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.objectHelper:\r\n\t\t\t\treturn ObjectHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.objectArrayHelper:\r\n\t\t\t\treturn ObjectArrayHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.ruleHelper:\r\n\t\t\t\treturn RuleHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.stringHelper:\r\n\t\t\t\treturn StringHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tcase this.helperClasses.eventHelper:\r\n\t\t\t\treturn EventHelper[helperMethod](\r\n\t\t\t\t\t...helperParameters);\r\n\t\t\tdefault: throw new Error(\r\n\t\t\t\t`The ${helperName} is not yet available via the `\r\n\t\t\t\t\t+ 'resolver service.');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves an activity.\r\n\t *\r\n\t * @async\r\n\t * @param {Promise} activity\r\n\t * The activity to handle by the Activity Service.\r\n\t * @param {string} pendingMessage\r\n\t * The pending message.\r\n\t * @param {string} completeMessage\r\n\t * The complete message.\r\n\t * @param {string} successDetails\r\n\t * The success details.\r\n\t * @param {string} failureDetails\r\n\t * The failure details.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic async resolveActivity(\r\n\t\tactivity: Promise,\r\n\t\tpendingMessage: string,\r\n\t\tcompleteMessage: string,\r\n\t\tsuccessDetails: string,\r\n\t\tfailureDetails: string,\r\n\t\tthrowException: boolean = false): Promise\r\n\t{\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tactivity,\r\n\t\t\t\t`${pendingMessage}`,\r\n\t\t\t\t`${completeMessage}`,\r\n\t\t\t\t`${successDetails}`,\r\n\t\t\t\t`${failureDetails}`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\tthrowException);\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves the current user value as an IUser.\r\n\t *\r\n\t * @returns {IUser}\r\n\t * The current application IUser.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveCurrentUser(): IUser\r\n\t{\r\n\t\treturn this.injector.get(SessionService).user;\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves insurance services via the service name.\r\n\t *\r\n\t * @param {string} providerName\r\n\t * The insurance service to resolve.\r\n\t * @returns {any}\r\n\t * An instance of the requested insurance class.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveInsurance(\r\n\t\tproviderName: string): any\r\n\t{\r\n\t\treturn this.injector.get(\r\n\t\t\tInsuranceTokenLookup.tokens[providerName]);\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves claims services via the service name.\r\n\t *\r\n\t * @param {string} providerName\r\n\t * The claims service to resolve.\r\n\t * @returns {any}\r\n\t * An instance of the requested claims class.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveClaims(\r\n\t\tproviderName: string): any\r\n\t{\r\n\t\treturn this.injector.get(\r\n\t\t\tClaimsTokenLookup.tokens[providerName]);\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves work item services via the service name.\r\n\t *\r\n\t * @param {string} providerName\r\n\t * The work item service to resolve.\r\n\t * @returns {any}\r\n\t * An instance of the requested work item class.\r\n\t * @memberof ResolverService\r\n\t */\r\n\tpublic resolveWorkItems(\r\n\t\tproviderName: string): any\r\n\t{\r\n\t\treturn this.injector.get(\r\n\t\t\tWorkItemTokenLookup.tokens[providerName]);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tValidationErrors\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tFormlyFieldConfig,\r\n\tFormlyFieldProps\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRulePresentationDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-definition.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tRuleTokenLookup\r\n} from '@shared/rule-token.lookup';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/**\r\n * A singleton service representing shared logic for decorating presentation\r\n * rules.\r\n *\r\n * @export\r\n * @class RulePresentationService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RulePresentationService\r\n{\r\n\t/**\r\n\t * Creates an instance of a rule presentation service.\r\n\t *\r\n\t * @param {Injector} injector\r\n\t * The injector that can be used for to instantiate provided instances.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used for data loads in this service.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic injector: Injector,\r\n\t\tpublic ruleService: RuleService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the event types supported for the rule presentation service.\r\n\t *\r\n\t * @type {\r\n\t *\tonChange: string;\r\n\t *\tonChangeValidation: string;\r\n\t *\tonChangeValidationAsync: string;\r\n\t *\tOnFormDisplay: string;\r\n\t * }\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tpublic readonly eventTypes:\r\n\t{\r\n\t\tonChange: string;\r\n\t\tonChangeValidation: string;\r\n\t\tonChangeValidationAsync: string;\r\n\t\tOnFormDisplay: string;\r\n\t} = {\r\n\t\t\tonChange: 'OnChange',\r\n\t\t\tonChangeValidation: 'OnChangeValidation',\r\n\t\t\tonChangeValidationAsync: 'OnChangeValidationAsync',\r\n\t\t\tOnFormDisplay: 'OnFormDisplay'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the identifier used for the template options disabled expression\r\n\t * property name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate readonly propertyDisabledIdentifier: string =\r\n\t\t'props.disabled';\r\n\r\n\t/**\r\n\t * Gets the identifier used for overall form presentation logic.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate readonly formIdentifier: string = 'form';\r\n\r\n\t/**\r\n\t * Based on the send entity type and entity version, this will decorate\r\n\t * the formly entity layout with presentation logic matching the\r\n\t * presentation definition per field.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityTypeId\r\n\t * The entity type for entity instance rule setups.\r\n\t * @param {number} entityVersionId\r\n\t * The entity version for entity instance rule setups.\r\n\t * @param {FormlyFieldConfig[]} formlyLayout\r\n\t * The formly layout ready for entity instance rule presentation setups.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {Promise}\r\n\t * The decorated formly field config array with instantiated rule\r\n\t * presentation logic.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tpublic async applyEntityInstanceRules(\r\n\t\tentityTypeId: number,\r\n\t\tentityVersionId: number,\r\n\t\tformlyLayout: FormlyFieldConfig[],\r\n\t\tcontext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\tif (formlyLayout.length === 0)\r\n\t\t{\r\n\t\t\treturn formlyLayout;\r\n\t\t}\r\n\r\n\t\tconst rulePresentationDefinitions: IRulePresentationDefinition[] =\r\n\t\t\tawait this.ruleService.getPopulatedRulePresentationDefinitions(\r\n\t\t\t\tentityTypeId,\r\n\t\t\t\tentityVersionId);\r\n\r\n\t\tif (rulePresentationDefinitions.length === 0)\r\n\t\t{\r\n\t\t\treturn formlyLayout;\r\n\t\t}\r\n\r\n\t\tlet formattedLayout: FormlyFieldConfig[] = formlyLayout;\r\n\t\tconst formRules: IRulePresentationDefinition[] =\r\n\t\t\trulePresentationDefinitions.filter(\r\n\t\t\t\t(rulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t\t\trulePresentationDefinition.dataKey === this.formIdentifier);\r\n\r\n\t\tif (formRules.length > 0)\r\n\t\t{\r\n\t\t\tformattedLayout =\r\n\t\t\t\tthis.mapForm(\r\n\t\t\t\t\tformattedLayout,\r\n\t\t\t\t\tformRules,\r\n\t\t\t\t\tcontext);\r\n\t\t}\r\n\r\n\t\treturn formattedLayout.map(\r\n\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tthis.mapField(\r\n\t\t\t\t\trulePresentationDefinitions,\r\n\t\t\t\t\tfield,\r\n\t\t\t\t\tcontext);\r\n\r\n\t\t\t\treturn field;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will add an on change method that will\r\n\t * notify the set of rule violations that this violation may have altered\r\n\t * due to client entered values.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to add the on change notification event to.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tpublic decorateAssociatedRuleChangeNotification(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\tconst updatedChangeFunction: Function =\r\n\t\t\tAnyHelper.isNull(field.props.change)\r\n\t\t\t\t? (_field: FormlyFieldConfig,\r\n\t\t\t\t\t_event: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\t// Do nothing.\r\n\t\t\t\t}\r\n\t\t\t\t: field.props.change;\r\n\r\n\t\tfield.props.change =\r\n\t\t\t(changeField: FormlyFieldConfig,\r\n\t\t\t\tevent: any) =>\r\n\t\t\t{\r\n\t\t\t\tupdatedChangeFunction(\r\n\t\t\t\t\tchangeField,\r\n\t\t\t\t\tevent);\r\n\r\n\t\t\t\tif (AnyHelper.isNull(event))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst associatedRules: string =\r\n\t\t\t\t\tchangeField.props.attributes[\r\n\t\t\t\t\t\tFormlyConstants.attributeKeys.associatedRules].toString();\r\n\t\t\t\tconst associatedRuleDefinitions: string[] =\r\n\t\t\t\t\tassociatedRules.split(\r\n\t\t\t\t\t\tAppConstants.characters.comma);\r\n\r\n\t\t\t\t// Currently not used\r\n\t\t\t\t// Can become a private method when implemented.\r\n\t\t\t\t// This is the likely method however of notifying the\r\n\t\t\t\t// rules drawer of possible rule changes.\r\n\t\t\t\tconsole.log(\r\n\t\t\t\t\t'Associated Rules Attribute Notification Available',\r\n\t\t\t\t\tassociatedRuleDefinitions);\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Maps rules meant to be ran against the entire form.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} formlyLayout\r\n\t * The formly layout that should be altered based on form based presentation\r\n\t * definitions.\r\n\t * @param {IRulePresentationDefinition[]} formRulePresentationDefinitions\r\n\t * The set of rule presentation definitions pointing to the form.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {FormlyFieldConfig[]}\r\n\t * The set of formly field configs after being altered to handled the form\r\n\t * based presentation logic.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tpublic mapForm(\r\n\t\tformlyLayout: FormlyFieldConfig[],\r\n\t\tformRulePresentationDefinitions: IRulePresentationDefinition[],\r\n\t\tcontext: IDynamicComponentContext): FormlyFieldConfig[]\r\n\t{\r\n\t\tlet jsonData: any;\r\n\t\tformRulePresentationDefinitions.forEach(\r\n\t\t\t(formRulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tif (formRulePresentationDefinition.eventType ===\r\n\t\t\t\t\tthis.eventTypes.OnFormDisplay)\r\n\t\t\t\t{\r\n\t\t\t\t\tjsonData =\r\n\t\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\t\tformRulePresentationDefinition,\r\n\t\t\t\t\t\t\tthis.eventTypes.OnFormDisplay,\r\n\t\t\t\t\t\t\t'Form Logic');\r\n\r\n\t\t\t\t\tconst disabled: boolean =\r\n\t\t\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tjsonData.function,\r\n\t\t\t\t\t\t\t\tcontext),\r\n\t\t\t\t\t\t\tcontext)();\r\n\r\n\t\t\t\t\tif (disabled === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\t\t\t\tformlyLayout,\r\n\t\t\t\t\t\t\tdisabled);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn formlyLayout;\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively maps children into a converted formly rule field.\r\n\t *\r\n\t * @param {IRulePresentationDefinition[]} matchingRulePresentationDefinitions\r\n\t * The set of rule presentation definitions associated with this field.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with rule presentation definitions.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate mapField(\r\n\t\trulePresentationDefinitions: IRulePresentationDefinition[],\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcontext: IDynamicComponentContext): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(field.key)\r\n\t\t\t&& !FormlyHelper.isTabWrapper(field))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.convertToRuleField(\r\n\t\t\tthis.getMatchingRulePresentationDefinitions(\r\n\t\t\t\trulePresentationDefinitions,\r\n\t\t\t\tfield),\r\n\t\t\tfield,\r\n\t\t\tcontext);\r\n\r\n\t\tconst fieldGroups: any[] =\r\n\t\t\t(field.fieldGroup || [])\r\n\t\t\t\t.concat((field.fieldArray)?.fieldGroup || []);\r\n\t\tfieldGroups.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tthis.convertToRuleField(\r\n\t\t\t\t\tthis.getMatchingRulePresentationDefinitions(\r\n\t\t\t\t\t\trulePresentationDefinitions,\r\n\t\t\t\t\t\tfieldGroup),\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tcontext);\r\n\r\n\t\t\t\tthis.mapField(\r\n\t\t\t\t\trulePresentationDefinitions,\r\n\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\tcontext);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will apply rule presentation definitions\r\n\t * matching the field.\r\n\t *\r\n\t * @param {IRulePresentationDefinition[]} matchingRulePresentationDefinitions\r\n\t * The set of rule presentation definitions associated with this field.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with rule presentation definitions.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {FormlyFieldConfig}\r\n\t * A decorated formly field configuration containing applied rule\r\n\t * presentation definitions.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate convertToRuleField(\r\n\t\tmatchingRulePresentationDefinitions: IRulePresentationDefinition[],\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tcontext: IDynamicComponentContext): FormlyFieldConfig\r\n\t{\r\n\t\tmatchingRulePresentationDefinitions.forEach(\r\n\t\t\t(rulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t{\r\n\t\t\t\t// Existing change function.\r\n\t\t\t\tconst existingChangeFunction: Function =\r\n\t\t\t\t\tAnyHelper.isNull(field.props?.change)\r\n\t\t\t\t\t\t? (_field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t_event: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Do nothing.\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t: field.props.change;\r\n\r\n\t\t\t\t// Existing disable function.\r\n\t\t\t\tfield.expressions =\r\n\t\t\t\t\tfield.expressions || {};\r\n\t\t\t\tconst existingDisableFunction: any =\r\n\t\t\t\t\tAnyHelper.isNull(field.expressions[\r\n\t\t\t\t\t\tthis.propertyDisabledIdentifier])\r\n\t\t\t\t\t\t? (_field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\tfalse\r\n\t\t\t\t\t\t: field.expressions[\r\n\t\t\t\t\t\t\tthis.propertyDisabledIdentifier];\r\n\r\n\t\t\t\t// Existing validators.\r\n\t\t\t\tfield.validators = field.validators || {};\r\n\t\t\t\tfield.asyncValidators = field.asyncValidators || {};\r\n\r\n\t\t\t\tswitch (\r\n\t\t\t\t\trulePresentationDefinition.eventType)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase this.eventTypes.onChange:\r\n\t\t\t\t\t\tthis.decorateOnChangeRule(\r\n\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\texistingChangeFunction,\r\n\t\t\t\t\t\t\texistingDisableFunction);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase this.eventTypes.onChangeValidation:\r\n\t\t\t\t\t\tthis.decorateOnChangeValidationRule(\r\n\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\tcontext);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase this.eventTypes.onChangeValidationAsync:\r\n\t\t\t\t\t\tthis.decorateOnChangeValidationAsyncRule(\r\n\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\tcontext);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t\t`${rulePresentationDefinition.eventType} `\r\n\t\t\t\t\t\t\t\t+ 'requires a convert to rule switch case.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.decorateAssociatedRuleDefinitionAttribute(\r\n\t\t\t\t\tfield,\r\n\t\t\t\t\trulePresentationDefinition);\r\n\t\t\t});\r\n\r\n\t\treturn field;\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will decorate the on change method to\r\n\t * match the sent rule presentation definition as well as keeping any\r\n\t * existing behaviors.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with the rule presentation definition.\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to add to this field.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @param {Function} existingChangeFunction\r\n\t * The existing change function, this function will be called prior to\r\n\t * calling the new on change rule.\r\n\t * @param {Function} existingDisableFunction\r\n\t * The existing disabled function, this function will be called prior to\r\n\t * calling the new on change disable rule.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate decorateOnChangeRule(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tcontext: IDynamicComponentContext,\r\n\t\texistingChangeFunction: Function,\r\n\t\texistingDisableFunction: Function): void\r\n\t{\r\n\t\tconst classReference: string =\r\n\t\t\trulePresentationDefinition\r\n\t\t\t\t.rulePresentationLogicDefinition\r\n\t\t\t\t.classReference;\r\n\t\tlet jsonData: any;\r\n\r\n\t\tswitch (classReference)\r\n\t\t{\r\n\t\t\tcase 'Associate':\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation,\r\n\t\t\t\t\t\tclassReference);\r\n\r\n\t\t\t\tfield.props.change =\r\n\t\t\t\t\t(changeField: FormlyFieldConfig,\r\n\t\t\t\t\t\tevent: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texistingChangeFunction(\r\n\t\t\t\t\t\t\tchangeField,\r\n\t\t\t\t\t\t\tevent);\r\n\r\n\t\t\t\t\t\tif (AnyHelper.isNull(event))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tjsonData.associatedDataKeys\r\n\t\t\t\t\t\t\t\t\t.forEach(\r\n\t\t\t\t\t\t\t\t\t\t(dataKey: string) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tconst associatedFields: FormlyFieldConfig[] =\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontext.source)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.getMatchingFieldConfigurations(dataKey);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tfor (const associatedField of associatedFields)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tassociatedField?.formControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.updateValueAndValidity();\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tassociatedField.props\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.change))\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tassociatedField.props\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.change(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tassociatedField,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Disable':\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation,\r\n\t\t\t\t\t\tclassReference);\r\n\r\n\t\t\t\tfield.expressions =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...field.expressions,\r\n\t\t\t\t\t\t'props.disabled':\r\n\t\t\t\t\t\t\t(disableField: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst disabled: boolean =\r\n\t\t\t\t\t\t\t\t\tFunction(\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t\t\t\t.field,\r\n\t\t\t\t\t\t\t\t\t\tjsonData.function)\r\n\t\t\t\t\t\t\t\t\t\t.bind(context)(\r\n\t\t\t\t\t\t\t\t\t\t\tdisableField)();\r\n\r\n\t\t\t\t\t\t\t\tconst clearOnDisableValue: any =\r\n\t\t\t\t\t\t\t\t\tjsonData.clearOnDisableValue\r\n\t\t\t\t\t\t\t\t\t\t?? AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\tif (disabled === true\r\n\t\t\t\t\t\t\t\t\t&& jsonData.clearOnDisable === true\r\n\t\t\t\t\t\t\t\t\t&& disableField.formControl.value\r\n\t\t\t\t\t\t\t\t\t\t!== clearOnDisableValue)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdisableField.formControl\r\n\t\t\t\t\t\t\t\t\t\t.setValue(clearOnDisableValue);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn existingDisableFunction(\r\n\t\t\t\t\t\t\t\t\tdisableField)\r\n\t\t\t\t\t\t\t\t\t|| disabled;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tif (rulePresentationDefinition.jsonData === undefined\r\n\t\t\t\t\t|| rulePresentationDefinition.jsonData === null)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation);\r\n\r\n\t\t\t\tif (jsonData.function === undefined\r\n\t\t\t\t\t|| jsonData.function === null)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfield.props.change =\r\n\t\t\t\t\t(changeField: FormlyFieldConfig,\r\n\t\t\t\t\t\tevent: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texistingChangeFunction(\r\n\t\t\t\t\t\t\tchangeField,\r\n\t\t\t\t\t\t\tevent);\r\n\r\n\t\t\t\t\t\tFunction(\r\n\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t.field,\r\n\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t.event,\r\n\t\t\t\t\t\t\tjsonData.function)\r\n\t\t\t\t\t\t\t.bind(context)(\r\n\t\t\t\t\t\t\t\tchangeField,\r\n\t\t\t\t\t\t\t\tevent)();\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will decorate the on change validation\r\n\t * to match the sent rule presentation definition as well as keeping\r\n\t * any existing validations in place.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with the rule presentation definition.\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to add to this field.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate decorateOnChangeValidationRule(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tcontext: IDynamicComponentContext): void\r\n\t{\r\n\t\tconst classReference: string =\r\n\t\t\trulePresentationDefinition\r\n\t\t\t\t.rulePresentationLogicDefinition\r\n\t\t\t\t.classReference;\r\n\t\tlet jsonData: any;\r\n\r\n\t\tswitch (classReference)\r\n\t\t{\r\n\t\t\tcase 'MinimumLength':\r\n\t\t\tcase 'MaximumLength':\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation,\r\n\t\t\t\t\t\tclassReference);\r\n\r\n\t\t\t\tfield.props =\r\n\t\t\t\t\tclassReference === 'MinimumLength'\r\n\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...field.props,\r\n\t\t\t\t\t\t\t\tminimumLength: jsonData.minimumLength\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...field.props,\r\n\t\t\t\t\t\t\t\tmaximumLength: jsonData.maximumLength\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'MinimumNumber':\r\n\t\t\tcase 'MaximumNumber':\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\tthis.eventTypes.onChangeValidation,\r\n\t\t\t\t\t\t\tclassReference);\r\n\r\n\t\t\t\tfield.props =\r\n\t\t\t\t\t\tclassReference === 'MinimumNumber'\r\n\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t...field.props,\r\n\t\t\t\t\t\t\t\t\tminimumNumber: jsonData.minimumNumber\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t...field.props,\r\n\t\t\t\t\t\t\t\t\tmaximumNumber: jsonData.maximumNumber\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'RegularExpressionFormat':\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation,\r\n\t\t\t\t\t\tclassReference);\r\n\r\n\t\t\t\tfield.props =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...field.props,\r\n\t\t\t\t\t\tregularExpression: jsonData.regularExpression\r\n\t\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tif (rulePresentationDefinition.jsonData === undefined\r\n\t\t\t\t\t|| rulePresentationDefinition.jsonData === null)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjsonData =\r\n\t\t\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.eventTypes.onChangeValidation);\r\n\r\n\t\t\t\tif (jsonData.name === undefined\r\n\t\t\t\t\t|| jsonData.name === null\r\n\t\t\t\t\t|| jsonData.function === undefined\r\n\t\t\t\t\t|| jsonData.function === null)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfield.validators[\r\n\t\t\t\t\t`${jsonData.name}_Rule`\r\n\t\t\t\t\t\t+ rulePresentationDefinition.ruleDefinition.id] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t(control: AbstractControl,\r\n\t\t\t\t\t\t\t\tdynamicValidatorField: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.isRuleFiltered(\r\n\t\t\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t\t\t\t\t|| !this.isRuleBlocking(\r\n\t\t\t\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t\t\t\t\t? { nonBlocking: true }\r\n\t\t\t\t\t\t\t\t\t: Function(\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t\t\t\t.control,\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t\t\t\t.field,\r\n\t\t\t\t\t\t\t\t\t\tjsonData.function)\r\n\t\t\t\t\t\t\t\t\t\t.bind(context)(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\tdynamicValidatorField)(),\r\n\t\t\t\t\t\tmessage: (error: any,\r\n\t\t\t\t\t\t\tdynamicMessageField: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\tthis.getDynamicMessage(\r\n\t\t\t\t\t\t\t\terror,\r\n\t\t\t\t\t\t\t\tdynamicMessageField,\r\n\t\t\t\t\t\t\t\tjsonData.message,\r\n\t\t\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst validator: any =\r\n\t\t\tthis.injector.get(\r\n\t\t\t\tRuleTokenLookup.tokens[classReference]);\r\n\t\tconst validatorInstance: IValidator =\r\n\t\t\tvalidator.create();\r\n\r\n\t\tconst mappedExpression: (\r\n\t\t\tcontrol: AbstractControl,\r\n\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\tValidationErrors = validatorInstance.expression;\r\n\t\tvalidatorInstance.expression =\r\n\t\t\t(control: AbstractControl,\r\n\t\t\t\tvalidatorField: FormlyFieldConfig) =>\r\n\t\t\t\tthis.isRuleFiltered(\r\n\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\tcontext)\r\n\t\t\t\t\t|| !this.isRuleBlocking(\r\n\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t? { nonBlocking: true }\r\n\t\t\t\t\t: mappedExpression(\r\n\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\tvalidatorField);\r\n\r\n\t\tconst existingMessage: string | Function =\r\n\t\t\tvalidatorInstance.message;\r\n\t\tconst existingMessageIsAFunction: boolean =\r\n\t\t\tAnyHelper.isFunction(existingMessage);\r\n\t\tvalidatorInstance.message = (\r\n\t\t\terror: any,\r\n\t\t\tdynamicMessageField: FormlyFieldConfig) =>\r\n\t\t{\r\n\t\t\tconst messageAsFunctionDefinition =\r\n\t\t\t\texistingMessageIsAFunction === true\r\n\t\t\t\t\t? (existingMessage)(\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\tdynamicMessageField)\r\n\t\t\t\t\t: existingMessage;\r\n\r\n\t\t\treturn AnyHelper.isNullOrWhitespace(jsonData?.message)\r\n\t\t\t\t? messageAsFunctionDefinition\r\n\t\t\t\t: this.getDynamicMessage(\r\n\t\t\t\t\terror,\r\n\t\t\t\t\tdynamicMessageField,\r\n\t\t\t\t\tjsonData.message,\r\n\t\t\t\t\tcontext);\r\n\t\t};\r\n\r\n\t\tfield.validators[\r\n\t\t\t`${classReference}_Rule${rulePresentationDefinition.id}`] =\r\n\t\t\tvalidatorInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will decorate the on change async validation\r\n\t * to match the sent rule presentation definition as well as keeping\r\n\t * any existing async validations in place.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with the rule presentation definition.\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to add to this field.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate decorateOnChangeValidationAsyncRule(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tcontext: IDynamicComponentContext): void\r\n\t{\r\n\t\tconst jsonData: any =\r\n\t\t\tthis.validateAndReturnRequiredParameterData(\r\n\t\t\t\trulePresentationDefinition,\r\n\t\t\t\tthis.eventTypes.onChangeValidation);\r\n\r\n\t\tfield.asyncValidators[\r\n\t\t\t`${jsonData.name}_Rule`\r\n\t\t\t\t+ rulePresentationDefinition.ruleDefinition.id] =\r\n\t\t\t{\r\n\t\t\t\texpression:\r\n\t\t\t\t\tasync(control: AbstractControl,\r\n\t\t\t\t\t\tvalidatorField: FormlyFieldConfig) =>\r\n\t\t\t\t\t\tawait\r\n\t\t\t\t\t\tthis.isRuleFilteredAsync(\r\n\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t\t\t|| !this.isRuleBlocking(\r\n\t\t\t\t\t\t\t\trulePresentationDefinition,\r\n\t\t\t\t\t\t\t\tthis.getContainerResourceIdentifier(\r\n\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\t\tcontext)\r\n\t\t\t\t\t\t\t? { nonBlocking: true }\r\n\t\t\t\t\t\t\t: Function(\r\n\t\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t\t.control,\r\n\t\t\t\t\t\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t\t\t\t\t\t.field,\r\n\t\t\t\t\t\t\t\tjsonData.function)\r\n\t\t\t\t\t\t\t\t.bind(context)(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tvalidatorField)(),\r\n\t\t\t\tmessage: (error: any,\r\n\t\t\t\t\tdynamicMessageField: FormlyFieldConfig) =>\r\n\t\t\t\t\tthis.getDynamicMessage(\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\tdynamicMessageField,\r\n\t\t\t\t\t\tjsonData.message,\r\n\t\t\t\t\t\tcontext)\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * If a rule filter is sent as a validation parameter, this will create that\r\n\t * method and return the filtered value of that function. If a rule is\r\n\t * filtered, the client side presentation should not fire.\r\n\t *\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to check for a filtered validation.\r\n\t * @param {string} containerResourceIdentifier\r\n\t * The container resource identifier associated with this rule and\r\n\t * validation value. This can be an entity or array item identifier.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context sent to this service.\r\n\t * @returns {boolean}\r\n\t * A boolean value that defines whether or not we will filter this rule\r\n\t * presentation based on the sent compiled rule filter method.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate isRuleFiltered(\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tcontainerResourceIdentifier: string,\r\n\t\tcontext: IDynamicComponentContext): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(rulePresentationDefinition.jsonData))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst ruleFilter: string =\r\n\t\t\tJSON.parse(\r\n\t\t\t\trulePresentationDefinition.jsonData)?.data?.ruleFilter;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(ruleFilter)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(containerResourceIdentifier))\r\n\t\t{\r\n\t\t\treturn StringHelper.transformToFunction(\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\truleFilter,\r\n\t\t\t\t\tcontext),\r\n\t\t\t\tcontext)(containerResourceIdentifier);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * If a rule filter is sent as a validation parameter, this will create that\r\n\t * method and return the filtered value of that function. If a rule is\r\n\t * filtered, the client side presentation should not fire.\r\n\t * @note If the rule is being filtered asynchronously, the rule validation\r\n\t * definition must also be asynchronous to allow for awaits.\r\n\t *\r\n\t * @async\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to check for a filtered validation.\r\n\t * @param {string} containerResourceIdentifier\r\n\t * The container resource identifier associated with this rule and\r\n\t * validation value. This can be an entity or array item identifier.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context sent to this service.\r\n\t * @returns {boolean}\r\n\t * An awaitable boolean value that defines whether or not we will\r\n\t * filter this rule presentation based on the sent compiled rule filter\r\n\t * method.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate async isRuleFilteredAsync(\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tcontainerResourceIdentifier: string,\r\n\t\tcontext: IDynamicComponentContext): Promise\r\n\t{\r\n\t\tconst ruleFilter: string =\r\n\t\t\tJSON.parse(\r\n\t\t\t\trulePresentationDefinition.jsonData)?.data?.ruleFilter;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(ruleFilter))\r\n\t\t{\r\n\t\t\treturn new Promise(\r\n\t\t\t\tfunction(resolve: any)\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve(\r\n\t\t\t\t\t\tFunction(ruleFilter)()\r\n\t\t\t\t\t\t\t.bind(context)(containerResourceIdentifier));\r\n\t\t\t\t}.bind(context));\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Based on all currently existing entity instance rule violations loaded\r\n\t * in the source context, this will return a value that defines whether\r\n\t * or not we should show client side validations.\r\n\t *\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to check for a blocking violation\r\n\t * action.\r\n\t * @param {string} resourceIdentifier\r\n\t * The resource identifier associated with this rule.\r\n\t * @param {IDynamicComponentContext} context\r\n\t * The context sent to this service.\r\n\t * @returns {boolean}\r\n\t * A boolean value that defines whether or not we should show client side\r\n\t * validations.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate isRuleBlocking(\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\tresourceIdentifier: string,\r\n\t\tcontext: IDynamicComponentContext): boolean\r\n\t{\r\n\t\tconst entityInstanceRuleViolationsIdentifier: string =\r\n\t\t\t'entityInstanceRuleViolations';\r\n\t\tconst entityInstanceRuleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t(context.source)[\r\n\t\t\t\tentityInstanceRuleViolationsIdentifier];\r\n\r\n\t\tif (AnyHelper.isNull(entityInstanceRuleViolations))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'This context source has not been implemented for rules.');\r\n\t\t}\r\n\r\n\t\tconst matchingRuleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\tentityInstanceRuleViolations.filter(\r\n\t\t\t\t(entityInstanceRuleViolation: IEntityInstanceRuleViolation) =>\r\n\t\t\t\t\tentityInstanceRuleViolation.ruleDefinitionId ===\r\n\t\t\t\t\t\trulePresentationDefinition.ruleDefinition.id\r\n\t\t\t\t\t\t\t&& entityInstanceRuleViolation.resourceIdentifier ===\r\n\t\t\t\t\t\t\t\tresourceIdentifier);\r\n\r\n\t\tif (matchingRuleViolations.length === 1)\r\n\t\t{\r\n\t\t\tconst blockingActions: IRuleViolationWorkflowActionDefinition[] =\r\n\t\t\t\tmatchingRuleViolations[0]\r\n\t\t\t\t\t.ruleDefinition\r\n\t\t\t\t\t.ruleViolationWorkflowActionDefinitions\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\t\t\truleViolationWorkflowAction.blocked === true);\r\n\r\n\t\t\t// Either no blocked workflow action is associated or\r\n\t\t\t// at least one blocking action is not overridden.\r\n\t\t\treturn blockingActions.length === 0\r\n\t\t\t\t|| blockingActions.filter(\r\n\t\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\t\truleViolationWorkflowAction.overridable !== true\r\n\t\t\t\t\t\t\t\t|| ruleViolationWorkflowAction.overridden !== true).length > 0;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field this will add a property that will be\r\n\t * available as an attribute on this field's form control.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with the rule presentation definition\r\n\t * association attribute.\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to mark as associated to this field.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate decorateAssociatedRuleDefinitionAttribute(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\trulePresentationDefinition: IRulePresentationDefinition): void\r\n\t{\r\n\t\tconst ruleDefinitionId: string =\r\n\t\t\trulePresentationDefinition.definitionId.toString();\r\n\r\n\t\tconst existingAssociatedRuleDefinitionsValue: string =\r\n\t\t\tfield.props.attributes[\r\n\t\t\t\tFormlyConstants.attributeKeys.associatedRules]?.toString()\r\n\t\t\t\t\t|| AppConstants.empty;\r\n\t\tconst existingAssociatedRuleDefinitions: string[] =\r\n\t\t\texistingAssociatedRuleDefinitionsValue.split(\r\n\t\t\t\tAppConstants.characters.comma);\r\n\r\n\t\tif (existingAssociatedRuleDefinitions.indexOf(\r\n\t\t\truleDefinitionId) !== -1)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfield.props.attributes[\r\n\t\t\tFormlyConstants.attributeKeys.associatedRules] =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\texistingAssociatedRuleDefinitionsValue)\r\n\t\t\t\t? ruleDefinitionId\r\n\t\t\t\t: `${existingAssociatedRuleDefinitionsValue},${ruleDefinitionId}`;\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent formly field and a set of rule presentation definitions\r\n\t * this will filter and return the rule presentations definitions\r\n\t * associated with this field.\r\n\t *\r\n\t * @param {IRulePresentationDefinition[]} rulePresentationDefinitions\r\n\t * The set of rule presentation definitions associated to the layout.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field to be decorated with rule presentation definitions.\r\n\t * @returns {IRulePresentationDefinition[]}\r\n\t * The set of rule presentation definitions associated to the sent field.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate getMatchingRulePresentationDefinitions(\r\n\t\trulePresentationDefinitions: IRulePresentationDefinition[],\r\n\t\tfield: FormlyFieldConfig): IRulePresentationDefinition[]\r\n\t{\r\n\t\tconst fieldKey: string =\r\n\t\t\tAnyHelper.isNull(field.props?.attributes)\r\n\t\t\t\t? null\r\n\t\t\t\t: field.props.attributes[\r\n\t\t\t\t\tFormlyConstants.attributeKeys.dataKey]?.toString();\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(fieldKey))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn rulePresentationDefinitions\r\n\t\t\t.filter(\r\n\t\t\t\t(rulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t\t\trulePresentationDefinition.dataKey\r\n\t\t\t\t\t\t=== fieldKey);\r\n\t}\r\n\r\n\t/**\r\n\t * For a sent rule presentation definition requiring json data, this method\r\n\t * will validate that the json data value does exist and throw a common\r\n\t * error if null or whitespace.\r\n\t *\r\n\t * @param {IRulePresentationDefinition} rulePresentationDefinition\r\n\t * The rule presentation definition to check for the existence of json data.\r\n\t * @param {string} eventType\r\n\t * The event type that requires json data.\r\n\t * @param {string} classReference\r\n\t * The class reference being checked. If not sent this value will default\r\n\t * to 'Compiled Logic'.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate validateAndReturnRequiredParameterData(\r\n\t\trulePresentationDefinition: IRulePresentationDefinition,\r\n\t\teventType: string,\r\n\t\tclassReference: string = 'Compiled Logic'): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\trulePresentationDefinition.jsonData))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'The rule presentation definition with id: '\r\n\t\t\t\t\t+ `${rulePresentationDefinition.id} for the event: `\r\n\t\t\t\t\t+ `'${eventType}' and presentation logic of `\r\n\t\t\t\t\t+ `'${classReference}' requires json parameter data. `\r\n\t\t\t\t\t+ (AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t?.rulePresentationLogicDefinition\r\n\t\t\t\t\t\t\t?.jsonData)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: 'Required parameters: '\r\n\t\t\t\t\t\t\t+ JSON.parse(\r\n\t\t\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t\t\t.rulePresentationLogicDefinition\r\n\t\t\t\t\t\t\t\t\t.jsonData).schema\r\n\t\t\t\t\t\t\t+ AppConstants.characters.period));\r\n\t\t}\r\n\r\n\t\treturn JSON.parse(\r\n\t\t\trulePresentationDefinition.jsonData).data;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a message to display for fields that are not valid.\r\n\t *\r\n\t * @param {any} error\r\n\t * The error object sent by formly validation.\r\n\t * @param {FormlyFieldConfig} dynamicMessageField\r\n\t * The formly field that will use this message.\r\n\t * @param {string} dynamicMessage\r\n\t * The sring based function that is used to get a message ready for display.\r\n\t * @param {object} context\r\n\t * The context for the formly layout. Primarily the component\r\n\t * displaying the formly form, allowing component interactions from\r\n\t * database entered json functions.\r\n\t * @returns {string | Observable}\r\n\t * A message ready for display for validations on the sent field.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate getDynamicMessage(\r\n\t\terror: any,\r\n\t\tdynamicMessageField: FormlyFieldConfig,\r\n\t\tdynamicMessage: string,\r\n\t\tcontext: object): string | Observable\r\n\t{\r\n\t\treturn Function(\r\n\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t.error,\r\n\t\t\tFormlyConstants.formlyMethodParameters\r\n\t\t\t\t.field,\r\n\t\t\tdynamicMessage)\r\n\t\t\t.bind(context)(\r\n\t\t\t\terror,\r\n\t\t\t\tdynamicMessageField)();\r\n\t}\r\n\r\n\t/**\r\n\t * Traverses the model structure from the current control until the nearest\r\n\t * parent resource identifier is found and returns that value.\r\n\t *\r\n\t * @param {AbstractControl} control\r\n\t * The error object sent by formly validation.\r\n\t * @returns {string}\r\n\t * The nearest parent resource identifier in this control hierarchy.\r\n\t * @memberof RulePresentationService\r\n\t */\r\n\tprivate getContainerResourceIdentifier(\r\n\t\tcontrol: AbstractControl): string\r\n\t{\r\n\t\tlet traverseControl: AbstractControl = control.parent;\r\n\r\n\t\t// If the control is hidden in the UI, no presentation rule is required.\r\n\t\tif (AnyHelper.isNull(traverseControl?.parent)\r\n\t\t\t&& AnyHelper.isNull(traverseControl?.value?.resourceIdentifier))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet currentLevel: number = 1;\r\n\t\tconst maxLevel: number = 25;\r\n\t\twhile (AnyHelper.isNull(\r\n\t\t\ttraverseControl?.value?.resourceIdentifier)\r\n\t\t\t&& currentLevel <= maxLevel)\r\n\t\t{\r\n\t\t\ttraverseControl = traverseControl.parent;\r\n\t\t\tcurrentLevel++;\r\n\t\t}\r\n\r\n\t\treturn traverseControl?.value?.resourceIdentifier;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tEntityInstanceRuleViolationApiService\r\n} from '@api/services/entities/entity-instance-rule-violation.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRulePresentationDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-definition.api.service';\r\nimport {\r\n\tRulePresentationLogicDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-logic-definition.api.service';\r\nimport {\r\n\tRuleViolationWorkflowActionDefinitionApiService\r\n} from '@api/services/rules/rule-violation-workflow-action-definition.api.service';\r\nimport {\r\n\tSecurityGroupRuleDefinitionViolationOverrideApiService\r\n} from '@api/services/security/security-group-rule-definition-violation-override.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tRuleHelper\r\n} from '@shared/helpers/rule.helper';\r\nimport {\r\n\tEntityInstanceRuleViolation\r\n} from '@shared/implementations/entities/entity-instance-rule-violation';\r\nimport {\r\n\tIStoredVariableDefinition\r\n} from '@shared/interfaces/application-objects/stored-variable-definition';\r\nimport {\r\n\tIEntityInstanceRuleViolationOverride\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation-override.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\nimport {\r\n\tIRulePresentationDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-definition.interface';\r\nimport {\r\n\tIRulePresentationLogicDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-logic-definition.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tISecurityGroupRuleDefinitionViolationOverride\r\n} from '@shared/interfaces/security/security-group-rule-definition-violation-override.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tBaseStoredVariableService\r\n} from '@shared/services/base/base-stored-variable.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton service representing shared interactions with the rule schema\r\n * api.\r\n *\r\n * @export\r\n * @extends {BaseStoredVariableService}\r\n * @class RuleService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RuleService\r\n\textends BaseStoredVariableService\r\n{\r\n\t/**\r\n\t * Creates an instance of a rule service.\r\n\t *\r\n\t * @param {SecurityGroupRuleDefinitionViolationOverrideApiService}\r\n\t * securityGroupRuleDefinitionViolationOverrideApiService\r\n\t * The security group rule definition violation override service used\r\n\t * for permissions checks in this service.\r\n\t * @param {RuleDefinitionApiService} ruleDefinitionApiService\r\n\t * The rule definition api service used in this service.\r\n\t * @param {RulePresentationDefinitionApiService}\r\n\t * rulePresentationDefinitionApiService\r\n\t * The rule presentation definition api service used in this service.\r\n\t * @param {RulePresentationLogicDefinitionApiService}\r\n\t * rulePresentationDefinitionLogicApiService\r\n\t * The rule presentation logic definition api service used in this service.\r\n\t * @param {RuleViolationWorkflowActionDefinitionApiService}\r\n\t * ruleViolationWorkflowActionDefinitionApiService\r\n\t * The rule violation workflow action definition api service used in\r\n\t * this service.\r\n\t * @param {EntityInstanceRuleViolationApiService}\r\n\t * entityInstanceRuleViolationApiService\r\n\t * The entity instance rule violation api service used in\r\n\t * this service.\r\n\t * @param {EntityInstanceRuleViolationOverrideApiService}\r\n\t * entityInstanceRuleViolationOverrideApiService\r\n\t * The entity instance rule violation override api service used in\r\n\t * this service.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionApiService\r\n\t * The workflow action definition api service used in this service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used in this service.\r\n\t * @param {Injector} injector\r\n\t * The injector used for accessing state based services.\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityGroupRuleDefinitionViolationOverrideApiService:\r\n\t\t\tSecurityGroupRuleDefinitionViolationOverrideApiService,\r\n\t\tpublic ruleDefinitionApiService:\r\n\t\t\tRuleDefinitionApiService,\r\n\t\tpublic rulePresentationDefinitionApiService:\r\n\t\t\tRulePresentationDefinitionApiService,\r\n\t\tpublic rulePresentationLogicDefinitionApiService:\r\n\t\t\tRulePresentationLogicDefinitionApiService,\r\n\t\tpublic ruleViolationWorkflowActionDefinitionApiService:\r\n\t\t\tRuleViolationWorkflowActionDefinitionApiService,\r\n\t\tpublic entityInstanceRuleViolationApiService:\r\n\t\t\tEntityInstanceRuleViolationApiService,\r\n\t\tpublic entityInstanceRuleViolationOverrideApiService:\r\n\t\t\tEntityInstanceRuleViolationOverrideApiService,\r\n\t\tpublic workflowActionDefinitionApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic injector: Injector)\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.storedVariables =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.ruleDefinitions,\r\n\t\t\t\t\tapiService: this.ruleDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.rulePresentationDefinitions,\r\n\t\t\t\t\tapiService: this.rulePresentationDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers\r\n\t\t\t\t\t\t\t.rulePresentationLogicDefinitions,\r\n\t\t\t\t\tapiService: this.rulePresentationLogicDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers\r\n\t\t\t\t\t\t\t.ruleViolationWorkflowActionDefinitions,\r\n\t\t\t\t\tapiService:\r\n\t\t\t\t\t\tthis.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers.workflowActionDefinitions,\r\n\t\t\t\t\tapiService: this.workflowActionDefinitionApiService\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tstorageProperty:\r\n\t\t\t\t\t\tAppConstants.apiControllers\r\n\t\t\t\t\t\t\t.securityGroupRuleDefinitionViolationOverrides,\r\n\t\t\t\t\tapiService: this\r\n\t\t\t\t\t\t.securityGroupRuleDefinitionViolationOverrideApiService\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.storedVariables.forEach(\r\n\t\t\t(storedVariable: IStoredVariableDefinition) =>\r\n\t\t\t{\r\n\t\t\t\tstoredVariable.apiService.ruleService = this;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for rule definitions.\r\n\t *\r\n\t * @type {IRuleDefinition[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic ruleDefinitions:\r\n\t\tIRuleDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for rule presentation definitions.\r\n\t *\r\n\t * @type {IRulePresentationDefinition[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic rulePresentationDefinitions:\r\n\t\tIRulePresentationDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for rule presentation logic definitions.\r\n\t *\r\n\t * @type {IRulePresentationLogicDefinition[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic rulePresentationLogicDefinitions:\r\n\t\tIRulePresentationLogicDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for rule violation workflow action\r\n\t * definitions.\r\n\t *\r\n\t * @type {IRuleViolationWorkflowActionDefinition[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic ruleViolationWorkflowActionDefinitions:\r\n\t\tIRuleViolationWorkflowActionDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for workflow action definitions.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic workflowActionDefinitions:\r\n\t\tIWorkflowActionDefinitions[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the local storage for security group based rule violation\r\n\t * override permissions.\r\n\t *\r\n\t * @type {ISecurityGroupRuleDefinitionViolationOverride[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic securityGroupRuleDefinitionViolationOverrides:\r\n\t\tISecurityGroupRuleDefinitionViolationOverride[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the storage variables that will be stored in this\r\n\t * singleton service.\r\n\t *\r\n\t * @type {IStoredVariableDefinition[]}\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic storedVariables: IStoredVariableDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gathers the full set of existing rule violations for the sent entity\r\n\t * instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance id to get rule violations for.\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query. The instance id filter\r\n\t * will be appended to this sent filter.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @returns {Promise[]}\r\n\t * An awaitable promise that returns list of entity instance rule\r\n\t * violations.\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic async getInstanceRuleViolations(\r\n\t\tentityInstanceId: number,\r\n\t\tfilter: string = AppConstants.empty,\r\n\t\torderBy: string = AppConstants.empty):\r\n\t\tPromise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst instanceFilter: string =\r\n\t\t\t`InstanceId eq ${entityInstanceId}`\r\n\t\t\t\t+ (AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: ` and (${filter})`);\r\n\r\n\t\tconst entityInstanceRuleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceRuleViolationApiService,\r\n\t\t\t\tinstanceFilter,\r\n\t\t\t\torderBy);\r\n\r\n\t\tentityInstanceRuleViolations.forEach(\r\n\t\t\t(entityInstanceRuleViolation:\r\n\t\t\t\tIEntityInstanceRuleViolation) =>\r\n\t\t\t{\r\n\t\t\t\tentityInstanceRuleViolation.ruleDefinition =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.ruleDefinitions.find(\r\n\t\t\t\t\t\t\t(ruleDefinition: IRuleDefinition) =>\r\n\t\t\t\t\t\t\t\truleDefinition.id ===\r\n\t\t\t\t\t\t\t\t\tentityInstanceRuleViolation\r\n\t\t\t\t\t\t\t\t\t\t.ruleDefinitionId)\r\n\t\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\treturn entityInstanceRuleViolations;\r\n\t}\r\n\r\n\t/**\r\n\t * Populates and returns the set of rule violations matching the\r\n\t * sent query parameters.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filter\r\n\t * A string representing the filters for the query.\r\n\t * @param {string} orderBy\r\n\t * A string representing the order by for the query.\r\n\t * @param {number} [offset]\r\n\t * A number representing the skip offset.\r\n\t * @param {number} [limit]\r\n\t * A number representing the top limit count.\r\n\t * @returns {Promise[]}\r\n\t * An awaitable promise that returns list of populated entity instance\r\n\t * rule violations.\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic async getPopulatedRuleViolations(\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset: number,\r\n\t\tlimit: number): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst entityInstanceRuleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\t\r\n\t\t\tawait this.entityInstanceRuleViolationApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\torderBy,\r\n\t\t\t\t\toffset,\r\n\t\t\t\t\tlimit);\r\n\t\tconst entityInstanceRuleViolationOverrides =\r\n\t\t\t\r\n\t\t\tawait this.entityInstanceRuleViolationOverrideApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\r\n\t\tentityInstanceRuleViolations.forEach(\r\n\t\t\t(entityInstanceRuleViolation:\r\n\t\t\t\tIEntityInstanceRuleViolation) =>\r\n\t\t\t{\r\n\t\t\t\tentityInstanceRuleViolation.ruleDefinition =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.ruleDefinitions.find(\r\n\t\t\t\t\t\t\t(ruleDefinition: IRuleDefinition) =>\r\n\t\t\t\t\t\t\t\truleDefinition.id ===\r\n\t\t\t\t\t\t\t\t\tentityInstanceRuleViolation\r\n\t\t\t\t\t\t\t\t\t\t.ruleDefinitionId)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tentityInstanceRuleViolation\r\n\t\t\t\t\t.ruleDefinition\r\n\t\t\t\t\t.ruleViolationWorkflowActionDefinitions =\r\n\t\t\t\t\t\tthis.getRuleViolationWorkflowActions(\r\n\t\t\t\t\t\t\tentityInstanceRuleViolation,\r\n\t\t\t\t\t\t\tentityInstanceRuleViolationOverrides);\r\n\t\t\t});\r\n\r\n\t\treturn entityInstanceRuleViolations;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent entity type and version, this will return the fully\r\n\t * populated set of rule presentation definitions ready for presentation\r\n\t * logic definition decorations.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityTypeId\r\n\t * The entity type id used to gather associated rule definitions.\r\n\t * @param {number} entityVersionId\r\n\t * The entity version id used to gather associated rule definitions.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns a set of populated rule presentation\r\n\t * definitions ready for the rule presentation logic decoration.\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic async getPopulatedRulePresentationDefinitions(\r\n\t\tentityTypeId: number,\r\n\t\tentityVersionId: number): Promise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst ruleDefinitions: IRuleDefinition[] =\r\n\t\t\tthis.ruleDefinitions.filter(\r\n\t\t\t\t(ruleDefinition: IRuleDefinition) =>\r\n\t\t\t\t\truleDefinition.entityTypeId === entityTypeId\r\n\t\t\t\t\t\t&& ruleDefinition.entityVersionId === entityVersionId);\r\n\r\n\t\tif (ruleDefinitions.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst ruleDefinitionIds: number[] =\r\n\t\t\truleDefinitions.map(\r\n\t\t\t\t(ruleDefinition: IRuleDefinition) =>\r\n\t\t\t\t\truleDefinition.id);\r\n\r\n\t\tconst rulePresentationDefinitions: IRulePresentationDefinition[] =\r\n\t\t\tthis.rulePresentationDefinitions.filter(\r\n\t\t\t\t(rulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t\t\truleDefinitionIds.indexOf(\r\n\t\t\t\t\t\trulePresentationDefinition.definitionId) !== -1)\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(rulePresentationDefinition: IRulePresentationDefinition) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trulePresentationDefinition.ruleDefinition =\r\n\t\t\t\t\t\t\truleDefinitions.find(\r\n\t\t\t\t\t\t\t\t(ruleDefinition: IRuleDefinition) =>\r\n\t\t\t\t\t\t\t\t\truleDefinition.id ===\r\n\t\t\t\t\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t.definitionId);\r\n\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t.ruleDefinition\r\n\t\t\t\t\t\t\t.rulePresentationDefinitions =\r\n\t\t\t\t\t\t\t\tthis.rulePresentationDefinitions.filter(\r\n\t\t\t\t\t\t\t\t\t(presentationDefinition:\r\n\t\t\t\t\t\t\t\t\t\tIRulePresentationDefinition) =>\r\n\t\t\t\t\t\t\t\t\t\tpresentationDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t.definitionId ===\r\n\t\t\t\t\t\t\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.definitionId);\r\n\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t.rulePresentationLogicDefinition =\r\n\t\t\t\t\t\t\t\tthis.rulePresentationLogicDefinitions.find(\r\n\t\t\t\t\t\t\t\t\t(presentationLogic:\r\n\t\t\t\t\t\t\t\t\t\tIRulePresentationLogicDefinition) =>\r\n\t\t\t\t\t\t\t\t\t\tpresentationLogic.id ===\r\n\t\t\t\t\t\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t\t.presentationLogicDefinitionId);\r\n\r\n\t\t\t\t\t\treturn rulePresentationDefinition;\r\n\t\t\t\t\t})\r\n\t\t\t\t.sort(\r\n\t\t\t\t\t(itemOne: IRulePresentationDefinition,\r\n\t\t\t\t\t\titemTwo: IRulePresentationDefinition) =>\r\n\t\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\t\titemOne,\r\n\t\t\t\t\t\t\titemTwo,\r\n\t\t\t\t\t\t\tAppConstants.commonProperties.order));\r\n\r\n\t\treturn rulePresentationDefinitions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of unique data key based rule presentation definitions\r\n\t * associated with the sent entity instance rule violation. This is used\r\n\t * to locate the set of controls associated to the presentation definition.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceRuleViolation} entityInstanceRuleViolation\r\n\t * The entity instance rule violation to get associated presentation\r\n\t * definitions for.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns the set of unique presentation\r\n\t * definitions grouped by data key.\r\n\t * @memberof RuleService\r\n\t */\r\n\tpublic async getUniqueViolationPresentationDefinitions(\r\n\t\tentityInstanceRuleViolation: EntityInstanceRuleViolation):\r\n\t\tPromise\r\n\t{\r\n\t\tawait this.setStoredVariables();\r\n\r\n\t\tconst rulePresentationDefinitions: IRulePresentationDefinition[] =\r\n\t\t\tthis.rulePresentationDefinitions.filter(\r\n\t\t\t\t(rulePresentationDefinition:\r\n\t\t\t\t\tIRulePresentationDefinition) =>\r\n\t\t\t\t\trulePresentationDefinition.definitionId ===\r\n\t\t\t\t\t\tentityInstanceRuleViolation.ruleDefinitionId);\r\n\r\n\t\tconst uniqueKey: string = 'dataKey';\r\n\r\n\t\treturn \r\n\t\t\t[\r\n\t\t\t\t...new Map(\r\n\t\t\t\t\trulePresentationDefinitions.map(\r\n\t\t\t\t\t\t(rulePresentationDefinition:\r\n\t\t\t\t\t\t\tIRulePresentationDefinition) =>\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\trulePresentationDefinition[uniqueKey],\r\n\t\t\t\t\t\t\t\trulePresentationDefinition\r\n\t\t\t\t\t\t\t])).values()\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of populated rule violations loaded based on the sent entity\r\n\t * instance id, this will filter down to find if any violations are\r\n\t * blocking, not overridden, and a match for the sent workflow action name.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance id used to gather a set of rule violations to\r\n\t * check for a matching blocking violation.\r\n\t * @param {string} workflowActionName\r\n\t * The workflow action name to check for a blocking match.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not the sent rule violations contain\r\n\t * a matching blocked rule violation for this action.\r\n\t * @memberof RuleService\r\n\t*/\r\n\tpublic async isActionBlocked(\r\n\t\tentityInstanceId: number,\r\n\t\tworkflowActionName: string): Promise\r\n\t{\r\n\t\tconst populatedRuleViolations: IEntityInstanceRuleViolation[] =\r\n\t\t\tawait this.getPopulatedRuleViolations(\r\n\t\t\t\t`InstanceId eq ${entityInstanceId}`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t0,\r\n\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\r\n\t\treturn RuleHelper.isActionBlocked(\r\n\t\t\tpopulatedRuleViolations,\r\n\t\t\tworkflowActionName);\r\n\t}\r\n\r\n\t/**\r\n\t * Runs the business rules action on a determined entity instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} entityInstanceId\r\n\t * The entity instance id.\r\n\t * @param {string} typeGroup\r\n\t * The entiy type group.\r\n\t *\r\n\t * @memberof RuleService\r\n\t*/\r\n\tpublic async runBusinessRules(\r\n\t\tentityInstanceId: number,\r\n\t\ttypeGroup: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup = typeGroup;\r\n\t\tawait this.entityInstanceApiService\r\n\t\t\t.executeAction(\r\n\t\t\t\tentityInstanceId,\r\n\t\t\t\tAppConstants.workflowActions.runBusinessRules);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the set of rule violation workflow action definitions associated\r\n\t * with the sent entity instance rule violation.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceRuleViolation} entityInstanceRuleViolation\r\n\t * The entity instance rule violation to get associated workflow action\r\n\t * definitions for.\r\n\t * @param {IEntityInstanceRuleViolationOverride[]}\r\n\t * \tentityInstanceRuleViolationOverrides\r\n\t * The entity instance rule violation overrides associated with this entity\r\n\t * instance.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that returns the set of populated workflow action\r\n\t * definitions associated with the sent entity instance rule violation.\r\n\t * @memberof RuleService\r\n\t */\r\n\tprivate getRuleViolationWorkflowActions(\r\n\t\tentityInstanceRuleViolation: IEntityInstanceRuleViolation,\r\n\t\tentityInstanceRuleViolationOverrides:\r\n\t\t\tIEntityInstanceRuleViolationOverride[]):\r\n\t\tIRuleViolationWorkflowActionDefinition[]\r\n\t{\r\n\t\tconst matchingRuleViolationOverrides:\r\n\t\t\tIEntityInstanceRuleViolationOverride[] =\r\n\t\t\tentityInstanceRuleViolationOverrides\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(ruleViolationOverride:\r\n\t\t\t\t\t\tIEntityInstanceRuleViolationOverride) =>\r\n\t\t\t\t\t\truleViolationOverride.ruleDefinitionId ===\r\n\t\t\t\t\t\t\tentityInstanceRuleViolation.ruleDefinitionId\r\n\t\t\t\t\t\t\t&& ruleViolationOverride.resourceIdentifier ===\r\n\t\t\t\t\t\t\t\tentityInstanceRuleViolation.resourceIdentifier);\r\n\r\n\t\treturn this.ruleViolationWorkflowActionDefinitions\r\n\t\t\t.filter(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t\truleViolationWorkflowAction.definitionId ===\r\n\t\t\t\t\t\tentityInstanceRuleViolation.ruleDefinitionId)\r\n\t\t\t.map(\r\n\t\t\t\t(ruleViolationWorkflowAction:\r\n\t\t\t\t\tIRuleViolationWorkflowActionDefinition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mappedWorkflowAction:\r\n\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t...ruleViolationWorkflowAction\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tmappedWorkflowAction.blocked =\r\n\t\t\t\t\t\tmappedWorkflowAction.actionTypeId ===\r\n\t\t\t\t\t\t\tAppConstants.ruleActionTypes.blocked;\r\n\r\n\t\t\t\t\tmappedWorkflowAction.overridden =\r\n\t\t\t\t\t\tmatchingRuleViolationOverrides.filter(\r\n\t\t\t\t\t\t\t(entityInstanceRuleViolationOverride:\r\n\t\t\t\t\t\t\t\tIEntityInstanceRuleViolationOverride) =>\r\n\t\t\t\t\t\t\t\t(AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\tentityInstanceRuleViolationOverride\r\n\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId)\r\n\t\t\t\t\t\t\t\t\t|| entityInstanceRuleViolationOverride\r\n\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId ===\r\n\t\t\t\t\t\t\t\t\t\t\tmappedWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId)\r\n\t\t\t\t\t\t).length > 0;\r\n\r\n\t\t\t\t\tmappedWorkflowAction.workflowActionDefinition =\r\n\t\t\t\t\t\tthis.workflowActionDefinitions.find(\r\n\t\t\t\t\t\t\t(workflowActionDefinition:\r\n\t\t\t\t\t\t\t\tIWorkflowActionDefinitions) =>\r\n\t\t\t\t\t\t\t\tworkflowActionDefinition.id ===\r\n\t\t\t\t\t\t\t\t\tmappedWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId);\r\n\r\n\t\t\t\t\tmappedWorkflowAction.overridable =\r\n\t\t\t\t\t\tthis.isViolationOverridable(\r\n\t\t\t\t\t\t\tmappedWorkflowAction);\r\n\r\n\t\t\t\t\treturn mappedWorkflowAction;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent rule violation workflow action definition, this method\r\n\t * will use the sent security group filter to return a truthy representation\r\n\t * whether or not the violation is overridable for the security groups sent.\r\n\t *\r\n\t * @async\r\n\t * @param {IRuleViolationWorkflowActionDefinition}\r\n\t * ruleViolationWorkflowAction\r\n\t * The rule violation workflow action definition to check for security group\r\n\t * permissions to override.\r\n\t * @returns {Promise\r\n\t\t\t\t\tsecurityGroup.id);\r\n\r\n\t\tconst ruleViolationOverride:\r\n\t\t\tISecurityGroupRuleDefinitionViolationOverride =\r\n\t\t\t\tthis.securityGroupRuleDefinitionViolationOverrides\r\n\t\t\t\t\t.find(\r\n\t\t\t\t\t\t(securityRuleViolationOverride:\r\n\t\t\t\t\t\tISecurityGroupRuleDefinitionViolationOverride) =>\r\n\t\t\t\t\t\t\t(securityRuleViolationOverride\r\n\t\t\t\t\t\t\t\t.workflowActionDefinitionId == null\r\n\t\t\t\t\t\t\t\t|| securityRuleViolationOverride\r\n\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId ===\r\n\t\t\t\t\t\t\t\t\t\truleViolationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId)\r\n\t\t\t\t\t\t\t\t&& securityRuleViolationOverride\r\n\t\t\t\t\t\t\t\t\t.ruleDefinitionId ===\r\n\t\t\t\t\t\t\t\t\t\truleViolationWorkflowAction.definitionId\r\n\t\t\t\t\t\t\t\t&& allowedSecurityGroups.indexOf(\r\n\t\t\t\t\t\t\t\t\tsecurityRuleViolationOverride\r\n\t\t\t\t\t\t\t\t\t\t.groupId) !== -1);\r\n\r\n\t\treturn !AnyHelper.isNull(ruleViolationOverride);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nconst MILLISECONDS_IN_A_SECOND: number = 1000;\r\nconst SECONDS_IN_A_MINUTE: number = 60;\r\nconst MINUTES_IN_AN_HOUR: number = 60;\r\nconst HOURS_IN_A_DAY: number = 24;\r\nconst DAYS_IN_A_WEEK: number = 7;\r\n\r\nconst MILLISECONDS_IN_A_MINUTE = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\r\nconst MILLISECONDS_IN_AN_HOUR = MILLISECONDS_IN_A_MINUTE * MINUTES_IN_AN_HOUR;\r\nconst MILLISECONDS_IN_A_DAY = MILLISECONDS_IN_AN_HOUR * HOURS_IN_A_DAY;\r\nconst MILLISECONDS_IN_A_WEEK = MILLISECONDS_IN_A_DAY * DAYS_IN_A_WEEK;\r\n\r\n/**\r\n * A class containing definitions for an application\r\n * level time span.\r\n *\r\n * @export\r\n * @class AppTimeSpan\r\n */\r\nexport class AppTimeSpan\r\n{\r\n\t/**\r\n\t * Creates an instance of AppTimeSpan.\r\n\t *\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic constructor(\r\n\t\tinput: number | any)\r\n\t{\r\n\t\tthis._seconds = 0;\r\n\t\tthis._minutes = 0;\r\n\t\tthis._hours = 0;\r\n\t\tthis._days = 0;\r\n\r\n\t\tif (typeof input === 'number')\r\n\t\t{\r\n\t\t\tthis.milliseconds = input;\r\n\t\t}\r\n\r\n\t\tif (typeof input === 'string')\r\n\t\t{\r\n\t\t\t// Parse string and populate\r\n\t\t\tthis.milliseconds\r\n\t\t\t\t= AppTimeSpan.Parse(input).totalMilliSeconds;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the day value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\t public get days(): number\r\n\t {\r\n\t\t return this._days;\r\n\t }\r\n\r\n\t/**\r\n\t * Sets the day value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @param {number} value\r\n\t * The value to set.\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic set days(\r\n\t\tvalue: number)\r\n\t{\r\n\t\tthis._days =\r\n\t\t\tisNaN(value)\r\n\t\t\t\t? 0\r\n\t\t\t\t: value;\r\n\t\tthis.calcMilliSeconds();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the hour value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get hours(): number\r\n\t{\r\n\t\treturn this._hours;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the hour value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @param {number} value\r\n\t * The value to set.\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic set hours(\r\n\t\tvalue: number)\r\n\t{\r\n\t\tthis._hours =\r\n\t\t\tisNaN(value)\r\n\t\t\t\t? 0\r\n\t\t\t\t: value;\r\n\t\tthis.calcMilliSeconds();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the minutes value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get minutes(): number\r\n\t{\r\n\t\treturn this._minutes;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the minute value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @param {number} value\r\n\t * The value to set.\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic set minutes(\r\n\t\tvalue: number)\r\n\t{\r\n\t\tthis._minutes =\r\n\t\t\tisNaN(value)\r\n\t\t\t\t? 0\r\n\t\t\t\t: value;\r\n\t\tthis.calcMilliSeconds();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the seconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get seconds(): number\r\n\t{\r\n\t\treturn this._seconds;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the seconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @param {number} value\r\n\t * The value to set.\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic set seconds(\r\n\t\tvalue: number)\r\n\t{\r\n\t\tthis._seconds =\r\n\t\t\tisNaN(value)\r\n\t\t\t\t? 0\r\n\t\t\t\t: value;\r\n\t\tthis.calcMilliSeconds();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the milliseconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get milliseconds(): number\r\n\t{\r\n\t\treturn this._milliseconds;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the milliseconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @param {number} value\r\n\t * The value to set.\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic set milliseconds(\r\n\t\tvalue: number)\r\n\t{\r\n\t\tthis._milliseconds =\r\n\t\t\tisNaN(value)\r\n\t\t\t\t? 0\r\n\t\t\t\t: value;\r\n\t\tthis.calcMilliSeconds();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total milliseconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get totalMilliSeconds(): number\r\n\t{\r\n\t\treturn this._totalMilliSeconds;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total seconds value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get totalSeconds(): number\r\n\t{\r\n\t\treturn Math.round(this._totalMilliSeconds / MILLISECONDS_IN_A_SECOND);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total minutes value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get totalMinutes(): number\r\n\t{\r\n\t\treturn Math.round(this._totalMilliSeconds / MILLISECONDS_IN_A_MINUTE);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the total hours value of the current\r\n\t * application timespan.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic get totalHours(): number\r\n\t{\r\n\t\treturn Math.round(this._totalMilliSeconds / MILLISECONDS_IN_AN_HOUR);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the milliseconds.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _milliseconds: number;\r\n\r\n\t/**\r\n\t * Gets or sets the total milliseconds.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _totalMilliSeconds: number;\r\n\r\n\t/**\r\n\t * Gets or sets the seconds.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _seconds: number;\r\n\r\n\t/**\r\n\t * Gets or sets the minutes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _minutes: number;\r\n\r\n\t/**\r\n\t * Gets or sets the hours.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _hours: number;\r\n\r\n\t/**\r\n\t * Gets or sets the days.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tprivate _days: number;\r\n\r\n\t/**\r\n\t * Parses a string into an application time span.\r\n\t * @see\r\n\t * Input regular expression expected:\r\n\t * new RegExp('^((?:-?0*\\d+\\.)?(?:0*)(?:2[0-3]|1[0-9]|[0-9]))'\r\n\t\t\t+ '(?::0*([0-5]?[0-9]))?(?::0*((?:[0-5]?[0-9])(?:\\.\\d{0,7})?))?$');\r\n\t *\r\n\t * @param {string} input\r\n\t * The string to be parsed into an application time span.\r\n\t * @returns {AppTimeSpan}\r\n\t * The parsed application time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Parse(\r\n\t\tinput: string): AppTimeSpan\r\n\t{\r\n\t\tconst timeSpan: AppTimeSpan = new AppTimeSpan(0);\r\n\t\tconst bigParts = input.split('.');\r\n\t\tfor (let i = 0; i < bigParts.length; i++)\r\n\t\t{\r\n\t\t\tconst smallPart = bigParts[i];\r\n\t\t\tif (smallPart.indexOf(':') >= 0)\r\n\t\t\t{\r\n\t\t\t\tconst parts = smallPart.split(':');\r\n\r\n\t\t\t\ttimeSpan.hours = Number(parts[0] || 0);\r\n\t\t\t\ttimeSpan.minutes = Number(parts[1] || 0);\r\n\t\t\t\ttimeSpan.seconds = Number(parts[2] || 0);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (i === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Days\r\n\t\t\t\t\ttimeSpan.days = Number(smallPart || 0);\r\n\t\t\t\t}\r\n\t\t\t\telse if (i === 2)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Milliseconds\r\n\t\t\t\t\ttimeSpan.milliseconds = Number(smallPart || 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn timeSpan;\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the differences in time between the two\r\n\t * comparison dates.\r\n\t *\r\n\t * @param {any} date1\r\n\t * The first comparison date.\r\n\t * @param {any} date2\r\n\t * The second comparison date.\r\n\t * @returns {AppTimeSpan}\r\n\t * The time span describing the difference of these two dates.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Subtract(\r\n\t\tdate1: any,\r\n\t\tdate2: any): AppTimeSpan\r\n\t{\r\n\t\tconst milliSeconds: number = date1 - date2;\r\n\r\n\t\treturn new AppTimeSpan(milliSeconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the day component of the current\r\n\t * application time span.\r\n\t *\r\n\t * @returns {AppTimeSpan}\r\n\t * The day value of the current time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Day(): AppTimeSpan\r\n\t{\r\n\t\treturn new AppTimeSpan(MILLISECONDS_IN_A_DAY);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the hour component of the current\r\n\t * application time span.\r\n\t *\r\n\t * @returns {AppTimeSpan}\r\n\t * The hour value of the current time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Hour(): AppTimeSpan\r\n\t{\r\n\t\treturn new AppTimeSpan(MILLISECONDS_IN_AN_HOUR);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the week component of the current\r\n\t * application time span.\r\n\t *\r\n\t * @returns {AppTimeSpan}\r\n\t * The week value of the current time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Week(): AppTimeSpan\r\n\t{\r\n\t\treturn new AppTimeSpan(MILLISECONDS_IN_A_WEEK) ;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the month component of the current\r\n\t * application time span.\r\n\t *\r\n\t * @returns {AppTimeSpan}\r\n\t * The month value of the current time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic static Month(): AppTimeSpan\r\n\t{\r\n\t\tconst now: any = new Date();\r\n\t\tconst aMonthAgo: any = new Date();\r\n\t\taMonthAgo.setMonth(aMonthAgo.getMonth() - 1);\r\n\r\n\t\treturn new AppTimeSpan(now - aMonthAgo);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the string representation of the current\r\n\t * application time span.\r\n\t *\r\n\t * @returns {string}\r\n\t * The string representation of the current\r\n\t * application time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic toString(): string\r\n\t{\r\n\t\treturn `${this.days}`\r\n\t\t\t+ `.${this.hours}`\r\n\t\t\t+ `:${this.minutes}`\r\n\t\t\t+ `:${this.seconds}`\r\n\t\t\t+ `.${this.milliseconds}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the sent date value to the current\r\n\t * application time span.\r\n\t *\r\n\t * @param {Date} date\r\n\t * The date to add to current application time span.\r\n\t * @returns {Date}\r\n\t * The date representation of the current\r\n\t * application time span after the date is added.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic addTo(\r\n\t\tdate: Date): Date\r\n\t{\r\n\t\tdate.setMilliseconds(\r\n\t\t\tdate.getMilliseconds() + this.totalMilliSeconds);\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * Subtracts the sent date value from the current\r\n\t * application time span.\r\n\t *\r\n\t * @param {Date} date\r\n\t * The date to subtract from current application time span.\r\n\t * @returns {Date}\r\n\t * The date representation of the current\r\n\t * application time span after the date is subtracted.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic subtractFrom(\r\n\t\tdate: Date): Date\r\n\t{\r\n\t\tdate.setMilliseconds(\r\n\t\t\tdate.getMilliseconds() - this.totalMilliSeconds);\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * Rounds the send original value up to the\r\n\t * maximum value provided.\r\n\t *\r\n\t * @param {number} originalValue\r\n\t * The original value to be rounded.\r\n\t * @param {number} maximumValue\r\n\t * The maximum value to round to.\r\n\t * @returns {any}\r\n\t * The round values used to round an applicaiton time span.\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic roundValue(\r\n\t\toriginalValue: number,\r\n\t\tmaximumValue: number): any\r\n\t{\r\n\t\treturn {\r\n\t\t\tmodulu: originalValue % maximumValue,\r\n\t\t\taddition: Math.round(originalValue / maximumValue)\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the number of milliseconds in the\r\n\t * current application time span.\r\n\t *\r\n\t * @memberof AppTimeSpan\r\n\t */\r\n\tpublic calcMilliSeconds(): void\r\n\t{\r\n\t\tconst newMilliSecond\r\n\t\t\t= this.roundValue(\r\n\t\t\t\tthis._milliseconds,\r\n\t\t\t\tMILLISECONDS_IN_A_SECOND);\r\n\r\n\t\tthis._milliseconds = newMilliSecond.modulu;\r\n\t\tthis._seconds += newMilliSecond.addition;\r\n\r\n\t\tconst newSecond\r\n\t\t\t= this.roundValue(\r\n\t\t\t\tthis._seconds,\r\n\t\t\t\tSECONDS_IN_A_MINUTE);\r\n\r\n\t\tthis._seconds = newSecond.modulu;\r\n\t\tthis._minutes += newSecond.addition;\r\n\r\n\t\tconst newminutes\r\n\t\t\t= this.roundValue(\r\n\t\t\t\tthis._minutes,\r\n\t\t\t\tMINUTES_IN_AN_HOUR);\r\n\r\n\t\tthis._minutes = newminutes.modulu;\r\n\t\tthis._hours += newminutes.addition;\r\n\r\n\t\tconst newDays\r\n\t\t\t= this.roundValue(\r\n\t\t\t\tthis._hours,\r\n\t\t\t\tHOURS_IN_A_DAY);\r\n\r\n\t\tthis._hours = newDays.modulu;\r\n\t\tthis._days += newDays.addition;\r\n\r\n\t\tthis._totalMilliSeconds\r\n\t\t\t= this.days\r\n\t\t\t\t* MILLISECONDS_IN_A_DAY\r\n\t\t\t\t+ this.hours * MILLISECONDS_IN_AN_HOUR\r\n\t\t\t\t+ this.minutes\r\n\t\t\t\t* MILLISECONDS_IN_A_MINUTE\r\n\t\t\t\t+ this.seconds\r\n\t\t\t\t* MILLISECONDS_IN_A_SECOND\r\n\t\t\t\t+ this.milliseconds;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport {\r\n\tHttpHeaders\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAuthenticateApiService\r\n} from '@api/services/security/authenticate.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppTimeSpan\r\n} from '@shared/app-timespan';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSystemServiceConstants\r\n} from '@shared/constants/system-service.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tIChatSettings\r\n} from '@shared/interfaces/application-objects/chat-settings';\r\nimport {\r\n\tIKnowledgeBaseSettings\r\n} from '@shared/interfaces/application-objects/knowledge-base-settings';\r\nimport {\r\n\tINameValuePair\r\n} from '@shared/interfaces/application-objects/name-value-pair.interface';\r\nimport {\r\n\tISystemServiceConfiguration\r\n} from '@shared/interfaces/application-objects/system-service-configuration';\r\nimport {\r\n\tISystemSettings\r\n} from '@shared/interfaces/application-objects/system-settings';\r\nimport {\r\n\tIWalkthroughSettings\r\n} from '@shared/interfaces/application-objects/walkthrough-settings';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecuritySession\r\n} from '@shared/interfaces/security/security-session.interface';\r\nimport {\r\n\tIChatService\r\n} from '@shared/interfaces/services/chat-service';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tSettings\r\n} from 'luxon';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing a Session Service.\r\n *\r\n * @export\r\n * @class SessionService\r\n * @implements {OnInit}\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SessionService\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of SessionService.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service for dependency injection.\r\n\t * @param {AuthenticateApiService} authenticateApiService\r\n\t * The authentication api service.\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The security group api service.\r\n\t * @param {SecuritySessionApiService} securitySessionApiService\r\n\t * The security session api service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @param {Router} router\r\n\t * The router used for navigation.\r\n\t * @param {UserService} userService\r\n\t * The user service.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly authenticateApiService: AuthenticateApiService,\r\n\t\tprivate readonly securityGroupApiService: SecurityGroupApiService,\r\n\t\tprivate readonly securitySessionApiService: SecuritySessionApiService,\r\n\t\tprivate readonly siteLayoutService: SiteLayoutService,\r\n\t\tprivate readonly displayComponentService: DisplayComponentService,\r\n\t\tprivate readonly operationService: OperationService,\r\n\t\tprivate readonly entityService: EntityService,\r\n\t\tprivate readonly ruleService: RuleService,\r\n\t\tprivate readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tprivate readonly router: Router)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a value defining whether all operation local storage values\r\n\t * are currently set.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic operationGroupsStored: boolean = false;\r\n\r\n\t/**\r\n\t * Gets othe default client side service configuration used when no\r\n\t * configurations exist.\r\n\t *\r\n\t * @type {ISystemServiceConfiguration}\r\n\t * @memberof SessionService\r\n\t */\r\n\tprivate readonly defaultServiceConfiguration: ISystemServiceConfiguration =\r\n\t\t{\r\n\t\t\tname: AppConstants.empty,\r\n\t\t\tsettings: []\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets a {string} representing the system time zone.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get systemTimeZone(): string\r\n\t{\r\n\t\tconst localSystemTimeZone: string =\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.systemTimeZone);\r\n\r\n\t\treturn (AnyHelper.isNullOrEmpty(localSystemTimeZone))\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: localSystemTimeZone;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} representing the system time zone.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set systemTimeZone(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.systemTimeZone,\r\n\t\t\t!AnyHelper.isNull(value)\r\n\t\t\t\t? value\r\n\t\t\t\t: null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an {ISystemSettings} representing the overall system settings\r\n\t * object.\r\n\t *\r\n\t * @type {ISystemSettings}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get systemSettings(): ISystemSettings\r\n\t{\r\n\t\tconst localSystemSettings: string =\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.systemSettings);\r\n\r\n\t\treturn (AnyHelper.isNullOrEmpty(localSystemSettings))\r\n\t\t\t? null\r\n\t\t\t: JSON.parse(\r\n\t\t\t\tlocalSystemSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an {ISystemSettings} representing the overall system settings\r\n\t * object.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set systemSettings(\r\n\t\tvalue: ISystemSettings)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.systemSettings,\r\n\t\t\t!AnyHelper.isNull(value)\r\n\t\t\t\t? JSON.stringify(value)\r\n\t\t\t\t: null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the session is valid.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get isValid(): boolean\r\n\t{\r\n\t\treturn 'true' === (\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.sessionValidKey)\r\n\t\t\t|| 'false');\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a value indicating whether the session is valid.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set isValid(\r\n\t\tvalue: boolean)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.sessionValidKey,\r\n\t\t\tvalue.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an {IUser} of the logged in session user.\r\n\t *\r\n\t * @type {IUser}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get user(): IUser\r\n\t{\r\n\t\tconst userStringified: string\r\n\t\t\t= localStorage.getItem(\r\n\t\t\t\tAppConstants.storage.securityUserKey);\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(userStringified))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn JSON.parse(userStringified);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an {IUser} to the session user.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set user(\r\n\t\tvalue: IUser)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.securityUserKey,\r\n\t\t\tvalue ? JSON.stringify(value) : null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {Date} value representing the expiry date and time of the session.\r\n\t *\r\n\t * @type {Date}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get expiryDate(): Date\r\n\t{\r\n\t\tconst localExpiry: string =\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.sessionExpiryKey);\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(localExpiry))\r\n\t\t{\r\n\t\t\treturn new Date();\r\n\t\t}\r\n\r\n\t\treturn new Date(localExpiry);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {Date} value representing the expiry date and time of the session.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set expiryDate(\r\n\t\tvalue: Date)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.sessionExpiryKey,\r\n\t\t\tvalue\r\n\t\t\t\t? value.toString()\r\n\t\t\t\t: null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {TimeSpan} representing the duration a session is valid.\r\n\t *\r\n\t * @type {AppTimeSpan}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get expiry(): AppTimeSpan\r\n\t{\r\n\t\treturn new AppTimeSpan(\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.securityExpiryKey)\r\n\t\t\t|| AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {TimeSpan} representing the duration a session is valid.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set expiry(\r\n\t\tvalue: AppTimeSpan)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.securityExpiryKey,\r\n\t\t\tvalue ? value.toString() : null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {string} representing the session security token.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get token(): string\r\n\t{\r\n\t\tconst localToken = localStorage.getItem(\r\n\t\t\tAppConstants.storage.securityTokenKey);\r\n\r\n\t\treturn (AnyHelper.isNullOrEmpty(localToken))\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: localToken;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} representing the session security token.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set token(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.securityTokenKey,\r\n\t\t\tvalue ? value : null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {string} representing the session id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get sessionId(): string\r\n\t{\r\n\t\tconst localSessionId =\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage.sessionIdKey);\r\n\r\n\t\treturn (AnyHelper.isNullOrEmpty(localSessionId))\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: localSessionId;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} representing the session id.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set sessionId(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.sessionIdKey,\r\n\t\t\tvalue ? value : null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {string} representing the multi-factor authentication method.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get multiFactorMethod(): string\r\n\t{\r\n\t\tconst localMultiFactorMethod = localStorage.getItem(\r\n\t\t\tAppConstants.storage.securityMultiFactorAuthenticationMethodKey);\r\n\r\n\t\treturn (AnyHelper.isNullOrEmpty(localMultiFactorMethod))\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: localMultiFactorMethod;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} representing the multi-factor authentication method.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set multiFactorMethod(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.securityMultiFactorAuthenticationMethodKey,\r\n\t\t\tvalue ? value : null);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {boolean} value indicating whether multi-factor authentication is\r\n\t * enabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get isMultiFactorEnabled(): boolean\r\n\t{\r\n\t\treturn 'true' === (\r\n\t\t\tlocalStorage.getItem(\r\n\t\t\t\tAppConstants.storage\r\n\t\t\t\t\t.securityMultiFactorAuthenticationEnabledKey)\r\n\t\t\t|| 'false');\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {boolean} value indicating whether multi-factor authentication is\r\n\t * enabled.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic set isMultiFactorEnabled(\r\n\t\tvalue: boolean)\r\n\t{\r\n\t\tlocalStorage.setItem(\r\n\t\t\tAppConstants.storage.securityMultiFactorAuthenticationEnabledKey,\r\n\t\t\tvalue.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {boolean} value indicating whether the session is logged in.\r\n\t *\r\n\t * @readonly\r\n\t * @type {boolean}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get isLoggedIn(): boolean\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.user)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(this.token))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {string} representing the application token.\r\n\t *\r\n\t * @readonly\r\n\t * @type {string}\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get applicationToken(): string\r\n\t{\r\n\t\tconst token: string = AppConfig.settings.webApi.applicationToken;\r\n\r\n\t\treturn AnyHelper.isNullOrEmpty(token)\r\n\t\t\t? null\r\n\t\t\t: token;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the user data is fully\r\n\t * ready for application use.\r\n\t *\r\n\t * @type {boolean}\r\n\t * A combination of status of whether the user is logged in,\r\n\t * is valid, and security groups are populated.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get isValidLoggedInAndReady(): boolean\r\n\t{\r\n\t\treturn this.isLoggedIn && this.isValid\r\n\t\t\t&& !AnyHelper.isNullOrEmptyArray(this.user.membershipSecurityGroups)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(this.systemTimeZone)\r\n\t\t\t&& !this.user.data.security?.forcePasswordChange;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the user data is fully\r\n\t * ready for application use but the user needs to change its password.\r\n\t *\r\n\t * @type {boolean}\r\n\t * A combination of status of whether the user is logged in,\r\n\t * is valid, and security groups are populated and force password change.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic get shouldChangePassword(): boolean\r\n\t{\r\n\t\treturn this.isLoggedIn && this.isValid\r\n\t\t\t&& !AnyHelper.isNullOrEmptyArray(this.user.membershipSecurityGroups)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(this.systemTimeZone)\r\n\t\t\t&& this.user.data.security?.forcePasswordChange;\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization of service.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async login request to the api service implementing\r\n\t * the /Authenticate method.\r\n\t *\r\n\t * @param {string} userName\r\n\t * A string representing the user name to login as.\r\n\t * @param {string} password\r\n\t * A string representing the password for the user name.\r\n\t * @returns {Promise}\r\n\t * The logged in user.\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async login(\r\n\t\tuserName: string,\r\n\t\tpassword: string): Promise\r\n\t{\r\n\t\tconst response: any\r\n\t\t\t= await this.authenticateApiService.login(\r\n\t\t\t\tuserName,\r\n\t\t\t\tpassword,\r\n\t\t\t\tthis.applicationToken);\r\n\r\n\t\tthis.setFromHeaders(response.headers);\r\n\t\tthis.user = response.user;\r\n\t\tthis.siteLayoutService.setFromUserSettings(this.user);\r\n\r\n\t\tthis.isValid =\r\n\t\t\tthis.isMultiFactorEnabled\r\n\t\t\t\t? false\r\n\t\t\t\t: true;\r\n\r\n\t\tif (this.isValid)\r\n\t\t{\r\n\t\t\tawait this.decorateSystemSettings();\r\n\t\t\tawait this.setSessionId();\r\n\t\t\tawait this.setStoredVariables();\r\n\t\t\tawait this.decorateUserSecurityGroups(this.user);\r\n\t\t}\r\n\r\n\t\treturn this.user;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async verification request to the api service implementing\r\n\t * the /Authenticate/Verify method.\r\n\t *\r\n\t * @param {string} token\r\n\t * A string representing the security access token to verify.\r\n\t * @param {string} code\r\n\t * A string representing the verification code.\r\n\t * @returns {Promise}\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async verify(\r\n\t\ttoken: string,\r\n\t\tcode: string): Promise\r\n\t{\r\n\t\tawait this.authenticateApiService.verify(\r\n\t\t\ttoken,\r\n\t\t\tcode);\r\n\r\n\t\tawait this.decorateSystemSettings();\r\n\t\tawait this.setSessionId();\r\n\t\tawait this.setStoredVariables();\r\n\t\tawait this.decorateUserSecurityGroups(this.user);\r\n\r\n\t\tthis.isValid = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async verification request to the api service implementing\r\n\t * the /Authenticate/Reset method.\r\n\t *\r\n\t * @param {string} userName\r\n\t * A string representing the user name to reset.\r\n\t * @returns {Promise}\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async resetUser(\r\n\t\tuserName: string): Promise\r\n\t{\r\n\t\tawait this.authenticateApiService.reset(userName);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs an async update of the provided user.\r\n\t *\r\n\t * @param {string} newPassword\r\n\t * The new user's password.\r\n\t * @returns {Promise}\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async changePassword(\r\n\t\tnewPassword: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tconst userEntityInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tthis.user.id);\r\n\r\n\t\tconst newEntityInstance: any =\r\n\t\t\t{\r\n\t\t\t\tid: userEntityInstance.id,\r\n\t\t\t\tentityType: userEntityInstance.entityType,\r\n\t\t\t\tversionNumber: userEntityInstance.versionNumber,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\temail: userEntityInstance.data.email,\r\n\t\t\t\t\tuserName: userEntityInstance.data.userName,\r\n\t\t\t\t\tpassword: newPassword\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tconst updateEntityInstance: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tnewEntityInstance.id,\r\n\t\t\t\t\t\tnewEntityInstance);\r\n\t\t\t};\r\n\r\n\t\tawait updateEntityInstance();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the security token in local storage from the headers.\r\n\t *\r\n\t * @param {Headers} header\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic setFromHeaders(\r\n\t\theader: HttpHeaders): void\r\n\t{\r\n\t\tthis.token = header.get(AppConstants.webApi.tokenKey);\r\n\r\n\t\tif (header.has(AppConstants.webApi.multiFactorKey))\r\n\t\t{\r\n\t\t\tconst raw: string\r\n\t\t\t\t= header.get(AppConstants.webApi.multiFactorKey);\r\n\r\n\t\t\tconst parts: string[] = raw.split(AppConstants.characters.comma);\r\n\t\t\tconst enabled: boolean = parts[0].toLocaleLowerCase() === 'true';\r\n\t\t\tconst method: string = parts[1];\r\n\r\n\t\t\tthis.isMultiFactorEnabled = enabled;\r\n\t\t\tthis.multiFactorMethod = method;\r\n\t\t}\r\n\r\n\t\tif (header.has(AppConstants.webApi.tokenExpiryKey))\r\n\t\t{\r\n\t\t\tthis.expiry = new AppTimeSpan(\r\n\t\t\t\theader.get(AppConstants.webApi.tokenExpiryKey));\r\n\r\n\t\t\tthis.resetExpiryDate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the session expiry date.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic resetExpiryDate(): void\r\n\t{\r\n\t\tconst date: Date = new Date();\r\n\t\tdate.setMilliseconds(\r\n\t\t\tdate.getMilliseconds()\r\n\t\t\t+ this.expiry.totalMilliSeconds);\r\n\r\n\t\tthis.expiryDate = date;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the session from local storage.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic clear(): void\r\n\t{\r\n\t\tthis.isValid = false;\r\n\t\tthis.user = null;\r\n\t\tthis.expiryDate = new Date();\r\n\t\tthis.expiry = new AppTimeSpan('0:15:0');\r\n\t\tthis.token = null;\r\n\t\tthis.multiFactorMethod = 'email';\r\n\t\tthis.isMultiFactorEnabled = false;\r\n\t\tthis.sessionId = null;\r\n\t\tthis.systemTimeZone = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Logs the user session out.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic logOut(): void\r\n\t{\r\n\t\t// Close out any existing chat sessions.\r\n\t\tconst chatService: IChatService =\r\n\t\t\tthis.resolver.resolveShared(\r\n\t\t\t\tthis.systemSettings\r\n\t\t\t\t\t.chat\r\n\t\t\t\t\t.modalService);\r\n\r\n\t\tchatService.resetChat()\r\n\t\t\t.then(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.reloadPage();\r\n\r\n\t\t\t\t\t// Run this outside of the main thread so the local\r\n\t\t\t\t\t// settings are reset on reload.\r\n\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets stored variables on any singleton storage classes on login.\r\n\t *\r\n\t * @async\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic async setStoredVariables(): Promise\r\n\t{\r\n\t\tthis.operationService.clearStoredVariables();\r\n\t\tthis.displayComponentService.clearStoredVariables();\r\n\t\tthis.entityService.clearStoredVariables();\r\n\t\tthis.ruleService.clearStoredVariables();\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.displayComponentService.setStoredVariables();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.halfSecond);\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.entityService.setStoredVariables();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.twoSeconds);\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.ruleService.setStoredVariables();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.twoSeconds);\r\n\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets and sets the security session id matching this user session.\r\n\t *\r\n\t * @async\r\n\t * @memberof AuthenticateService\r\n\t */\r\n\tpublic async setSessionId(): Promise\r\n\t{\r\n\t\tconst securitySession: ISecuritySession =\r\n\t\t\tawait this.securitySessionApiService.getSingleQueryResult(\r\n\t\t\t\t`token eq '${this.token}'`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.sessionId = securitySession.id.toString();\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the security groups that the user has access to\r\n\t * into the session user object.\r\n\t *\r\n\t * @async\r\n\t * @param {IUser} user\r\n\t * The logged in user.\r\n\t * @returns {Promise}\r\n\t * The user with user security group values set and ready for use.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic async decorateUserSecurityGroups(\r\n\t\tuser: IUser): Promise\r\n\t{\r\n\t\tif (this.isValid)\r\n\t\t{\r\n\t\t\tconst membershipFilter: string =\r\n\t\t\t\t'SecurityGroupEntityInstances.Any('\r\n\t\t\t\t\t+ `EntityInstanceId eq ${user.id})`;\r\n\r\n\t\t\tuser.membershipSecurityGroups =\r\n\t\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\t\tmembershipFilter,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tuser.membershipSecurityGroups = [];\r\n\t\t}\r\n\r\n\t\tthis.user = user;\r\n\r\n\t\treturn user;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates system settings for data handling and display site wide.\r\n\t *\r\n\t * @async\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic async decorateSystemSettings(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\t\tconst systemInstance: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\tparseInt(\r\n\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\tthis.decorateSystemTimeZone(\r\n\t\t\tsystemInstance);\r\n\t\tthis.decorateChatConfiguration(\r\n\t\t\tsystemInstance);\r\n\t\tthis.decorateKnowledgeBaseConfiguration(\r\n\t\t\tsystemInstance);\r\n\t\tthis.decorateWalkthroughConfiguration(\r\n\t\t\tsystemInstance);\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates system settings for data handling and display site wide.\r\n\t *\r\n\t * @param {IEntityInstance} systemInstance\r\n\t * The system entity instance.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic decorateSystemTimeZone(\r\n\t\tsystemInstance: IEntityInstance): void\r\n\t{\r\n\t\tconst systemTimeZone: string =\r\n\t\t\tsystemInstance.data.settings\r\n\t\t\t\t?.systemTimeZone\r\n\t\t\t\t?.internetAssignedNumbersAuthority;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(systemTimeZone))\r\n\t\t{\r\n\t\t\tthis.logOut();\r\n\r\n\t\t\tEventHelper.dispatchLoginMessageEvent(\r\n\t\t\t\t'System Time Zone Undefined',\r\n\t\t\t\t'Unable to calculate a system time zone. '\r\n\t\t\t\t\t+ 'Please ensure the system time zone is set in the System '\r\n\t\t\t\t\t+ 'entity instance.',\r\n\t\t\t\tAppConstants.messageLevel.error);\r\n\t\t}\r\n\r\n\t\tthis.systemTimeZone = systemTimeZone;\r\n\t\tSettings.defaultZone = systemTimeZone;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates chat configuration settings.\r\n\t *\r\n\t * @param {IEntityInstance} systemInstance\r\n\t * The system entity instance.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic decorateChatConfiguration(\r\n\t\tsystemInstance: IEntityInstance): void\r\n\t{\r\n\t\tconst systemService: ISystemServiceConfiguration =\r\n\t\t\tObjectArrayHelper\r\n\t\t\t\t.findByProperty(\r\n\t\t\t\t\tsystemInstance.data.settings?.services,\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tSystemServiceConstants.chat)\r\n\t\t\t\t\t?? this.defaultServiceConfiguration;\r\n\r\n\t\tthis.systemSettings =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\t...this.systemSettings,\r\n\t\t\t\tchat:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenabled:\r\n\t\t\t\t\t\t\tJSON.parse(\r\n\t\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\t\tSystemServiceConstants.enabled)\r\n\t\t\t\t\t\t\t\t\t?.value ?? 'false'),\r\n\t\t\t\t\t\tcomponentName:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.componentName)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t\tmodalService:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.modalService)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t\tdeploymentId:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.deploymentId)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t\tenvironment:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.environment)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates knowledge base configuration settings.\r\n\t *\r\n\t * @param {IEntityInstance} systemInstance\r\n\t * The system entity instance.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic decorateKnowledgeBaseConfiguration(\r\n\t\tsystemInstance: IEntityInstance): void\r\n\t{\r\n\t\tconst systemService: ISystemServiceConfiguration =\r\n\t\t\tObjectArrayHelper\r\n\t\t\t\t.findByProperty(\r\n\t\t\t\t\tsystemInstance.data.settings?.services,\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tSystemServiceConstants.knowledgeBase)\r\n\t\t\t\t\t?? this.defaultServiceConfiguration;\r\n\r\n\t\tthis.systemSettings =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\t...this.systemSettings,\r\n\t\t\t\tknowledgeBase:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenabled:\r\n\t\t\t\t\t\t\tJSON.parse(\r\n\t\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\t\tSystemServiceConstants.enabled)\r\n\t\t\t\t\t\t\t\t\t?.value ?? 'false'),\r\n\t\t\t\t\t\tcomponentName:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.componentName)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t\tknowledgeBaseUrl:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.knowledgeBaseUrl)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates walkthrough configuration settings.\r\n\t *\r\n\t * @param {IEntityInstance} systemInstance\r\n\t * The system entity instance.\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic decorateWalkthroughConfiguration(\r\n\t\tsystemInstance: IEntityInstance): void\r\n\t{\r\n\t\tconst systemService: ISystemServiceConfiguration =\r\n\t\t\tObjectArrayHelper\r\n\t\t\t\t.findByProperty(\r\n\t\t\t\t\tsystemInstance.data.settings?.services,\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tSystemServiceConstants.walkthrough)\r\n\t\t\t\t\t?? this.defaultServiceConfiguration;\r\n\r\n\t\tthis.systemSettings =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\t...this.systemSettings,\r\n\t\t\t\twalkthrough:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenabled:\r\n\t\t\t\t\t\t\tJSON.parse(\r\n\t\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\t\tSystemServiceConstants.enabled)\r\n\t\t\t\t\t\t\t\t\t?.value ?? 'false'),\r\n\t\t\t\t\t\twidgetId:\r\n\t\t\t\t\t\t\tObjectArrayHelper\r\n\t\t\t\t\t\t\t\t.findByProperty(\r\n\t\t\t\t\t\t\t\t\tsystemService.settings,\r\n\t\t\t\t\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\t\t\t\t\tSystemServiceConstants.widgetId)\r\n\t\t\t\t\t\t\t\t?.value,\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a local storage event listener.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic addLocalStorageEventListener(): void\r\n\t{\r\n\t\twindow.addEventListener(\r\n\t\t\tWindowEventConstants.storage,\r\n\t\t\t(storageEvent: any) =>\r\n\t\t\t\tthis.handleStorageEvent(storageEvent));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the storage event.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tpublic handleStorageEvent(event: any): void\r\n\t{\r\n\t\tif (event.key !== AppConstants.storage.securityUserKey)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst previousUserName: string =\r\n\t\t\t!AnyHelper.isNull(event.oldValue)\r\n\t\t\t\t? JSON.parse(event.oldValue).data.userName\r\n\t\t\t\t: null;\r\n\t\tconst currentUserName: string =\r\n\t\t\t!AnyHelper.isNull(event.newValue)\r\n\t\t\t\t? JSON.parse(event.newValue).data.userName\r\n\t\t\t\t: null;\r\n\r\n\t\tif (previousUserName !== currentUserName\r\n\t\t\t&& this.router.url !== '/login')\r\n\t\t{\r\n\t\t\twindow.location.reload();\r\n\t\t\twindow.removeEventListener(\r\n\t\t\t\tWindowEventConstants.storage,\r\n\t\t\t\t(storageEvent: any) =>\r\n\t\t\t\t\tthis.handleStorageEvent(storageEvent));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reloads the page.\r\n\t *\r\n\t * @memberof SessionService\r\n\t */\r\n\tprivate reloadPage(): void\r\n\t{\r\n\t\twindow.location.reload();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\n\r\n/**\r\n * An enum representing the menu orientation.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum MenuOrientation {\r\n\tOVERLAY,\r\n\tSLIM\r\n}\r\n\r\n/**\r\n * A singleton class representing logic and services for the site layout.\r\n\r\n *\r\n * @export\r\n * @class SiteLayoutService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SiteLayoutService\r\n{\r\n\t/**\r\n\t * Creates an instance of SiteLayoutService. Content and site\r\n\t * width based variables are set via the usage of the\r\n\t * ResponsiveLayoutDirective.\r\n\t *\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic constructor()\r\n\t{\r\n\t\tthis.theme = this.getDefaultTheme();\r\n\t\tthis.layout = this.getDefaultLayout();\r\n\t\tthis.menuMode = MenuOrientation.SLIM;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the theme.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic theme: string;\r\n\r\n\t/**\r\n\t * Gets or sets the layout.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic layout: string;\r\n\r\n\t/**\r\n\t * Gets or sets the menu mode.\r\n\t *\r\n\t * @type {MenuOrientation}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic menuMode: MenuOrientation;\r\n\r\n\t/**\r\n\t * Gets or sets the window or overall display width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic windowWidth: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the window or overall display height.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic windowHeight: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the content width available in layout-main.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic contentWidth: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the breakpoint width available when comparing\r\n\t * layout breakpoints. This value accounts for an expanded\r\n\t * non-overlay context menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic breakpointWidth: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the content width based css class.\r\n\t * <= 500: 'ui-content-small-phone'\r\n\t * > 500 && <= 640: 'ui-content-phone'\r\n\t * > 640 && <= 800: 'ui-content-tablet'\r\n\t * > 800 && <= 1024: 'ui-content-large-tablet'\r\n\t * > 800 && <= 1360: 'ui-content-desktop'\r\n\t * > 1360: 'ui-content-large-desktop'\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic contentCssClass: string = '';\r\n\r\n\t/**\r\n\t * Gets or sets the current count of pinned drawers.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic pinnedDrawerCount: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the context width used by an expanded\r\n\t * context menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic contextMenuCapturedWidth: number = 0;\r\n\r\n\t/**\r\n\t * Gets the delay used when checking for layout changes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic readonly debounceDelay: number = 50;\r\n\r\n\t/**\r\n\t * Gets the display tablet view property. This defines that the site is\r\n\t * displaying in tablet mode.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic get displayTabletView(): boolean\r\n\t{\r\n\t\treturn this.windowWidth <= AppConstants.layoutBreakpoints.tablet;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default theme.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic getDefaultTheme(): string\r\n\t{\r\n\t\t// We could add a DB look up or app config for defaults\r\n\t\treturn 'darkgrey';\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default layout.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic getDefaultLayout(): string\r\n\t{\r\n\t\t// We could add a DB look up or app config for defaults\r\n\t\treturn 'cyan';\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the theme css to the specified supported theme.\r\n\t *\r\n\t * @param {string} theme\r\n\t * A string representing the theme to change the skin to.\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic changeTheme(\r\n\t\ttheme: string): void\r\n\t{\r\n\t\t// To Do: Make sure version is in property still\r\n\t\tthis.theme = theme.toLocaleLowerCase();\r\n\t\tconst themeLink: HTMLLinkElement\r\n\t\t\t= document\r\n\t\t\t\t.getElementById('theme-css');\r\n\r\n\t\tthemeLink.href =\r\n\t\t\t'assets/theme/theme-'\r\n\t\t\t\t+ this.theme + '.css';\r\n\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tAppEventConstants.themeChanged));\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the layout css to the specified support layout.\r\n\t *\r\n\t * @param {string} layout\r\n\t * A string representing the layout to change the skin to.\r\n\t * @param {boolean} [special]\r\n\t * A value indicating whether the layout is a special skin.\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic changeLayout(\r\n\t\tlayout: string): void\r\n\t{\r\n\t\tthis.layout = layout.toLocaleLowerCase();\r\n\t\tconst layoutLink: HTMLLinkElement\r\n\t\t\t= document\r\n\t\t\t\t.getElementById('layout-css');\r\n\r\n\t\tlayoutLink.href =\r\n\t\t\t'assets/layout/css/layout-'\r\n\t\t\t\t+ this.layout + '.css';\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the menu mode.\r\n\t *\r\n\t * @param {(string | MenuOrientation)} style\r\n\t * A string or {MenuOrientation} representing the menu mode to change\r\n\t * the skin to.\r\n\t * @returns {void}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic changeMenuMode(\r\n\t\tstyle: string | MenuOrientation): void\r\n\t{\r\n\t\tif (typeof(style) === typeof(MenuOrientation))\r\n\t\t{\r\n\t\t\tthis.menuMode = style;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch ((style).toLocaleLowerCase())\r\n\t\t{\r\n\t\t\tcase 'overlay':\r\n\t\t\t\tthis.changeToOverlayMenu();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'slim':\r\n\t\t\t\tthis.changeToSlimMenu();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the menu mode to overlay.\r\n\t *\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic changeToOverlayMenu(): void\r\n\t{\r\n\t\tthis.menuMode = MenuOrientation.OVERLAY;\r\n\t}\r\n\r\n\t/**\r\n\t * Changes the menu mode to slim.\r\n\t *\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic changeToSlimMenu(): void\r\n\t{\r\n\t\tthis.menuMode = MenuOrientation.SLIM;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the site layout back to defaults.\r\n\t *\r\n\t * @param {boolean} resetColors\r\n\t * A value indicating whether to reset the skin colors.\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic reset(\r\n\t\tresetColors: boolean): void\r\n\t{\r\n\t\tthis.changeToSlimMenu();\r\n\r\n\t\tif (resetColors)\r\n\t\t{\r\n\t\t\tthis.changeTheme(this.getDefaultTheme());\r\n\t\t\tthis.changeLayout(this.getDefaultLayout());\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the site layout to the user settings.\r\n\t *\r\n\t * @param {IUser} user\r\n\t * A {IUser} containing settings to set site layout skin to.\r\n\t * @returns {void}\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic setFromUserSettings(\r\n\t\tuser: IUser): void\r\n\t{\r\n\t\tthis.reset(false);\r\n\r\n\t\tif (!user)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst settings: string = 'settings';\r\n\t\tconst layoutColor: string = 'layoutColor';\r\n\t\tconst themeColor: string = 'themeColor';\r\n\r\n\t\tconst userLayoutColor: string\r\n\t\t\t= user.data[settings][layoutColor]\r\n\t\t\t\t|| this.getDefaultLayout();\r\n\r\n\t\tconst userThemeColor: string\r\n\t\t\t= user.data[settings][themeColor]\r\n\t\t\t\t|| this.getDefaultTheme();\r\n\r\n\t\tthis.changeTheme(\r\n\t\t\tuserThemeColor);\r\n\t\tthis.changeLayout(\r\n\t\t\tuserLayoutColor);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the css class that is currently accurate with the content width.\r\n\t * <= 500: 'ui-content-small-phone'\r\n\t * > 500 && <= 640: 'ui-content-phone'\r\n\t * > 640 && <= 800: 'ui-content-tablet'\r\n\t * > 800 && <= 1024: 'ui-content-large-tablet'\r\n\t * > 800 && <= 1360: 'ui-content-desktop'\r\n\t * > 1360: 'ui-content-large-desktop'\r\n\t *\r\n\t * @returns {string}\r\n\t * The css class that can be decorated into html elements of components\r\n\t * extending the responsive layout directive.\r\n\t * @memberof SiteLayoutService\r\n\t */\r\n\tpublic getContentCssClass(): string\r\n\t{\r\n\t\tswitch (true) {\r\n\t\t\tcase (this.contentWidth\r\n\t\t\t\t<= AppConstants.layoutBreakpoints.smallPhone):\r\n\t\t\t\treturn AppConstants.responsiveClasses.smallPhoneContent;\r\n\t\t\tcase (this.contentWidth\r\n\t\t\t\t<= AppConstants.layoutBreakpoints.phone):\r\n\t\t\t\treturn AppConstants.responsiveClasses.phoneContent;\r\n\t\t\tcase (this.contentWidth\r\n\t\t\t\t<= AppConstants.layoutBreakpoints.tablet):\r\n\t\t\t\treturn AppConstants.responsiveClasses.tabletContent;\r\n\t\t\tcase (this.contentWidth\r\n\t\t\t\t<= AppConstants.layoutBreakpoints.desktop):\r\n\t\t\t\treturn AppConstants.responsiveClasses.largeTabletContent;\r\n\t\t\tcase (this.contentWidth\r\n\t\t\t\t<= AppConstants.layoutBreakpoints.largeDesktop):\r\n\t\t\t\treturn AppConstants.responsiveClasses.desktopContent;\r\n\t\t\tdefault:\r\n\t\t\t\treturn AppConstants.responsiveClasses.largeDesktopContent;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\n\r\n/**\r\n * A singleton service representing the ability to interact with the Stonly\r\n * widget.\r\n *\r\n * @export\r\n * @class StonlyService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class StonlyService\r\n{\r\n\t/**\r\n\t * Gets the Stonly commands that can be executed.\r\n\t *\r\n\t * @type {{\r\n\t * \taddEventListener: string;\r\n\t * \tcloseWidget: string;\r\n\t * \tremoveEventListener: string;\r\n\t * }}\r\n\t * @memberof StonlyService\r\n\t */\r\n\tprivate readonly stonlyCommands: {\r\n\t\taddEventListener: string;\r\n\t\tcloseWidget: string;\r\n\t\tremoveEventListener: string;\r\n\t} = {\r\n\t\t\taddEventListener: 'addEventListener',\r\n\t\t\tcloseWidget: 'closeWidget',\r\n\t\t\tremoveEventListener: 'removeEventListener'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the Stonly events that can be listened to.\r\n\t *\r\n\t * @type {{\r\n\t * \tguidedTourStart: string;\r\n\t * \tguidedTourEnd: string;\r\n\t * }}\r\n\t * @memberof StonlyService\r\n\t */\r\n\tprivate readonly stonlyEvents: {\r\n\t\tguidedTourStart: string;\r\n\t\tguidedTourEnd: string;\r\n\t} = {\r\n\t\t\tguidedTourStart: 'guidedTourStart',\r\n\t\t\tguidedTourEnd: 'guidedTourEnd'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the script for the stonly widget.\r\n\t * See: https://stonly.com/kb/en/.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof StonlyService\r\n\t */\r\n\tprivate readonly stonlyWidgetScript: string =\r\n\t\t`!function (s, t, o, n, l, y, w, g, d, e)\r\n\t\t{\r\n\t\t\ts.StonlyWidget ||\r\n\t\t\t\t((d = s.StonlyWidget =\r\n\t\t\t\t\tfunction ()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\td._api\r\n\t\t\t\t\t\t\t? d._api.apply(d, arguments)\r\n\t\t\t\t\t\t\t: d.queue.push(arguments);\r\n\t\t\t\t\t}).scriptPath = n,\r\n\t\t\t\td.apiPath = l,\r\n\t\t\t\td.sPath = y,\r\n\t\t\t\td.queue = [],\r\n\t\t\t\t(g = t.createElement(o)).async = !0,\r\n\t\t\t\t(e = new XMLHttpRequest).open(\r\n\t\t\t\t\t'GET', n + 'version?v=' + Date.now(), !0),\r\n\t\t\t\te.onreadystatechange = function ()\r\n\t\t\t\t{\r\n\t\t\t\t\t4 === e.readyState\r\n\t\t\t\t\t\t&& (g.src = n + 'stonly-widget.js?v='\r\n\t\t\t\t\t\t\t+(200 === e.status\r\n\t\t\t\t\t\t\t\t? e.responseText :\r\n\t\t\t\t\t\t\t\tDate.now()),\r\n\t\t\t\t\t(w = t.getElementsByTagName(o)[0])\r\n\t\t\t\t\t\t.parentNode.insertBefore(g, w));\r\n\t\t\t\t},\r\n\t\t\t\te.send());\r\n\t\t}(window,\r\n\t\t\tdocument,\r\n\t\t\t'script',\r\n\t\t\t'https://stonly.com/js/widget/v2/');`;\r\n\r\n\t/**\r\n\t * Installs the stonly widget javascript if not already existing.\r\n\t *\r\n\t * @param {string} widgetId\r\n\t * The widget id to point the install to.\r\n\t * @memberof StonlyService\r\n\t */\r\n\tpublic installStonly(\r\n\t\twidgetId: string)\r\n\t{\r\n\t\twindow.STONLY_WID = widgetId;\r\n\r\n\t\tconst stonlyWidgetInterface: Function =\r\n\t\t\twindow.StonlyWidget;\r\n\r\n\t\tif (!AnyHelper.isNull(stonlyWidgetInterface))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst script: HTMLScriptElement =\r\n\t\t\tdocument.createElement(\r\n\t\t\t\tAppConstants.documentElementTypes.script);\r\n\t\tscript.type = AppConstants.scriptTypes.javascript;\r\n\t\tscript.text = this.stonlyWidgetScript;\r\n\t\tdocument.head.appendChild(script);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the stonly widget with watchers for a guided tour start\r\n\t * or end.\r\n\t *\r\n\t * @param {Function} eventAction\r\n\t * The action to perform when either event is triggered. This is not\r\n\t * required if only the default events are needed.\r\n\t * @memberof StonlyService\r\n\t */\r\n\tpublic initializeWidget(\r\n\t\teventAction: Function = null): void\r\n\t{\r\n\t\tconst mappedAction: Function =\r\n\t\t\teventAction ?? (() => { });\r\n\t\tconst stonlyWidgetInterface: Function =\r\n\t\t\twindow.StonlyWidget;\r\n\r\n\t\tif (AnyHelper.isNull(stonlyWidgetInterface))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstonlyWidgetInterface(\r\n\t\t\tthis.stonlyCommands.addEventListener,\r\n\t\t\tthis.stonlyEvents.guidedTourStart,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tmappedAction();\r\n\t\t\t\tEventHelper.dispatchWalkthroughStartEvent();\r\n\t\t\t});\r\n\t\tstonlyWidgetInterface(\r\n\t\t\tthis.stonlyCommands.addEventListener,\r\n\t\t\tthis.stonlyEvents.guidedTourEnd,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tmappedAction();\r\n\t\t\t\tEventHelper.dispatchWalkthroughEndEvent();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the stonly widget and removes all event listeners.\r\n\t *\r\n\t * @memberof StonlyService\r\n\t */\r\n\tpublic closeWidget(): void\r\n\t{\r\n\t\tconst stonlyWidgetInterface: Function =\r\n\t\t\twindow.StonlyWidget;\r\n\r\n\t\tif (AnyHelper.isNull(stonlyWidgetInterface))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstonlyWidgetInterface(\r\n\t\t\tthis.stonlyCommands.removeEventListener,\r\n\t\t\tthis.stonlyEvents.guidedTourStart);\r\n\t\tstonlyWidgetInterface(\r\n\t\t\tthis.stonlyCommands.removeEventListener,\r\n\t\t\tthis.stonlyEvents.guidedTourEnd);\r\n\r\n\t\tstonlyWidgetInterface(\r\n\t\t\tthis.stonlyCommands.closeWidget);\r\n\t}\r\n}","\r\n/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\n\r\n/**\r\n * A class representing a User Service.\r\n *\r\n * @export\r\n * @class UserService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UserService\r\n{\r\n\t/**\r\n\t * Creates an instance of UserService.\r\n\t *\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The security group api service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service.\r\n\t * @memberof UserService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly securityGroupApiService: SecurityGroupApiService,\r\n\t\tprivate readonly entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the security groups that the user has access to\r\n\t * into the session user object.\r\n\t *\r\n\t * @async\r\n\t * @param {IUser} user\r\n\t * The logged in user.\r\n\t * @param {ISecurityGroup[]} accessibleGroups\r\n\t * The security groups to decorate the user with\r\n\t * specific ones.\r\n\t * @param {ISecurityGroup[]} membershipGroups\r\n\t * The security groups the user is a member of. Optionally added\r\n\t * to the user here, or a fresh set will be retieved form the server.\r\n\t * @returns {Promise}\r\n\t * The user with user security group values set and ready for use.\r\n\t * @memberof UserService\r\n\t */\r\n\tpublic async setUserSecurityGroups(\r\n\t\tuser: IUser,\r\n\t\tmembershipGroups: ISecurityGroup[] = []): Promise\r\n\t{\r\n\t\tconst membershipFilter: string =\r\n\t\t\t'SecurityGroupEntityInstances.Any('\r\n\t\t\t\t+ `EntityInstanceId eq ${user.id})`;\r\n\r\n\t\tconst membershipSecurityGroups: ISecurityGroup[] =\r\n\t\t\tmembershipGroups.length > 0\r\n\t\t\t\t? membershipGroups\r\n\t\t\t\t: await ApiHelper.getFullDataSet(\r\n\t\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\t\tmembershipFilter,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.dataLimits.maxResultSet);\r\n\r\n\t\tuser.membershipSecurityGroups = membershipSecurityGroups;\r\n\r\n\t\treturn user;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the User Instance and its security groups.\r\n\t *\r\n\t * @async\r\n\t * @param {IUser} user\r\n\t * The logged in user.\r\n\t * @param {ISecurityGroup[]} initialSecurityGroups\r\n\t * The initial security groups.\r\n\t * @param {ISecurityGroup[]} changedSecurityGroups\r\n\t * The changed security groups.\r\n\t * @memberof UserService\r\n\t */\r\n\t public async updateUserSecurityGroups(\r\n\t\tuser: IEntityInstance,\r\n\t\tinitialSecurityGroups: ISecurityGroup[],\r\n\t\tchangedSecurityGroups: ISecurityGroup[]): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tawait this.entityInstanceApiService\r\n\t\t\t.update(\r\n\t\t\t\tuser.id,\r\n\t\t\t\tuser);\r\n\r\n\t\tfor (const initialSecurityGroup of initialSecurityGroups)\r\n\t\t{\r\n\t\t\tif (!changedSecurityGroups.some((changedSecurityGroup) =>\r\n\t\t\t\tinitialSecurityGroup.id === changedSecurityGroup.id))\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.deleteSecurityGroupUser(\r\n\t\t\t\t\t\tinitialSecurityGroup.id,\r\n\t\t\t\t\t\tuser.id);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const changedSecurityGroup of changedSecurityGroups)\r\n\t\t{\r\n\t\t\tif (!initialSecurityGroups.some((initialSecurityGroup) =>\r\n\t\t\t\tinitialSecurityGroup.id === changedSecurityGroup.id))\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.createSecurityGroupUser(\r\n\t\t\t\t\t\tchangedSecurityGroup.id,\r\n\t\t\t\t\t\tuser.id);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIWeatherForecast\r\n} from '@shared/interfaces/weather/weather-forecast.interface';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton class representing the weather forecast api service.\r\n *\r\n * @export\r\n * @class PowerBiApiService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class WeatherForecastService\r\n{\r\n\t/**\r\n\t * Sets the one call api resource.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly oneCallApiResource: string = 'data/2.5/onecall?';\r\n\r\n\t /**\r\n\t * Sets the reverseGeocoding api resource.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly reverseGeocodingApiResource: string = 'geo/1.0/reverse?';\r\n\r\n\t /**\r\n\t * Sets the base open weather map url api resource.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly baseOpenWeatherApiUrl: string =\r\n\t\t'https://api.openweathermap.org/';\r\n\r\n\t /**\r\n\t * Gets or sets coordinates substring.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate coordinatesSubstring: string;\r\n\r\n\t/**\r\n\t * Gets or sets one call open weather data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate oneCallOpenWeatherData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the access token expiry time.\r\n\t *\r\n\t * @type {DateTime}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate localDataExpiry: DateTime;\r\n\r\n\t/**\r\n\t * Gets or sets the geographic location local storage.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate geographicLocation: any;\r\n\r\n\t/**\r\n\t * Gets or sets the browser name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate browserName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the custom location permission state.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate cachedLocationPermissionState: string;\r\n\r\n\t/**\r\n\t * Sets the miles per hour unit string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly milesPerHour: string = 'm/h';\r\n\r\n\t/**\r\n\t * Sets the base open weather image url api resource.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly baseOpenWeatherImageUrl: string =\r\n\t\t'https://openweathermap.org/img/wn/';\r\n\r\n\t/**\r\n\t * Gets the number of minutes prior to the application\r\n\t * access token expiring to call out for new data.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate readonly minutesBeforeRefresh: number =\r\n\t\tAppConstants.time.thirtyMinutes;\r\n\r\n\t/**\r\n\t * Gets a value representing the current expired value\r\n\t * of this services access token.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WeatherForecastService\r\n\t*/\r\n\tprivate get expiredData(): boolean\r\n\t{\r\n\t\treturn this.localDataExpiry <= DateTime.local();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the weather forecast mapped data object.\r\n\t *\r\n\t * @async\r\n\t * @param {string} state\r\n\t * The state status.\r\n\t * @returns {Promise}\r\n\t * The geolocation permissions.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic async getGeolocationPermissions(state: string): Promise\r\n\t{\r\n\t\tthis.browserName = this.getBrowserName();\r\n\t\tthis.cachedLocationPermissionState =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.cachedLocationPermissionState)\r\n\t\t\t|| this.cachedLocationPermissionState\r\n\t\t\t\t=== AppConstants.navigatorPermissionStates.unknown\r\n\t\t\t\t? state\r\n\t\t\t\t: this.cachedLocationPermissionState;\r\n\r\n\t\treturn this.browserName === AppConstants.navigatorBrowserNames.firefox\r\n\t\t\t|| AnyHelper.isNull(navigator.permissions)\r\n\t\t\t? this.cachedLocationPermissionState\r\n\t\t\t: this.getlocationPermissionsState();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the location permission state.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The location permission state.\r\n\t * @memberof WeatherForecastService\r\n\t*/\r\n\tpublic async getlocationPermissionsState(): Promise\r\n\t{\r\n\t\tconst geolocationPermissions =\r\n\t\t\tawait this.queryGeolocationPermissions();\r\n\r\n\t\treturn geolocationPermissions.state;\r\n\t}\r\n\r\n\t/**\r\n\t * Queries the location permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The location permission response.\r\n\t * @memberof WeatherForecastService\r\n\t*/\r\n\tpublic async queryGeolocationPermissions(): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tnavigator.permissions.query(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: AppConstants.navigatorPermissionTypes.geolocation\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\t(permissions: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(permissions);\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current browser name.\r\n\t *\r\n\t * @returns {string}\r\n\t * The browser name from the current user agent.\r\n\t * @memberof WeatherForecastService\r\n\t*/\r\n\tpublic getBrowserName(): string\r\n\t{\r\n\t\tconst browserUserAgent = navigator.userAgent;\r\n\t\tconst splitBrowserHeader =\r\n\t\t\tbrowserUserAgent.split(AppConstants.characters.space);\r\n\t\tconst browserIdentifier =\r\n\t\t\tsplitBrowserHeader[splitBrowserHeader.length - 1];\r\n\r\n\t\tif (browserIdentifier.includes(AppConstants.navigatorBrowserNames.edge))\r\n\t\t{\r\n\t\t\treturn AppConstants.navigatorBrowserNames.edge;\r\n\t\t}\r\n\t\telse if (browserIdentifier\r\n\t\t\t.includes(AppConstants.navigatorBrowserNames.firefox))\r\n\t\t{\r\n\t\t\treturn AppConstants.navigatorBrowserNames.firefox;\r\n\t\t}\r\n\t\telse if (browserIdentifier\r\n\t\t\t.includes(AppConstants.navigatorBrowserNames.safari))\r\n\t\t{\r\n\t\t\treturn (browserUserAgent\r\n\t\t\t\t.indexOf(AppConstants.navigatorBrowserNames.chrome) > 0)\r\n\t\t\t\t? AppConstants.navigatorBrowserNames.chrome\r\n\t\t\t\t: AppConstants.navigatorBrowserNames.safari;\r\n\t\t}\r\n\r\n\t\treturn AppConstants.navigatorBrowserNames.other;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears any stored variables.\r\n\t * This will allow to get new data\r\n\t * on the next data call.\r\n\t *\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic clearStoredVariables(): void\r\n\t{\r\n\t\tthis.oneCallOpenWeatherData = null;\r\n\t\tthis.geographicLocation = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current weather forecast.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The view model object containing\r\n\t * the data for the current weather forecast.\r\n\t *\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic async getCurrentForecast(): Promise\r\n\t{\r\n\t\tthis.oneCallOpenWeatherData =\r\n\t\t\tawait this.getLocalData(\r\n\t\t\t\tthis.oneCallOpenWeatherData,\r\n\t\t\t\tthis.getOneCallOpenWeatherResponse.bind(this));\r\n\t\tconst currentData: any = this.oneCallOpenWeatherData.current;\r\n\r\n\t\treturn this.getWeatherForecastObject(currentData);\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the hourly weather forecast.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The view model object array containing\r\n\t * the data for the current and following\r\n\t * 48 hour weather forecast.\r\n\t *\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic async getHourlyForecast(): Promise\r\n\t{\r\n\t\tthis.oneCallOpenWeatherData =\r\n\t\t\tawait this.getLocalData(\r\n\t\t\t\tthis.oneCallOpenWeatherData,\r\n\t\t\t\tthis.getOneCallOpenWeatherResponse.bind(this));\r\n\t\tconst hourlyOneCallForecastData: any =\r\n\t\t\tthis.oneCallOpenWeatherData.hourly;\r\n\t\tconst hourlyForecast: IWeatherForecast[] = [];\r\n\r\n\t\tfor (const hourlyData of hourlyOneCallForecastData)\r\n\t\t{\r\n\t\t\thourlyForecast.push(this.getWeatherForecastObject(hourlyData));\r\n\t\t}\r\n\r\n\t\treturn hourlyForecast;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the daily weather forecast.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The view model object array containing\r\n\t * the data for the current and following\r\n\t * 7 day weather forecast.\r\n\t *\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic async getDailyForecast(): Promise\r\n\t{\r\n\t\tthis.oneCallOpenWeatherData =\r\n\t\t\tawait this.getLocalData(\r\n\t\t\t\tthis.oneCallOpenWeatherData,\r\n\t\t\t\tthis.getOneCallOpenWeatherResponse.bind(this));\r\n\t\tconst dailyOneCallForecastData: any =\r\n\t\t\tthis.oneCallOpenWeatherData.daily;\r\n\t\tconst dailyForecast: IWeatherForecast[] = [];\r\n\t\tfor (const dailyData of dailyOneCallForecastData)\r\n\t\t{\r\n\t\t\tdailyForecast.push(this.getWeatherForecastObject(dailyData));\r\n\t\t}\r\n\r\n\t\treturn dailyForecast;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the geographic location.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * Geographic location data.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic async getGeographicLocation(): Promise\r\n\t{\r\n\t\tthis.geographicLocation =\r\n\t\t\tawait this.getLocalData(\r\n\t\t\t\tthis.geographicLocation,\r\n\t\t\t\tthis.getGeographicLocationResponse.bind(this));\r\n\r\n\t\treturn this.geographicLocation;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the open weather icon source.\r\n\t *\r\n\t * @param {string} iconId\r\n\t * The icon identifier.\r\n\t * @param {string} size\r\n\t * The size of the icon.\r\n\t * The options are small, medium and large.\r\n\t * @note Default is small.\r\n\t * @returns {string}\r\n\t * The icon image source url.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tpublic getWeatherIconSource(\r\n\t\ticonId: string,\r\n\t\tsize: string = AppConstants.sizeIdentifiers.small): string\r\n\t{\r\n\t\tlet iconSize = AppConstants.empty;\r\n\t\tif (size === AppConstants.sizeIdentifiers.large)\r\n\t\t{\r\n\t\t\ticonSize = '@4x';\r\n\t\t}\r\n\t\telse if (size === AppConstants.sizeIdentifiers.medium)\r\n\t\t{\r\n\t\t\ticonSize = '@2x';\r\n\t\t}\r\n\r\n\t\treturn `${this.baseOpenWeatherImageUrl}`\r\n\t\t\t+ `${iconId}`\r\n\t\t\t+ `${iconSize}.png`;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the coordinates substring, latitude and longitude\r\n\t * from the browser navigation geolocation current position.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The coordinates substring formatted as needed\r\n\t * for the weather api service calls.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate async getCoordinatesSubstring(): Promise\r\n\t{\r\n\t\tconst coordinates: any =\r\n\t\t\tawait this.getGeolocationPositionCoordinates();\r\n\r\n\t\treturn `lat=${coordinates.latitude}`\r\n\t\t\t+ `&lon=${coordinates.longitude}`;\r\n\t}\r\n\r\n\t /**\r\n\t * An awaitable promise to obtain the geolocation\r\n\t * position coordinates.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * The latitude and longitude values in an object literal.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate getGeolocationPositionCoordinates(): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve, reject) =>\r\n\t\t\t{\r\n\t\t\t\tconst getCoordinatesSuccess =\r\n\t\t\t\t\t(position: GeolocationPosition) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t\tlatitude: position.coords.latitude,\r\n\t\t\t\t\t\t\tlongitude: position.coords.longitude\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst getCoordinatesError =\r\n\t\t\t\t\t(exception: GeolocationPositionError) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst exceptionMessage: string =\r\n\t\t\t\t\t\t\t`${exception.message}.`;\r\n\r\n\t\t\t\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t\t\t\t'Location unavailable.',\r\n\t\t\t\t\t\t\texceptionMessage,\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.info,\r\n\t\t\t\t\t\t\texception.code);\r\n\r\n\t\t\t\t\t\treject();\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tnavigator.geolocation.getCurrentPosition(\r\n\t\t\t\t\tgetCoordinatesSuccess,\r\n\t\t\t\t\tgetCoordinatesError,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenableHighAccuracy: true\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the reverse geocoding data response.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The geographic location response containing the current\r\n\t * location information by city, and country based on the\r\n\t * geolocation coordinates.\r\n\t * https://openweathermap.org/api/geocoding-api#reverse\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate async getGeographicLocationResponse(): Promise\r\n\t{\r\n\t\tthis.coordinatesSubstring =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.coordinatesSubstring)\r\n\t\t\t\t? await this.getCoordinatesSubstring()\r\n\t\t\t\t: this.coordinatesSubstring;\r\n\t\tconst apiUrl: string =\r\n\t\t\t`${this.baseOpenWeatherApiUrl}`\r\n\t\t\t\t+ `${this.reverseGeocodingApiResource}`\r\n\t\t\t\t+ `${this.coordinatesSubstring}`\r\n\t\t\t\t+ '&limit=1'\r\n\t\t\t\t+ `&appid=${AppConfig.settings.openWeatherApiKey}`;\r\n\r\n\t\tconst geocodingData: Response = await fetch(apiUrl);\r\n\r\n\t\treturn geocodingData.json();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the weather forecast mapped data object.\r\n\t *\r\n\t * @param {any} cachedData\r\n\t * The local cached data.\r\n\t * @param {() => Promise} getFreshData\r\n\t * Gets new data for the local cache.\r\n\t * @returns {Promise}\r\n\t * The local data either fresh or cached.\r\n\t * If data is null or the time has expired then\r\n\t * it will get fresh data, otherwise will use cached.\r\n\t * @memberof WeatherForecastService\r\n\t*/\r\n\tprivate async getLocalData(\r\n\t\tcachedData: any,\r\n\t\tgetFreshData: () => Promise): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(cachedData)\r\n\t\t\t|| this.expiredData === true)\r\n\t\t{\r\n\t\t\tthis.localDataExpiry =\r\n\t\t\t\tDateHelper.addTimeUnit(\r\n\t\t\t\t\tDateTime.local(),\r\n\t\t\t\t\tthis.minutesBeforeRefresh,\r\n\t\t\t\t\tDateHelper.timeUnits.minute);\r\n\r\n\t\t\treturn Promise.resolve(getFreshData());\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn cachedData;\r\n\t\t}\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the weather forecast mapped data object.\r\n\t *\r\n\t * @param {any} forecastData\r\n\t * The base forecast data used to be mapped and converted into\r\n\t * a weather forecast view model.\r\n\t * @returns {IWeatherForecast}\r\n\t * The weather forecast view model object.\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate getWeatherForecastObject(forecastData: any): IWeatherForecast\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\ttimezone: this.oneCallOpenWeatherData.timezone,\r\n\t\t\t\tcurrentUtcDateTime:\r\n\t\t\t\t\tDateHelper.convertUnixToUTCDateTime(\r\n\t\t\t\t\t\tforecastData.dt)\r\n\t\t\t\t\t\t?.toISO(),\r\n\t\t\t\tsunriseDateTime:\r\n\t\t\t\t\tDateHelper.convertUnixToUTCDateTime(\r\n\t\t\t\t\t\tforecastData.sunrise)\r\n\t\t\t\t\t\t?.toISO(),\r\n\t\t\t\tsunsetDateTime:\r\n\t\t\t\t\tDateHelper.convertUnixToUTCDateTime(\r\n\t\t\t\t\t\tforecastData.sunset)\r\n\t\t\t\t\t\t?.toISO(),\r\n\t\t\t\ttemperature: forecastData.temp,\r\n\t\t\t\thumanPerceptionTemperature: forecastData.feels_like,\r\n\t\t\t\tatmosphericTemperature: forecastData.dew_point,\r\n\t\t\t\tpressure: `${forecastData.pressure}hPa`,\r\n\t\t\t\thumidity: `${forecastData.humidity}%`,\r\n\t\t\t\tcloudiness: `${forecastData.clouds}%`,\r\n\t\t\t\tuvIndex: forecastData.uvi,\r\n\t\t\t\tvisibility: forecastData.visibility,\r\n\t\t\t\twindSpeed: `${forecastData.wind_speed + this.milesPerHour}`,\r\n\t\t\t\twindDireccion: forecastData.wind_deg,\r\n\t\t\t\tweatherId: forecastData.weather[0].id,\r\n\t\t\t\tweatherName: forecastData.weather[0].main,\r\n\t\t\t\tweatherDescription: forecastData.weather[0].description,\r\n\t\t\t\tweatherIcon: forecastData.weather[0].icon\r\n\t\t\t};\r\n\t}\r\n\r\n\t /**\r\n\t * Gets the one call open weather response.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The one call response containing the current,\r\n\t * minutely, hourly and daily weather forecast data.\r\n\t * https://openweathermap.org/api/one-call-api\r\n\t * @memberof WeatherForecastService\r\n\t */\r\n\tprivate async getOneCallOpenWeatherResponse(): Promise\r\n\t{\r\n\t\tthis.coordinatesSubstring =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.coordinatesSubstring)\r\n\t\t\t\t? await this.getCoordinatesSubstring()\r\n\t\t\t\t: this.coordinatesSubstring;\r\n\r\n\t\tconst apiUrl: string =\r\n\t\t\t`${this.baseOpenWeatherApiUrl}`\r\n\t\t\t\t+ `${this.oneCallApiResource}`\r\n\t\t\t\t+ `${this.coordinatesSubstring}`\r\n\t\t\t\t+ `&units=${AppConstants.unitsOfMeasurement.imperial}`\r\n\t\t\t\t+ `&appid=${AppConfig.settings.openWeatherApiKey}`;\r\n\t\tconst weatherData: Response = await fetch(apiUrl);\r\n\r\n\t\treturn weatherData.json();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tGenesysChatService\r\n} from '@shared/services/genesys-chat.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tUserService\r\n} from '@shared/services/user.service';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const activitytServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'ActivityService');\r\nexport const chartFactoryToken =\r\n\tnew InjectionToken(\r\n\t\t'ChartFactory');\r\nexport const ruleServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'RuleService');\r\nexport const entityServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'EntityService');\r\nexport const genesysChatServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'GenesysChatService');\r\nexport const sessionServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'SessionService');\r\nexport const userServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'UserService');\r\nexport const optionsFactoryToken =\r\n\tnew InjectionToken(\r\n\t\t'OptionsFactory');\r\n\r\n/**\r\n * A lookup to be shared accross the application used\r\n * for classes available in the shared module.\r\n *\r\n * @export\r\n * @class SharedTokenLookup\r\n */\r\nexport class SharedTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof SharedTokenLookup\r\n\t */\r\n\tpublic static readonly tokens =\r\n\t\t{\r\n\t\t\t'ActivityService':\r\n\t\t\t\tactivitytServiceToken,\r\n\t\t\t'ChartFactory':\r\n\t\t\t\tchartFactoryToken,\r\n\t\t\t'RuleService':\r\n\t\t\t\truleServiceToken,\r\n\t\t\t'EntityService':\r\n\t\t\t\tentityServiceToken,\r\n\t\t\t'GenesysChatService':\r\n\t\t\t\tgenesysChatServiceToken,\r\n\t\t\t'SessionService':\r\n\t\t\t\tsessionServiceToken,\r\n\t\t\t'UserService':\r\n\t\t\t\tuserServiceToken,\r\n\t\t\t'OptionsFactory':\r\n\t\t\t\toptionsFactoryToken\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tChartHelper\r\n} from '@shared/helpers/chart.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tChartConfiguration,\r\n\tChartData,\r\n\tChartDataset,\r\n\tChartOptions,\r\n\tPieControllerChartOptions,\r\n\tTimeUnit\r\n} from 'chart.js';\r\nimport {\r\n\tget,\r\n\torderBy\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/**\r\n * A class representing a chart transform. This is used to alter\r\n * existing chart configurations on the fly for multiple possible\r\n * displays and data inputs.\r\n *\r\n * @export\r\n * @class ChartTransform\r\n */\r\n@Injectable()\r\nexport class ChartTransform\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a chart transform class.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used to define and handle\r\n\t * site layout changes.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the default color used when this view is no longer displayed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate readonly defaultColor: string = 'rgba(0, 0, 0, 0.1)';\r\n\r\n\t/**\r\n\t * Creates and returns a clone of an existing chart configuration.\r\n\t *\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone.\r\n\t * @returns {ChartConfiguration}\r\n\t * A cloned chart configuration ready for customization.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic cloneChartConfiguration(\r\n\t\tchartConfiguration: ChartConfiguration): ChartConfiguration\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\t...chartConfiguration.options\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a clone of an existing chart configuration\r\n\t * options object.\r\n\t *\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the options value of.\r\n\t * @returns {ChartOptions}\r\n\t * A cloned chart configuration options object ready for customization.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic cloneChartOptions(\r\n\t\tchartConfiguration: ChartConfiguration): ChartOptions\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\t...chartConfiguration.options\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a clone of an existing chart configuration\r\n\t * data object.\r\n\t *\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the data value of.\r\n\t * @returns {ChartData}\r\n\t * A cloned chart configuration data object ready for customization.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic cloneChartData(\r\n\t\tchartConfiguration: ChartConfiguration): ChartData\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\t...chartConfiguration.data\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Clones an existing chart configuration options object and alters\r\n\t * this to be the desired option set for displaying this chart in\r\n\t * a summary card.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the options value of.\r\n\t * @returns {Promise}\r\n\t * A cloned chart configuration options object ready for display\r\n\t * in a summary card.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async toRadialGaugeChart(\r\n\t\tchartConfiguration: ChartConfiguration): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst currentOptions: ChartOptions =\r\n\t\t\t\t\tthis.cloneChartOptions(chartConfiguration);\r\n\r\n\t\t\t\tcurrentOptions.plugins.title.display = false;\r\n\t\t\t\tcurrentOptions.plugins.legend.display = false;\r\n\t\t\t\tcurrentOptions.plugins.tooltip.enabled = false;\r\n\t\t\t\tcurrentOptions.maintainAspectRatio = false;\r\n\t\t\t\tcurrentOptions.plugins.tooltip =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenabled: true\r\n\t\t\t\t\t};\r\n\t\t\t\tcurrentOptions.hover =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmode: null\r\n\t\t\t\t\t};\r\n\t\t\t\tcurrentOptions.layout.padding =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttop: AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.radialGaugeChartTopPadding,\r\n\t\t\t\t\t\tbottom: AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.radialGaugeChartBottomPadding,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst pieChartOptions: PieControllerChartOptions =\r\n\t\t\t\t\tcurrentOptions;\r\n\t\t\t\tpieChartOptions.circumference =\r\n\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t.radialGaugeChartCircumference;\r\n\t\t\t\tpieChartOptions.rotation =\r\n\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t.radialGaugeChartRotation;\r\n\t\t\t\tpieChartOptions.cutout = AppConstants.staticLayoutSizes\r\n\t\t\t\t\t.radialGaugeChartStandardCutOut;\r\n\r\n\t\t\t\tresolve(currentOptions);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clones an existing chart configuration options object and alters\r\n\t * this to be the desired option set for displaying this chart in\r\n\t * a summary card.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the options value of.\r\n\t * @param {boolean} radialGaugeChart\r\n\t * The definition to set the radial gauge configuration options\r\n\t * @returns {Promise}\r\n\t * A cloned chart configuration options object ready for display\r\n\t * in a summary card.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async toSummaryChart(\r\n\t\tchartConfiguration: ChartConfiguration,\r\n\t\tradialGaugeChart: boolean = false): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst currentOptions: ChartOptions =\r\n\t\t\t\tthis.cloneChartOptions(chartConfiguration);\r\n\r\n\t\t\t\tcurrentOptions.responsive = true;\r\n\t\t\t\tcurrentOptions.plugins.title.display = false;\r\n\t\t\t\tcurrentOptions.plugins.legend.display = false;\r\n\t\t\t\tcurrentOptions.plugins.tooltip.enabled = false;\r\n\t\t\t\tcurrentOptions.maintainAspectRatio = false;\r\n\t\t\t\tcurrentOptions.responsive = false;\r\n\t\t\t\tcurrentOptions.plugins.tooltip =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tenabled: false\r\n\t\t\t\t\t};\r\n\t\t\t\tcurrentOptions.hover =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmode: null\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tcurrentOptions.layout.padding =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttop: AppConstants.staticLayoutSizes.standardPadding,\r\n\t\t\t\t\t\tleft: AppConstants.staticLayoutSizes.standardPadding,\r\n\t\t\t\t\t\tright: AppConstants.staticLayoutSizes.standardPadding,\r\n\t\t\t\t\t\t/* See: chart-component.scss .summary-card-chart */\r\n\t\t\t\t\t\tbottom: AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.summaryCardChartBottomMargin\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tif (radialGaugeChart === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrentOptions.responsive = true;\r\n\t\t\t\t\tconst pieChartOptions: PieControllerChartOptions =\r\n\t\t\t\t\t\tcurrentOptions;\r\n\t\t\t\t\tpieChartOptions.circumference =\r\n\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.radialGaugeChartCircumference;\r\n\t\t\t\t\tpieChartOptions.rotation =\r\n\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.radialGaugeChartRotation;\r\n\t\t\t\t\tpieChartOptions.cutout = AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t.radialGaugeChartStandardCutOut;\r\n\t\t\t\t\tcurrentOptions.layout.padding.top =\r\n\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.circularChartInformationCardTopMargin;\r\n\t\t\t\t\tcurrentOptions.layout.padding.bottom =\r\n\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t.radialGaugeChartInformationCardBottomMargin;\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (chartConfiguration.type ===\r\n\t\t\t\t\t\tChartConstants.chartTypes.line)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcurrentOptions.elements.point.radius = 0;\r\n\t\t\t\t\t\tcurrentOptions.scales.x.display = false;\r\n\t\t\t\t\t\tcurrentOptions.scales.y.display = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (chartConfiguration.type ===\r\n\t\t\t\t\t\tChartConstants.chartTypes.pie\r\n\t\t\t\t\t\t|| chartConfiguration.type ===\r\n\t\t\t\t\t\t\tChartConstants.chartTypes.doughnut)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcurrentOptions.layout.padding.top =\r\n\t\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t\t.circularChartInformationCardTopMargin;\r\n\t\t\t\t\t\tcurrentOptions.layout.padding.bottom =\r\n\t\t\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t\t.circularChartInformationBottomMargin;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve(currentOptions);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clones an existing chart configuration options object and alters\r\n\t * this to be the desired option set for displaying this chart in\r\n\t * a square chart.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the options value of.\r\n\t * @returns {Promise}\r\n\t * A cloned chart configuration options object ready for display\r\n\t * in a summary card.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async toSquareChart(\r\n\t\tchartConfiguration: ChartConfiguration): Promise\r\n\t{\r\n\t\treturn new Promise((resolve) =>\r\n\t\t{\r\n\t\t\tconst currentOptions: ChartOptions =\r\n\t\t\t\tthis.cloneChartOptions(chartConfiguration);\r\n\r\n\t\t\tcurrentOptions.plugins.title.display = false;\r\n\t\t\tcurrentOptions.plugins.legend.display = false;\r\n\t\t\tcurrentOptions.maintainAspectRatio = false;\r\n\t\t\tcurrentOptions.responsive = false;\r\n\r\n\t\t\tcurrentOptions.layout.padding =\r\n\t\t\t\t{\r\n\t\t\t\t\t/* See: chart-component.scss .summary-card-chart */\r\n\t\t\t\t\ttop: 7.5,\r\n\t\t\t\t\tbottom: AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t.squareCardChartBottomMargin\r\n\t\t\t\t};\r\n\r\n\t\t\tif (chartConfiguration.type === ChartConstants.chartTypes.pie\r\n\t\t\t\t|| chartConfiguration.type ===\r\n\t\t\t\t\tChartConstants.chartTypes.doughnut)\r\n\t\t\t{\r\n\t\t\t\tcurrentOptions.layout.padding.bottom =\r\n\t\t\t\t\tAppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t.circularChartSquareCardBottomMargin;\r\n\t\t\t}\r\n\r\n\t\t\tresolve(currentOptions);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clones an existing chart configuration data object and alters\r\n\t * this to define the color set's of all charts to match the defined\r\n\t * available ChartConstants.themeColors. If no data set index is sent,\r\n\t * this will apply the array of colors against the primary dataset\r\n\t * else each dataset will receive it's associated index color value.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the data value of.\r\n\t * @param {string[]} chartColors\r\n\t * The array of chart colors to gather theme values of and display\r\n\t * in this chart.\r\n\t * @param {number?} dataSetIndex\r\n\t * The specific data set index to set theme colors against, if not\r\n\t * sent this will match color indexes to data set index for colors.\r\n\t * if sent, this will set the data set color value as an array matching\r\n\t * this themed color set.\r\n\t * @returns {Promise}\r\n\t * A cloned chart configuration data object ready for display\r\n\t * using the defined chart colors matching the current theme.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async toThemeColor(\r\n\t\tchartConfiguration: ChartConfiguration,\r\n\t\tchartColors: string[],\r\n\t\tdataSetIndex: number = null): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tasync (resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst currentData: ChartData =\r\n\t\t\t\t\tthis.cloneChartData(chartConfiguration);\r\n\r\n\t\t\t\t// Handle single dataset, multi color views\r\n\t\t\t\tif (!AnyHelper.isNull(dataSetIndex)\r\n\t\t\t\t\t&& chartColors.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst backgroundColors: string[] = [];\r\n\r\n\t\t\t\t\tfor (const color of chartColors)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst themeColor: string =\r\n\t\t\t\t\t\t\tawait this.getThemeColor(color);\r\n\t\t\t\t\t\tbackgroundColors\r\n\t\t\t\t\t\t\t.push(themeColor);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Add a default for secondary data.\r\n\t\t\t\t\tbackgroundColors.push(this.defaultColor);\r\n\t\t\t\t\tconst fillColors: string[] =\r\n\t\t\t\t\t\tbackgroundColors.map((color) =>\r\n\t\t\t\t\t\t\tthis.getFillColor(color));\r\n\r\n\t\t\t\t\tcurrentData\r\n\t\t\t\t\t\t.datasets[dataSetIndex]\r\n\t\t\t\t\t\t.hoverBackgroundColor = backgroundColors;\r\n\r\n\t\t\t\t\tcurrentData\r\n\t\t\t\t\t\t.datasets[dataSetIndex]\r\n\t\t\t\t\t\t.backgroundColor = fillColors;\r\n\r\n\t\t\t\t\tresolve(currentData);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Handle multiple datasets, each a specific color\r\n\t\t\t\t// Default if not specified to primary\r\n\t\t\t\tif (!AnyHelper.isNull(chartColors))\r\n\t\t\t\t{\r\n\t\t\t\t\tchartColors.forEach(\r\n\t\t\t\t\t\t(color: string, index: number) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.setThemeColor(\r\n\t\t\t\t\t\t\t\tcurrentData,\r\n\t\t\t\t\t\t\t\tcolor,\r\n\t\t\t\t\t\t\t\tindex);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setThemeColor(\r\n\t\t\t\t\t\tcurrentData,\r\n\t\t\t\t\t\tChartConstants.themeColors.primary,\r\n\t\t\t\t\t\t0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve(currentData);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clones an existing chart configuration data object and creates\r\n\t * and maps data values for a chart display according to the\r\n\t * defined groupByCount and fillMissDataSets values.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartConfiguration} chartConfiguration\r\n\t * The chart configuration to clone the data value of.\r\n\t * @param {IAggregate[]} chartData\r\n\t * The chart's data values to translate into a chart data set for display.\r\n\t * @param {string?} pivotProperty\r\n\t * The aggregate value to pivot on, if not sent this will be autogenerated\r\n\t * such as cases of time based outputs.\r\n\t * @param {boolean?} groupByCount\r\n\t * If true, this will group the y based values as the count of data\r\n\t * returned in each aggregate data set as opposed to the value.\r\n\t * This can be used to display unique counts via an api group by.\r\n\t * @param {boolean?} fillMissingDataSets\r\n\t * If true, this will fill in missing label or y values with a zero x\r\n\t * value.\r\n\t * This is used to differentiate between trendline and data value point\r\n\t * based charts.\r\n\t * @returns {Promise}\r\n\t * A cloned chart configuration data object ready for display with mapped\r\n\t * chart axis values matching the sent data.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async handleAggregateData(\r\n\t\tchartConfiguration: ChartConfiguration,\r\n\t\tchartData: IAggregate[],\r\n\t\tpivotProperty: string = null,\r\n\t\tpivotProperties: string[] = [],\r\n\t\tradialGaugeChart: boolean = false,\r\n\t\tgroupByCount: boolean = false,\r\n\t\tfillMissingDataSets: boolean = true): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tasync(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst chartDataSet: ChartData =\r\n\t\t\t\t\tthis.cloneChartData(chartConfiguration);\r\n\r\n\t\t\t\tconst chartType: string =\r\n\t\t\t\t\tchartConfiguration.type;\r\n\t\t\t\tconst xAxes: any =\r\n\t\t\t\t\tchartConfiguration.options.scales?.x;\r\n\t\t\t\tconst xAxesType: string =\r\n\t\t\t\t\txAxes?.type;\r\n\r\n\t\t\t\tswitch (`${chartType}|${xAxesType}`)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'line|time':\r\n\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\tawait this.handleTimeLineAggregate(\r\n\t\t\t\t\t\t\t\tchartDataSet,\r\n\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\txAxes.time.unit,\r\n\t\t\t\t\t\t\t\txAxes.time.unitStepSize,\r\n\t\t\t\t\t\t\t\tgroupByCount,\r\n\t\t\t\t\t\t\t\tfillMissingDataSets));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'pie|undefined':\r\n\t\t\t\t\tcase 'doughnut|undefined':\r\n\t\t\t\t\t\tif (radialGaugeChart === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\tawait this.handleCircularData(\r\n\t\t\t\t\t\t\t\t\tchartDataSet,\r\n\t\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\t\tpivotProperties));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\tawait this.handleCommonAggregate(\r\n\t\t\t\t\t\t\t\t\tchartDataSet,\r\n\t\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\t\tpivotProperty));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'bar|undefined':\r\n\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(xAxes)\r\n\t\t\t\t\t\t\t&& xAxes.stacked === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve (await this.handleStackedBarAggregate(\r\n\t\t\t\t\t\t\t\tchartDataSet,\r\n\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\tpivotProperty,\r\n\t\t\t\t\t\t\t\txAxes.dateRange,\r\n\t\t\t\t\t\t\t\txAxes.timeUnit,\r\n\t\t\t\t\t\t\t\txAxes.dateFormat,\r\n\t\t\t\t\t\t\t\txAxes.stackedTimeFormat,\r\n\t\t\t\t\t\t\t\txAxes.dataSetLabels));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve (await this.handleCommonAggregate(\r\n\t\t\t\t\t\t\t\tchartDataSet,\r\n\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\tpivotProperty));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Maps pie based aggregate data into an expected x and y value set ready\r\n\t * for a chart display.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartData} currentChartDataSet\r\n\t * The chart data set which will have it's data value defined and mapped.\r\n\t * @param {IAggregate[]} chartData\r\n\t * The data values to map into the current chart dataset.\r\n\t * @param {string} pivotProperty\r\n\t * The aggregate key value to pivot on for this circular chart.\r\n\t * @returns {Promise}\r\n\t * A dataset ready for a circular chart based display.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async handleCircularData(\r\n\t\tcurrentChartDataSet: ChartData,\r\n\t\tchartData: object,\r\n\t\tpivotProperties: string[]): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tasync(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tcurrentChartDataSet.datasets.forEach(\r\n\t\t\t\t\t(dataSet: ChartDataset) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst sortedData: number[] = [];\r\n\r\n\t\t\t\t\t\tcurrentChartDataSet.labels.forEach(\r\n\t\t\t\t\t\t\t(label: string) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpivotProperties.forEach(\r\n\t\t\t\t\t\t\t\t\t(pivotProperty: string) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tconst lastSplitProperty: string =\r\n\t\t\t\t\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\tpivotProperty.toLowerCase(),\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (lastSplitProperty ===\r\n\t\t\t\t\t\t\t\t\t\t\tlabel.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tsortedData.push(\r\n\t\t\t\t\t\t\t\t\t\t\t\tparseFloat(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tget(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpivotProperty)));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdataSet.data = sortedData;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tresolve(currentChartDataSet);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Maps common based aggregate data into an expected x and y value set ready\r\n\t * for a chart display.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartData} currentChartDataSet\r\n\t * The chart data set which will have it's data value defined and mapped.\r\n\t * @param {IAggregate[]} chartData\r\n\t * The data values to map into the current chart dataset.\r\n\t * @param {string} pivotProperty\r\n\t * The aggregate key value to pivot on for this chart.\r\n\t * @returns {Promise}\r\n\t * A dataset ready for common aggregate chart based display.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\t public async handleCommonAggregate(\r\n\t\tcurrentChartDataSet: ChartData,\r\n\t\tchartData: IAggregate[],\r\n\t\tpivotProperty: string): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tasync(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tcurrentChartDataSet.datasets.forEach(\r\n\t\t\t\t\t(dataSet: ChartDataset) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst sortedData: number[] = [];\r\n\t\t\t\t\t\tlet useDataLabels: boolean = false;\r\n\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrEmpty(currentChartDataSet.labels))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tuseDataLabels = true;\r\n\t\t\t\t\t\t\tcurrentChartDataSet.labels = [];\r\n\r\n\t\t\t\t\t\t\tfor (const data of chartData)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcurrentChartDataSet.labels\r\n\t\t\t\t\t\t\t\t\t.push(data.key[pivotProperty]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcurrentChartDataSet.labels.forEach(\r\n\t\t\t\t\t\t\t(label: string) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst property =\r\n\t\t\t\t\t\t\t\t\tpivotProperty[0].toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t+ pivotProperty.slice(1);\r\n\r\n\t\t\t\t\t\t\t\tconst matchingData: IAggregate =\r\n\t\t\t\t\t\t\t\t\t(chartData || []).find(\r\n\t\t\t\t\t\t\t\t\t\t(aggregate: IAggregate) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tconst aggregateKey =\r\n\t\t\t\t\t\t\t\t\t\t\t\t(useDataLabels === false)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? StringHelper.toProperCase(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taggregate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.key[property]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: aggregate\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.key[property];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn label === aggregateKey;\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tsortedData.push(\r\n\t\t\t\t\t\t\t\t\tAnyHelper.isNull(matchingData)\r\n\t\t\t\t\t\t\t\t\t\t? 0\r\n\t\t\t\t\t\t\t\t\t\t: matchingData.value);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdataSet.data = sortedData;\r\n\t\t\t\t\t});\r\n\t\t\t\tresolve(currentChartDataSet);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Maps bar based aggregate data\r\n\t * into an expected stacked x and y values by a date range\r\n\t * set ready for a chart display.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartData} currentChartDataSet\r\n\t * The chart data set which will have it's data value defined and mapped.\r\n\t * @param {IAggregate[]} chartData\r\n\t * The data values to map into the current chart dataset.\r\n\t * @param {string} pivotProperty\r\n\t * The aggregate key value to pivot on for this chart.\r\n\t * @param {DateTime[]} dateRange\r\n\t * The date range that will be splitting the data into.\r\n\t * @param {TimeUnit} timeUnit\r\n\t * The time unit that the chart will be based on.\r\n\t * @param {string} dateFormat\r\n\t * The date format to be displayed within the chart.\r\n\t * @param {string} stackedTimeFormat\r\n\t * The date format to be displayed within the chart.\r\n\t * @param {string[]} dataSetLabels\r\n\t * The date format to be displayed within the chart.\r\n\t * @returns {Promise}\r\n\t * A dataset ready for a circular chart based display.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\t public async handleStackedBarAggregate(\r\n\t\tcurrentChartDataSet: ChartData,\r\n\t\tchartData: IAggregate[],\r\n\t\tpivotProperty: string,\r\n\t\tdateRange: DateTime[],\r\n\t\ttimeUnit: TimeUnit,\r\n\t\tdateFormat: string,\r\n\t\tstackedTimeFormat: string,\r\n\t\tdataSetLabels: string[]): Promise\r\n\t{\r\n\t\tconst newDataSet: ChartDataset[] = [];\r\n\t\tlet dataSetIndex: number;\r\n\r\n\t\tif (!AnyHelper.isNull(dataSetLabels))\r\n\t\t{\r\n\t\t\tdataSetLabels.forEach((dataSetLabel) =>\r\n\t\t\t{\r\n\t\t\t\tnewDataSet.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: dataSetLabel,\r\n\t\t\t\t\t\tdata: [\r\n\t\t\t\t\t\t\t...Array.from(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlength: dateRange.length\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tchartData.forEach(\r\n\t\t\t(data) =>\r\n\t\t\t{\r\n\t\t\t\tdataSetIndex =\r\n\t\t\t\t\tnewDataSet.findIndex((dataValue) =>\r\n\t\t\t\t\t\tdata.key[pivotProperty] === dataValue.label);\r\n\r\n\t\t\t\tif (dataSetIndex < 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tnewDataSet.push(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: data.key[pivotProperty],\r\n\t\t\t\t\t\t\tdata: [\r\n\t\t\t\t\t\t\t\t...Array.from(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlength: dateRange.length\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdataSetIndex = newDataSet.length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst dateRangeIndex: number =\r\n\t\t\t\t\tdateRange.findIndex((dateValue) =>\r\n\t\t\t\t\t\tdata.key[timeUnit].toString()\r\n\t\t\t\t\t\t\t=== dateValue.toFormat(stackedTimeFormat));\r\n\r\n\t\t\t\tnewDataSet[dataSetIndex]\r\n\t\t\t\t\t.data[dateRangeIndex] =\r\n\t\t\t\t\t\tdata.value;\r\n\r\n\t\t\t\tdataSetIndex = null;\r\n\t\t\t});\r\n\r\n\t\tcurrentChartDataSet.datasets = newDataSet;\r\n\t\tcurrentChartDataSet.labels =\r\n\t\t\tdateRange.map(\r\n\t\t\t\t(date) =>\r\n\t\t\t\t\tdate.toFormat(dateFormat));\r\n\r\n\t\treturn Promise.resolve(currentChartDataSet);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps line based, time pivoted aggregate data into an expected\r\n\t * x and y value set ready for a time line chart display.\r\n\t *\r\n\t * @async\r\n\t * @param {ChartData} currentChartDataSet\r\n\t * The chart data set which will have it's data value defined and\r\n\t * mapped.\r\n\t * @param {IAggregate[]} chartData\r\n\t * The data values to map into the current chart dataset.\r\n\t * @param {TimeUnit} timeUnit\r\n\t * The unit of time that each label should split down to.\r\n\t * @see ChartConstants.timeUnits\r\n\t * @param {number?} timeUnitStepSize\r\n\t * The step size per unit of time to increment for each label.\r\n\t * Ie: '1' 'day' or '24' 'hour's.\r\n\t * @param {boolean?} groupByCount\r\n\t * If true, this will group the y based values as the count of data\r\n\t * returned in each aggregate data set as opposed to the value.\r\n\t * This can be used to display unique counts via an api group by.\r\n\t * @param {boolean?} fillMissingDataSets\r\n\t * If true, this will fill in missing label or y values with a zero x\r\n\t * value. This is used to differentiate between trendline and data\r\n\t * value point based charts.\r\n\t * @returns {Promise}\r\n\t * A dataset ready for a line based, time pivoted chart display.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tpublic async handleTimeLineAggregate(\r\n\t\tcurrentChartDataSet: ChartData,\r\n\t\tchartData: IAggregate[],\r\n\t\ttimeUnit: TimeUnit,\r\n\t\ttimeUnitStepSize: number = 1,\r\n\t\tgroupByCount: boolean = false,\r\n\t\tfillMissingDataSets: boolean = true): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tasync(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst sortedData: IAggregate[] =\r\n\t\t\t\t\torderBy(\r\n\t\t\t\t\t\tchartData,\r\n\t\t\t\t\t\t(aggregate: IAggregate) =>\r\n\t\t\t\t\t\t\tthis.getTimeBasedAggregateKey(aggregate));\r\n\r\n\t\t\t\tif (fillMissingDataSets === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (currentChartDataSet.labels.length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst initialTime: DateTime =\r\n\t\t\t\t\t\t\tthis.getTimeBasedAggregateKey(\r\n\t\t\t\t\t\t\t\tsortedData[0]);\r\n\t\t\t\t\t\tconst finalTime: DateTime =\r\n\t\t\t\t\t\t\tthis.getTimeBasedAggregateKey(\r\n\t\t\t\t\t\t\t\tsortedData[sortedData.length - 1]);\r\n\r\n\t\t\t\t\t\tcurrentChartDataSet.labels =\r\n\t\t\t\t\t\t\tChartHelper.getTimeBasedLabels(\r\n\t\t\t\t\t\t\t\tinitialTime,\r\n\t\t\t\t\t\t\t\tfinalTime,\r\n\t\t\t\t\t\t\t\ttimeUnit,\r\n\t\t\t\t\t\t\t\ttimeUnitStepSize);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet newDataSet: any[] = [];\r\n\t\t\t\t\tcurrentChartDataSet.datasets.forEach(\r\n\t\t\t\t\t\t(dataSet: ChartDataset) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcurrentChartDataSet.labels.forEach(\r\n\t\t\t\t\t\t\t\t(time: DateTime) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (groupByCount === false)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tconst matchingAggregate: IAggregate =\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tthis.getsMatchingTimeBasedAggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t'find',\r\n\t\t\t\t\t\t\t\t\t\t\t\tsortedData,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttime);\r\n\r\n\t\t\t\t\t\t\t\t\t\tnewDataSet.push(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tx: time,\r\n\t\t\t\t\t\t\t\t\t\t\t\ty: AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmatchingAggregate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: matchingAggregate.value\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tconst matchingAggregates: IAggregate[] =\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tthis.getsMatchingTimeBasedAggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t'filter',\r\n\t\t\t\t\t\t\t\t\t\t\t\tsortedData,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttime);\r\n\r\n\t\t\t\t\t\t\t\t\t\tnewDataSet.push(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tx: time,\r\n\t\t\t\t\t\t\t\t\t\t\t\ty: matchingAggregates.length\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tdataSet.data = newDataSet;\r\n\t\t\t\t\t\t\tnewDataSet = [];\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrentChartDataSet.labels =\r\n\t\t\t\t\t\tsortedData\r\n\t\t\t\t\t\t\t.map((aggregate: IAggregate) =>\r\n\t\t\t\t\t\t\t\tthis.getTimeBasedAggregateKey(\r\n\t\t\t\t\t\t\t\t\taggregate));\r\n\t\t\t\t\tcurrentChartDataSet.datasets.forEach(\r\n\t\t\t\t\t\t(dataSet: ChartDataset) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataSet.data = sortedData\r\n\t\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t\t(aggregate: IAggregate) =>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tx: this.getTimeBasedAggregateKey(\r\n\t\t\t\t\t\t\t\t\t\t\t\taggregate),\r\n\t\t\t\t\t\t\t\t\t\t\ty: aggregate.value || 0\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve(currentChartDataSet);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the matching aggregate time based values\r\n\t * based on the sent aggregate.\r\n\t *\r\n\t * @param {any} objectMethod\r\n\t * The object method to make the matching comparission.\r\n\t * @param {any[]} sortedData\r\n\t * The object data.\r\n\t * @param {DateTime} time\r\n\t * The time to compare data.\r\n\t * @returns {IAggregate | IAggregate[]}\r\n\t * The matching comparison time based aggregate.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate getsMatchingTimeBasedAggregate(\r\n\t\tobjectMethod: string,\r\n\t\tsortedData: any[],\r\n\t\ttime: DateTime): IAggregate | IAggregate[]\r\n\t{\r\n\t\treturn sortedData[objectMethod](\r\n\t\t\t(aggregate:\r\n\t\t\t\tIAggregate) =>\r\n\t\t\t\tthis.getTimeBasedAggregateKey(\r\n\t\t\t\t\taggregate)\r\n\t\t\t\t\t.toFormat(\r\n\t\t\t\t\t\tDateHelper.presetFormats.dateAndHourFormat) ===\r\n\t\t\t\t\t\ttime.toFormat(\r\n\t\t\t\t\t\t\tDateHelper.presetFormats.dateAndHourFormat));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns time based values based on the sent aggregate. This is returned\r\n\t * with the correct utc valued datetime for use in y labels and data\r\n\t * grouping.\r\n\t *\r\n\t * @param {IAggregate} aggregate\r\n\t * The aggregate data value to map a time based datetime from.\r\n\t * @returns {DateTime}\r\n\t * A utc valued datettime matching the existing aggregate value returned\r\n\t * from an api aggregate query.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate getTimeBasedAggregateKey(\r\n\t\taggregate: IAggregate): DateTime\r\n\t{\r\n\t\tconst hour: number =\r\n\t\t\taggregate.key[ChartConstants.timeUnits.hour];\r\n\r\n\t\tconst dateTimeObjectInput: object =\r\n\t\t\t{\r\n\t\t\t\tyear: aggregate.key[ChartConstants.timeUnits.year],\r\n\t\t\t\tmonth: aggregate.key[ChartConstants.timeUnits.month],\r\n\t\t\t\tday: aggregate.key[ChartConstants.timeUnits.day],\r\n\t\t\t\thour: AnyHelper.isNull(hour)\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: hour,\r\n\t\t\t\tminute: aggregate.key[ChartConstants.timeUnits.minute] || 0,\r\n\t\t\t\tsecond: aggregate.key[ChartConstants.timeUnits.second] || 0\r\n\t\t\t};\r\n\r\n\t\treturn DateTime.fromObject(\r\n\t\t\tdateTimeObjectInput);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the supplied index based data set's color values to match the sent\r\n\t * color value.\r\n\t *\r\n\t * @param {ChartData} currentData\r\n\t * The chart data set array to alter colors for.\r\n\t * @param {string} color\r\n\t * The theme based color value to be set for the indexed data set.\r\n\t * @see ChartConstants.themeColors\r\n\t * @param {number} index\r\n\t * The dataset index to set theme color values for.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate async setThemeColor(\r\n\t\tcurrentData: ChartData,\r\n\t\tcolor: string,\r\n\t\tindex: number): Promise\r\n\t{\r\n\t\tif ((currentData.datasets?.length || 0) === 0\r\n\t\t\t|| AnyHelper.isNull(currentData.datasets[index]))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst themeColor: string =\r\n\t\t\tawait this.getThemeColor(color);\r\n\t\tconst fillColor: string =\r\n\t\t\tthis.getFillColor(themeColor);\r\n\r\n\t\tconst dataSet: ChartDataset =\r\n\t\t\tcurrentData.datasets[index];\r\n\t\tdataSet.borderColor = themeColor;\r\n\t\tdataSet.backgroundColor = fillColor;\r\n\t\tdataSet.hoverBackgroundColor = themeColor;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a themed color value computed from the color swatch based\r\n\t * on the current theme colors.\r\n\t *\r\n\t * @param {string} color\r\n\t * The theme based color value to get the computed rgba based\r\n\t * color value of. See: ChartConstants.themeColors.\r\n\t * @returns {Promise}\r\n\t * The rgba theme color computed from the supplied theme color.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate async getThemeColor(\r\n\t\tcolor: string): Promise\r\n\t{\r\n\t\treturn this.waitForElement(`.theme-color-${color}`)\r\n\t\t\t.then(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst elementForTheme: any =\r\n\t\t\t\t\t\tdocument.querySelector(\r\n\t\t\t\t\t\t\t`.theme-color-${color}`);\r\n\r\n\t\t\t\t\treturn AnyHelper.isNull(elementForTheme)\r\n\t\t\t\t\t\t? this.defaultColor\r\n\t\t\t\t\t\t: getComputedStyle(\r\n\t\t\t\t\t\t\telementForTheme).color;\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Observes the DOM for an specific selector and waits for it\r\n\t * to be present.\r\n\t *\r\n\t * @param {string} selector\r\n\t * The selector of the element to wait for.\r\n\t * @returns {Promise}\r\n\t * The truthy when the element is present at the DOM.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate waitForElement(selector: string): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\tresolve =>\r\n\t\t\t{\r\n\t\t\t\tif (document.querySelector(selector))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn resolve(document.querySelector(selector));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst observer = new MutationObserver(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tif (document.querySelector(selector))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(document.querySelector(selector));\r\n\t\t\t\t\t\t\tobserver.disconnect();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tobserver.observe(\r\n\t\t\t\t\tdocument.body,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tchildList: true,\r\n\t\t\t\t\t\tsubtree: true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a themed fill color value computed from the color swatch based\r\n\t * on the current theme colors.\r\n\t *\r\n\t * @param {string} color\r\n\t * The theme based color value to get the computed rgba based\r\n\t * color value of. See: ChartConstants.themeColors.\r\n\t * @param {number?} opacity\r\n\t * The opacity value to use for this fill color.\r\n\t * @returns {string}\r\n\t * The rgba fill color computed from the supplied theme color.\r\n\t * @memberof ChartTransform\r\n\t */\r\n\tprivate getFillColor(\r\n\t\tthemeColor: string,\r\n\t\topacity: number = .7): string\r\n\t{\r\n\t\treturn (themeColor)\r\n\t\t\t.replace('rgb(', 'rgba(')\r\n\t\t\t.replace(')', `, ${opacity})`);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIPolicyTermHierarchy\r\n} from '@insurance/interfaces/policy-term-hierarchy';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFileState\r\n} from '@shared/constants/enums/file-state.enum';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tIWorkItem\r\n} from '@shared/interfaces/workItems/work-item.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing a common interface to gather fully populated\r\n * work item information.\r\n *\r\n * @export\r\n * @class WorkItemService\r\n */\r\n@Injectable()\r\nexport class WorkItemService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkItemService.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for work item based navigation.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service used for local storage.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for service actions.\r\n\t * @param {SessionService} sessionService\r\n\t * The sessionService service used for user actions.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service used for lookups in this service.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used for lookups in this service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service used for lookups in this service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity type service for this component.\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The resolver service for this component.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic cacheService: CacheService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic insuranceService: InsuranceService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic securityGroupApiService: SecurityGroupApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the work item queue with the sent queue name. If no match\r\n\t * is found, null is returned.\r\n\t *\r\n\t * @async\r\n\t * @param {string} queueName\r\n\t * The work item queue name to search for.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with the work item holding this unique name,\r\n\t * or null if no match is found.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getQueueByName(\r\n\t\tqueueName: string): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.workItemQueues;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.name} eq '${queueName}'`,\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * For each work item type, this will gather the full set of work items\r\n\t * assigned to the user and not 'Done' or 'Ignored'.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} includeReminders\r\n\t * A flag to signify if reminders should be included in the results.\r\n\t * @param {string} customFilter\r\n\t * If sent this will be used over the default filter. The default filter\r\n\t * includes only those items that are not Done, Ignored, and are assigned\r\n\t * to the current user.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with the full set of work items not that are\r\n\t * assigned to the user and need to be worked.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getCurrentUserWorkItems(\r\n\t\tincludeReminders: boolean = true,\r\n\t\tcustomFilter: string = null): Promise\r\n\t{\r\n\t\tconst reminderFilter: string =\r\n\t\t\tincludeReminders === true\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: ` and ${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t+ 'ne \\'WorkItem.Reminder\\'';\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\t`${AppConstants.commonProperties.name}.StartsWith('`\r\n\t\t\t\t\t+ WorkItemConstants.workItemEntityTypePrefix\r\n\t\t\t\t\t+ '\\') eq true'\r\n\t\t\t\t\t+ reminderFilter,\r\n\t\t\t\tAppConstants.commonProperties.name);\r\n\t\tconst workItemFilter: string =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(customFilter)\r\n\t\t\t\t? customFilter\r\n\t\t\t\t: `${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t\t+ `'${WorkItemConstants.workItemStatus.done}' and `\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.status} ne `\r\n\t\t\t\t\t+ `'${WorkItemConstants.workItemStatus.ignored}' and `\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.assignedTo} eq `\r\n\t\t\t\t\t+ `'${this.sessionService.user.data.userName}'`;\r\n\r\n\t\tconst workItemPromises: Promise[] = [];\r\n\t\tfor (const entityType of entityTypes)\r\n\t\t{\r\n\t\t\tworkItemPromises.push(\r\n\t\t\t\tApiHelper.getFullDataSet(\r\n\t\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\t\tworkItemFilter,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tentityType.group));\r\n\t\t}\r\n\t\tconst workItemCollections: IEntityInstance[][] =\r\n\t\t\tawait Promise.all(workItemPromises);\r\n\r\n\t\tconst combinedWorkItems: IEntityInstance[] =\r\n\t\t\tworkItemCollections.flat();\r\n\r\n\t\treturn combinedWorkItems.map(\r\n\t\t\t(item: IEntityInstance) =>\r\n\t\t\t{\r\n\t\t\t\t(item).dueDate =\r\n\t\t\t\t\tDateHelper.fromUtcIso(item.data.keyDates.dueDate);\r\n\t\t\t\t(item).doneDate =\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(item.data.keyDates.doneDate)\r\n\t\t\t\t\t\t? DateHelper.fromUtcIso(item.data.keyDates.doneDate)\r\n\t\t\t\t\t\t: null;\r\n\t\t\t\t(item).workItemDisplayName =\r\n\t\t\t\t\tStringHelper.getLongEntityDisplayName(\r\n\t\t\t\t\t\titem.entityType,\r\n\t\t\t\t\t\tWorkItemConstants.workItemEntityTypePrefix);\r\n\r\n\t\t\t\treturn item;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a queue, user, and a set of security groups that the user should\r\n\t * be in, this will add or remove queue security groups so that the user\r\n\t * is set accurately matching the sent queue security groups only.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} queue\r\n\t * The queue to set security group users on.\r\n\t * @param {IEntityInstance} user\r\n\t * The user to set security groups for.\r\n\t * @param {ISecurityGroup[]} securityGroups\r\n\t * The security groups to set for the user in the queue.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async setQueueUserSecurityGroups(\r\n\t\tqueue: IEntityInstance,\r\n\t\tuser: IEntityInstance,\r\n\t\tsecurityGroups: ISecurityGroup[]): Promise\r\n\t{\r\n\t\tconst allowedSecurityGroups: ISecurityGroup[] =\r\n\t\t\tawait this.getQueueSecurityGroups(\r\n\t\t\t\tqueue);\r\n\r\n\t\tconst sharedAddMessage: string =\r\n\t\t\t`queue permissions for ${user.data.firstName} `\r\n\t\t\t\t+ `${user.data.lastName}.`;\r\n\t\tconst pendingMessage: string =\r\n\t\t\t`Setting ${sharedAddMessage}`;\r\n\t\tconst completeMessage: string =\r\n\t\t\t`Set ${sharedAddMessage}`;\r\n\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tconst addedSecurityGroups: ISecurityGroup[] = [];\r\n\t\tconst removedSecurityGroups: ISecurityGroup[] = [];\r\n\t\tfor(const securityGroup of allowedSecurityGroups)\r\n\t\t{\r\n\t\t\tconst users: number[] =\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.getSecurityGroupUsers(\r\n\t\t\t\t\t\tsecurityGroup.id);\r\n\r\n\t\t\tconst userIsInGroup: boolean =\r\n\t\t\t\tusers.indexOf(user.id) !== -1;\r\n\t\t\tconst addSecurity: boolean =\r\n\t\t\t\tsecurityGroups.some(\r\n\t\t\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t\t\tgroup.id === securityGroup.id);\r\n\t\t\tconst removeSecurity: boolean = !addSecurity;\r\n\r\n\t\t\tif (userIsInGroup === false\r\n\t\t\t\t&& addSecurity === true)\r\n\t\t\t{\r\n\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\tthis.securityGroupApiService\r\n\t\t\t\t\t\t.createSecurityGroupUser(\r\n\t\t\t\t\t\t\tsecurityGroup.id,\r\n\t\t\t\t\t\t\tuser.id));\r\n\t\t\t\taddedSecurityGroups.push(\r\n\t\t\t\t\tsecurityGroup);\r\n\t\t\t}\r\n\r\n\t\t\tif (userIsInGroup === true\r\n\t\t\t\t&& removeSecurity === true)\r\n\t\t\t{\r\n\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\tthis.securityGroupApiService\r\n\t\t\t\t\t\t.deleteSecurityGroupUser(\r\n\t\t\t\t\t\t\tsecurityGroup.id,\r\n\t\t\t\t\t\t\tuser.id));\r\n\t\t\t\tremovedSecurityGroups.push(\r\n\t\t\t\t\tsecurityGroup);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst detailMessages:\r\n\t\t\t{\r\n\t\t\t\tsuccess: string;\r\n\t\t\t\tfailure: string;\r\n\t\t\t} = this.getDetailMessages(\r\n\t\t\t\tqueue,\r\n\t\t\t\taddedSecurityGroups,\r\n\t\t\t\tremovedSecurityGroups);\r\n\t\tconst successDetails: string = detailMessages.success;\r\n\t\tconst failureDetails: string = detailMessages.failure;\r\n\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait Promise.all(promiseArray);\r\n\r\n\t\t\t\t\t\tthis.syncCurrentUserSecurityGroups(\r\n\t\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\t\taddedSecurityGroups,\r\n\t\t\t\t\t\t\t[]);\r\n\t\t\t\t\t\tthis.syncCurrentUserSecurityGroups(\r\n\t\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tremovedSecurityGroups);\r\n\r\n\t\t\t\t\t\tfor(const securityGroup of allowedSecurityGroups)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst url: string =\r\n\t\t\t\t\t\t\t\tthis.securityGroupApiService.getNestedUrl(\r\n\t\t\t\t\t\t\t\t\tsecurityGroup.id,\r\n\t\t\t\t\t\t\t\t\tAppConstants.nestedRouteTypes.users);\r\n\t\t\t\t\t\t\tthis.cacheService.clearExistingStartsWithResponses(\r\n\t\t\t\t\t\t\t\turl);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t`${pendingMessage}`,\r\n\t\t\t\t`${completeMessage}`,\r\n\t\t\t\tsuccessDetails,\r\n\t\t\t\tfailureDetails),\r\n\t\t\tAppConstants.activityStatus.complete);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a queue and a user, this will remove all queue level security\r\n\t * groups that the user is in.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} queue\r\n\t * The queue to remove security group users.\r\n\t * @param {IEntityInstance} user\r\n\t * The user to remove security groups from.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async deleteUserQueueSecurityGroups(\r\n\t\tqueue: IEntityInstance,\r\n\t\tuser: IEntityInstance): Promise\r\n\t{\r\n\t\tconst securityGroups: ISecurityGroup[] =\r\n\t\t\tawait this.getQueueSecurityGroups(\r\n\t\t\t\tqueue);\r\n\r\n\t\tconst sharedAddMessage: string =\r\n\t\t\t`queue permissions from ${user.data.firstName} `\r\n\t\t\t\t+ `${user.data.lastName}.`;\r\n\t\tconst pendingMessage: string =\r\n\t\t\t`Removing ${sharedAddMessage}`;\r\n\t\tconst completeMessage: string =\r\n\t\t\t`Removed ${sharedAddMessage}`;\r\n\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tconst removedSecurityGroups: ISecurityGroup[] = [];\r\n\t\tfor(const securityGroup of securityGroups)\r\n\t\t{\r\n\t\t\tconst users: number[] =\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.getSecurityGroupUsers(\r\n\t\t\t\t\t\tsecurityGroup.id);\r\n\r\n\t\t\tconst userIsInGroup: boolean =\r\n\t\t\t\tusers.indexOf(user.id) !== -1;\r\n\t\t\tif (userIsInGroup === true)\r\n\t\t\t{\r\n\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\tthis.securityGroupApiService\r\n\t\t\t\t\t\t.deleteSecurityGroupUser(\r\n\t\t\t\t\t\t\tsecurityGroup.id,\r\n\t\t\t\t\t\t\tuser.id));\r\n\r\n\t\t\t\tremovedSecurityGroups.push(securityGroup);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst sharedDetailMessage: string =\r\n\t\t\tthis.getSharedDetailMessage(\r\n\t\t\t\tqueue.data.name,\r\n\t\t\t\tremovedSecurityGroups,\r\n\t\t\t\ttrue);\r\n\t\tconst successDetails: string =\r\n\t\t\t`Removed ${sharedDetailMessage}`;\r\n\t\tconst failureDetails: string =\r\n\t\t\t`Failed to remove ${sharedDetailMessage}`;\r\n\r\n\t\tthis.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait Promise.all(promiseArray);\r\n\r\n\t\t\t\t\t\tthis.syncCurrentUserSecurityGroups(\r\n\t\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tremovedSecurityGroups);\r\n\r\n\t\t\t\t\t\tfor(const securityGroup of removedSecurityGroups)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst url: string =\r\n\t\t\t\t\t\t\t\tthis.securityGroupApiService.getNestedUrl(\r\n\t\t\t\t\t\t\t\t\tsecurityGroup.id,\r\n\t\t\t\t\t\t\t\t\tAppConstants.nestedRouteTypes.users);\r\n\t\t\t\t\t\t\tthis.cacheService.clearExistingStartsWithResponses(\r\n\t\t\t\t\t\t\t\turl);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t`${pendingMessage}`,\r\n\t\t\t\t`${completeMessage}`,\r\n\t\t\t\tsuccessDetails,\r\n\t\t\t\tfailureDetails),\r\n\t\t\tAppConstants.activityStatus.complete);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the security groups associated with a work item queue.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} workItemQueue\r\n\t * The work item queue for which to retrieve security groups.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with an array of security groups associated\r\n\t * to the sent work item queue.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getQueueSecurityGroups(\r\n\t\tworkItemQueue: IEntityInstance): Promise\r\n\t{\r\n\t\tconst queueName: string =\r\n\t\t\tworkItemQueue.data.name\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t/\\s/g,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst filter: string =\r\n\t\t\t`${AppConstants.commonProperties.name}.StartsWith(`\r\n\t\t\t\t+ `'${queueName}${AppConstants.characters.underscore}') `\r\n\t\t\t\t+ 'and ('\r\n\t\t\t\t+ `${AppConstants.commonProperties.name}.EndsWith(`\r\n\t\t\t\t+ `'${AppConstants.characters.underscore}`\r\n\t\t\t\t+ `${WorkItemConstants.securityGroups.view}')`\r\n\t\t\t\t+ ' or '\r\n\t\t\t\t+ `${AppConstants.commonProperties.name}.EndsWith(`\r\n\t\t\t\t+ `'${AppConstants.characters.underscore}`\r\n\t\t\t\t+ `${WorkItemConstants.securityGroups.manage}')`\r\n\t\t\t\t+ ')';\r\n\r\n\t\tconst groups: ISecurityGroup[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\tfilter,\r\n\t\t\t\tAppConstants.commonProperties.name);\r\n\r\n\t\treturn groups.map(\r\n\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...group,\r\n\t\t\t\t\t\tdisplayName: StringHelper\r\n\t\t\t\t\t\t\t.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\t\tStringHelper\r\n\t\t\t\t\t\t\t\t\t.getLastSplitValue(\r\n\t\t\t\t\t\t\t\t\t\tgroup.name,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.characters.underscore))\r\n\t\t\t\t\t}\r\n\t\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the users associated with a work item queue.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} workItemQueue\r\n\t * The work item queue for which to retrieve users.\r\n\t * @param {ISecurityGroup[]} [securityGroups=null]\r\n\t * The security groups associated with the work item queue.\r\n\t * @param {string} [nameFilter=null]\r\n\t * The name filter to limit users by first or last name containing the\r\n\t * sent name filter. If no value is sent users will not be be filtered by\r\n\t * name.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with an array of users associated to the\r\n\t * sent work item queue.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getQueueUsers(\r\n\t\tworkItemQueue: IEntityInstance,\r\n\t\tsecurityGroups: ISecurityGroup[] = null,\r\n\t\tnameFilter: string = null): Promise\r\n\t{\r\n\t\tconst mappedSecurityGroups: ISecurityGroup[] =\r\n\t\t\tsecurityGroups\r\n\t\t\t\t?? await this.getQueueSecurityGroups(workItemQueue);\r\n\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tfor(const group of mappedSecurityGroups)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\tthis.securityGroupApiService.getSecurityGroupUsers(\r\n\t\t\t\t\tgroup.id));\r\n\t\t}\r\n\r\n\t\tconst results: number[][] =\r\n\t\t\tawait Promise.all(promiseArray);\r\n\t\tconst flattenedResults: number[] =\r\n\t\t\tresults.flat();\r\n\r\n\t\tif (flattenedResults.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst userIdFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\t[...new Set(\r\n\t\t\t\t\t\tflattenedResults.map(\r\n\t\t\t\t\t\t\t(result: number) =>\r\n\t\t\t\t\t\t\t\tresult.toString()))],\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\t\tconst combinedFilter: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(nameFilter)\r\n\t\t\t\t? userIdFilter\r\n\t\t\t\t: `${userIdFilter} and (${nameFilter})`;\r\n\r\n\t\treturn ApiHelper.getFullDataSet(\r\n\t\t\tthis.entityInstanceApiService,\r\n\t\t\tcombinedFilter,\r\n\t\t\tAppConstants.commonProperties.firstName,\r\n\t\t\tAppConstants.typeGroups.users);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the queues that support the sent work item entity type.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} workItem\r\n\t * The work item for which to retrieve queues that have this work item\r\n\t * as a supported work item type.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with an array of queues supporting the\r\n\t * sent work item type.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getAvailableWorkItemQueues(\r\n\t\tworkItem: IEntityInstance): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.workItemQueues;\r\n\t\tconst availableQueues: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.commonProperties.name);\r\n\r\n\t\treturn availableQueues\r\n\t\t\t.filter((item: IEntityInstance) =>\r\n\t\t\t\titem.data.supportedWorkItemTypes.indexOf(\r\n\t\t\t\t\tworkItem.entityType) !== -1);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the users that are in the queue if the queue name matches an\r\n\t * existing queue and filters by the name filter if sent. This will always\r\n\t * include the sent selected user name to ensure it is available in the\r\n\t * options list.\r\n\t *\r\n\t * @async\r\n\t * @param {string} queueName\r\n\t * The queue name to limit users by, if no matching queue is found this\r\n\t * will return all users matching the filter.\r\n\t * @param {string} [nameFilter=null]\r\n\t * The name filter to limit users by first or last name containing the\r\n\t * sent name filter. If no value is sent users will not be be filtered by\r\n\t * name.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with an array of users in the sent work item\r\n\t * queue or all users if no queue is found. This result will be filtered\r\n\t * by the name filter if sent.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getAvailableAssignedToUsers(\r\n\t\tqueueName: string,\r\n\t\tselectedUserName: string,\r\n\t\tnameFilter: string = null): Promise\r\n\t{\r\n\t\tlet filter: string =\r\n\t\t\tthis.getSplitNameFilter(nameFilter);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(queueName))\r\n\t\t{\r\n\t\t\tconst workItemQueue: IEntityInstance =\r\n\t\t\t\tawait this.getQueueByName(queueName);\r\n\r\n\t\t\tif (!AnyHelper.isNull(workItemQueue))\r\n\t\t\t{\r\n\t\t\t\treturn this.getQueueUsers(\r\n\t\t\t\t\tworkItemQueue,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfilter);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet availableUsers: IEntityInstance[] = [];\r\n\t\tif (!AnyHelper.isNullOrWhitespace(selectedUserName))\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\tconst selectedUser: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.userName} eq `\r\n\t\t\t\t\t\t+ `'${selectedUserName}'`,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\ttrue);\r\n\r\n\t\t\tif (!AnyHelper.isNull(selectedUser)\r\n\t\t\t\t&& (AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t|| (`${selectedUser.data.firstName} `\r\n\t\t\t\t\t\t+ selectedUser.data.lastName)\r\n\t\t\t\t\t\t.indexOf(filter) !== -1))\r\n\t\t\t{\r\n\t\t\t\tavailableUsers.push(selectedUser);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst filterAddition: string =\r\n\t\t\tAnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: `and (${filter})`;\r\n\t\tfilter =\r\n\t\t\tavailableUsers.length > 0\r\n\t\t\t\t? `(${AppConstants.commonProperties.userName} ne `\r\n\t\t\t\t\t+ `'${availableUsers[0].data.userName}') `\r\n\t\t\t\t\t+ filterAddition\r\n\t\t\t\t: filter;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst filteredUsers: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.query(\r\n\t\t\t\tfilter,\r\n\t\t\t\tAppConstants.commonProperties.firstName);\r\n\t\tavailableUsers =\r\n\t\t\tavailableUsers.concat(filteredUsers);\r\n\r\n\t\treturn availableUsers.sort((\r\n\t\t\tuserOne: IEntityInstance,\r\n\t\t\tuserTwo: IEntityInstance) =>\r\n\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\tuserOne,\r\n\t\t\t\tuserTwo,\r\n\t\t\t\t`${AppConstants.nestedDataIdentifier}.`\r\n\t\t\t\t\t+ AppConstants.commonProperties.firstName));\r\n\t}\r\n\r\n\t/**\r\n\t * Given an entity instance id, this will look for a matching work\r\n\t * item as a child of this instance.\r\n\t *\r\n\t * @async\r\n\t * @param {number} instanceId\r\n\t * The instance id to be checked for an active child work item.\r\n\t * @param {string} instanceEntityType\r\n\t * The instance entity type to be checked for an active child work item.\r\n\t * @param {string} workItemInstanceEntityType\r\n\t * The work item instance type to check for a child instance match.\r\n\t * @param {string[]} allowedStatusValues\r\n\t * The status values that should be allowed as a specific match.\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not the sent work item exists as a child\r\n\t * of this instance and is active.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async workItemChildExists(\r\n\t\tinstanceId: number,\r\n\t\tinstanceEntityType: string,\r\n\t\tworkItemInstanceEntityType: string,\r\n\t\tallowedStatusValues: string[] = [\r\n\t\t\tWorkItemConstants.workItemStatus.active\r\n\t\t]): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tinstanceEntityType;\r\n\t\tconst workItemInstances: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.getChildren(\r\n\t\t\t\tinstanceId,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\tworkItemInstanceEntityType);\r\n\r\n\t\treturn workItemInstances.length > 0\r\n\t\t\t&& workItemInstances.filter(\r\n\t\t\t\t(workItemInstance: IEntityInstance) =>\r\n\t\t\t\t\tallowedStatusValues\r\n\t\t\t\t\t\t.indexOf(workItemInstance.data.status) !== -1)\r\n\t\t\t\t.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * This will check the product settings associated to the sent parent\r\n\t * entity type of a term or transaction, and define whether or not\r\n\t * adding this file type and subtype will fire a review work item.\r\n\t *\r\n\t * @async\r\n\t * @param {number} parentId\r\n\t * The id for the parent entity.\r\n\t * @param {string} parentTypeGroup\r\n\t * The entity type group of the parent.\r\n\t * @param {string} fileEntityType\r\n\t * The entity instance type of the file instance to check.\r\n\t * @param {string} fileSubtype\r\n\t * The subtype of the file instance to check.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with a true or false value that signifies that\r\n\t * the sent entity type and sub type requires a review as defined in\r\n\t * an insurance product.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async policyFileRequiresReview(\r\n\t\tparentId: number,\r\n\t\tparentTypeGroup: string,\r\n\t\tfileEntityType: string,\r\n\t\tfileSubtype: string): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(parentId)\r\n\t\t\t|| AnyHelper.isNullOrWhitespace(parentTypeGroup)\r\n\t\t\t|| (parentTypeGroup !==\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms)\r\n\t\t\t\t&& parentTypeGroup.indexOf(\r\n\t\t\t\t\tInsuranceConstants.policyTermTransactionPrefix) === -1)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tparentTypeGroup ===\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms\r\n\t\t\t\t? await this.insuranceService.getPolicyTerm(\r\n\t\t\t\t\tparentId)\r\n\t\t\t\t: await this.insuranceService.getPolicyTermByTransaction(\r\n\t\t\t\t\tparentId,\r\n\t\t\t\t\tparentTypeGroup);\r\n\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getProductByName(\r\n\t\t\t\tpolicyTerm.data.productName);\r\n\t\tconst reviewFileDefinition: any =\r\n\t\t\tproduct.data.workItems.requiredFileReviews\r\n\t\t\t\t.find(\r\n\t\t\t\t\t(item: any) =>\r\n\t\t\t\t\t\titem.entityType === fileEntityType\r\n\t\t\t\t\t\t\t&& item.subtypes.indexOf(fileSubtype) !== -1);\r\n\r\n\t\treturn !AnyHelper.isNull(reviewFileDefinition);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a work item, this will return the policy lifecycle files that\r\n\t * are required for the sent work item.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} workItem\r\n\t * The work item for which to retrieve required policy lifecycle files.\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with an array of required policy lifecycle files\r\n\t * for the sent work item. If the require all files flag is set to true,\r\n\t * the first item will be 'Required Files: ' otherwise 'Allowed Files: '.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async getRequiredPolicyLifecycleFiles(\r\n\t\tworkItem: IEntityInstance): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tworkItem.data.metadata?.policyLifecycle))\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst parentEntityId: number =\r\n\t\t\tworkItem.data.references.find(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t\titem.type ===\r\n\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer).identifier;\r\n\t\tconst parentEntityType: string =\r\n\t\t\tworkItem.data.references.find(\r\n\t\t\t\t(item: any) =>\r\n\t\t\t\t\titem.type ===\r\n\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityType).identifier;\r\n\r\n\t\tconst policyTerm: IEntityInstance =\r\n\t\t\tparentEntityType ===\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypes.policyTerm\r\n\t\t\t\t? await this.insuranceService.getPolicyTerm(\r\n\t\t\t\t\tparentEntityId)\r\n\t\t\t\t: await this.insuranceService.getPolicyTermByTransaction(\r\n\t\t\t\t\tparentEntityId,\r\n\t\t\t\t\tparentEntityType);\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.insuranceService.getProductByName(\r\n\t\t\t\tpolicyTerm.data.productName);\r\n\r\n\t\tconst policyLifecycleSettings: any =\r\n\t\t\tproduct.data.policyLifecycleSettings[\r\n\t\t\t\tworkItem.data.metadata.policyLifecycle];\r\n\r\n\t\tif (policyLifecycleSettings.requiredFiles.length === 0)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst policyTermHierarchy: IPolicyTermHierarchy =\r\n\t\t\tawait this.insuranceService.getPolicyTermHierarchy(\r\n\t\t\t\tpolicyTerm.id);\r\n\t\tconst hierarchyFiles: IEntityInstance[] =\r\n\t\t\tawait this.insuranceService.getHierarchyFiles(\r\n\t\t\t\tpolicyTermHierarchy);\r\n\t\tconst hierarchyRules: IEntityInstanceRuleViolation[] =\r\n\t\t\tawait this.insuranceService.getHierarchyRuleViolations(\r\n\t\t\t\tpolicyTermHierarchy);\r\n\r\n\t\tpolicyLifecycleSettings.requiredFiles\r\n\t\t\t.sort(\r\n\t\t\t\t(itemOne: any,\r\n\t\t\t\t\titemTwo: any) =>\r\n\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\titemOne,\r\n\t\t\t\t\t\titemTwo,\r\n\t\t\t\t\t\tAppConstants.commonProperties.subtype));\r\n\r\n\t\tconst requiredFileDescriptions: string[] = [];\r\n\t\trequiredFileDescriptions.push(\r\n\t\t\tpolicyLifecycleSettings.requireAllFiles === true\r\n\t\t\t\t? 'Required Files: '\r\n\t\t\t\t: 'Allowed Files: ');\r\n\r\n\t\tfor (const requiredFileDefinition\r\n\t\t\tof policyLifecycleSettings.requiredFiles)\r\n\t\t{\r\n\t\t\trequiredFileDescriptions.push(\r\n\t\t\t\tthis.getRequiredFileDefinitionDescription(\r\n\t\t\t\t\trequiredFileDefinition.entityType,\r\n\t\t\t\t\trequiredFileDefinition.subtype,\r\n\t\t\t\t\trequiredFileDefinition.requiredRule,\r\n\t\t\t\t\trequiredFileDefinition.allowedStatuses,\r\n\t\t\t\t\thierarchyFiles,\r\n\t\t\t\t\thierarchyRules));\r\n\t\t}\r\n\r\n\t\treturn requiredFileDescriptions\r\n\t\t\t.filter(\r\n\t\t\t\t(item: string) =>\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(item));\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates aggregates associated with all completed work items and\r\n\t * aggregates these by counts overall and the length of availability\r\n\t * as a work item. This will return an aggregate array ready for a\r\n\t * chart display.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An array of aggregates representing the monthly average of each\r\n\t * work item type completed.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async aggregateMonthlyAverages(): Promise\r\n\t{\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\t`${AppConstants.commonProperties.name}.StartsWith('`\r\n\t\t\t\t\t+ WorkItemConstants.workItemEntityTypePrefix\r\n\t\t\t\t\t+ '\\') eq true',\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst dataArray: any[] = [];\r\n\t\tfor (const entityType of entityTypes)\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityType.group;\r\n\t\t\tconst firstInstance: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.doneDate} asc`,\r\n\t\t\t\t\t\ttrue);\r\n\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tentityType.group;\r\n\t\t\tconst results: IAggregate[] =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.typeId} eq `\r\n\t\t\t\t\t\t\t+ entityType.id\r\n\t\t\t\t\t\t\t+ ` AND ${AppConstants.commonProperties.status} `\r\n\t\t\t\t\t\t\t+ `eq '${WorkItemConstants.workItemStatus.done}'`);\r\n\t\t\tconst monthsElapsed: number =\r\n\t\t\t\t!AnyHelper.isNull(firstInstance)\r\n\t\t\t\t\t? Math.ceil(\r\n\t\t\t\t\t\tDateHelper.getSystemDateTime()\r\n\t\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\tfirstInstance.createDate),\r\n\t\t\t\t\t\t\t\tDateHelper.timeUnits.month)\r\n\t\t\t\t\t\t\t.toObject().months)\r\n\t\t\t\t\t: 0;\r\n\r\n\t\t\tdataArray.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tentityType:\r\n\t\t\t\t\t\tStringHelper.getLongEntityDisplayName(\r\n\t\t\t\t\t\t\tentityType.name,\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemEntityTypePrefix)\r\n\t\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\t\t' Date',\r\n\t\t\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\t\t'Issued Status',\r\n\t\t\t\t\t\t\t\t'Status'),\r\n\t\t\t\t\taveragePerMonth:\r\n\t\t\t\t\t\tresults[0].value\r\n\t\t\t\t\t\t\t/ (monthsElapsed > 0\r\n\t\t\t\t\t\t\t\t? monthsElapsed\r\n\t\t\t\t\t\t\t\t: 1)\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst promiseResults: any[] =\r\n\t\t\tawait Promise.all(\r\n\t\t\t\tdataArray);\r\n\r\n\t\tpromiseResults\r\n\t\t\t.sort((mapResultOne, mapResultTwo) =>\r\n\t\t\t\tmapResultOne.entityType.localeCompare(\r\n\t\t\t\t\tmapResultTwo.entityType));\r\n\r\n\t\treturn promiseResults.map(\r\n\t\t\t(mapResult: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst newAggregate: IAggregate =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: {\r\n\t\t\t\t\t\t\tentityType: mapResult.entityType\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tvalue: mapResult.averagePerMonth\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\treturn newAggregate;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves the data for completed and remaining work items.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A promise that resolves with the monthly averages for completed and\r\n\t * remaining work items.\r\n\t * @memberof WorkItemService\r\n\t **/\r\n\tpublic async getCompletedPercent():\r\n\t\tPromise\r\n\t{\r\n\t\tconst completedWorkItems: IAggregate[] =\r\n\t\t\tawait this.entityService.getAccumulatedAggregateByType(\r\n\t\t\t\tWorkItemConstants.workItemEntityTypePrefix,\r\n\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t`${AppConstants.commonProperties.status} `\r\n\t\t\t\t\t+ `${AppConstants.filterQueryOperators.equal} `\r\n\t\t\t\t\t+ `'${WorkItemConstants.workItemStatus.done}'`);\r\n\t\tconst remainingWorkItems: IAggregate[] =\r\n\t\t\tawait this.entityService.getAccumulatedAggregateByType(\r\n\t\t\t\tWorkItemConstants.workItemEntityTypePrefix,\r\n\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\t`${AppConstants.commonProperties.status} `\r\n\t\t\t\t\t+ `${AppConstants.filterQueryOperators.notEqual} `\r\n\t\t\t\t\t+ `'${WorkItemConstants.workItemStatus.done}' `\r\n\t\t\t\t\t+ `and ${AppConstants.commonProperties.status} `\r\n\t\t\t\t\t+ `${AppConstants.filterQueryOperators.notEqual} `\r\n\t\t\t\t\t+ `'${WorkItemConstants.workItemStatus.ignored}'`);\r\n\r\n\t\t const totalCompleted: number =\r\n\t\t\tcompletedWorkItems[0].value;\r\n\t\tconst totalRemaining =\r\n\t\t\tremainingWorkItems[0].value;\r\n\r\n\t\tconst completedPercent: number =\r\n\t\t\t(totalCompleted /\r\n\t\t\t\t(totalCompleted + totalRemaining));\r\n\r\n\t\tconst formattedCompletedPercent =\r\n\t\t\t!isNaN(completedPercent)\r\n\t\t\t\t? StringHelper.format(\r\n\t\t\t\t\tcompletedPercent.toString(),\r\n\t\t\t\t\t'percent' )\r\n\t\t\t\t: 'No Data';\r\n\r\n\t\tconst completedData: any =\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tcompleted: totalCompleted,\r\n\t\t\t\t\tremaining: totalRemaining,\r\n\t\t\t\t\tcompletedPercent: formattedCompletedPercent\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn completedData;\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to a work item.\r\n\t *\r\n\t * @async\r\n\t * @param {IWorkItem} workItem\r\n\t * The work item to find the parent and navigate to.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tpublic async NavigateToWorkitemParent(\r\n\t\tworkItem: IWorkItem): Promise\r\n\t{\r\n\t\tconst navigationEntityType: string =\r\n\t\t\tworkItem.data.references.filter(\r\n\t\t\t\t(reference: {type: string; identifier: string}) =>\r\n\t\t\t\t\treference.type ===\r\n\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityType)\r\n\t\t\t\t[0].identifier;\r\n\r\n\t\tconst navigationId: string =\r\n\t\t\tworkItem.data.references.filter(\r\n\t\t\t\t(reference: {type: string; identifier: string}) =>\r\n\t\t\t\t\treference.type ===\r\n\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer)\r\n\t\t\t\t[0].identifier;\r\n\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService.getSingleQueryResult(\r\n\t\t\t\t`Name eq '${navigationEntityType}'`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst navigationModule: string =\r\n\t\t\tawait this.entityService.getContextMenuModule(\r\n\t\t\t\tentityType.name);\r\n\r\n\t\tconst activeDrawerItemDescription: string =\r\n\t\t\t`|${WorkItemConstants.workItemIdentifiers.workItemIdentifier}:`\r\n\t\t\t\t+ `${workItem.id}|`;\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${navigationModule}/entities`,\r\n\t\t\t\tentityType.group,\r\n\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\tnavigationId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\tAppConstants.layoutTypes.full,\r\n\t\t\t\t\t\t\t\tactiveDrawerComponent:\r\n\t\t\t\t\t\t\t\t\tDynamicComponentLookup\r\n\t\t\t\t\t\t\t\t\t\t.supportedTypes.workItemsComponent,\r\n\t\t\t\t\t\t\t\tactiveDrawerItemDescription:\r\n\t\t\t\t\t\t\t\t\tactiveDrawerItemDescription\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * When adding or removing security group users from the queue, this will\r\n\t * calculate and return the shared message for activity displays.\r\n\t *\r\n\t * @param {string} queueName\r\n\t * The name of the queue being modified.\r\n\t * @param {ISecurityGroup[]} securityGroups\r\n\t * The security groups being added or removed.\r\n\t * @param {boolean} [deleteMessage=false]\r\n\t * A flag to signify if the message is for adding or removing users.\r\n\t * @returns {string}\r\n\t * The shared message for adding or removing security group users.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate getSharedDetailMessage(\r\n\t\tqueueName: string,\r\n\t\tsecurityGroups: ISecurityGroup[],\r\n\t\tdeleteMessage: boolean = false): string\r\n\t{\r\n\t\tconst clearingViewPermissions: boolean =\r\n\t\t\tsecurityGroups.some(\r\n\t\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t\tgroup.name.indexOf(\r\n\t\t\t\t\t\tWorkItemConstants.securityGroups.view) !== -1);\r\n\t\tconst clearingManagePermissions: boolean =\r\n\t\t\tsecurityGroups.some(\r\n\t\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t\tgroup.name.indexOf(\r\n\t\t\t\t\t\tWorkItemConstants.securityGroups.manage) !== -1);\r\n\r\n\t\tlet groupPermissionDetails: string = AppConstants.empty;\r\n\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase clearingViewPermissions && clearingManagePermissions:\r\n\t\t\t\tgroupPermissionDetails = 'view and manage';\r\n\t\t\t\tbreak;\r\n\t\t\tcase clearingViewPermissions:\r\n\t\t\t\tgroupPermissionDetails = 'view';\r\n\t\t\t\tbreak;\r\n\t\t\tcase clearingManagePermissions:\r\n\t\t\t\tgroupPermissionDetails = 'manage';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn `${groupPermissionDetails} permissions `\r\n\t\t\t+ `${deleteMessage ? 'from' : 'for'} the `\r\n\t\t\t+ `${queueName} queue.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a queue, added security groups, and removed security groups, this\r\n\t * will return the success and failure detail messages for the activity\r\n\t * display.\r\n\t *\r\n\t * @param {IEntityInstance} queue\r\n\t * The queue to set security group users on.\r\n\t * @param {ISecurityGroup[]} addedSecurityGroups\r\n\t * The security groups to add to the user in the queue.\r\n\t * @param {ISecurityGroup[]} removedSecurityGroups\r\n\t * The security groups to remove from the user in the queue.\r\n\t * @returns {{ success: string; failure: string }}\r\n\t * The success and failure detail messages for the activity display.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate getDetailMessages(\r\n\t\tqueue: IEntityInstance,\r\n\t\taddedSecurityGroups: ISecurityGroup[],\r\n\t\tremovedSecurityGroups: ISecurityGroup[]):\r\n\t\t{ success: string; failure: string }\r\n\t{\r\n\t\tlet sharedDetailMessage: string = AppConstants.empty;\r\n\t\tlet successDetails: string = AppConstants.empty;\r\n\t\tlet failureDetails: string = AppConstants.empty;\r\n\r\n\t\tif (addedSecurityGroups.length > 0)\r\n\t\t{\r\n\t\t\tsharedDetailMessage =\r\n\t\t\t\tthis.getSharedDetailMessage(\r\n\t\t\t\t\tqueue.data.name,\r\n\t\t\t\t\taddedSecurityGroups);\r\n\t\t\tsuccessDetails +=\r\n\t\t\t\t`Added ${sharedDetailMessage}`;\r\n\t\t\tfailureDetails +=\r\n\t\t\t\t`Failed to add ${sharedDetailMessage}`;\r\n\t\t}\r\n\r\n\t\tif (removedSecurityGroups.length > 0)\r\n\t\t{\r\n\t\t\tsharedDetailMessage =\r\n\t\t\t\tthis.getSharedDetailMessage(\r\n\t\t\t\t\tqueue.data.name,\r\n\t\t\t\t\tremovedSecurityGroups,\r\n\t\t\t\t\ttrue);\r\n\t\t\tsuccessDetails +=\r\n\t\t\t\t(AnyHelper.isNullOrWhitespace(successDetails)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: AppConstants.characters.space)\r\n\t\t\t\t\t+ `Removed ${sharedDetailMessage}`;\r\n\t\t\tfailureDetails +=\r\n\t\t\t\t(AnyHelper.isNullOrWhitespace(failureDetails)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: AppConstants.characters.space)\r\n\t\t\t\t\t+ `Failed to remove ${sharedDetailMessage}`;\r\n\t\t}\r\n\r\n\t\tif (addedSecurityGroups.length === 0\r\n\t\t\t&& removedSecurityGroups.length > 0)\r\n\t\t{\r\n\t\t\tsharedDetailMessage =\r\n\t\t\t\t`permissions for the ${queue.data.name} queue.`;\r\n\t\t\tsuccessDetails +=\r\n\t\t\t\t`Set ${sharedDetailMessage}`;\r\n\t\t\tfailureDetails +=\r\n\t\t\t\t`Failed to set ${sharedDetailMessage}`;\r\n\t\t}\r\n\r\n\t\tconst detailMessages: { success: string; failure: string } =\r\n\t\t\t{\r\n\t\t\t\tsuccess: successDetails,\r\n\t\t\t\tfailure: failureDetails\r\n\t\t\t};\r\n\r\n\t\treturn detailMessages;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of added security groups and removed security groups, this\r\n\t * will synchronize the user security groups with the sent security groups.\r\n\t *\r\n\t * @param {IEntityInstance} user\r\n\t * The user that had security groups altered.\r\n\t * @param {ISecurityGroup[]} addedSecurityGroups\r\n\t * The security groups that were added to the user.\r\n\t * @param {ISecurityGroup[]} removedSecurityGroups\r\n\t * The security groups that were removed from the user.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate syncCurrentUserSecurityGroups(\r\n\t\tuser: IEntityInstance,\r\n\t\taddedSecurityGroups: ISecurityGroup[],\r\n\t\tremovedSecurityGroups: ISecurityGroup[]): void\r\n\t{\r\n\t\tif (this.sessionService.user.id !== user.id)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst sessionServiceUser: IUser = this.sessionService.user;\r\n\t\tfor (const securityGroup of addedSecurityGroups)\r\n\t\t{\r\n\t\t\tthis.addCurrentUserSecurityGroup(\r\n\t\t\t\tsessionServiceUser.membershipSecurityGroups,\r\n\t\t\t\tsecurityGroup);\r\n\t\t}\r\n\r\n\t\tfor (const securityGroup of removedSecurityGroups)\r\n\t\t{\r\n\t\t\tthis.removeCurrentUserSecurityGroup(\r\n\t\t\t\tsessionServiceUser.membershipSecurityGroups,\r\n\t\t\t\tsecurityGroup);\r\n\t\t}\r\n\r\n\t\tthis.sessionService.user = sessionServiceUser;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a security group, this will add the security group to the current\r\n\t * user's security groups if it is not already present.\r\n\t *\r\n\t * @param {ISecurityGroup[]} currentSecurityGroups\r\n\t * The current user's security groups.\r\n\t * @param {ISecurityGroup} securityGroupToAdd\r\n\t * The security group to add to the current user's security groups.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate addCurrentUserSecurityGroup(\r\n\t\tcurrentSecurityGroups: ISecurityGroup[],\r\n\t\tsecurityGroupToAdd: ISecurityGroup): void\r\n\t{\r\n\t\tconst groupIndex: number =\r\n\t\t\tcurrentSecurityGroups\r\n\t\t\t\t.findIndex(\r\n\t\t\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t\t\tgroup.id === securityGroupToAdd.id);\r\n\r\n\t\tif (groupIndex === -1)\r\n\t\t{\r\n\t\t\tcurrentSecurityGroups.push(\r\n\t\t\t\tsecurityGroupToAdd);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a security group, this will remove the security group from the\r\n\t * current user's security groups if it is present.\r\n\t *\r\n\t * @param {ISecurityGroup[]} currentSecurityGroups\r\n\t * The current user's security groups.\r\n\t * @param {ISecurityGroup} securityGroupToRemove\r\n\t * The security group to remove from the current user's security groups.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate removeCurrentUserSecurityGroup(\r\n\t\tcurrentSecurityGroups: ISecurityGroup[],\r\n\t\tsecurityGroupToRemove: ISecurityGroup): void\r\n\t{\r\n\t\tconst groupIndex: number =\r\n\t\t\tcurrentSecurityGroups\r\n\t\t\t\t.findIndex(\r\n\t\t\t\t\t(group: ISecurityGroup) =>\r\n\t\t\t\t\t\tgroup.id === securityGroupToRemove.id);\r\n\r\n\t\tif (groupIndex !== -1)\r\n\t\t{\r\n\t\t\tcurrentSecurityGroups.splice(\r\n\t\t\t\tgroupIndex,\r\n\t\t\t\t1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Given a work item, this will return the policy lifecycle files that\r\n\t * are required for the sent work item.\r\n\t *\r\n\t * @param {string} fileEntityType\r\n\t * The file entity type to search for.\r\n\t * @param {string} fileSubtype\r\n\t * The file subtype to search for.\r\n\t * @param {string} conditionalRuleName\r\n\t * If sent, this requires that the rule has been violated for this file\r\n\t * to be required.\r\n\t * @param {string} allowedStatuses\r\n\t * The set of allowed statuses for this file. IE: Active, Approved, etc.\r\n\t * @param {IEntityInstance[]} hierarchyFiles\r\n\t * The full set of hierarchy files existing for the term hierarchy.\r\n\t * @param {IEntityInstanceRuleViolation[]} hierarchyRules\r\n\t * The full set of hierarchy rules existing for the term hierarchy.\r\n\t * @returns {string}\r\n\t * A string that represents the files existence and current state. If\r\n\t * the matching conditional rule does not exist, this will return\r\n\t * an empty\tstring signifying that it is not required.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate getRequiredFileDefinitionDescription(\r\n\t\tfileEntityType: string,\r\n\t\tfileSubtype: string,\r\n\t\tconditionalRuleName: string,\r\n\t\tallowedStatuses: string[],\r\n\t\thierarchyFiles: IEntityInstance[],\r\n\t\thierarchyRules: IEntityInstanceRuleViolation[]): string\r\n\t{\r\n\t\tconst approvalRequired: boolean =\r\n\t\t\t!allowedStatuses.some(\r\n\t\t\t\t(status: string) =>\r\n\t\t\t\t\tstatus === FileState.Active);\r\n\t\tconst matchingFiles: IEntityInstance[] =\r\n\t\t\thierarchyFiles.filter(\r\n\t\t\t\t(file: IEntityInstance) =>\r\n\t\t\t\t\tfile.entityType === fileEntityType\r\n\t\t\t\t\t\t&& file.data.subType === fileSubtype);\r\n\t\tconst matchingApprovedFile: IEntityInstance =\r\n\t\t\tmatchingFiles.find(\r\n\t\t\t\t(file: IEntityInstance) =>\r\n\t\t\t\t\tfile.data.status.state === FileState.Approved);\r\n\t\tconst matchingRule: boolean =\r\n\t\t\tAnyHelper.isNullOrWhitespace(conditionalRuleName)\r\n\t\t\t\t? true\r\n\t\t\t\t: hierarchyRules.some(\r\n\t\t\t\t\t(rule: IEntityInstanceRuleViolation) =>\r\n\t\t\t\t\t\trule.ruleDefinition.name === conditionalRuleName);\r\n\r\n\t\tif (matchingRule === false)\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(matchingApprovedFile))\r\n\t\t{\r\n\t\t\treturn fileSubtype\r\n\t\t\t\t+ ` - ${FileState.Approved}`;\r\n\t\t}\r\n\r\n\t\tif (matchingFiles.length > 0\r\n\t\t\t&& matchingFiles.every(\r\n\t\t\t\tfile =>\r\n\t\t\t\t\tfile.data.status.state === FileState.Rejected))\r\n\t\t{\r\n\t\t\treturn fileSubtype\r\n\t\t\t\t+ ` - ${FileState.Rejected}`;\r\n\t\t}\r\n\r\n\t\tconst fileState: string =\r\n\t\t\tapprovalRequired === true\r\n\t\t\t\t? 'Awaiting approval'\r\n\t\t\t\t: 'Active';\r\n\t\tconst fileStatus: string =\r\n\t\t\tmatchingFiles.length !== 0\r\n\t\t\t\t? fileState\r\n\t\t\t\t: 'Not attached';\r\n\r\n\t\treturn fileSubtype\r\n\t\t\t+ ` - ${fileStatus}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a name filter, this will split the filter on spaces and return\r\n\t * a filter that searches for each split word in the keywords on\r\n\t * entity instance users.\r\n\t *\r\n\t * @async\r\n\t * @param {string} nameFilter\r\n\t * The name filter to deconstruct.\r\n\t * @returns {string}\r\n\t * A filter string ready for use in querying for users by keyword matches.\r\n\t * @memberof WorkItemService\r\n\t */\r\n\tprivate getSplitNameFilter(\r\n\t\tnameFilter: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(nameFilter))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tlet filter: string = AppConstants.empty;\r\n\t\tconst splitNameFilter: string[] =\r\n\t\t\tnameFilter.split(AppConstants.characters.space);\r\n\r\n\t\tfor (const splitName of splitNameFilter)\r\n\t\t{\r\n\t\t\tconst formattedName = splitName.trim();\r\n\t\t\tif (AnyHelper.isNullOrWhitespace(formattedName))\r\n\t\t\t{\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfilter +=\r\n\t\t\t\t(AnyHelper.isNullOrWhitespace(filter)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: ` ${AppConstants.filterQueryOperators.and} `)\r\n\t\t\t\t\t+ `${AppConstants.commonProperties.keywords}.Contains('`\r\n\t\t\t\t\t\t+ `${splitName}') eq true`;\r\n\t\t}\r\n\r\n\t\tfilter = `(${filter})`;\r\n\r\n\t\treturn filter;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectionToken\r\n} from '@angular/core';\r\nimport {\r\n\tWorkItemService\r\n} from '@workItems/services/work-item.service';\r\n\r\n/*\r\n * Export all tokens to be used in the dependency injector for\r\n * string based resolution\r\n*/\r\nexport const workItemServiceToken =\r\n\tnew InjectionToken(\r\n\t\t'WorkItemService');\r\n\r\n/**\r\n * A lookup to be shared accross the application used\r\n * for classes available in the work item module.\r\n *\r\n * @export\r\n * @class WorkItemTokenLookup\r\n */\r\nexport class WorkItemTokenLookup\r\n{\r\n\t/**\r\n\t * Dictionary to be used in dependency injector for\r\n\t * string based resolution.\r\n\t *\r\n\t * @static\r\n\t * @memberof WorkItemTokenLookup\r\n\t */\r\n\tpublic static readonly tokens =\r\n\t\t{\r\n\t\t\t'WorkItemService':\r\n\t\t\t\tworkItemServiceToken\r\n\t\t};\r\n}","export const environment =\r\n{\r\n\tname: 'deploy',\r\n\tproduction: true\r\n};\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-admin',\r\n\ttemplateUrl: './admin.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main\r\n * admin page.\r\n *\r\n * @export\r\n * @class AdminComponent\r\n */\r\nexport class AdminComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class containing static helper methods for interacting with the common\r\n * table.\r\n *\r\n * @export\r\n * @class TableHelper\r\n */\r\nexport class TableHelper\r\n{\r\n\t/**\r\n\t * Maps and returns an expand title with the expected create or delete\r\n\t * annotation if applicable.\r\n\t *\r\n\t * @static\r\n\t * @param {IDynamicComponentContext}\r\n\t * commonTableContext\r\n\t * The common table context to check for conditional title displays.\r\n\t * @param {string} staticTitle\r\n\t * The static title usually defining an item type to display.\r\n\t * @returns {string}\r\n\t * A string representing the expand title for common table displays.\r\n\t * @memberof TableHelper\r\n\t */\r\n\tpublic static getExpandTitle(\r\n\t\tcommonTableContext: IDynamicComponentContext,\r\n\t\tstaticTitle: string): string\r\n\t{\r\n\t\tswitch (commonTableContext.source.displayMode)\r\n\t\t{\r\n\t\t\tcase AppConstants.displayMode.create:\r\n\t\t\t\treturn `Create ${staticTitle}`;\r\n\t\t\tcase AppConstants.displayMode.delete:\r\n\t\t\t\treturn `Delete ${staticTitle}`;\r\n\t\t\tcase AppConstants.displayMode.update:\r\n\t\t\t\treturn `Edit ${staticTitle}`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `View ${staticTitle}`;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityAccessPolicyDto\r\n} from '@api/interfaces/security/security-access-policy.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * access policy controller.\r\n *\r\n * @export\r\n * @class SecurityAccessPolicyApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecurityAccessPolicyApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecurityAccessPolicyApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityAccessPolicyApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securityAccessPolicies;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityAccessPolicyDefinitionDto\r\n} from '@api/interfaces/security/security-access-policy-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * access policy definition controller.\r\n *\r\n * @export\r\n * @class SecurityAccessPolicyDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecurityAccessPolicyDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecurityAccessPolicyDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityAccessPolicyDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securityAccessPolicyDefinitions;\r\n\t}\r\n}","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\n\nclass CaretLeftIcon extends BaseIcon {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: CaretLeftIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: CaretLeftIcon, isStandalone: true, selector: \"CaretLeftIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: CaretLeftIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'CaretLeftIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CaretLeftIcon };\n","import { style, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, signal, effect, PLATFORM_ID, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport * as i5 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { CaretLeftIcon } from 'primeng/icons/caretleft';\n\nclass SlideMenuSub {\n document;\n el;\n renderer;\n cd;\n slideMenu;\n items;\n menuWidth;\n root = false;\n easing = 'ease-out';\n effectDuration;\n autoDisplay;\n autoZIndex = true;\n baseZIndex = 0;\n popup;\n menuId;\n ariaLabel;\n ariaLabelledBy;\n level = 0;\n focusedItemId;\n activeItemPath;\n tabindex = 0;\n itemClick = new EventEmitter();\n itemMouseEnter = new EventEmitter();\n menuFocus = new EventEmitter();\n menuBlur = new EventEmitter();\n menuKeydown = new EventEmitter();\n sublistViewChild;\n get isActive() {\n return -this.slideMenu.left == this.level * this.menuWidth;\n }\n constructor(document, el, renderer, cd, slideMenu) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.slideMenu = slideMenu;\n }\n getItemProp(processedItem, name, params = null) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;\n }\n getItemId(processedItem) {\n return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;\n }\n getItemKey(processedItem) {\n return this.getItemId(processedItem);\n }\n getItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem': true,\n 'p-menuitem-active': this.isItemActive(processedItem),\n 'p-focus': this.isItemFocused(processedItem),\n 'p-disabled': this.isItemDisabled(processedItem)\n };\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n getSeparatorItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem-separator': true\n };\n }\n getAriaSetSize() {\n return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n }\n getAriaPosInset(index) {\n return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemActive(processedItem) {\n if (this.activeItemPath) {\n return this.activeItemPath.some((path) => path.key === processedItem.key);\n }\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemFocused(processedItem) {\n return this.focusedItemId === this.getItemId(processedItem);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n onItemClick(event, processedItem) {\n this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });\n event.preventDefault();\n }\n onMenuKeyDown(event) {\n this.menuKeydown.emit(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuSub, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => SlideMenu) }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: SlideMenuSub, selector: \"p-slideMenuSub\", inputs: { items: \"items\", menuWidth: \"menuWidth\", root: \"root\", easing: \"easing\", effectDuration: \"effectDuration\", autoDisplay: \"autoDisplay\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", popup: \"popup\", menuId: \"menuId\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", level: \"level\", focusedItemId: \"focusedItemId\", activeItemPath: \"activeItemPath\", tabindex: \"tabindex\" }, outputs: { itemClick: \"itemClick\", itemMouseEnter: \"itemMouseEnter\", menuFocus: \"menuFocus\", menuBlur: \"menuBlur\", menuKeydown: \"menuKeydown\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"sublistViewChild\", first: true, predicate: [\"sublist\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n
    \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n
    \n\n \n \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleRightIcon), selector: \"AngleRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SlideMenuSub), selector: \"p-slideMenuSub\", inputs: [\"items\", \"menuWidth\", \"root\", \"easing\", \"effectDuration\", \"autoDisplay\", \"autoZIndex\", \"baseZIndex\", \"popup\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\", \"tabindex\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-slideMenuSub',\n template: `\n \n \n \n \n
    \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n
    \n\n \n \n
    \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: SlideMenu, decorators: [{\n type: Inject,\n args: [forwardRef(() => SlideMenu)]\n }] }], propDecorators: { items: [{\n type: Input\n }], menuWidth: [{\n type: Input\n }], root: [{\n type: Input\n }], easing: [{\n type: Input\n }], effectDuration: [{\n type: Input\n }], autoDisplay: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], popup: [{\n type: Input\n }], menuId: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], level: [{\n type: Input\n }], focusedItemId: [{\n type: Input\n }], activeItemPath: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], itemMouseEnter: [{\n type: Output\n }], menuFocus: [{\n type: Output\n }], menuBlur: [{\n type: Output\n }], menuKeydown: [{\n type: Output\n }], sublistViewChild: [{\n type: ViewChild,\n args: ['sublist', { static: true }]\n }] } });\n/**\n * SlideMenu displays submenus with slide animation.\n * @group Components\n */\nclass SlideMenu {\n document;\n platformId;\n el;\n renderer;\n cd;\n config;\n overlayService;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n this._processedItems = this.createProcessedItems(this._model || []);\n }\n get model() {\n return this._model;\n }\n /**\n * Width of the submenus.\n * @group Props\n */\n menuWidth = 190;\n /**\n * Height of the scrollable area, a scrollbar appears if a menu height is longer than this value.\n * @group Props\n */\n viewportHeight = 180;\n /**\n * Duration of the sliding animation in milliseconds.\n * @group Props\n */\n effectDuration = 250;\n /**\n * Easing animation to use for sliding.\n * @group Props\n */\n easing = 'ease-out';\n /**\n * Label of element to navigate back.\n * @group Props\n */\n backLabel = 'Back';\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n disabled = false;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n /**\n * Defines if menu would displayed as a popup.\n * @group Props\n */\n popup;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element.\n * @group Props\n */\n appendTo;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Whether to show a root submenu on mouse over.\n * @defaultValue true\n * @group Props\n */\n autoDisplay = true;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '.1s linear';\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabel;\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Callback to invoke when overlay menu is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke when overlay menu is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n templates;\n rootmenu;\n containerViewChild;\n set backward(element) {\n this.backwardViewChild = element;\n }\n slideMenuContentViewChild;\n submenuIconTemplate;\n backIconTemplate;\n outsideClickListener;\n resizeListener;\n transitionEndListener;\n transitionStartListener;\n backwardViewChild;\n transition = false;\n left = 0;\n animating = false;\n target;\n visible;\n relativeAlign;\n window;\n focused = false;\n activeItemPath = signal([]);\n focusedItemInfo = signal({ index: -1, level: 0, parentKey: '' });\n searchValue = '';\n searchTimeout;\n _processedItems;\n _model;\n container;\n itemClick = false;\n get visibleItems() {\n const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);\n return processedItem ? processedItem.items : this.processedItems;\n }\n get processedItems() {\n if (!this._processedItems || !this._processedItems.length) {\n this._processedItems = this.createProcessedItems(this.model || []);\n }\n return this._processedItems;\n }\n get focusedItemId() {\n const focusedItem = this.focusedItemInfo();\n return focusedItem.item && focusedItem.item?.id ? focusedItem.item.id : focusedItem.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(focusedItem.parentKey) ? '_' + focusedItem.parentKey : ''}_${focusedItem.index}` : null;\n }\n constructor(document, platformId, el, renderer, cd, config, overlayService) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.overlayService = overlayService;\n this.window = this.document.defaultView;\n effect(() => {\n const path = this.activeItemPath();\n if (this.popup) {\n if (ObjectUtils.isNotEmpty(path)) {\n this.bindOutsideClickListener();\n this.bindResizeListener();\n }\n else {\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n }\n }\n });\n }\n documentFocusListener;\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'backicon':\n this.backIconTemplate = item.template;\n break;\n case 'submenuicon':\n this.submenuIconTemplate = item.template;\n break;\n }\n });\n }\n createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n const processedItems = [];\n items &&\n items.forEach((item, index) => {\n const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n const newItem = {\n item,\n index,\n level,\n key,\n parent,\n parentKey\n };\n newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n processedItems.push(newItem);\n });\n return processedItems;\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n getProccessedItemLabel(processedItem) {\n return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n }\n getItemLabel(item) {\n return this.getItemProp(item, 'label');\n }\n isProcessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n isSelected(processedItem) {\n return this.activeItemPath().some((p) => p.key === processedItem.key);\n }\n isValidSelectedItem(processedItem) {\n return this.isValidItem(processedItem) && this.isSelected(processedItem);\n }\n isValidItem(processedItem) {\n return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);\n }\n isItemDisabled(item) {\n return this.getItemProp(item, 'disabled');\n }\n isItemSeparator(item) {\n return this.getItemProp(item, 'separator');\n }\n isItemMatched(processedItem) {\n return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n }\n isProccessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n onOverlayClick(event) {\n if (this.popup) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n }\n goBack(event) {\n this.animate('left');\n event.stopPropagation();\n event.preventDefault();\n }\n onItemClick(event) {\n if (this.transition) {\n return;\n }\n else {\n if (!this.itemClick) {\n this.itemClick = true;\n this.onMenuFocus();\n }\n const { originalEvent, processedItem } = event;\n const grouped = this.isProcessedItemGroup(processedItem);\n const focusedItemInfo = this.focusedItemInfo();\n if (grouped) {\n this.focusedItemInfo.set({ ...focusedItemInfo, index: -1, level: focusedItemInfo.level + 1, parentKey: processedItem.key, item: processedItem.item });\n this.animate('right');\n }\n else {\n this.onItemChange(event);\n this.popup && this.hide();\n }\n }\n }\n onItemMouseEnter(event) {\n this.onItemChange(event);\n }\n onKeyDown(event) {\n if (!this.transition) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchItems(event, event.key);\n }\n break;\n }\n }\n }\n onNavigationKeyDown(event) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.onArrowLeftKey(event);\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({\n ...focusedItemInfo,\n index: -1,\n item: null\n });\n break;\n default:\n break;\n }\n }\n animate(to) {\n switch (to) {\n case 'right':\n this.left -= this.menuWidth;\n break;\n case 'left':\n this.left += this.menuWidth;\n break;\n default:\n break;\n }\n this.animating = true;\n setTimeout(() => (this.animating = false), this.effectDuration);\n }\n onArrowDownKey(event) {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n onArrowRightKey(event) {\n const focusedItemInfo = this.focusedItemInfo();\n if (focusedItemInfo.index === -1) {\n focusedItemInfo.index = 0;\n }\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n let { index, level, key, item } = processedItem;\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: 0, level: level, parentKey: key });\n this.searchValue = '';\n this.animate('right');\n }\n event.preventDefault();\n }\n onArrowUpKey(event) {\n if (event.altKey) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.onItemChange({ originalEvent: event, processedItem });\n }\n this.popup && this.hide(event, true);\n event.preventDefault();\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n }\n onArrowLeftKey(event) {\n const focusedItemInfo = this.focusedItemInfo();\n if (focusedItemInfo.index === -1) {\n focusedItemInfo.index = 0;\n }\n const processedItem = this.visibleItems[focusedItemInfo.index];\n const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);\n const root = ObjectUtils.isEmpty(processedItem.parent);\n if (!root) {\n let { level, index, parentKey } = parentItem;\n this.focusedItemInfo.set({ index, level, parentKey, item: parentItem.item });\n this.searchValue = '';\n }\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== focusedItemInfo.parentKey);\n this.activeItemPath.set(activeItemPath);\n parentItem && this.animate('left');\n event.preventDefault();\n }\n onHomeKey(event) {\n this.changeFocusedItemIndex(event, this.findFirstItemIndex());\n event.preventDefault();\n }\n onEndKey(event) {\n this.changeFocusedItemIndex(event, this.findLastItemIndex());\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n onEscapeKey(event) {\n if (this.popup) {\n this.hide(event, true);\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({\n ...focusedItemInfo,\n index: this.findLastFocusedItemIndex(),\n item: null\n });\n event.preventDefault();\n }\n }\n onTabKey(event) {\n if (this.backwardViewChild.nativeElement.style.display !== 'none') {\n this.backwardViewChild.nativeElement.focus();\n }\n if (this.popup && !this.containerViewChild.nativeElement.contains(event.target)) {\n this.hide();\n }\n event.preventDefault();\n }\n onEnterKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onArrowRightKey(event);\n }\n else {\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section=\"action\"]');\n anchorElement ? anchorElement.click() : element && element.click();\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({\n ...focusedItemInfo,\n index: processedItem.index,\n item: processedItem.item\n });\n }\n }\n event.preventDefault();\n }\n onItemChange(event) {\n const { processedItem, isFocus } = event;\n if (ObjectUtils.isEmpty(processedItem))\n return;\n const { index, key, level, parentKey, items, item } = processedItem;\n const grouped = ObjectUtils.isNotEmpty(items);\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n grouped && activeItemPath.push(processedItem);\n this.focusedItemInfo.set({ index, level, parentKey, item });\n this.activeItemPath.set(activeItemPath);\n isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n }\n onMenuFocus() {\n this.focused = true;\n this.bindOutsideClickListener();\n this.bindTransitionListeners();\n if (!this.left && this.focusedItemInfo().level > 0) {\n this.focusedItemInfo.set({ index: 0, level: 0, parentKey: '', item: this.findVisibleItem(0).item });\n }\n if (this.focusedItemInfo().index === -1 && this.left < 0) {\n this.focusedItemInfo.set({ ...this.focusedItemInfo(), index: 0 });\n }\n if (this.focusedItemInfo().index === -1 && !this.left) {\n this.focusedItemInfo.set({ index: 0, level: 0, parentKey: '', item: this.findVisibleItem(0).item });\n }\n }\n onMenuBlur() {\n this.focused = false;\n this.popup && this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n if (!this.popup) {\n this.focusedItemInfo.set({\n ...this.focusedItemInfo(),\n index: -1,\n item: null\n });\n }\n this.searchValue = '';\n !this.popup && this.unbindOutsideClickListener();\n }\n activeLevel = signal(0);\n bindTransitionListeners() {\n if (!this.transitionStartListener) {\n this.transitionStartListener = this.renderer.listen(this.rootmenu.sublistViewChild.nativeElement, 'transitionstart', (event) => {\n this.transition = true;\n event.preventDefault();\n });\n }\n if (!this.transitionEndListener) {\n this.transitionEndListener = this.renderer.listen(this.rootmenu.sublistViewChild.nativeElement, 'transitionend', (event) => {\n const activeMenu = DomHandler.findSingle(this.rootmenu.el.nativeElement, `ul[data-pc-state=\"active\"]`);\n const activeLevel = DomHandler.getAttribute(activeMenu.firstElementChild, 'aria-level') - 1;\n this.activeLevel.set(activeLevel);\n if (!this.left) {\n this.rootmenu.sublistViewChild.nativeElement.focus();\n }\n else {\n const activeLevel = DomHandler.getAttribute(activeMenu.firstElementChild, 'aria-level') - 1;\n this.activeLevel.set(activeLevel);\n if (this.focusedItemInfo().level > this.activeLevel()) {\n let newActiveItemPath = this.activeItemPath().slice(0, this.activeItemPath().length - 1);\n let lastActiveParent = newActiveItemPath[newActiveItemPath.length - 1];\n this.focusedItemInfo.set({ index: -1, level: this.activeLevel(), parentKey: lastActiveParent.key });\n this.activeItemPath.set(newActiveItemPath);\n }\n }\n this.transition = false;\n event.preventDefault();\n });\n }\n }\n unbindTransitionListeners() {\n if (this.transitionEndListener) {\n this.transitionEndListener();\n this.transitionEndListener = null;\n }\n if (this.transitionStartListener) {\n this.transitionStartListener();\n this.transitionStartListener = null;\n }\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n if (this.popup) {\n this.container = event.element;\n this.moveOnTop();\n this.onShow.emit({});\n this.appendOverlay();\n this.alignOverlay();\n this.bindOutsideClickListener();\n this.bindResizeListener();\n DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n this.scrollInView();\n }\n break;\n case 'void':\n this.onOverlayHide();\n this.onHide.emit({});\n break;\n }\n }\n alignOverlay() {\n if (this.relativeAlign)\n DomHandler.relativePosition(this.container, this.target);\n else\n DomHandler.absolutePosition(this.container, this.target);\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(event.element);\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.containerViewChild.nativeElement);\n else\n DomHandler.appendChild(this.container, this.appendTo);\n }\n }\n restoreOverlayAppend() {\n if (this.containerViewChild && this.appendTo) {\n this.renderer.appendChild(this.el.nativeElement, this.container);\n }\n }\n moveOnTop() {\n if (this.autoZIndex) {\n ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);\n }\n }\n /**\n * Hides the popup menu.\n * @group Method\n */\n hide(event, isFocus) {\n if (this.popup) {\n this.onHide.emit({});\n this.visible = false;\n }\n isFocus && DomHandler.focus(this.target || this.rootmenu.sublistViewChild.nativeElement);\n }\n /**\n * Toggles the visibility of the popup menu.\n * @param {Event} event - Browser event.\n * @group Method\n */\n toggle(event) {\n this.visible ? this.hide(event, true) : this.show(event);\n }\n /**\n * Displays the popup menu.\n * @param {Event} even - Browser event.\n * @group Method\n */\n show(event, isFocus) {\n if (this.popup) {\n this.visible = true;\n this.target = event.currentTarget;\n }\n this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' });\n if (!this.popup) {\n isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n }\n this.cd.markForCheck();\n }\n searchItems(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let itemIndex = -1;\n let matched = false;\n if (this.focusedItemInfo().index !== -1) {\n itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));\n itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;\n }\n else {\n itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n }\n if (itemIndex !== -1) {\n matched = true;\n }\n if (itemIndex === -1 && this.focusedItemInfo().index === -1) {\n itemIndex = this.findFirstFocusedItemIndex();\n }\n if (itemIndex !== -1) {\n this.changeFocusedItemIndex(event, itemIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n findVisibleItem(index) {\n return ObjectUtils.isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;\n }\n findLastFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n }\n findLastItemIndex() {\n return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n }\n findPrevItemIndex(index) {\n const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex : index;\n }\n findNextItemIndex(index) {\n const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n }\n findFirstFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n }\n findFirstItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n }\n findSelectedItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n }\n changeFocusedItemIndex(event, index) {\n if (this.focusedItemInfo().index !== index) {\n this.focusedItemInfo.set({ ...this.focusedItemInfo(), index });\n this.scrollInView();\n }\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.resizeListener) {\n this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {\n if (!DomHandler.isTouchDevice()) {\n this.hide(event, true);\n }\n });\n }\n }\n }\n bindOutsideClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.outsideClickListener) {\n this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {\n const isOutsideContainer = this.containerViewChild && !this.containerViewChild.nativeElement.contains(event.target);\n const isOutsideTarget = this.popup ? !(this.target && (this.target === event.target || this.target.contains(event.target))) : true;\n if (this.popup) {\n if (isOutsideContainer && isOutsideTarget) {\n this.onMenuBlur();\n this.hide();\n }\n }\n else {\n if (isOutsideContainer && isOutsideTarget && this.focused) {\n this.onMenuBlur();\n }\n }\n });\n }\n }\n }\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n this.outsideClickListener();\n this.outsideClickListener = null;\n }\n }\n unbindResizeListener() {\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n onOverlayHide() {\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n this.left = 0;\n if (!this.cd.destroyed) {\n this.target = null;\n }\n if (this.container) {\n this.container = null;\n }\n }\n ngOnDestroy() {\n if (this.popup) {\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n this.unbindTransitionListeners();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: SlideMenu, selector: \"p-slideMenu\", inputs: { model: \"model\", menuWidth: \"menuWidth\", viewportHeight: \"viewportHeight\", effectDuration: \"effectDuration\", easing: \"easing\", backLabel: \"backLabel\", disabled: \"disabled\", tabindex: \"tabindex\", popup: \"popup\", style: \"style\", styleClass: \"styleClass\", appendTo: \"appendTo\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", autoDisplay: \"autoDisplay\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", id: \"id\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"rootmenu\", first: true, predicate: [\"rootmenu\"], descendants: true }, { propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"backward\", first: true, predicate: [\"backward\"], descendants: true }, { propertyName: \"slideMenuContentViewChild\", first: true, predicate: [\"slideMenuContent\"], descendants: true }], ngImport: i0, template: `\n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-slidemenu .p-slidemenu-root-list{position:relative;top:0}.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu ul{margin:0;padding:0;list-style:none}.p-slidemenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative;height:100%}.p-slidemenu .p-menuitem-link:not(.p-slidemenu-backward){cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-slidemenu .p-menuitem-text{line-height:1}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-slidemenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}.p-slidemenu .p-menuitem-active>p-slidemenusub>.p-submenu-list{display:block;left:100%;top:0}.p-slidemenu .p-menuitem-active>.p-menuitem-content>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-menuitem-content>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => CaretLeftIcon), selector: \"CaretLeftIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SlideMenuSub), selector: \"p-slideMenuSub\", inputs: [\"items\", \"menuWidth\", \"root\", \"easing\", \"effectDuration\", \"autoDisplay\", \"autoZIndex\", \"baseZIndex\", \"popup\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\", \"tabindex\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-slideMenu', template: `\n \n \n \n `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-slidemenu .p-slidemenu-root-list{position:relative;top:0}.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu ul{margin:0;padding:0;list-style:none}.p-slidemenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative;height:100%}.p-slidemenu .p-menuitem-link:not(.p-slidemenu-backward){cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-slidemenu .p-menuitem-text{line-height:1}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-slidemenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}.p-slidemenu .p-menuitem-active>p-slidemenusub>.p-submenu-list{display:block;left:100%;top:0}.p-slidemenu .p-menuitem-active>.p-menuitem-content>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-menuitem-content>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: i5.OverlayService }], propDecorators: { model: [{\n type: Input\n }], menuWidth: [{\n type: Input\n }], viewportHeight: [{\n type: Input\n }], effectDuration: [{\n type: Input\n }], easing: [{\n type: Input\n }], backLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], popup: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], autoDisplay: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], id: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], rootmenu: [{\n type: ViewChild,\n args: ['rootmenu']\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], backward: [{\n type: ViewChild,\n args: ['backward']\n }], slideMenuContentViewChild: [{\n type: ViewChild,\n args: ['slideMenuContent']\n }] } });\nclass SlideMenuModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuModule, declarations: [SlideMenu, SlideMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule, CaretLeftIcon], exports: [SlideMenu, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuModule, imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule, CaretLeftIcon, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SlideMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule, CaretLeftIcon],\n exports: [SlideMenu, RouterModule, TooltipModule, SharedModule],\n declarations: [SlideMenu, SlideMenuSub]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SlideMenu, SlideMenuModule, SlideMenuSub };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOutput,\r\n\tSimpleChanges,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tBaseOperationGroupDirective\r\n} from '@operation/directives/base-operation-group.directive';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSlideMenu\r\n} from 'primeng/slidemenu';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-slide-menu',\r\n\ttemplateUrl: './slide-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./slide-menu.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the context menu display.\r\n *\r\n * @export\r\n * @class SlideMenuComponent\r\n * @extends {BaseOperationGroupDirective}\r\n * @implements {OnDestroy}\r\n * @implements {OnChanges}\r\n */\r\nexport class SlideMenuComponent\r\n\textends BaseOperationGroupDirective\r\n\timplements OnDestroy, OnChanges\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the slide menu component.\r\n\t *\r\n\t * @param {LoggerService} loggerService\r\n\t * The logger service to use for client and server side logging.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use when loading operation group data.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service to use when performing operation\r\n\t * commands.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service used for create functionality.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service to use for module based slide menu displays.\r\n\t * @param {Router} router\r\n\t * The router used for navigation.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic loggerService: LoggerService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic router: Router)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tloggerService,\r\n\t\t\toperationService,\r\n\t\t\toperationExecutionService,\r\n\t\t\tsiteLayoutService);\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.moduleService.name))\r\n\t\t{\r\n\t\t\tthis.moduleService.name = AppConstants.moduleNames.dashboard;\r\n\t\t}\r\n\r\n\t\tthis.operationGroupName =\r\n\t\t\tthis.moduleService.getContextMenuName();\r\n\t\tthis.displayName = 'the context menu';\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the page context operation group name. This will\r\n\t * be displayed as the second level of the slide menu if send.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@Input() public pageContextOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the filter change event emitter. This will notify\r\n\t * listening components that the filter value needs to alter to\r\n\t * the supplied string.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@Output() public filterChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the step index change event emitter. This will notify\r\n\t * listening components that a slide menu action to step into children\r\n\t * or back into parents has occured.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@Output() public stepIndexChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the slide menu component used in this display as it's original\r\n\t * prime ng defined component.\r\n\t *\r\n\t * @type {SlideMenu}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@ViewChild('SlideMenu')\r\n\tpublic slideMenuViewChild: SlideMenu;\r\n\r\n\t/**\r\n\t * Gets or sets the context menu height which is used to create scrollable\r\n\t * viewports for long lists in the slide menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic stepIndex: number = 0;\r\n\r\n\t/**\r\n\t * Gets the label to display during initial module menu loads.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic readonly loadingLabel: string = 'Loading';\r\n\r\n\t/**\r\n\t * Gets or sets the loading changed subscription.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic pageContextChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets the menu item to display during loads.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic readonly loadingMenuItem: MenuItem =\r\n\t\t{\r\n\t\t\tlabel: this.loadingLabel,\r\n\t\t\ticon: 'fa fa-fw fa-spin fa-spinner',\r\n\t\t\tdisabled: true,\r\n\t\t\tvisible: true,\r\n\t\t\tstyleClass: 'loading-label'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the list of items displayed in this slide menu component.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic items: MenuItem[] =\r\n\t\t[\r\n\t\t\tthis.loadingMenuItem\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the context menu height which is used to create scrollable\r\n\t * viewports for long lists in the slide menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic contextMenuHeight: number = 10000;\r\n\r\n\t/**\r\n\t * Gets or sets the width of the expanded context menu which is used to\r\n\t * define the horizontal bounds of the slide menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic contextMenuWidth: number =\r\n\t\tAppConstants.staticLayoutSizes.expandedContextMenuWidth;\r\n\r\n\t/**\r\n\t * Gets or sets the filter used to hide or show slide\r\n\t * menu content.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@Input() public get filter(): string\r\n\t{\r\n\t\treturn this._filter;\r\n\t}\r\n\tpublic set filter(\r\n\t\tfilter: string)\r\n\t{\r\n\t\tif (filter !== this.filter)\r\n\t\t{\r\n\t\t\tthis.stepIndex =\r\n\t\t\t\tthis.getCurrentStepIndex(\r\n\t\t\t\t\tthis.slideMenuViewChild.left);\r\n\r\n\t\t\tthis.items =\r\n\t\t\t\tthis.filterMenuItems(\r\n\t\t\t\t\tthis.items,\r\n\t\t\t\t\tfilter);\r\n\r\n\t\t\tthis.items =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.items,\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\tthis._filter = filter;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets or sets the value used to reset the\r\n\t * operation menu items.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@Input() public get reset(): boolean\r\n\t{\r\n\t\treturn this._reset;\r\n\t}\r\n\tpublic set reset(\r\n\t\treset: boolean)\r\n\t{\r\n\t\tif (reset === true)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNull(this.slideMenuViewChild))\r\n\t\t\t{\r\n\t\t\t\tthis.slideMenuViewChild.left = 0;\r\n\t\t\t\tthis.stepIndex = this.getCurrentStepIndex(\r\n\t\t\t\t\tthis.slideMenuViewChild.left);\r\n\t\t\t\tthis.stepIndexChange.next(this.stepIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._reset = reset;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the loading value that specifies this component is loading\r\n\t * the module menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic get loadingModuleMenu(): boolean\r\n\t{\r\n\t\treturn this.items.length === 1\r\n\t\t\t&& this.items[0].label === this.loadingLabel;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the local storage filter used\r\n\t * to hide or show context menu content.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate _filter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the local storage value used to reset the\r\n\t * operation menu items.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate _reset: boolean;\r\n\r\n\t/**\r\n\t * Gets the style class based identifier for a section title.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly sectionTitleIdentifier: string = 'section-title';\r\n\r\n\t/**\r\n\t * Gets the class based identifier for a section title icon.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly sectionTitleIconIdentifier: string = 'section-title-icon';\r\n\r\n\t/**\r\n\t * Gets the class based identifier for a caret left icon,\r\n\t * used to be displayed in a back button menu item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly caretLeftIcon: string = 'caret-left';\r\n\r\n\t/**\r\n\t * Gets the style class based identifier for no matching results.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly noResultsFoundIdentifier: string = 'no-results-found';\r\n\r\n\t/**\r\n\t * Gets the debounce delay in milliseconds prior to loading the\r\n\t * page level context menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly loadDebounceDelay: number = 100;\r\n\r\n\t/**\r\n\t * Gets the identifier for this component. This is used as a\r\n\t * target component to handle context menu resets.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly componentName: string = 'SlideMenuComponent';\r\n\r\n\t/**\r\n\t * Gets the common lookup identifiers to use when looking at a\r\n\t * page context value.\r\n\t *\r\n\t * @type {{\r\n\t\tentityInstance: string;\r\n\t\tentityType: string;\r\n\t\tentityTypeGroup: string;\r\n\t\tid: string;\r\n\t}}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly pageContextIdentifiers:\r\n\t{\r\n\t\tentityInstance: string;\r\n\t\tentityType: string;\r\n\t\tentityTypeGroup: string;\r\n\t\tid: string;\r\n\t} = {\r\n\t\t\tentityInstance: 'entityInstance',\r\n\t\t\tentityType: 'entityType',\r\n\t\t\tentityTypeGroup: 'entityTypeGroup',\r\n\t\t\tid: 'id'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the measurements when calculating the display heights for scrolling.\r\n\t *\r\n\t * @type {{\r\n\t\tbackButtonHeight: number;\r\n\t\tfilterHeight: number;\r\n\t\theaderHeight: number;\r\n\t}}\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate readonly componentSizes:\r\n\t{\r\n\t\tbackButtonHeight: number;\r\n\t\tfilterHeight: number;\r\n\t\theaderHeight: number;\r\n\t} = {\r\n\t\t\tbackButtonHeight: 28,\r\n\t\t\tfilterHeight: 44.5,\r\n\t\t\theaderHeight: 45\r\n\t\t};\r\n\r\n\t/**\r\n\t * Watches for changes in the site layout and handles these events.\r\n\t * This will recalculate the height of the context menu to ensure\r\n\t * accurate scrollports based on the current site height.\r\n\t *\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.calculateContextMenuHeight();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the refresh component event.\r\n\t * This will refresh the slide menu specific to the page context.\r\n\t *\r\n\t * @param {string} contentComponent\r\n\t * The component to be targetted for a view refresh.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.refreshComponentEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent\r\n\t\t])\r\n\tpublic refreshContextMenu(\r\n\t\tcontentComponent: string): void\r\n\t{\r\n\t\tif (contentComponent === this.componentName)\r\n\t\t{\r\n\t\t\tthis.reset = true;\r\n\r\n\t\t\tconst separatorIndex: number =\r\n\t\t\t\tthis.items.findIndex(\r\n\t\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\t\tmenuItem.separator === true);\r\n\t\t\tthis.items =\r\n\t\t\t\tseparatorIndex >= 0\r\n\t\t\t\t\t? this.items.slice(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tseparatorIndex)\r\n\t\t\t\t\t: [];\r\n\r\n\t\t\tthis.operationGroupName =\r\n\t\t\t\tthis.pageContextOperationGroupName;\r\n\r\n\t\t\tif (this.items.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.items.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tseparator: true,\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.items.push(\r\n\t\t\t\tthis.loadingMenuItem);\r\n\t\t\tthis.items =\r\n\t\t\t\t\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.items\r\n\t\t\t\t];\r\n\r\n\t\t\tthis.ngOnInit();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on changes event.\r\n\t * This is used to capture changes in the page level context menu\r\n\t * identifier when being set async.\r\n\t *\r\n\t * @param {SimpleChanges} simpleChanges\r\n\t * The altered values that fired this on change event.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tchanges: SimpleChanges): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tchanges.pageContextOperationGroupName?.currentValue))\r\n\t\t{\r\n\t\t\tthis.pageContextChanged.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This is used to complete any subscriptions on the component.\r\n\t *\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.pageContextChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the available height for this slide menu in order to\r\n\t * add proper scrollable viewports if required.\r\n\t *\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic calculateContextMenuHeight(): void\r\n\t{\r\n\t\tthis.contextMenuHeight =\r\n\t\t\tthis.siteLayoutService.windowHeight\r\n\t\t\t\t- (this.stepIndex !== 0\r\n\t\t\t\t\t? (this.componentSizes.filterHeight\r\n\t\t\t\t\t\t+ this.componentSizes.backButtonHeight)\r\n\t\t\t\t\t: 0);\r\n\r\n\t\tconst contentMenuHeight: number =\r\n\t\t\tthis.contextMenuHeight\r\n\t\t\t\t- this.componentSizes.headerHeight\r\n\t\t\t\t- AppConstants.staticLayoutSizes.standardPadding;\r\n\r\n\t\tconst contextMenuContent: HTMLDivElement =\r\n\t\t\tdocument.querySelector('.p-slidemenu-content');\r\n\t\tcontextMenuContent.setAttribute(\r\n\t\t\t'style',\r\n\t\t\t`height: ${contentMenuHeight}px;`);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the load of the operation group associated with this slide menu.\r\n\t * This will load the module and page level operation menus via the\r\n\t * IOperationGroupDirective interface.\r\n\t *\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic performPostOperationLoadActions(): void\r\n\t{\r\n\t\tthis.pageContextChanged.pipe(\r\n\t\t\tdebounceTime(this.loadDebounceDelay))\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.loadingModuleMenu\r\n\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\tthis.pageContextOperationGroupName))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.operationGroupName =\r\n\t\t\t\t\t\tthis.pageContextOperationGroupName;\r\n\r\n\t\t\t\t\tif (this.items.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.items.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tseparator: true,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.items.push(\r\n\t\t\t\t\t\tthis.loadingMenuItem);\r\n\t\t\t\t\tthis.items =\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t...this.items\r\n\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\tthis.ngOnInit();\r\n\t\t\t\t});\r\n\r\n\t\tthis.calculateContextMenuHeight();\r\n\r\n\t\t// Module menu initial load\r\n\t\tif (this.loadingModuleMenu === true)\r\n\t\t{\r\n\t\t\tif (this.model.length > 0)\r\n\t\t\t{\r\n\t\t\t\tconst menuItems: MenuItem[] =\r\n\t\t\t\t\tthis.populateMenuItems(\r\n\t\t\t\t\t\tthis.model[0].items);\r\n\r\n\t\t\t\tmenuItems.unshift(\r\n\t\t\t\t\tthis.getMenuLabelItem(\r\n\t\t\t\t\t\tthis.model[0]));\r\n\r\n\t\t\t\tthis.items =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...menuItems\r\n\t\t\t\t\t];\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.items = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.pageContextChanged.next();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Complete the changes watcher\r\n\t\t\tthis.pageContextChanged.complete();\r\n\r\n\t\t\tif (this.items[this.items.length - 1] ===\r\n\t\t\t\tthis.loadingMenuItem)\r\n\t\t\t{\r\n\t\t\t\tthis.items =\r\n\t\t\t\t\tthis.items.slice(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tthis.items.length - 1);\r\n\t\t\t}\r\n\r\n\t\t\t// Page menu secondary load\r\n\t\t\tconst menuItems: MenuItem[] =\r\n\t\t\t\tthis.populateMenuItems(\r\n\t\t\t\t\tthis.model);\r\n\r\n\t\t\tthis.items =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.items,\r\n\t\t\t\t\t...menuItems\r\n\t\t\t\t];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click on the side menu to ensure the section title click\r\n\t * will not be sent unless the section title action icon is clicked\r\n\t * directly.\r\n\t *\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tpublic slideMenuClicked(): void\r\n\t{\r\n\t\tif (this.stepIndex !==\r\n\t\t\tthis.getCurrentStepIndex(\r\n\t\t\t\tthis.slideMenuViewChild.left))\r\n\t\t{\r\n\t\t\tthis.stepIndex =\r\n\t\t\t\tthis.getCurrentStepIndex(\r\n\t\t\t\t\tthis.slideMenuViewChild.left);\r\n\r\n\t\t\tthis.calculateContextMenuHeight();\r\n\r\n\t\t\tthis.filterChange.emit(\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tthis.stepIndexChange.emit(\r\n\t\t\t\tthis.stepIndex);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted menu item used to acccurately format and configure\r\n\t * an operation group display in this component.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The menu item to be configured and formatted for display in this slide\r\n\t * menu.\r\n\t * @returns {MenuItem}\r\n\t * A labelled parent with a set of related menu items that represents an\r\n\t * operation group in this slide menu.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate labelMenuItem(\r\n\t\tmenuItem: MenuItem): MenuItem\r\n\t{\r\n\t\tconst currentMenuItemIcon: string =\r\n\t\t\tAnyHelper.isNull(menuItem.icon)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: menuItem.icon;\r\n\t\tconst relatedContextMenu: boolean =\r\n\t\t\tcurrentMenuItemIcon.indexOf(\r\n\t\t\t\tAppConstants.contextMenuIdentifiers\r\n\t\t\t\t\t.addRelatedContextMenuIdentifier) !== -1;\r\n\t\tconst addCreateAction: boolean =\r\n\t\t\tcurrentMenuItemIcon.indexOf(\r\n\t\t\t\tAppConstants.contextMenuIdentifiers\r\n\t\t\t\t\t.addCreateActionIdentifier) !== -1;\r\n\r\n\t\tif (menuItem.items?.length > 0\r\n\t\t\t|| relatedContextMenu === true)\r\n\t\t{\r\n\t\t\tconst menuItems: MenuItem[] = [];\r\n\r\n\t\t\tmenuItem.items.unshift(\r\n\t\t\t\tthis.getMenuLabelItem(\r\n\t\t\t\t\tmenuItem,\r\n\t\t\t\t\taddCreateAction));\r\n\t\t\tmenuItem.items?.forEach(\r\n\t\t\t\t(recursiveMenuItem: MenuItem) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tmenuItems.push(\r\n\t\t\t\t\t\tthis.labelMenuItem(recursiveMenuItem));\r\n\t\t\t\t});\r\n\r\n\t\t\tmenuItem.items = menuItems;\r\n\t\t}\r\n\r\n\t\tif (currentMenuItemIcon\r\n\t\t\t.indexOf(this.sectionTitleIconIdentifier) === -1\r\n\t\t\t&& currentMenuItemIcon.indexOf(this.caretLeftIcon) === -1)\r\n\t\t{\r\n\t\t\tmenuItem.icon = null;\r\n\t\t}\r\n\r\n\t\treturn menuItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a label only menu item which is used to display a working title\r\n\t * for a set of functions related to an operation group.\r\n\t *\r\n\t * @param {MenuItem} menuItem\r\n\t * The menu item representing a group of operations to create a label\r\n\t * for.\r\n\t * @param {boolean} [addCreateAction]\r\n\t * If sent, this will add a creation action icon to this group label\r\n\t * menu item.\r\n\t * @returns {MenuItem}\r\n\t * A label menu item used to display operation group associations in this\r\n\t * component.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate getMenuLabelItem(\r\n\t\tmenuItem: MenuItem,\r\n\t\taddCreateAction: boolean = false): MenuItem\r\n\t{\r\n\t\tconst baseMenuLabelItem =\r\n\t\t{\r\n\t\t\tlabel: menuItem.label.toUpperCase(),\r\n\t\t\tstyleClass: this.sectionTitleIdentifier,\r\n\t\t\tdisabled: false,\r\n\t\t\ticon: (addCreateAction === true\r\n\t\t\t\t? 'section-title-icon float-right theme-color '\r\n\t\t\t\t\t+ 'fa fa-fw fa-plus-circle'\r\n\t\t\t\t: null)\r\n\t\t};\r\n\r\n\t\t// Add command if addCreateAction is true\r\n\t\tif (addCreateAction)\r\n\t\t{\r\n\t\t\tbaseMenuLabelItem['command'] =\r\n\t\t\t\tasync () =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst creationEntityType: IEntityType =\r\n\t\t\t\t\t\tawait this.entityTypeApiService.getSingleQueryResult(\r\n\t\t\t\t\t\t\t`${AppConstants.commonProperties.group} eq `\r\n\t\t\t\t\t\t\t\t+ `'${menuItem.id}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\t\t\t\t\tconst parentEntityId: number =\r\n\t\t\t\t\t\tthis.pageContext.data\r\n\t\t\t\t\t\t\t[this.pageContextIdentifiers.entityInstance]\r\n\t\t\t\t\t\t\t[this.pageContextIdentifiers.id];\r\n\t\t\t\t\tconst parentEntityTypeGroup: string =\r\n\t\t\t\t\t\tthis.pageContext.source\r\n\t\t\t\t\t\t\t[this.pageContextIdentifiers.entityTypeGroup];\r\n\r\n\t\t\t\t\thistory.pushState(\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tthis.router.url);\r\n\r\n\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t`${this.moduleService.name}`,\r\n\t\t\t\t\t\t\tAppConstants.route.entities,\r\n\t\t\t\t\t\t\tAppConstants.route.display,\r\n\t\t\t\t\t\t\tAppConstants.displayComponentTypes\r\n\t\t\t\t\t\t\t\t.basePageEntityCreate,\r\n\t\t\t\t\t\t\tAppConstants.viewTypes.create\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData: ObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\tautomateVerify: true,\r\n\t\t\t\t\t\t\t\t\t\t\tentityCreationType:\r\n\t\t\t\t\t\t\t\t\t\t\t\tcreationEntityType,\r\n\t\t\t\t\t\t\t\t\t\t\tentityTypes:\r\n\t\t\t\t\t\t\t\t\t\t\t\tmenuItem.id,\r\n\t\t\t\t\t\t\t\t\t\t\tparentSelections:\r\n\t\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeGroup:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentEntityTypeGroup,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentIds:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[parentEntityId]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\t\t}\r\n\t\treturn baseMenuLabelItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates through each menu item in the current collection and\r\n\t * accurately formats and labels all children as a returned set\r\n\t * of menu items.\r\n\t *\r\n\t * @param {MenuItem[]} menuItems\r\n\t * The menu items requiring a transform to a slide menu based display.\r\n\t * @returns {MenuItem[]}\r\n\t * A set of fully labelled menu items for display in this slide menu.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate populateMenuItems(\r\n\t\tmenuItems: MenuItem[]): MenuItem[]\r\n\t{\r\n\t\tconst menuItemCollection: MenuItem[] = [];\r\n\t\tmenuItems.forEach(\r\n\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t{\r\n\t\t\t\tmenuItemCollection.push(\r\n\t\t\t\t\tthis.labelMenuItem(menuItem));\r\n\t\t\t});\r\n\r\n\t\treturn menuItemCollection;\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates through each menu item in the current collection and\r\n\t * returns only the matching menu items to the filter value.\r\n\t *\r\n\t * @param {MenuItem[]} menuItems\r\n\t * The menu items requiring a transform to a filtered slide menu\r\n\t * based display.\r\n\t * @param {string} filter\r\n\t * The filter value to search for a matching label.\r\n\t * @param {number} [currentStepIndex]\r\n\t * The step index being checked in this current filter pass. The\r\n\t * default of zero will return a full matching set.\r\n\t * @returns {MenuItem[]}\r\n\t * A set of filtered menu items for display in this slide menu.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate filterMenuItems(\r\n\t\tmenuItems: MenuItem[],\r\n\t\tfilter: string,\r\n\t\tcurrentStepIndex: number = 0): MenuItem[]\r\n\t{\r\n\t\tmenuItems.forEach(\r\n\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t{\r\n\t\t\t\tif (menuItem.items?.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tmenuItem.items =\r\n\t\t\t\t\t\tthis.filterMenuItems(\r\n\t\t\t\t\t\t\tAnyHelper.isNull(menuItem.items)\r\n\t\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t\t: menuItem.items,\r\n\t\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\t\tcurrentStepIndex + 1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst comparisonLabel: string =\r\n\t\t\t\t\tAnyHelper.isNull(menuItem.label)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: menuItem.label;\r\n\r\n\t\t\t\tmenuItem.visible ??=\r\n\t\t\t\t\tcurrentStepIndex !== this.stepIndex\r\n\t\t\t\t\t|| (comparisonLabel.toLowerCase()\r\n\t\t\t\t\t\t.indexOf(filter.toLowerCase()) !== -1\r\n\t\t\t\t\t\t|| menuItem.styleClass ===\r\n\t\t\t\t\t\t\tthis.sectionTitleIdentifier\r\n\t\t\t\t\t\t|| menuItem.styleClass ===\r\n\t\t\t\t\t\t\tthis.noResultsFoundIdentifier);\r\n\t\t\t});\r\n\r\n\t\tif (currentStepIndex === 0)\r\n\t\t{\r\n\t\t\treturn menuItems;\r\n\t\t}\r\n\r\n\t\t// Add a label for nested levels and handle no results found\r\n\t\tif (menuItems[menuItems.length - 1].styleClass !==\r\n\t\t\tthis.noResultsFoundIdentifier)\r\n\t\t{\r\n\t\t\tmenuItems.push(\r\n\t\t\t\tthis.getNoResultsFoundMenuItem());\r\n\t\t}\r\n\r\n\t\tmenuItems[menuItems.length - 1].visible =\r\n\t\t\tmenuItems.filter(\r\n\t\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t\t\tmenuItem.visible === true).length === 2\r\n\t\t\t\t\t\t&& menuItems[0].styleClass\r\n\t\t\t\t\t\t\t=== this.sectionTitleIdentifier;\r\n\r\n\t\treturn menuItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a labelled menu item used to display no results found\r\n\t * matching the filter.\r\n\t *\r\n\t * @returns {MenuItem}\r\n\t * A display only no results found menu item.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate getNoResultsFoundMenuItem(): MenuItem\r\n\t{\r\n\t\treturn \r\n\t\t{\r\n\t\t\tlabel: AppConstants.noResultsFoundMessage,\r\n\t\t\tstyleClass: this.noResultsFoundIdentifier,\r\n\t\t\tdisabled: true,\r\n\t\t\tvisible: true\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current slide menu step into value. This will\r\n\t * return the level of the current nested menu item collection\r\n\t * currently being viewed.\r\n\t *\r\n\t * @param {number} currentLeftSlideValue\r\n\t * The left value of the slide menu component which is used\r\n\t * to signify nested views.\r\n\t * @returns {number}\r\n\t * The current indent level viewed.\r\n\t * @memberof SlideMenuComponent\r\n\t */\r\n\tprivate getCurrentStepIndex(\r\n\t\tcurrentLeftSlideValue: number): number\r\n\t{\r\n\t\treturn Math.abs(currentLeftSlideValue /\r\n\t\t\tAppConstants.staticLayoutSizes.expandedContextMenuWidth);\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    ","
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormBuilder,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-context-menu',\r\n\ttemplateUrl: './app-context-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./app-context-menu.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a context\r\n * menu component. This component represents content\r\n * context specific navigation and actions.\r\n *\r\n * @export\r\n * @class AppContextMenuComponent\r\n */\r\nexport class AppContextMenuComponent\r\nimplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the context menu\r\n\t * component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {FormBuilder} formBuilder\r\n\t * The form builder used for the filter control.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tprivate readonly formBuilder: UntypedFormBuilder)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t* Gets or sets the page context.\r\n\t*\r\n\t* @type {IDynamicComponentContext}\r\n\t* @memberof AppContextMenuComponent\r\n\t*/\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the page context operation group name. This will\r\n\t * be displayed as the second level of the context menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\t@Input() public pageContextOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the menu expansion event emitter. The event\r\n\t * is emitted to listening components when the expanded state\r\n\t * of the context menu changes.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\t@Output() public menuExpansion: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the content context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic contentContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the active value of this context menu. When active\r\n\t * the context menu is expanded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic active: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the reset value of the slide menu. When this\r\n\t * is set to true, this will set the slide menu back to it's\r\n\t * initial top load level.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic reset: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the current context menu display mode. This is used for\r\n\t * logic on defining what should occur on a site width change.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic currentDisplayMode: string;\r\n\r\n\t/**\r\n\t * Gets or sets the current debounced menu filter value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic menuFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the form group used in this search filter.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic formGroup: UntypedFormGroup = null;\r\n\r\n\t/**\r\n\t * Gets or sets the filter display value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic displayFilter: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value changed subject which is used to watch\r\n\t * for and debounce filter changes and display a filtered set\r\n\t * of menu items.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic filterChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the current window width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic windowWidth: number;\r\n\r\n\t/**\r\n\t * Gets or sets the width changed subject which is used to watch\r\n\t * for and debounce overlay closes on width changes only.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic widthChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets the overlay menu identifier used when checking for associated\r\n\t * close menu events.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate readonly overlayIdentifier: string = 'context-navigation';\r\n\r\n\t/**\r\n\t * Gets the filter identifier in the form group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate readonly contextMenuFilterControlIdentifier: string =\r\n\t\t'contextMenuFilterControl';\r\n\r\n\t/**\r\n\t * Gets the debounce delay used when altering the filter value.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate readonly filterInputDebounceDelay: number = 400;\r\n\r\n\t/**\r\n\t * Gets the debounce delay used when checking for changes in the\r\n\t * site layout service width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate readonly widthChangeDebounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Gets the display modes available for a context menu display.\r\n\t *\r\n\t * @type {overlay: string, static: string}\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate readonly displayMode:\r\n\t{\r\n\t\toverlay: string;\r\n\t\tstatic: string;\r\n\t} = {\r\n\t\t\toverlay: 'overlay',\r\n\t\t\tstatic: 'static'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.widthChanged.next(\r\n\t\t\tthis.siteLayoutService.windowWidth);\r\n\r\n\t\tthis.currentDisplayMode =\r\n\t\t\tthis.siteLayoutService.displayTabletView\r\n\t\t\t\t? this.displayMode.overlay\r\n\t\t\t\t: this.displayMode.static;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this list when an associated menu is\r\n\t * opened, such as a sibling navigation menu.\r\n\t *\r\n\t * @param {string} controlIdentifer\r\n\t * The identifier of the control sending this event.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (this.active === true\r\n\t\t\t&& controlIdentifer !== this.overlayIdentifier)\r\n\t\t{\r\n\t\t\tthis.closeOverlays();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the set content context event.\r\n\t *\r\n\t * @param {IDynamicComponentContext} contentContext\r\n\t * The main content context of the application.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.setContentContextEvent,\r\n\t\t[AppEventParameterConstants.contentContext])\r\n\tpublic handleSetContext(\r\n\t\tcontentContext: IDynamicComponentContext): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() => {\r\n\t\t\t\tthis.contentContext = contentContext;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will set the default active value of the context menu\r\n\t * to open in desktop or larger displays.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.formGroup =\r\n\t\t\tthis.formBuilder.group({\r\n\t\t\t\tcontextMenuFilterControl: []\r\n\t\t\t});\r\n\r\n\t\tthis.filterChanged.pipe(\r\n\t\t\tdebounceTime(this.filterInputDebounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\t(newValue: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.menuFilter !== newValue)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.menuFilter = newValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tthis.windowWidth = this.siteLayoutService.windowWidth;\r\n\t\tthis.widthChanged.pipe(\r\n\t\t\tdebounceTime(this.widthChangeDebounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\t(newValue: number) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.windowWidth !== newValue)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.closeOverlays();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.windowWidth = newValue;\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tif (this.siteLayoutService.windowWidth\r\n\t\t\t\t>= AppConstants.layoutBreakpoints.desktop)\r\n\t\t\t{\r\n\t\t\t\tthis.windowWidth = this.siteLayoutService.windowWidth;\r\n\t\t\t\tthis.expansionButtonClick();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.active = false;\r\n\t\t\t}\r\n\t\t},\r\n\t\tthis.siteLayoutService.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * On destroy event.\r\n\t * This method is used to complete the debounce on the\r\n\t * filter changed value.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.filterChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click the context menu directly. This will always\r\n\t * open the context menu, and clicks here will allow this to remain open.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic expansionButtonClick(): void\r\n\t{\r\n\t\tthis.active = true;\r\n\t\tthis.menuExpansion.emit(this.active);\r\n\r\n\t\tif (this.siteLayoutService.displayTabletView === true)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchContextOverlayEvent(this.active);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click the expansion arrow button attached to this\r\n\t * context menu. This will open or close the context menu on click\r\n\t * based on it's current state.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The event sent from the epansion arrow button click.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic toggleExpansionButtonClick(\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tthis.active = !this.active;\r\n\r\n\t\tif (this.active === false)\r\n\t\t{\r\n\t\t\tthis.resetSlideMenu();\r\n\t\t}\r\n\r\n\t\tthis.menuExpansion.emit(this.active);\r\n\r\n\t\tif (this.siteLayoutService.displayTabletView === true)\r\n\t\t{\r\n\t\t\tEventHelper.dispatchContextOverlayEvent(this.active);\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\tthis.overlayIdentifier);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter change event sent from the slide menu\r\n\t * child component. This will handle the request to alter the\r\n\t * value via the slide menu.\r\n\t *\r\n\t * @param {string} newFilterValue\r\n\t * The filter string value to set this context menu filter as.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic filterChange(\r\n\t\tnewFilterValue: string): void\r\n\t{\r\n\t\tthis.formGroup.get(\r\n\t\t\tthis.contextMenuFilterControlIdentifier)\r\n\t\t\t.setValue(newFilterValue);\r\n\r\n\t\tthis.filterChanged.next(newFilterValue);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the step index event sent from the slide menu\r\n\t * child component. This will handle the logic for displaying\r\n\t * or hiding this filter.\r\n\t *\r\n\t * @param {number} newStepIndex\r\n\t * The current step index value of the child slide menu.\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic stepIndexChange(\r\n\t\tnewStepIndex: number): void\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.displayFilter = newStepIndex !== 0;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter control change event sent from\r\n\t * the enclosed menu when the filter is updated.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic filterControlChanged(): void\r\n\t{\r\n\t\tconst currentEntityFilter: string =\r\n\t\t\tthis.formGroup.get(\r\n\t\t\t\tthis.contextMenuFilterControlIdentifier)\r\n\t\t\t\t?.value;\r\n\r\n\t\tthis.filterChanged.next(currentEntityFilter);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close overlays event sent from the enclosed\r\n\t * menu when an action is performed. This will close the\r\n\t * overlay when in a minimal view or when changing from\r\n\t * an overlay to static display mode.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tpublic closeOverlays(): void\r\n\t{\r\n\t\t// Always fire in a tablet display or when we switch from\r\n\t\t// a tablet display to a a static display.\r\n\t\tif (this.siteLayoutService.displayTabletView === true\r\n\t\t\t|| this.currentDisplayMode === this.displayMode.overlay)\r\n\t\t{\r\n\t\t\tthis.active = false;\r\n\t\t\tthis.resetSlideMenu();\r\n\t\t\tthis.menuExpansion.emit(this.active);\r\n\t\t\tEventHelper.dispatchContextOverlayEvent(false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles altering the reset value for the slide menu and setting this\r\n\t * back when complete. This will reset the root value of the slide menu.\r\n\t *\r\n\t * @memberof AppContextMenuComponent\r\n\t */\r\n\tprivate resetSlideMenu(): void\r\n\t{\r\n\t\tthis.reset = true;\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.reset = false;\r\n\t\t});\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t\t
    twoColumnHeaderBreakpoint\r\n\t\t\t\t}\">\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{{loadingPageTitle}}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{pageTitle}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\ttwoColumnHeaderBreakpoint)\"\r\n\t\t\t\t\t\t\t\t[initialModel]=\"operationGroupInitialModel\"\r\n\t\t\t\t\t\t\t\t(loadedOperationsCountChanged)=\"buttonBarItemCountChanged($event)\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    twoColumnHeaderBreakpoint),\r\n\t\t\t\t\t'display-none': (headerExpanded === false)\r\n\t\t\t\t}\">\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tContentChild,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tSimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-base-page',\r\n\ttemplateUrl: './base-page.component.html',\r\n\tstyleUrls: ['./base-page.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a base page.\r\n *\r\n * @export\r\n * @class BasePageComponent\r\n * @implements {AfterViewInit}\r\n * @implements {OnChanges}\r\n */\r\nexport class BasePageComponent\r\nimplements OnChanges, AfterViewInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the BasePageComponent.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used to define responsive\r\n\t * layout variables.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to track and display module level data.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic moduleService: ModuleService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the page title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public pageTitle: string;\r\n\r\n\t/**\r\n\t* Gets or sets the page context.\r\n\t*\r\n\t* @type {IDynamicComponentContext}\r\n\t* @memberof BasePageComponent\r\n\t*/\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the primary page loading value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public loading: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the primary page title to display while loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public loadingPageTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets the page operation group display name. This will\r\n\t * be displayed as the operation group is loading.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public operationGroupDisplayName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the page operation group initial operation set.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public operationGroupInitialModel: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the page operation group to load.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public operationGroupName: string;\r\n\r\n\t/**\r\n\t* Gets or sets the page context operation group name. This will\r\n\t* be displayed as the second level of the context menu.\r\n\t*\r\n\t* @type {string}\r\n\t* @memberof BasePageComponent\r\n\t*/\r\n\t@Input() public pageContextOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the utility menu operation group name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public utilityMenuOperationGroupName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the reserve bottom right value of this base page header.\r\n\t * This is primarily used for the filter parameter button and will reserve\r\n\t * thirty two pixels at the bottom right. At desktop content size or larger,\r\n\t * this will reserve the right bottom half of content for more details.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public reserveHeaderBottomRight: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the name identifying a desired active drawer component\r\n\t * in the utility menu for this base page display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public activeDrawerComponent: string;\r\n\r\n\t/**\r\n\t * Gets or sets the name identifying a desired active drawer item that will\r\n\t * be available in the sent active drawer component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public activeDrawerItemDescription: string;\r\n\r\n\t/**\r\n\t * Gets or sets the operation group redraw.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@Input() public operationGroupRedraw: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the additional header content.\r\n\t * This is defined in calling components via the #AdditionalHeaderContent\r\n\t * attribute. This is used to define if this content is found or not and\r\n\t * used to show either a one or two column layout header depending.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@ContentChild('AdditionalHeaderContent')\r\n\tpublic additionalHeaderContent: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the additional header content.\r\n\t * This is defined in calling components via the #HeaderContextContent\r\n\t * attribute. This is used to define if this content is found.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@ContentChild('HeaderContextContent')\r\n\tpublic headerContextContent: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the operation group exists value which will define if\r\n\t * this component should have an operation group to display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic operationGroupExists: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the base page class. This is used to extend\r\n\t * the content css class for accurate tablet calculations.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic basePageCssClass: string;\r\n\r\n\t/**\r\n\t * Gets or sets the expanded value of the context menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic contextMenuExpanded: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the expanded value of the page header.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic headerExpanded: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the displayed value of the button bar.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic operationButtonBarDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the value used by the UI to define at which content\r\n\t * width we should switch to a two column page header layout.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic readonly twoColumnHeaderBreakpoint: number =\r\n\t\tAppConstants.layoutBreakpoints.desktop;\r\n\r\n\t/**\r\n\t * Handles the site layout changed event. This will calculate\r\n\t * the current display mode of this base page as tablet or\r\n\t * desktop.\r\n\t *\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.basePageCssClass =\r\n\t\t\tthis.siteLayoutService.displayTabletView === true\r\n\t\t\t\t? 'base-page-tablet-display'\r\n\t\t\t\t: AppConstants.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the display context overlay event. This will hide or\r\n\t * show the mask related to an overlay displayed context menu.\r\n\t * This will be the primary overlay.\r\n\t *\r\n\t * @param {boolean} overlay\r\n\t * The value of whether or not the overlay should be displayed.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.displayContextOverlayEvent,\r\n\t\t[AppEventParameterConstants.overlay])\r\n\tpublic displayContextOverlay(\r\n\t\toverlay: boolean): void\r\n\t{\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t'.context-layout-mask',\r\n\t\t\toverlay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the display drawer overlay event. This will hide or\r\n\t * show the mask related to an overlay displayed drawer.\r\n\t *\r\n\t * @param {boolean} overlay\r\n\t * The value of whether or not the overlay should be displayed.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.displayDrawerOverlayEvent,\r\n\t\t[AppEventParameterConstants.overlay])\r\n\tpublic displayDrawerOverlay(\r\n\t\toverlay: boolean): void\r\n\t{\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t'.drawer-layout-mask',\r\n\t\t\toverlay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on changes event.\r\n\t * This event will watch for changes to the utility menu operation\r\n\t * group and notify the utility menu when altered.\r\n\t *\r\n\t *\r\n\t * @param {SimpleChanges} changes\r\n\t * The change event sent to this on changes handler.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tchanges: SimpleChanges): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(changes.utilityMenuOperationGroupName))\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tEventHelper.dispatchSetUtilityMenuEvent(\r\n\t\t\t\t\t\tchanges.utilityMenuOperationGroupName.currentValue,\r\n\t\t\t\t\t\tthis.activeDrawerComponent,\r\n\t\t\t\t\t\tthis.activeDrawerItemDescription);\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(changes.operationGroupName)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tchanges.operationGroupName.currentValue))\r\n\t\t{\r\n\t\t\tthis.operationGroupExists = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on after view init event.\r\n\t * This will dispatch a change in the current page context\r\n\t * to listening components such as the AppComponent.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tthis.operationGroupExists =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(this.operationGroupName)\r\n\t\t\t\t|| this.operationGroupInitialModel?.length > 0;\r\n\r\n\t\tEventHelper.dispatchSetContentContextEvent(\r\n\t\t\tthis.pageContext);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.siteLayoutChanged();\r\n\t\t\t},\r\n\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the context menu expansion event sent from the child\r\n\t * context menu. This is used to set the context menu expanded\r\n\t * value.\r\n\t *\r\n\t * @param {boolean} expanded\r\n\t * The value of whether or not the context menu is expanded.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic contextMenuExpansion(\r\n\t\texpanded: boolean): void\r\n\t{\r\n\t\tif (this.contextMenuExpanded !== expanded)\r\n\t\t{\r\n\t\t\tthis.contextMenuExpanded = expanded;\r\n\t\t\tEventHelper.dispatchContextMenuActiveEvent(\r\n\t\t\t\tthis.contextMenuExpanded === true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click the expansion arrow button attached to the\r\n\t * page header. This will open or close the header on click\r\n\t * based on it's current state.\r\n\t *\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic headerExpansion(): void\r\n\t{\r\n\t\tthis.headerExpanded = !this.headerExpanded;\r\n\r\n\t\t// Ensure watchers of site changes capture this layout change.\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t\t\t},\r\n\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click the button bar item count changed event. This will\r\n\t * set the displayed value of this button bar based on the existence\r\n\t * of operations.\r\n\t *\r\n\t * @param {number} itemCount\r\n\t * The current item count of operations displayed.\r\n\t * @memberof BasePageComponent\r\n\t */\r\n\tpublic buttonBarItemCountChanged(\r\n\t\titemCount: number): void\r\n\t{\r\n\t\tthis.operationButtonBarDisplayed = itemCount > 0;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tSecurityAccessPolicyDefinitionApiService\r\n} from '@api/services/security/security-access-policy-definition.api.service';\r\nimport {\r\n\tSecurityAccessPolicyApiService\r\n} from '@api/services/security/security-access-policy.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tISecurityAccessPolicyDefinition\r\n} from '@shared/interfaces/security/security-access-policy-definition.interface';\r\nimport {\r\n\tISecurityAccessPolicy\r\n} from '@shared/interfaces/security/security-access-policy.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-access-policies',\r\n\ttemplateUrl: './entity-access-policies.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system entity access policies\r\n * component.\r\n *\r\n * @export\r\n * @class EntityAccessPoliciesComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EntityAccessPoliciesComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityAccessPoliciesComponent.\r\n\t *\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The api service used to get entity version data.\r\n\t * @param {SecurityAccessPolicyApiService}\r\n\t * securityAccessPolicyApiService\r\n\t * The api service used to get security access policy data.\r\n\t * @param {SecurityAccessPolicyDefinitionApiService}\r\n\t * securityAccessPolicyDefinitionApiService\r\n\t * The api service used to get security access policy definition data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for page context functions.\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic securityAccessPolicyApiService: SecurityAccessPolicyApiService,\r\n\t\tpublic securityAccessPolicyDefinitionApiService:\r\n\t\t\tSecurityAccessPolicyDefinitionApiService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic entityDefinitionId: number;\r\n\r\n\t/**\r\n\t * Initializes the component to set the page variables\r\n\t * and setup the table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tawait this.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page variables needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.entityVersion =\r\n\t\t\tawait this.entityVersionApiService\r\n\t\t\t\t.get(this.entityDefinition.versionId);\r\n\r\n\t\tthis.tableFilterQuery = 'EntityTypeId'\r\n\t\t\t+ ` eq ${this.entityDefinition.typeId}`;\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table definitions needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Access Policies',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Access Policy'),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Name ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t\tthis.securityAccessPolicyApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Access Policy Name',\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueName(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Access Policy Name.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: async() => this.createAction()\r\n\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst updateRouteData: string =\r\n\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\taccessPolicyId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/'\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'accessPolicyDefinition/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdateRouteData\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() => this.deleteAction()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * creates a new entity layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tprivate async createAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createAccessPolicy: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst newAccessPolicy: ISecurityAccessPolicy =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityTypeId: this.entityType.id,\r\n\t\t\t\t\t\tname: selectedItem.name\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst createdAccessPolicyId: number =\r\n\t\t\t\t\t\tawait this.securityAccessPolicyApiService\r\n\t\t\t\t\t\t\t.create(newAccessPolicy);\r\n\r\n\t\t\t\tconst newAccessPolicyDefinition:\r\n\t\t\t\t\tISecurityAccessPolicyDefinition =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taccessPolicyId: createdAccessPolicyId,\r\n\t\t\t\t\t\t\tentityVersionId: this.entityVersion.id,\r\n\t\t\t\t\t\t\tjsonData: '{}'\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t\t\t.create(newAccessPolicyDefinition);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/accessPolicyDefinition/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\taccessPolicyId:\r\n\t\t\t\t\t\t\t\t\t\t\tcreatedAccessPolicyId\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateAccessPolicy(),\r\n\t\t\t\t'Creating Access Policy',\r\n\t\t\t\t'Created Access Policy',\r\n\t\t\t\t`Access Policy ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was created to Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Access Policy ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was not created to Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the common table delete statement.\r\n\t *\r\n\t * @async\r\n\t * @returns {string}\r\n\t * The delete statement\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst existingAccessPolicyDefinitions:\r\n\t\t\tISecurityAccessPolicyDefinition[] =\r\n\t\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`AccessPolicyId eq ${selectedItem.id}`\r\n\t\t\t\t\t\t+ ` and EntityVersionId eq ${this.entityVersion.id} `,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst instanceAccessPoliciesFilter: string =\r\n\t\t\t'SecurityGroupEntityInstanceAccessPolicies.Any('\r\n\t\t\t\t+ `AccessPolicyId eq ${selectedItem.id})`;\r\n\t\tconst securityGroupEntityInstanceAccessPolicies =\r\n\t\t\tawait this.securityAccessPolicyApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tinstanceAccessPoliciesFilter,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (existingAccessPolicyDefinitions.length > 1\r\n\t\t\t|| securityGroupEntityInstanceAccessPolicies.length > 0)\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = true;\r\n\r\n\t\t\treturn 'Unable to delete Security Access Policy '\r\n\t\t\t\t+ 'due to existence of multiple Access Policy Definitions '\r\n\t\t\t\t+ 'or an existing dependency.';\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = false;\r\n\r\n\t\t\treturn `Confirm you are about to delete Security Access Policy\r\n\t\t\t\t${selectedItem.id}\r\n\t\t\t\t${selectedItem.name}.`;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing entity access policy.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tprivate async deleteAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteAccessPolicy: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst securityAccessPolicyFilter: string =\r\n\t\t\t\t\t`AccessPolicyId eq ${selectedItem.id}`\r\n\t\t\t\t\t\t+ ` and EntityVersionId eq ${this.entityVersion.id}`;\r\n\t\t\t\tconst accessDefinition: ISecurityAccessPolicyDefinition[] =\r\n\t\t\t\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\tsecurityAccessPolicyFilter,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\tif (accessDefinition.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t\t\t\t.delete(accessDefinition[0].id);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tawait this.securityAccessPolicyApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteAccessPolicy(),\r\n\t\t\t\t'Deleting Access Policy',\r\n\t\t\t\t'Deleted Access Policy',\r\n\t\t\t\t`Access Policy ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was deleted from Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Access Policy ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was not deleted from Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityAccessPoliciesComponent\r\n\t */\r\n\tprivate async uniqueName(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingActions: ISecurityAccessPolicy[] =\r\n\t\t\tawait this.securityAccessPolicyApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'entityTypeId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and name'\r\n\t\t\t\t\t\t+ ` eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\texistingActions.length === 0);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute\r\n} from '@angular/router';\r\nimport {\r\n\tEntityEventConstants\r\n} from '@entity/shared/entity-event.constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tOperationEventParameterConstants\r\n} from '@operation/shared/operation-event-parameter.constants';\r\nimport {\r\n\tOperationEventConstants\r\n} from '@operation/shared/operation-event.constants';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable,\r\n\tSubject,\r\n\tSubscription,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tstartWith\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[EntityManager]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with account.\r\n *\r\n * @export\r\n * @class EntityManagerDirective\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class EntityManagerDirective\r\nimplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityManagerDirective.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic entityDefinitionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the layout fields.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic layoutFields: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the definition data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic contextData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the loading definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic loadingDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type api data.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition api data.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version api data.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the flag that a value has changed in the entity instance\r\n\t * displayed and is not saved.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic formValuesChanged: boolean = null;\r\n\r\n\t/**\r\n\t * Gets or sets the observer of form validation changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic formValidityChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the is saving value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data as it exists\r\n\t * in the database.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic databaseData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the form validity state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic formValidity: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the initial load flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic initialLoad: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the save title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic saveTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets the save content.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic saveContent: string;\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tsource: this,\r\n\t\t\tdata: null\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the delay for a debounced subject change.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tprotected readonly debounceDelay: number =\r\n\t\tAppConstants.time.twentyFiveMilliseconds;\r\n\r\n\t/**\r\n\t * Handles the before unload event sent from the current window based\r\n\t * on any action that will change the page.\r\n\t *\r\n\t * @memberof EntityManagerDirective\r\n\t * @returns {Observable | boolean}\r\n\t * The value that will allow the router to know if the data in this form\r\n\t * is altered or not saved to the database. This implements the\r\n\t * AppCanDeactivateGuard interface.\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.beforeUnloadEvent)\r\n\tpublic canDeactivate(): Observable | boolean\r\n\t{\r\n\t\treturn this.saving === false\r\n\t\t\t&& this.formValuesChanged === false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the submit event sent from the angular schema form\r\n\t * or from a save EmitEvent operation action. This updates\r\n\t * the server to match the schema form data.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tOperationEventConstants.saveEntityEvent,\r\n\t\t[OperationEventParameterConstants.event])\r\n\t public async save(): Promise\r\n\t {\r\n\t\tif (this.saving === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.saveAction(),\r\n\t\t\t\t`Saving ${this.saveTitle}`,\r\n\t\t\t\t`Saved ${this.saveTitle}`,\r\n\t\t\t\t`${this.saveContent} was successfully saved.`,\r\n\t\t\t\t`${this.saveContent} was not saved.`));\r\n\r\n\t\tawait this.setFormlyDefinitions();\r\n\t\tthis.formValidityChanged.next(false);\r\n\r\n\t\tthis.saving = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load and initialize the lookups available for report creation.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tawait this.setFormlyDefinitions();\r\n\r\n\t\tawait this.setTableDefinitions();\r\n\r\n\t\tthis.formValidityChanged.pipe(\r\n\t\t\tstartWith(false),\r\n\t\t\tdebounceTime(this.debounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((enabled: boolean) =>\r\n\t\t\t{\r\n\t\t\t\tthis.emitFormValidityChangedEvent(enabled);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to complete the debounce on the\r\n\t * form validity changed value.\r\n\t *\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.formValidityChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the Formly Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async setFormlyDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setContextData();\r\n\t\tthis.updateLastSavedData();\r\n\t\tthis.setLayoutFields();\r\n\r\n\t\tthis.loadingDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to save the data in the last database loaded\r\n\t * or saved entity instance. This data is then used for comparisons\r\n\t * to the current entity form to validate if page changes are allowed\r\n\t * or similar business rules.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic updateLastSavedData(): void\r\n\t{\r\n\t\tthis.databaseData =\r\n\t\t\tcloneDeep(this.contextData);\r\n\t}\r\n\r\n\t/**\r\n\t * Captures value changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valueChanged\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic formValuesChange(\r\n\t\tvalueChanged: boolean): void\r\n\t{\r\n\t\tthis.formValuesChanged = valueChanged;\r\n\t\tthis.handleFormChangesAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Captures validity changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valid\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic formValidityChange(\r\n\t\tvalid: boolean): void\r\n\t{\r\n\t\tthis.formValidity = valid;\r\n\t\tthis.handleFormChangesAndValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles any form changes and validity.\r\n\t *\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic handleFormChangesAndValidity()\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.formValidityChanged\r\n\t\t\t\t\t.next(this.formValuesChanged && this.formValidity);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.halfSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Emits the form validity changed event to any listening components.\r\n\t * This event signifies whether this current profile form is valid\r\n\t * or not.\r\n\t *\r\n\t * @param {boolean} enabled\r\n\t * Whether or not save or update actions should be enabled. If they\r\n\t * are enabled, we expect any saves or updates to work without error.\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic emitFormValidityChangedEvent(\r\n\t\tenabled: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tEntityEventConstants.enableEntitySave,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tenabled: enabled\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the dropdown options.\r\n\t *\r\n\t * @param {any} apiData\r\n\t * The api resolved with data for the dropdown options.\r\n\t * @param {string} label\r\n\t * The dropdown label to map with the data promise results.\r\n\t * @param {string} value\r\n\t * The dropdown value to map with the data promise results.\r\n\t * @returns {IDropdownOption[]}\r\n\t * The dropdown options object\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic getDropdownOptions(\r\n\t\tapiData: any,\r\n\t\tlabel: string,\r\n\t\tvalue: string): IDropdownOption[]\r\n\t{\r\n\t\treturn (apiData)\r\n\t\t\t.map((item: any) =>\r\n\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: item[label],\r\n\t\t\t\t\t\tvalue: item[value]\r\n\t\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic setLayoutFields(): void\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the Table Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async setTableDefinitions(): Promise\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * A constant library used to defined available entity\r\n * emitted events that can be consumed in listening components\r\n * via the host listener.\r\n *\r\n * @export\r\n * @const EntityEventConstants\r\n */\r\nexport const EntityEventConstants:\r\n{\r\n\tenableEntitySave: string;\r\n\tenableEntitySaveEvent: string;\r\n\tcalculateEntityGrid: string;\r\n\tcalculateEntityGridEvent: string;\r\n\tsetSearchFilterFocus: string;\r\n\tsetSearchFilterFocusEvent: string;\r\n} = {\r\n\tenableEntitySave:\r\n\t\t'enable-entity-save-event',\r\n\tenableEntitySaveEvent:\r\n\t\t'window:enable-entity-save-event',\r\n\tcalculateEntityGrid:\r\n\t\t'calculate-entity-grid-event',\r\n\tcalculateEntityGridEvent:\r\n\t\t'window:calculate-entity-grid-event',\r\n\tsetSearchFilterFocus:\r\n\t\t'set-search-filter-focus-event',\r\n\tsetSearchFilterFocusEvent:\r\n\t\t'window:set-search-filter-focus-event'\r\n};","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tSecurityAccessPolicyDefinitionApiService\r\n} from '@api/services/security/security-access-policy-definition.api.service';\r\nimport {\r\n\tSecurityAccessPolicyApiService\r\n} from '@api/services/security/security-access-policy.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tISecurityAccessPolicyDefinition\r\n} from '@shared/interfaces/security/security-access-policy-definition.interface';\r\nimport {\r\n\tISecurityAccessPolicy\r\n} from '@shared/interfaces/security/security-access-policy.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-access-policy-definition',\r\n\ttemplateUrl: './entity-access-policy-definition.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-access-policy-definition.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity access policy definition\r\n * component.\r\n *\r\n * @export\r\n * @class EntityAccessPolicyDefinitionComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityAccessPolicyDefinitionComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityAccessPolicyDefinitionComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {securityAccessPolicyDefinitionApiService}\r\n\t * securityAccessPolicyDefinitionApiService\r\n\t * The api service used to get security access policy definition data.\r\n\t * @param {securityAccessPolicyApiService}\r\n\t * SecurityAccessPolicyDefinitionApiService\r\n\t * The api service used to get security access policy data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic securityAccessPolicyDefinitionApiService:\r\n\t\t\tSecurityAccessPolicyDefinitionApiService,\r\n\t\tpublic securityAccessPolicyApiService:\r\n\t\t\tSecurityAccessPolicyApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the access policy definition.\r\n\t *\r\n\t * @type {ISecurityAccessPolicyDefinition}\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic accessPolicyDefinition: ISecurityAccessPolicyDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the access policy id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic accessPolicyId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the access policy.\r\n\t *\r\n\t * @type {ISecurityAccessPolicy}\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic accessPolicy: ISecurityAccessPolicy;\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\t public get pageContext(): IDynamicComponentContext\r\n\t {\r\n\t\tconst pageContext: IDynamicComponentContext =\r\n\t\t\t>\r\n\t\t\t {\r\n\t\t\t\t source: this,\r\n\t\t\t\t data: null\r\n\t\t\t };\r\n\r\n\t\t return pageContext;\r\n\t }\r\n\r\n\t/**\r\n\t * Sets the access policy id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tprivate readonly accessPolicyIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.accessPolicyId;\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.accessPolicyId =\r\n\t\t\t\t\tmappedRouteData[this.accessPolicyIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.entityVersion =\r\n\t\t\tawait this.entityVersionApiService\r\n\t\t\t\t.get(this.entityDefinition.versionId);\r\n\r\n\t\tthis.accessPolicyDefinition =\r\n\t\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`AccessPolicyId eq ${this.accessPolicyId}`\r\n\t\t\t\t\t\t+ ' and EntityVersionId eq '\r\n\t\t\t\t\t\t+ `${this.entityDefinition.versionId}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.accessPolicy =\r\n\t\t\tawait this.securityAccessPolicyApiService\r\n\t\t\t\t.get(this.accessPolicyId);\r\n\r\n\t\tthis.contextData =\r\n\t\t\t{\r\n\t\t\t\tid: this.accessPolicyDefinition.id,\r\n\t\t\t\tdefinition: this.accessPolicyDefinition.jsonData\r\n\t\t\t};\r\n\r\n\t\tthis.saveTitle = 'Access Policy Definition';\r\n\t\tthis.saveContent = 'Access Policy Definition'\r\n\t\t\t+ ` ${this.accessPolicy.name}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the updated entity data.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst accessPolicyDefinitionDataObject:\r\n\t\t\tISecurityAccessPolicyDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.accessPolicyDefinition.id,\r\n\t\t\t\taccessPolicyId: this.accessPolicyDefinition.accessPolicyId,\r\n\t\t\t\tentityVersionId: this.accessPolicyDefinition.entityVersionId,\r\n\t\t\t\tjsonData: this.contextData.definition,\r\n\t\t\t\tcreateDate: this.accessPolicyDefinition.createDate,\r\n\t\t\t\tstartDate: this.accessPolicyDefinition.startDate,\r\n\t\t\t\tendDate: this.accessPolicyDefinition.endDate\r\n\t\t\t};\r\n\r\n\t\tawait this.securityAccessPolicyDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.accessPolicyDefinition.id,\r\n\t\t\t\taccessPolicyDefinitionDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityAccessPolicyDefinitionComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'definition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.fullSize\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.definitionValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the definition is a correct input.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic definitionValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\t// Checks if entry is an object type.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tJSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Not a valid JSON format.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIWorkflowFailureActionsDto\r\n} from '@api/interfaces/workflow/workflow-failure-actions.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the workflow\r\n * failure actions controller.\r\n *\r\n * @export\r\n * @class WorkflowFailureActionsApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class WorkflowFailureActionsApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkflowFailureActionsApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof WorkflowFailureActionsApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.workflowFailureActions;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IWorkflowFailureActionsDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {IWorkflowFailureActionsDto} _entity\r\n\t * The workflow failure action to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof WorkflowFailureActionsApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IWorkflowFailureActionsDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an IWorkflowFailureActionsDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} _id\r\n\t * Id of the workflow failure action to update.\r\n\t * @param {IWorkflowFailureActionsDto} _entity\r\n\t * The workflow failure action to update.\r\n\t * @returns {Promise}\r\n\t * Updated item identifier\r\n\t * @memberof WorkflowFailureActionsApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: IWorkflowFailureActionsDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.update,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an IWorkflowFailureActionsDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the workflow failure action to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof WorkflowFailureActionsApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIWorkflowRequisiteTypesDto\r\n} from '@api/interfaces/workflow/workflow-requisite-types.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the workflow\r\n * requisite types controller.\r\n *\r\n * @export\r\n * @class WorkflowRequisiteTypesApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class WorkflowRequisiteTypesApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkflowRequisiteTypesApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof WorkflowRequisiteTypesApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.workflowRequisiteTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IWorkflowRequisiteTypesDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {IWorkflowRequisiteTypesDto} _entity\r\n\t * The workflow requisite type to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof WorkflowRequisiteTypesApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IWorkflowRequisiteTypesDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an IWorkflowRequisiteTypesDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} _id\r\n\t * Id of the workflow requisite type to update.\r\n\t * @param {IWorkflowRequisiteTypesDto} _entity\r\n\t * The workflow requisite type to update.\r\n\t * @returns {Promise}\r\n\t * Updated item identifier\r\n\t * @memberof WorkflowRequisiteTypesApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: IWorkflowRequisiteTypesDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.update,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an IWorkflowRequisiteTypesDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the workflow requisite type to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof WorkflowRequisiteTypesApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIWorkflowActionRequisitesDto\r\n} from '@api/interfaces/workflow/workflow-action-requisites.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the workflow\r\n * action requisites controller.\r\n *\r\n * @export\r\n * @class WorkflowActionRequisitesApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class WorkflowActionRequisitesApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkflowActionRequisitesApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof WorkflowActionRequisitesApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.workflowActionRequisites;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionRequisitesApiService\r\n} from '@api/services/workflow/workflow-action-requisites.api.service';\r\nimport {\r\n\tWorkflowFailureActionsApiService\r\n} from '@api/services/workflow/workflow-failure-actions.api.service';\r\nimport {\r\n\tWorkflowRequisiteTypesApiService\r\n} from '@api/services/workflow/workflow-requisite-types.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tIWorkflowActionRequisites\r\n} from '@shared/interfaces/workflow/workflow-action-requisites.interface';\r\nimport {\r\n\tIWorkflowFailureActions\r\n} from '@shared/interfaces/workflow/workflow-failure-actions.interface';\r\nimport {\r\n\tIWorkflowRequisiteTypes\r\n} from '@shared/interfaces/workflow/workflow-requisite-types.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-action-definition',\r\n\ttemplateUrl: './entity-action-definition.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-action-definition.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity action definitions\r\n * component.\r\n *\r\n * @export\r\n * @class EntityActionDefinitionComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityActionDefinitionComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityActionDefinitionComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionsApiService\r\n\t * The api service used to get workflow action definition data.\r\n\t * @param {WorkflowFailureActionsApiService}\r\n\t * \tworkflowFailureActionsApiService\r\n\t * The api service used to get workflow failure action data.\r\n\t * @param {WorkflowRequisiteTypesApiService}\r\n\t * \tworkflowRequisiteTypesApiService\r\n\t * The api service used to get workflow requisite types data.\r\n\t * @param {WorkflowActionRequisitesApiService}\r\n\t * workflowActionRequisitesApiService\r\n\t * The api service used to get workflow action requisite data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for context methods in this component.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic workflowActionDefinitionsApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic workflowFailureActionsApiService:\r\n\t\t\tWorkflowFailureActionsApiService,\r\n\t\tpublic workflowRequisiteTypesApiService:\r\n\t\t\tWorkflowRequisiteTypesApiService,\r\n\t\tpublic workflowActionRequisitesApiService:\r\n\t\t\tWorkflowActionRequisitesApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action definition data.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic workflowActionDefinition: IWorkflowActionDefinitions;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic actionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the loading state for the post requisite table definitions.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic loadingPostRequisiteTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading state for the pre requisite table definitions.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic loadingPreRequisiteTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow requisite types.\r\n\t *\r\n\t * @type {IWorkflowRequisiteTypes[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic requisiteTypes: IWorkflowRequisiteTypes[];\r\n\r\n\t/**\r\n\t * Gets or sets the workflow requisite options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic requisiteOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the PreRequisite table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic preRequisiteTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the PostRequisite table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic postRequisiteTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic preRequisiteAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic preRequisiteSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic postRequisiteAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic postRequisiteSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the postrequisite common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic postRequisiteCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the prerequisite common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic preRequisiteCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Sets the action id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate readonly actionIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.actionId;\r\n\r\n\t/**\r\n\t * Saves the updated entity data.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst workflowActionDataObject: IWorkflowActionDefinitions =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.workflowActionDefinition.id,\r\n\t\t\t\tentityTypeId: this.workflowActionDefinition.entityTypeId,\r\n\t\t\t\tentityVersionId: this.workflowActionDefinition.entityVersionId,\r\n\t\t\t\tname: this.contextData.name,\r\n\t\t\t\tdescription: this.contextData.description,\r\n\t\t\t\tclassReference:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tthis.contextData.classReference)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: this.contextData.classReference,\r\n\t\t\t\tclassDefinition:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tthis.contextData.classDefinition)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: this.contextData.classDefinition,\r\n\t\t\t\tfailureActionId: this.contextData.failureActionId\r\n\t\t\t};\r\n\r\n\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.workflowActionDefinition.id,\r\n\t\t\t\tworkflowActionDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.preRequisiteAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.preRequisiteSelectedColumns = this.preRequisiteAvailableColumns;\r\n\r\n\t\tthis.postRequisiteAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.postRequisiteSelectedColumns = this.postRequisiteAvailableColumns;\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.actionId =\r\n\t\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\tmappedRouteData[this.actionIdQueryParameter])\r\n\t\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t\t: mappedRouteData[this.actionIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.workflowActionDefinition =\r\n\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t.get(this.actionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.workflowActionDefinition.entityTypeId);\r\n\r\n\t\tthis.requisiteTypes =\r\n\t\t\tawait this.workflowRequisiteTypesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.contextData =\r\n\t\t\t{\r\n\t\t\t\tid: this.workflowActionDefinition.id,\r\n\t\t\t\tname: this.workflowActionDefinition.name,\r\n\t\t\t\tdescription: this.workflowActionDefinition.description,\r\n\t\t\t\tfailureActionId:\r\n\t\t\t\t\tthis.workflowActionDefinition.failureActionId,\r\n\t\t\t\tclassReference:\r\n\t\t\t\t\tthis.workflowActionDefinition.classReference,\r\n\t\t\t\tclassDefinition:\r\n\t\t\t\t\tthis.workflowActionDefinition.classDefinition,\r\n\t\t\t\tentityTypeId:\r\n\t\t\t\t\tthis.workflowActionDefinition.entityTypeId,\r\n\t\t\t\tentityVersionId:\r\n\t\t\t\t\tthis.workflowActionDefinition.entityVersionId\r\n\t\t\t};\r\n\r\n\t\tthis.saveTitle = 'Workflow Action Definition';\r\n\t\tthis.saveContent = 'Workflow Action Definition'\r\n\t\t\t+ ` ${this.workflowActionDefinition.name}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the Table Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async setTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.requisiteOptions =\r\n\t\t\t(await this.workflowActionDefinitionsApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'EntityTypeId eq '\r\n\t\t\t\t\t\t+ `${this.workflowActionDefinition.entityTypeId} `\r\n\t\t\t\t\t\t+ `and Id ne ${this.workflowActionDefinition.id}`,\r\n\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(actionDefinition: IWorkflowActionDefinitions) =>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: actionDefinition.name,\r\n\t\t\t\t\t\t\tvalue: actionDefinition.id\r\n\t\t\t\t\t\t});\r\n\r\n\t\tthis.loadingPreRequisiteTableDefinitions = true;\r\n\t\tthis.loadingPostRequisiteTableDefinitions = true;\r\n\t\tawait this.setPreRequisiteTableDefinitions();\r\n\t\tawait this.setPostRequisiteTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the PreRequisite Table Definitions.\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async setPreRequisiteTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.preRequisiteTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'PreRequisites',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.postRequisiteCommonTableContext,\r\n\t\t\t\t\t\t'PreRequisite'),\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: 'actionDefinitionId eq '\r\n\t\t\t\t\t\t+ this.workflowActionDefinition.id\r\n\t\t\t\t\t\t+ ' and requisiteTypeId eq '\r\n\t\t\t\t\t\t+ (this.requisiteTypes.filter(\r\n\t\t\t\t\t\t\t(requisiteType) =>\r\n\t\t\t\t\t\t\t\trequisiteType.name ===\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.preRequisite))[0]?.id,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise: async (objectSearch: IObjectSearch) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst actionRequisites: IWorkflowActionRequisites[] =\r\n\t\t\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\tconst preRequisites: IWorkflowActionRequisites[] = [];\r\n\r\n\t\t\t\t\tfor (const actionRequisite of actionRequisites)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpreRequisites.push(\r\n\t\t\t\t\t\t\tawait this.decorateActionRequisiteViewModel(\r\n\t\t\t\t\t\t\t\tactionRequisite));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn preRequisites;\r\n\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.preRequisiteAvailableColumns,\r\n\t\t\t\tselectedColumns: this.preRequisiteSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.preRequisiteCommonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'requisiteActionDefinitionId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Action Definition',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder: AppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\toptions: this.requisiteOptions\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputNumber,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uniqueOrder(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.preRequisite),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createRequisite(\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.preRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdateIndex: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.preRequisite,\r\n\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.preRequisite,\r\n\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement:\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\t\t\t\t\tthis.preRequisiteCommonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem;\r\n\r\n\t\t\t\t\t\t\t\treturn `Confirm to remove PreRequisite\r\n\t\t\t\t\t\t\t\t\t${selectedItem.name}\r\n\t\t\t\t\t\t\t\t\tfrom action definition\r\n\t\t\t\t\t\t\t\t\t${this.workflowActionDefinition.name}.`;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\tthis.deleteRequisite(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.preRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingPreRequisiteTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the PostRequisite Table Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async setPostRequisiteTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.postRequisiteTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'PostRequisites',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.postRequisiteCommonTableContext,\r\n\t\t\t\t\t\t'PostRequisite'),\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: 'actionDefinitionId eq '\r\n\t\t\t\t\t\t+ this.workflowActionDefinition.id\r\n\t\t\t\t\t\t+ ' and requisiteTypeId eq '\r\n\t\t\t\t\t\t+ (this.requisiteTypes.filter(\r\n\t\t\t\t\t\t\t(requisiteType) =>\r\n\t\t\t\t\t\t\t\trequisiteType.name ===\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite))[0]?.id,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionRequisites: IWorkflowActionRequisites[] =\r\n\t\t\t\t\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst postRequisites: IWorkflowActionRequisites[] = [];\r\n\r\n\t\t\t\t\t\tfor (const actionRequisite of actionRequisites)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpostRequisites.push(\r\n\t\t\t\t\t\t\t\tawait this.decorateActionRequisiteViewModel(\r\n\t\t\t\t\t\t\t\t\tactionRequisite));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn postRequisites;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.postRequisiteAvailableColumns,\r\n\t\t\t\tselectedColumns: this.postRequisiteSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.postRequisiteCommonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'requisiteActionDefinitionId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Action Definition',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder: AppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\toptions: this.requisiteOptions\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputNumber,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uniqueOrder(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.postRequisite),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createRequisite(\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdateIndex: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite,\r\n\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite,\r\n\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement:\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\t\t\t\t\tthis.postRequisiteCommonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem;\r\n\r\n\t\t\t\t\t\t\t\treturn `Confirm to remove PostRequisite\r\n\t\t\t\t\t\t\t\t\t${selectedItem.name}\r\n\t\t\t\t\t\t\t\t\tfrom action definition\r\n\t\t\t\t\t\t\t\t\t${this.workflowActionDefinition.name}.`;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\tthis.deleteRequisite(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.postRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingPostRequisiteTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @async\r\n\t * @param {IWorkflowActionRequisites} actionRequisite\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async decorateActionRequisiteViewModel(\r\n\t\tactionRequisite: IWorkflowActionRequisites): Promise\r\n\t{\r\n\t\treturn {\r\n\t\t\tid: actionRequisite.id,\r\n\t\t\tname:\r\n\t\t\t\t(await this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.get(actionRequisite\r\n\t\t\t\t\t\t.requisiteActionDefinitionId))\r\n\t\t\t\t\t?.name,\r\n\t\t\trequisiteTypeId:\r\n\t\t\t\tactionRequisite.requisiteTypeId,\r\n\t\t\tactionDefinitionId:\r\n\t\t\t\tactionRequisite.actionDefinitionId,\r\n\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\tactionRequisite\r\n\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\torder: actionRequisite.order\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the Formly Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async setFormlyDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setContextData();\r\n\t\tthis.updateLastSavedData();\r\n\t\tawait this.setLayoutFields();\r\n\r\n\t\tthis.loadingDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueCombination: {\r\n\t\t\t\t\t\t\texpression: async (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueCombination(control),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Existing Type, Version and Name combination.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'failureActionId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tlabel: 'Failure Action',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\toptions: (await this.workflowFailureActionsApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t\t\t\t?.map(\r\n\t\t\t\t\t\t\t\t(failureAction: IWorkflowFailureActions) =>\r\n\t\t\t\t\t\t\t\t\tthis.mapWorkflowFailureAction(\r\n\t\t\t\t\t\t\t\t\t\tfailureAction))\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'classReference',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Class Reference',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\toneOf: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\tcontrol.value)\r\n\t\t\t\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.classDefinition),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Only one of class definition or class '\r\n\t\t\t\t\t\t\t\t\t+ 'reference can be set.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.required':\r\n\t\t\t\t\t\t\t'model.classDefinition == null '\r\n\t\t\t\t\t\t\t\t+ '|| model.classDefinition.trim() === \"\"'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'classDefinition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Class Definition',\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.standard,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidCSharpFormat: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(control.value)\r\n\t\t\t\t\t\t\t\t\t|| this.isValidCSharpFormat(\r\n\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\tmessage: 'Not a valid C# format.'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\toneOf: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\tcontrol.value)\r\n\t\t\t\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.classReference),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Only one of class definition or class '\r\n\t\t\t\t\t\t\t\t\t+ 'reference can be set.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.required':\r\n\t\t\t\t\t\t\t'model.classReference == null '\r\n\t\t\t\t\t\t\t\t+ '|| model.classReference.trim() === \"\"'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the requisite table context based on the sent requisite type.\r\n\t *\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to get a table context for.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * The requisite table context.\r\n\t * @memberof EntityActionDefinitionExpandComponent\r\n\t */\r\n\tprivate getRequisiteTableContext(\r\n\t\trequisiteType: string):\r\n\t\tIDynamicComponentContext\r\n\t{\r\n\t\treturn requisiteType ===\r\n\t\t\tAppConstants.workflowRequisiteTypes.preRequisite\r\n\t\t\t? this.preRequisiteCommonTableContext\r\n\t\t\t: this.postRequisiteCommonTableContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if entity type, entity verion\r\n\t * and action name combination is existing or unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate async uniqueCombination(control: UntypedFormControl):\r\n\t\tPromise\r\n\t{\r\n\t\tlet actionDefinitions: IWorkflowActionDefinitions[] = [];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.contextData.entityTypeId))\r\n\t\t{\r\n\t\t\tactionDefinitions =\r\n\t\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`EntityTypeId eq ${this.contextData.entityTypeId} `\r\n\t\t\t\t\t\t\t+ 'and EntityVersionId eq '\r\n\t\t\t\t\t\t\t+ `${this.contextData.entityVersionId} `\r\n\t\t\t\t\t\t\t+ `and Name eq '${control.value}' `\r\n\t\t\t\t\t\t\t+ `and Id neq ${this.contextData.id}`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(actionDefinitions.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if content value is a valid c sharp format.\r\n\t *\r\n\t * @returns {boolean | RegExpMatchArray}\r\n\t * The validation result.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate isValidCSharpFormat(value: string): boolean | RegExpMatchArray\r\n\t{\r\n\t\treturn AnyHelper.isNullOrWhitespace(value)\r\n\t\t\t|| value?.match(new RegExp(\r\n\t\t\t\t'^(?=.*namespace (?=WaterStreet))'\r\n\t\t\t\t\t+ '(?=.*using (?=WaterStreet))'\r\n\t\t\t\t\t+ '(?=.*public (?=class))'\r\n\t\t\t\t\t+ '(?=.*public (?=override))'\r\n\t\t\t\t\t+ '(?=.*return).*$',\r\n\t\t\t\t'gs'))\r\n\t\t\t&& value.match(/\\{(?:[^{}]+|\\{(?:[^{}]+|\\{[^{}]\\})\\}+)\\}+/g);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the requisite order is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @param {string} requisiteType\r\n\t * The requisite type.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate async uniqueOrder(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst workflowRequisiteTypes: IWorkflowRequisiteTypes[] =\r\n\t\t\tawait this.workflowRequisiteTypesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${requisiteType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst workflowRequisites: IWorkflowActionRequisites[] =\r\n\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Order eq ${control.value} `\r\n\t\t\t\t\t\t+ 'and ActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${this.workflowActionDefinition.id} `\r\n\t\t\t\t\t\t+ `and RequisiteTypeId eq ${\r\n\t\t\t\t\t\t\tworkflowRequisiteTypes[0].id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(workflowRequisites.length <= 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Requisite.\r\n\t *\r\n\t * @async\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to create.\r\n\t * @memberof EntityActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async createRequisite(\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\r\n\t\tconst createRequisite: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst requisiteTypeId: number =\r\n\t\t\t\t\t(await this\r\n\t\t\t\t\t\t.workflowRequisiteTypesApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t`Name eq '${requisiteType}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty))[0].id;\r\n\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: 0,\r\n\t\t\t\t\t\t\t\trequisiteTypeId: requisiteTypeId,\r\n\t\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\t\tthis.workflowActionDefinition.id,\r\n\t\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\t\tcommonTableContext.source.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\t\torder:\r\n\t\t\t\t\t\t\t\t\tcommonTableContext.source.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t.order\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\tcommonTableContext.source.selectedItem.id =\r\n\t\t\t\t\tcreatedId;\r\n\t\t\t\tcommonTableContext.source.selectedItem.requisiteTypeId =\r\n\t\t\t\t\trequisiteTypeId;\r\n\t\t\t\tcommonTableContext.source.selectedItem.actionDefinitionId =\r\n\t\t\t\t\tthis.workflowActionDefinition.id;\r\n\r\n\t\t\t\tawait commonTableContext.source.addSelectedItem();\r\n\t\t\t\tthis.sortCommonTableByOrder(commonTableContext);\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateRequisite(),\r\n\t\t\t\t'Creating Requisite',\r\n\t\t\t\t'Created Requisite',\r\n\t\t\t\t`Requisite\r\n\t\t\t\t\t${commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Requisite\r\n\t\t\t\t\t${commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing Requisite.\r\n\t *\r\n\t * @async\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to delete.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate async deleteRequisite(\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\r\n\t\tconst selectedItem: any =\r\n\t\t\tcommonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteRequisite: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tcommonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteRequisite(),\r\n\t\t\t\t'Deleting Requisite',\r\n\t\t\t\t'Deleted Requisite',\r\n\t\t\t\t`Requisite ${selectedItem.name}\r\n\t\t\t\t\twas successfully deleted.`,\r\n\t\t\t\t`Requisite ${selectedItem.name}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the order index of the selected row item\r\n\t * up or down based on the indexOperator.\r\n\t *\r\n\t * @async\r\n\t * @param {any} selectedItem\r\n\t * The selected item.\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to alter orders for.\r\n\t * @param {number} indexReference\r\n\t * The index reference to add or substract to the current\r\n\t * selected order index.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate async updateOrderIndex(\r\n\t\tselectedItem: any,\r\n\t\trequisiteType: string,\r\n\t\tindexReference: number): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\t\tcommonTableContext.source.loadingNextDataset = true;\r\n\t\tcommonTableContext.source.selectedItem = selectedItem;\r\n\r\n\t\tconst updateOrderIndex: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst orderedRequisites: any[] =\r\n\t\t\t\t\tcommonTableContext.source.virtualData\r\n\t\t\t\t\t\t.filter((data) => data !== undefined)\r\n\t\t\t\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\t\t\t\titemOne.order - itemTwo.order);\r\n\r\n\t\t\t\tconst neighborOrderIndex: number =\r\n\t\t\t\t\tthis.findSelectedChildIndex(\r\n\t\t\t\t\t\torderedRequisites,\r\n\t\t\t\t\t\tselectedItem)\r\n\t\t\t\t\t\t+ indexReference;\r\n\r\n\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\torderedRequisites[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].id,\r\n\t\t\t\t\t\t\trequisiteTypeId: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex]\r\n\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder: 1000\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\trequisiteTypeId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\torderedRequisites[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].id,\r\n\t\t\t\t\t\t\trequisiteTypeId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder:\r\n\t\t\t\t\t\t\t\tselectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tcommonTableContext.source.virtualData[neighborOrderIndex] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...orderedRequisites[neighborOrderIndex],\r\n\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t};\r\n\t\t\t\tcommonTableContext.source.virtualData[\r\n\t\t\t\t\tneighborOrderIndex - indexReference] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...commonTableContext.source.selectedItem,\r\n\t\t\t\t\t\torder: orderedRequisites[neighborOrderIndex].order\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.sortCommonTableByOrder(commonTableContext);\r\n\t\t\t\tcommonTableContext.source.loadingNextDataset = false;\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOrderIndex(),\r\n\t\t\t\t'Updating Requisite Order',\r\n\t\t\t\t'Updated Requisite Order',\r\n\t\t\t\t'Requisite Order was successfully updated.',\r\n\t\t\t\t'Requisite Order was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the common table context data by order.\r\n\t *\r\n\t * @param {IDynamicComponentContext}\r\n\t * commonTableContext\r\n\t * The common table context to sort by order.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate sortCommonTableByOrder(\r\n\t\tcommonTableContext:\r\n\t\t\tIDynamicComponentContext): void\r\n\t{\r\n\t\tcommonTableContext.source.virtualData\r\n\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\titemOne.order - itemTwo.order);\r\n\t\tcommonTableContext.source.virtualData =\r\n\t\t\t[\r\n\t\t\t\t...commonTableContext.source.virtualData\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the selected child index.\r\n\t *\r\n\t * @param {any[]} children\r\n\t * The children object array.\r\n\t * @param {any} selectedChild\r\n\t * The selected child.\r\n\t * @returns {number}\r\n\t * The child index selected.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate findSelectedChildIndex(\r\n\t\tchildren: any[],\r\n\t\tselectedChild: any): number\r\n\t{\r\n\t\tfor (let index = 0; index < children.length; index++)\r\n\t\t{\r\n\t\t\tif (children[index].id === selectedChild.id\r\n\t\t\t\t&& children[index].requisiteActionDefinitionId\r\n\t\t\t\t\t=== selectedChild.requisiteActionDefinitionId\r\n\t\t\t\t&& children[index].order === selectedChild.order)\r\n\t\t\t{\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a workflow failure action as a dropdown option.\r\n\t *\r\n\t * @param {IWorkflowFailureActions} failureAction\r\n\t * The workflow failure action to be mapped.\r\n\t * @returns {IDropdownOption}\r\n\t * A mapped dropdown option representing the workflow failure action.\r\n\t * @memberof EntityActionDefinitionComponent\r\n\t */\r\n\tprivate mapWorkflowFailureAction(\r\n\t\tfailureAction: IWorkflowFailureActions): IDropdownOption\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tlabel: failureAction.name,\r\n\t\t\t\tvalue: failureAction.id\r\n\t\t\t};\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionRequisitesApiService\r\n} from '@api/services/workflow/workflow-action-requisites.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-entity-actions',\r\n\ttemplateUrl: './entity-actions.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-actions.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system entity actions\r\n * component.\r\n *\r\n * @export\r\n * @class EntityActionsComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EntityActionsComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityActionsComponent.\r\n\t *\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The api service used to get entity version data.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionApiService\r\n\t * The api service used to get the workflow action definitions data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic workflowActionDefinitionApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic workflowActionRequisitesApiService: WorkflowActionRequisitesApiService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout types.\r\n\t *\r\n\t * @type {IEntityLayoutType[]}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic entityLayoutTypes: IEntityLayoutType[];\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic entityDefinitionId: number;\r\n\r\n\t/**\r\n\t * Initializes the component to set the page variables\r\n\t * and setup the table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page variables needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.entityVersion =\r\n\t\t\tawait this.entityVersionApiService\r\n\t\t\t\t.get(this.entityDefinition.versionId);\r\n\r\n\t\tthis.tableFilterQuery = 'EntityTypeId'\r\n\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t+ ' and EntityVersionId'\r\n\t\t\t+ ` eq ${this.entityDefinition.versionId}`;\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table definitions needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.tableDefinitions =\r\n\t\t{\r\n\t\t\ttableTitle: 'Workflow Actions',\r\n\t\t\thideTableTitle: true,\r\n\t\t\texpandTitle: () =>\r\n\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t'Workflow Action'),\r\n\t\t\tobjectSearch: {\r\n\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\torderBy: `Name ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t},\r\n\t\t\tapiPromise:\r\n\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\tthis.workflowActionDefinitionApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t{\r\n\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t},\r\n\t\t\tactions: {\r\n\t\t\t\tcreate: {\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Action Name',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tthis.uniqueName(control),\r\n\t\t\t\t\t\t\t\t\tmessage: 'Existing Action Name.'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: async() => this.createAction()\r\n\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\tupdate: {\r\n\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t'admin/entity/actionDefinition/edit',\r\n\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\t\t\t\trouteData: ObjectHelper\r\n\t\t\t\t\t\t\t\t\t\t\t\t.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tdelete: {\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\tcommand: async() => this.deleteAction(),\r\n\t\t\t\t\t\t}],\r\n\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement(),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * creates a new entity layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tprivate async createAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createEntityAction: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst newAction: IWorkflowActionDefinitions =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityTypeId: this.entityType.id,\r\n\t\t\t\t\t\tentityVersionId: this.entityVersion.id,\r\n\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\tdescription: AppConstants.empty,\r\n\t\t\t\t\t\tfailureActionId: 1,\r\n\t\t\t\t\t\tclassReference: 'WaterStreet.Nautix.Data.Workflow.Actions',\r\n\t\t\t\t\t\tclassDefinition: 'namespace WaterStreet.Nautix.Data.Workflow.Actions\\n'\r\n\t\t\t\t\t\t\t+ '{\\n'\r\n\t\t\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Data.Workflow;\\n'\r\n\t\t\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Public;\\n'\r\n\t\t\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Public.Workflow;\\n\\r'\r\n\t\t\t\t\t\t\t+ '\\tpublic class YourWorkflowAction\\n'\r\n\t\t\t\t\t\t\t+ '\\t\\t: BaseAction\\n'\r\n\t\t\t\t\t\t\t+ '\\t{\\n'\r\n\t\t\t\t\t\t\t+ '\\t\\tpublic override ActionResponse Execute()\\n'\r\n\t\t\t\t\t\t\t+ '\\t\\t{\\n'\r\n\t\t\t\t\t\t\t+ '\\t\\t\\treturn Ok(new object());\\n'\r\n\t\t\t\t\t\t\t+ '\\t\\t}\\n'\r\n\t\t\t\t\t\t\t+ '\\t}\\n'\r\n\t\t\t\t\t\t\t+ '}'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newActionDefinitionId: number =\r\n\t\t\t\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t\t\t\t.create(newAction);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/actionDefinition/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tactionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\tnewActionDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateEntityAction(),\r\n\t\t\t\t'Adding Action',\r\n\t\t\t\t'Added Action',\r\n\t\t\t\t`Action ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was added to Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Action ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was not added to Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst existingRequisites =\r\n\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'ActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${selectedItem.id} `\r\n\t\t\t\t\t\t+ 'Or RequisiteActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (existingRequisites.length > 0)\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = true;\r\n\r\n\t\t\treturn 'Unable to delete Worflow Action Definition'\r\n\t\t\t\t+ ` ${selectedItem.id}`\r\n\t\t\t\t+ ` ${selectedItem.name}`\r\n\t\t\t\t+ ' due to existing requisite relationship'\r\n\t\t\t\t+ ' action definition id'\r\n\t\t\t\t+ ` ${existingRequisites[0].actionDefinitionId}`\r\n\t\t\t\t+ ' and requisite action definition id'\r\n\t\t\t\t+ ` ${existingRequisites[0].requisiteActionDefinitionId}.`;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = false;\r\n\r\n\t\t\treturn 'Confirm you are about to delete Workflow Action Definition'\r\n\t\t\t\t+ ` ${selectedItem.id}`\r\n\t\t\t\t+ ` ${selectedItem.name}.`;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing entity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tprivate async deleteAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteAction: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteAction(),\r\n\t\t\t\t'Deleting Action',\r\n\t\t\t\t'Deleted Action',\r\n\t\t\t\t`Action ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was deleted from Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Action ${selectedItem.layoutTypeName}`\r\n\t\t\t\t\t+ ` was not deleted from Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityActionsComponent\r\n\t */\r\n\tprivate async uniqueName(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingActions: IWorkflowActionDefinitions[] =\r\n\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'entityTypeId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and entityVersionId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.versionId}`\r\n\t\t\t\t\t\t+ ' and name'\r\n\t\t\t\t\t\t+ ` eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingActions.length === 0);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\n\r\n/**\r\n * A constant library used to defined commonly used formly fields.\r\n *\r\n * @export\r\n * @class CommonFormlyFieldConstants\r\n */\r\nexport class CommonFormlyFieldConstants\r\n{\r\n\t/**\r\n\t * Gets the common public field config.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof CommonFormlyFieldConstants\r\n\t */\r\n\tpublic static readonly publicField: FormlyFieldConfig =\r\n\t\t\r\n\t\t{\r\n\t\t\tkey: 'public',\r\n\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\twrappers: [\r\n\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t],\r\n\t\t\tprops: {\r\n\t\t\t\tlabel: 'Public',\r\n\t\t\t\ttooltip: 'If Public is enabled, then that means'\r\n\t\t\t\t\t+ ' the item is public and accessible to'\r\n\t\t\t\t\t+ ' users. If Public is'\r\n\t\t\t\t\t+ ' disabled, then only the Owner\\'s will'\r\n\t\t\t\t\t+ ' be able to interact with this item.',\r\n\t\t\t\tdefault: true\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the common public field config.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof CommonFormlyFieldConstants\r\n\t */\r\n\tpublic static readonly ownershipSecurityGroupField: FormlyFieldConfig =\r\n\t\t\r\n\t\t{\r\n\t\t\tkey: 'ownershipSecurityGroupId',\r\n\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\twrappers: [\r\n\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t],\r\n\t\t\tprops: {\r\n\t\t\t\tlabel: 'Item Owner(s)',\r\n\t\t\t\ttooltip: 'Set Additional Owner\\'s'\r\n\t\t\t\t\t+ ' that will be allowed to edit'\r\n\t\t\t\t\t+ ' the item.',\r\n\t\t\t\tplaceholder: 'Select an ownership group',\r\n\t\t\t\tshowClear: true,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t};\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'app-entity-definitions',\r\n\ttemplateUrl: './entity-definitions.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-definitions.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity definitions\r\n * component.\r\n *\r\n * @export\r\n * @class EntityDefinitionsComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityDefinitionsComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityDefinitionsComponent. This component\r\n\t * will display a filtered list of entities for navigation.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service used to populate get the entity type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity instance service used to populate the entity definition data.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The entity instance service used to populate the entity version data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the first level key properties.\r\n\t *\r\n\t * @type {{key: string, type: string}[]}\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tprivate readonly firstLevelKeyProperties:\r\n\t\t{\r\n\t\t\tkey: string;\r\n\t\t\ttype: string;\r\n\t\t}[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: '$id',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.string\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'title',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.string\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'additionalProperties',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.boolean\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'properties',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.object\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'required',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.object\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'supportedChildTypes',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.object\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'requiresParent',\r\n\t\t\t\t\ttype: AppConstants.propertyTypes.boolean\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t/**\r\n\t * Gets the property level key properties.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tprivate readonly propertyLevelKeyProperties: string[] =\r\n\t\t[\r\n\t\t\t'id',\r\n\t\t\t'data',\r\n\t\t\t'entityType',\r\n\t\t\t'resourceIdentifier',\r\n\t\t\t'versionNumber',\r\n\t\t\t'createDate',\r\n\t\t\t'changeDate',\r\n\t\t\t'changedById'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Sets the Formly Definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tpublic async setFormlyDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setContextData();\r\n\t\tthis.updateLastSavedData();\r\n\t\tawait this.setLayoutFields();\r\n\r\n\t\tthis.loadingDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the updated entity data.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst entityDefinitionDataObject: IEntityDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.entityDefinition.id,\r\n\t\t\t\ttypeId: this.entityDefinition.typeId,\r\n\t\t\t\tversionId: this.entityDefinition.versionId,\r\n\t\t\t\tjsonData: this.contextData.data.definition,\r\n\t\t\t\tcreateDate: this.entityDefinition.createDate,\r\n\t\t\t\tstartDate: this.entityDefinition.startDate,\r\n\t\t\t\tendDate: this.entityDefinition.endDate\r\n\t\t\t};\r\n\r\n\t\tconst entityVersionDataObject: IEntityVersion =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.entityVersion.id,\r\n\t\t\t\ttypeId: this.entityVersion.typeId,\r\n\t\t\t\tnumber: this.entityVersion.number,\r\n\t\t\t\tdescription: this.entityVersion.description,\r\n\t\t\t\tstartDate: this.contextData.data.startDate,\r\n\t\t\t\tendDate: this.contextData.data.endDate,\r\n\t\t\t\tenabled: this.contextData.data.enabled,\r\n\t\t\t\tpublic: this.contextData.data.versionData.public,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tthis.contextData.data.versionData.ownershipSecurityGroupId,\r\n\t\t\t\tcreatedById: this.entityVersion.createdById\r\n\t\t\t};\r\n\r\n\t\tconst entityTypeDataObject: IEntityType =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.entityType.id,\r\n\t\t\t\tname: this.entityType.name,\r\n\t\t\t\tgroup: this.entityType.group,\r\n\t\t\t\tpublic: this.contextData.data.public,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tthis.contextData.data.ownershipSecurityGroupId,\r\n\t\t\t\tcreatedById: this.entityType.createdById\r\n\t\t\t};\r\n\r\n\t\tawait this.entityDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.entityDefinition.id,\r\n\t\t\t\tentityDefinitionDataObject);\r\n\r\n\t\tawait this.entityVersionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.entityVersion.id,\r\n\t\t\t\tentityVersionDataObject);\r\n\r\n\t\tawait this.entityTypeApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.entityType.id,\r\n\t\t\t\tentityTypeDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityVersion =\r\n\t\t\tawait this.entityVersionApiService.\r\n\t\t\t\tget(this.entityDefinition.versionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService.\r\n\t\t\t\tget(this.entityDefinition.typeId);\r\n\r\n\t\tthis.contextData =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tname: this.entityType.name,\r\n\t\t\t\t\tgroup: this.entityType.group,\r\n\t\t\t\t\tversion: this.entityVersion.number,\r\n\t\t\t\t\tenabled: this.entityVersion.enabled,\r\n\t\t\t\t\tstartDate: this.entityVersion.startDate,\r\n\t\t\t\t\tendDate: this.entityVersion.endDate,\r\n\t\t\t\t\tdefinition: this.entityDefinition.jsonData,\r\n\t\t\t\t\tpublic: this.entityType.public,\r\n\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\tthis.entityType.ownershipSecurityGroupId,\r\n\t\t\t\t\tversionData: {\r\n\t\t\t\t\t\tpublic: this.entityVersion.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tthis.entityVersion.ownershipSecurityGroupId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.saveTitle = 'Entity Definition';\r\n\t\tthis.saveContent = `Entity Definition ${this.contextData.data.name}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.group',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Group',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.version',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Version',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.enabled',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: false\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\tkey: 'data.versionData.public',\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\tlabel: 'Version '\r\n\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\tkey: 'data.versionData.ownershipSecurityGroupId',\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tlabel: 'Version '\r\n\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.startDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Start Date',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tchange: (field: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\tfield.formControl.parent.controls.endDate\r\n\t\t\t\t\t\t\t\t\t\t.updateValueAndValidity(),\r\n\t\t\t\t\t\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.endDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'End Date'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidEndDate: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.validEndDate(\r\n\t\t\t\t\t\t\t\t\tcontrol)),\r\n\t\t\t\t\t\t\tmessage: 'Can not be equal or less than Start Date.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.definition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.large,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.definitionValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the definition is a correct input.\r\n\t * This will check first, second and third level\r\n\t * properties required are existing, the input is a valid\r\n\t * JSON object and each property required is the expected type.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic definitionValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tlet jsonDefinition: any;\r\n\r\n\t\t// Checks if the input is a valid JSON object.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tjsonDefinition = JSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Not a valid JSON object.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Checks that this has all the first level required keys.\r\n\t\tfor (const firstLevelProperty of this.firstLevelKeyProperties)\r\n\t\t{\r\n\t\t\tlet isExistingKey: boolean = false;\r\n\r\n\t\t\tfor (const definition of Object.keys(jsonDefinition))\r\n\t\t\t{\r\n\t\t\t\tif (firstLevelProperty.key === definition)\r\n\t\t\t\t{\r\n\t\t\t\t\tisExistingKey = true;\r\n\r\n\t\t\t\t\tif (typeof jsonDefinition[definition]\r\n\t\t\t\t\t\t!== firstLevelProperty.type)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t\t`Property '${definition}'`\r\n\t\t\t\t\t\t\t\t+ ' is not a valid'\r\n\t\t\t\t\t\t\t\t+ ` ${firstLevelProperty.type}`\r\n\t\t\t\t\t\t\t\t+ ' format.';\r\n\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (isExistingKey === false)\r\n\t\t\t{\r\n\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t'The first level key property'\r\n\t\t\t\t\t\t+ ` '${firstLevelProperty.key}' `\r\n\t\t\t\t\t\t+ 'is missing.';\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Checks that this has all property level required keys.\r\n\t\tfor (const propertyLevelKey of this.propertyLevelKeyProperties)\r\n\t\t{\r\n\t\t\tlet isExistingKey: boolean = false;\r\n\t\t\tfor (const property of Object.keys(jsonDefinition.properties))\r\n\t\t\t{\r\n\t\t\t\tif (propertyLevelKey === property)\r\n\t\t\t\t{\r\n\t\t\t\t\tisExistingKey = true;\r\n\r\n\t\t\t\t\tif (typeof jsonDefinition.properties[property]\r\n\t\t\t\t\t\t!== AppConstants.propertyTypes.object)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t\t`Property '${property}'`\r\n\t\t\t\t\t\t\t\t+ ' is not a valid'\r\n\t\t\t\t\t\t\t\t+ ` ${AppConstants.propertyTypes.object} `\r\n\t\t\t\t\t\t\t\t+ 'format.';\r\n\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (isExistingKey === false)\r\n\t\t\t{\r\n\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t'The property level key property'\r\n\t\t\t\t\t\t+ ` '${propertyLevelKey}' `\r\n\t\t\t\t\t\t+ 'is missing.';\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Checks that each definition.property has the type key as required.\r\n\t\tfor (const property of Object.keys(jsonDefinition.properties))\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\t\tjsonDefinition.properties[property].type))\r\n\t\t\t{\r\n\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t`${property} is missing the property 'Type'.`;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof jsonDefinition.properties[property].type\r\n\t\t\t\t!== AppConstants.propertyTypes.string)\r\n\t\t\t{\r\n\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t`${property}.type must be a valid string format`;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the end date is greater than start date.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityDefinitionsComponent\r\n\t */\r\n\tpublic validEndDate(\r\n\t\tcontrol: UntypedFormControl): boolean\r\n\t{\r\n\t\treturn AnyHelper.isNull(control.value)\r\n\t\t\t|| DateTime.fromISO(this.contextData.data.startDate)\r\n\t\t\t\t< DateTime.fromISO(control.value);\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n\tOnDestroy,\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSubscription\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-entity-layout-definition',\r\n\ttemplateUrl: './entity-layout-definition.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-layout-definition.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity layout definitions\r\n * component.\r\n *\r\n * @export\r\n * @class EntityLayoutDefinitionComponent\r\n * @extends {EntityManagerDirective}\r\n * @implements {OnDestroy}\r\n */\r\nexport class EntityLayoutDefinitionComponent\r\n\textends EntityManagerDirective\r\n\timplements OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityLayoutDefinitionComponent.\r\n\t *\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The api service used to get the entity layout data.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The api service used to get the entity layout type data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity instance service used to populate the entity version data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout data.\r\n\t *\r\n\t * @type {IEntityLayout}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic entityLayout: IEntityLayout;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout type data.\r\n\t *\r\n\t * @type {IEntityLayoutType}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic entityLayoutType: IEntityLayoutType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic layoutId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets the layout id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tprivate readonly layoutIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.layoutId;\r\n\r\n\t/**\r\n\t * Gets the set of custom controls that do not require a key value.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tprivate readonly nonDataBasedControls: string[] =\r\n\t\t[\r\n\t\t\tFormlyConstants.customControls.customMessage,\r\n\t\t\tFormlyConstants.customControls.customSectionTitle,\r\n\t\t\tFormlyConstants.customControls.customDashboard,\r\n\t\t\tFormlyConstants.customControls.customTableDisplay,\r\n\t\t\tFormlyConstants.customControls.customSummaryCard\r\n\t\t];\r\n\r\n\t/**\r\n\t * Saves the updated entity data.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst entityLayoutDataObject: IEntityLayout =\r\n\t\t\t{\r\n\t\t\t\tid: this.entityLayout.id,\r\n\t\t\t\tlayoutTypeId: this.entityLayout.layoutTypeId,\r\n\t\t\t\ttypeId: this.entityLayout.typeId,\r\n\t\t\t\tversionId: this.entityLayout.versionId,\r\n\t\t\t\tjsonData: this.contextData.data.definition,\r\n\t\t\t\tcreateDate: this.entityLayout.createDate,\r\n\t\t\t\tstartDate: this.entityLayout.startDate,\r\n\t\t\t\tendDate: this.entityLayout.endDate\r\n\t\t\t};\r\n\r\n\t\tawait this.entityLayoutApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.entityLayout.id,\r\n\t\t\t\tentityLayoutDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe(\r\n\t\t\t\t(parameters: Params) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\t\tthis.layoutId =\r\n\t\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\tmappedRouteData[this.layoutIdQueryParameter])\r\n\t\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t\t: mappedRouteData[this.layoutIdQueryParameter];\r\n\t\t\t\t}));\r\n\r\n\t\tthis.entityLayout =\r\n\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t.get(this.layoutId);\r\n\r\n\t\tthis.entityLayoutType =\r\n\t\t\tawait this.entityLayoutTypeApiService\r\n\t\t\t\t.get(this.entityLayout.layoutTypeId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityLayout.typeId);\r\n\r\n\t\tthis.contextData = {\r\n\t\t\tdata: {\r\n\t\t\t\tid: this.entityLayout.id,\r\n\t\t\t\tdefinition: this.entityLayout.jsonData\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.saveTitle = 'Layout Definition';\r\n\t\tthis.saveContent = `Layout ${this.entityLayoutType.name} Definition`;\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to remove any subscriptions.\r\n\t *\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.subscriptions.unsubscribe();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic setLayoutFields(): void\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.definition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.fullSize,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.definitionValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the definition is a correct input.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tpublic definitionValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tlet jsonValue: FormlyFieldConfig[];\r\n\r\n\t\t// Checks if entry is an object type.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tjsonValue = JSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Not a valid Layout Object.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Checks if entry is an array of layout objects.\r\n\t\tif (AnyHelper.isNullOrEmpty(jsonValue[0]))\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Must be an array of layout objects.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Checks if required properties are entered and the correct format\r\n\t\t// type.\r\n\t\tfor (let index = 0; index < jsonValue.length ; index++)\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNullOrEmpty(jsonValue[index].type))\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrEmpty(jsonValue[index].wrappers)\r\n\t\t\t\t\t|| jsonValue[index].wrappers[0] !== 'custom-tab-content')\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t`'Type' is required at position ${[index]}`;\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tjsonValue[index].props))\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t'\\'Template Options\\' are required at position '\r\n\t\t\t\t\t\t\t+ `${index}`;\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (typeof jsonValue[index].props !==\r\n\t\t\t\t\t\tAppConstants.propertyTypes.object)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t\t'\\'Template Options\\' must be format '\r\n\t\t\t\t\t\t\t\t+ AppConstants.propertyTypes.object\r\n\t\t\t\t\t\t\t\t+ ` at position ${index}`;\r\n\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.nonDataBasedControls.includes(\r\n\t\t\t\t\tjsonValue[index].type.toString()))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNullOrEmpty(jsonValue[index].key))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t\t`'Key' is required at position ${index}`;\r\n\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (typeof jsonValue[index].key !==\r\n\t\t\t\t\t\tAppConstants.propertyTypes.string)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t\t\t\t'\\'Key\\' must be format '\r\n\t\t\t\t\t\t\t\t+ AppConstants.propertyTypes.string\r\n\t\t\t\t\t\t\t\t+ ` at position ${index}`;\r\n\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityLayout\r\n} from '@shared/interfaces/entities/entity-layout.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-layouts',\r\n\ttemplateUrl: './entity-layouts.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-layouts.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system entity layouts\r\n * component.\r\n *\r\n * @export\r\n * @class EntityLayoutsComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EntityLayoutsComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityLayoutsComponent.\r\n\t *\r\n\t * @param {EntityLayoutApiService} entityLayoutApiService\r\n\t * The api service used to get the entity layout data.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The api service used to get the entity layout type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity instance service used to populate the entity definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The entity instance service used to populate the entity version data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityLayoutApiService: EntityLayoutApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout types.\r\n\t *\r\n\t * @type {IEntityLayoutType[]}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic entityLayoutTypes: IEntityLayoutType[];\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the layout type name\r\n\t * dropdown options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic layoutTypeNameOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic entityDefinitionId: number;\r\n\r\n\t/**\r\n\t * Initializes the component to set the page variables\r\n\t * and setup the table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page variables needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.entityVersion =\r\n\t\t\tawait this.entityVersionApiService\r\n\t\t\t\t.get(this.entityDefinition.versionId);\r\n\r\n\t\tthis.tableFilterQuery =\r\n\t\t\t`${AppConstants.commonProperties.typeId}`\r\n\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t+ ` and ${AppConstants.commonProperties.versionId}`\r\n\t\t\t\t+ ` eq ${this.entityDefinition.versionId}`;\r\n\r\n\t\tthis.entityLayoutTypes =\r\n\t\t\tawait this.entityLayoutTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'layoutTypeName',\r\n\t\t\t\t\tcolumnHeader: 'Layout Type',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table definitions needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Entity Layouts',\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Entity Layout'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst dataPromise: object[] = [];\r\n\r\n\t\t\t\t\t\tconst entityLayout: IEntityLayout[] =\r\n\t\t\t\t\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tfor (const layout of entityLayout)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataPromise.push(\r\n\t\t\t\t\t\t\t\tthis.decorateViewModel(layout));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn dataPromise.sort((\r\n\t\t\t\t\t\t\tlayoutTypeOne: IDropdownOption,\r\n\t\t\t\t\t\t\tlayoutTypeTwo: IDropdownOption) =>\r\n\t\t\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\t\t\tlayoutTypeOne,\r\n\t\t\t\t\t\t\t\tlayoutTypeTwo,\r\n\t\t\t\t\t\t\t\t'layoutTypeName'));\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\t(model: any) =>\r\n\t\t\t\t\t\tthis.decorateViewModel(model),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'layoutTypeId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Layout Type',\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder: AppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\toptions: this.entityLayoutTypes\r\n\t\t\t\t\t\t\t\t\t\t?.map((type:\r\n\t\t\t\t\t\t\t\t\t\t\tIEntityType) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: type.name,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: type.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t.sort((\r\n\t\t\t\t\t\t\t\t\t\t\toptionOne: IDropdownOption,\r\n\t\t\t\t\t\t\t\t\t\t\toptionTwo: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\toptionOne,\r\n\t\t\t\t\t\t\t\t\t\t\t\toptionTwo,\r\n\t\t\t\t\t\t\t\t\t\t\t\t'label')),\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueLayoutType: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueLayoutType(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Layout Type Name.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createLayout()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst layoutId: string =\r\n\t\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t.selectedItem.id;\r\n\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/'\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'layoutDefinition/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tObjectHelper\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayoutId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayoutId\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() => this.deleteLayout(),\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.deleteStatement(),\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @param {IEntityLayout} model\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {any}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic decorateViewModel(\r\n\t\tmodel: IEntityLayout): any\r\n\t{\r\n\t\tconst layoutType: IEntityLayoutType =\r\n\t\t\tthis.entityLayoutTypes.find(\r\n\t\t\t\t(type: IEntityLayoutType) =>\r\n\t\t\t\t\ttype.id === model.layoutTypeId);\r\n\r\n\t\tconst viewModel: any =\r\n\t\t\t{\r\n\t\t\t\tid: model.id,\r\n\t\t\t\tlayoutTypeName:\r\n\t\t\t\t\tlayoutType.name,\r\n\t\t\t\tlayoutTypeId:\r\n\t\t\t\t\tlayoutType.id\r\n\t\t\t};\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n\r\n\t/**\r\n\t * creates a new entity layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate async createLayout(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createLayoutAction:\r\n\t\t\tFunction = async() =>\r\n\t\t\t{\r\n\t\t\t\tconst newEntityLayout: IEntityLayout =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttypeId: this.entityType.id,\r\n\t\t\t\t\t\tlayoutTypeId: selectedItem.layoutTypeId,\r\n\t\t\t\t\t\tversionId: this.entityVersion.id,\r\n\t\t\t\t\t\tjsonData: AppConstants.emptyArray\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newEntityLayoutId: number =\r\n\t\t\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t\t\t.create(newEntityLayout);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/layoutDefinition/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlayoutId:\r\n\t\t\t\t\t\t\t\t\t\t\t\tnewEntityLayoutId\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateLayoutAction(),\r\n\t\t\t\t'Creating Layout',\r\n\t\t\t\t'Created Layout',\r\n\t\t\t\t`Layout Type Id ${selectedItem.layoutTypeId}`\r\n\t\t\t\t\t+ ' was added.',\r\n\t\t\t\t`Layout Type Id ${selectedItem.layoutTypeId}`\r\n\t\t\t\t\t+ ' was not added.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the common table delete statement.\r\n\t *\r\n\t * @async\r\n\t * @returns {string}\r\n\t * The delete statement\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate deleteStatement(): string\r\n\t{\r\n\t\treturn 'Confirm to delete Layout Type'\r\n\t\t\t+ ` ${this.commonTableContext.source.selectedItem.layoutTypeName}`\r\n\t\t\t+ ` for ${this.entityType.name}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing entity layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate async deleteLayout(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteFunction: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteFunction(),\r\n\t\t\t\t'Deleting Layout',\r\n\t\t\t\t'Deleted Layout',\r\n\t\t\t\t`Layout Type ${selectedItem.layoutTypeName}`\r\n\t\t\t\t\t+ ' was deleted.',\r\n\t\t\t\t`Layout Type ${selectedItem.layoutTypeName}`\r\n\t\t\t\t\t+ ' was not deleted.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the layout type is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate async uniqueLayoutType(\r\n\t\tcontrol: UntypedFormControl):\r\n\t\tPromise\r\n\t{\r\n\t\tconst existingLayout: IEntityLayout[] =\r\n\t\t\tawait this.entityLayoutApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`${AppConstants.commonProperties.typeId}`\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ` and ${AppConstants.commonProperties.versionId}`\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.versionId}`\r\n\t\t\t\t\t\t+ ` and ${AppConstants.commonProperties.layoutTypeId}`\r\n\t\t\t\t\t\t+ ` eq ${control.value}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingLayout.length === 0);\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-entity-overview',\r\n\ttemplateUrl: './entity-overview.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a entity overview\r\n * component.\r\n *\r\n * @export\r\n * @class EntityOverviewComponent\r\n */\r\nexport class EntityOverviewComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityOverviewComponent.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type service used to populate get the entity type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity instance service used to populate the entity definition data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityOverviewComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityOverviewComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService.\r\n\t\t\t\tget(this.entityDefinition.typeId);\r\n\r\n\t\tthis.saving = false;\r\n\t\tthis.formValuesChanged = false;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRuleValidatorDefinitionDto\r\n} from '@api/interfaces/rules/rule-validator-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule validator\r\n * definition controller.\r\n *\r\n * @export\r\n * @class RuleValidatorDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RuleValidatorDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RuleValidatorDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RuleValidatorDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.ruleValidatorDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIRuleValidationDefinitionDto\r\n} from '@api/interfaces/rules/rule-validation-definition.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the rule validation\r\n * definition controller.\r\n *\r\n * @export\r\n * @class RuleValidationDefinitionApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class RuleValidationDefinitionApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a RuleValidationDefinitionApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof RuleValidationDefinitionApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.ruleValidationDefinitions;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tDeactivateGuardComponent\r\n} from '@shared/interfaces/guards/deactivate-guard-component.interface';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class containing logic for whether a component can deactivate based\r\n * on the can deactivate implementation in the component.\r\n *\r\n * @export\r\n * @class AppCanDeactivateGuard\r\n * @implements {CanDeactivate}\r\n */\r\n@Injectable()\r\nexport class AppCanDeactivateGuard\r\n{\r\n\t/**\r\n\t * Fires an alert if the can deactivate implementation in the component\r\n\t * returns false. Otherwise this will allow a page change without showing\r\n\t * an alert to the user. The implementing component will define if\r\n\t * deactivation is allowed.\r\n\t *\r\n\t * @memberof AppCanDeactivateGuard\r\n\t */\r\n\tpublic canDeactivate(\r\n\t\tcomponent: DeactivateGuardComponent): boolean | Observable\r\n\t{\r\n\t\treturn component.canDeactivate()\r\n\t\t\t? true\r\n\t\t\t: confirm('You have unsaved changes. '\r\n\t\t\t\t+ 'Press Cancel to go back and complete these changes '\r\n\t\t\t\t+ 'or OK to discard these changes.');\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRulePresentationDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-definition.api.service';\r\nimport {\r\n\tRulePresentationLogicDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-logic-definition.api.service';\r\nimport {\r\n\tRuleValidationDefinitionApiService\r\n} from '@api/services/rules/rule-validation-definition.api.service';\r\nimport {\r\n\tRuleValidatorDefinitionApiService\r\n} from '@api/services/rules/rule-validator-definition.api.service';\r\nimport {\r\n\tRuleViolationWorkflowActionDefinitionApiService\r\n} from '@api/services/rules/rule-violation-workflow-action-definition.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\nimport {\r\n\tIRulePresentationDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-definition.interface';\r\nimport {\r\n\tIRulePresentationLogicDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-logic-definition.interface';\r\nimport {\r\n\tIRuleValidationDefinition\r\n} from '@shared/interfaces/rules/rule-validation-definition.interface';\r\nimport {\r\n\tIRuleValidatorDefinition\r\n} from '@shared/interfaces/rules/rule-validator-definition.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRulePresentationService\r\n} from '@shared/services/rule-presentation.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-rule-definition',\r\n\ttemplateUrl: './entity-rule-definition.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-rule-definition.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity rule definition\r\n * component.\r\n *\r\n * @export\r\n * @class EntityRuleDefinitionComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityRuleDefinitionComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityRuleDefinitionComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {RuleDefinitionApiService} ruleDefinitionApiService\r\n\t * The api service used to get the rule definition data.\r\n\t * @param {RuleViolationWorkflowActionDefinitionApiService}\r\n\t * ruleViolationWorkflowActionDefinitionApiService\r\n\t * The api service used to get the rule violation workflow\r\n\t * action definition data.\r\n\t * @param {RuleValidatorDefinitionApiService}\r\n\t * \truleValidatorDefinitionApiService\r\n\t * The api service used to get the rule validator definition data.\r\n\t * @param {RuleValidationDefinitionApiService}\r\n\t * ruleValidationDefinitionApiService\r\n\t * The api service used to get the rule validation definition data.\r\n\t * @param {RulePresentationLogicDefinitionApiService}\r\n\t * rulePresentationLogicDefinitionApiService\r\n\t * The api service used to get the rule presentation logic definition data.\r\n\t * @param {RulePresentationDefinitionApiService}\r\n\t * rulePresentationDefinitionApiService\r\n\t * The api service used to get the rule presentation definition data.\r\n\t * @param {RulePresentationService} rulePresentationService\r\n\t * The service used to get the rule presentation data.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionApiService\r\n\t * The service used to get the workflow action definition data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {Router} router\r\n\t * The router service that opens new components.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and\r\n\t * client messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic ruleDefinitionApiService: RuleDefinitionApiService,\r\n\t\tpublic ruleViolationWorkflowActionDefinitionApiService:\r\n\t\t\tRuleViolationWorkflowActionDefinitionApiService,\r\n\t\tpublic ruleValidatorDefinitionApiService:\r\n\t\t\tRuleValidatorDefinitionApiService,\r\n\t\tpublic ruleValidationDefinitionApiService:\r\n\t\t\tRuleValidationDefinitionApiService,\r\n\t\tpublic rulePresentationLogicDefinitionApiService:\r\n\t\t\tRulePresentationLogicDefinitionApiService,\r\n\t\tpublic rulePresentationDefinitionApiService:\r\n\t\t\tRulePresentationDefinitionApiService,\r\n\t\tpublic rulePresentationService: RulePresentationService,\r\n\t\tpublic workflowActionDefinitionApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic ruleDefinitionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IRuleDefinition}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the workflow table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic workflowTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic workflowAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic workflowSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the server validations table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic serverValidationsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic serverAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic serverSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the server validations common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic serverValidationsCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the presentation logic table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic presentationLogicTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic presentationLogicAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic presentationLogicSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the presentation logic common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic presentationLogicCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the rule validator definitions.\r\n\t *\r\n\t * @type {IRuleValidatorDefinition[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic ruleValidatorDefinitions: IRuleValidatorDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action definitions.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic workflowActionDefinitions: IWorkflowActionDefinitions[];\r\n\r\n\t/**\r\n\t * Gets or sets the rule presentation logic definition.\r\n\t *\r\n\t * @type {IRulePresentationLogicDefinition[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic rulePresentationLogicDefinition: IRulePresentationLogicDefinition[];\r\n\r\n\t/**\r\n\t * Gets or sets the workflow action definition options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic workflowActionDefinitionOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the rule validator definition options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic ruleValidatorDefinitionOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the rule presentation logic definition options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic presentationLogicDefinitionOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets the rule definition id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate readonly ruleDefinitionIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.ruleDefinitionId;\r\n\r\n\t/**\r\n\t * Gets the presentation friendly string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate readonly presentationLogic: string = 'Presentation Logic';\r\n\r\n\t/**\r\n\t * Handles the before unload event sent from the current window based\r\n\t * on any action that will change the page.\r\n\t *\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t * @returns {Observable | boolean}\r\n\t * The value that will allow the router to know if the data in this form\r\n\t * is altered or not saved to the database. This implements the\r\n\t * AppCanDeactivateGuard interface.\r\n\t */\r\n\tpublic canDeactivate(): Observable | boolean\r\n\t{\r\n\t\treturn !this.formValuesChanged;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.ruleDefinitionId =\r\n\t\t\t\t\t\tmappedRouteData[this.ruleDefinitionIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.ruleDefinition =\r\n\t\t\t\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.get(this.ruleDefinitionId);\r\n\r\n\t\tthis.ruleValidatorDefinitions =\r\n\t\t\tawait this.ruleValidatorDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.rulePresentationLogicDefinition =\r\n\t\t\tawait this.rulePresentationLogicDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.workflowActionDefinitions =\r\n\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`entityTypeId eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and entityVersionId eq '\r\n\t\t\t\t\t\t+ `${this.entityDefinition.versionId}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.workflowActionDefinitionOptions =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`entityTypeId eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t\t+ ' and entityVersionId eq '\r\n\t\t\t\t\t\t\t+ `${this.entityDefinition.versionId}`,\r\n\t\t\t\t\t\tAppConstants.empty),\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.ruleValidatorDefinitionOptions =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tawait this.ruleValidatorDefinitionApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tAppConstants.empty),\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.presentationLogicDefinitionOptions =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tawait this.rulePresentationLogicDefinitionApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tAppConstants.empty),\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.contextData =\r\n\t\t\t{\r\n\t\t\t\tid: this.ruleDefinition.id,\r\n\t\t\t\tname: this.ruleDefinition.name,\r\n\t\t\t\tdisplayName: this.ruleDefinition.displayName,\r\n\t\t\t\tentityVersionId: this.ruleDefinition.entityVersionId,\r\n\t\t\t\tentityTypeId: this.ruleDefinition.entityVersionId,\r\n\t\t\t\toverridable: this.ruleDefinition.overridable,\r\n\t\t\t\tdescription: this.ruleDefinition.description,\r\n\t\t\t\torder: this.ruleDefinition.order\r\n\t\t\t};\r\n\r\n\t\tthis.saveTitle = 'Rule Definition';\r\n\t\tthis.saveContent = 'Rule Definition'\r\n\t\t\t+ ` ${this.ruleDefinition.name}`;\r\n\r\n\t\tthis.workflowAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'actionType',\r\n\t\t\t\t\tcolumnHeader: 'Action Type',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'actionDefinitionName',\r\n\t\t\t\t\tcolumnHeader: 'Action Definition Name',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.workflowSelectedColumns =\r\n\t\t\tthis.workflowAvailableColumns;\r\n\r\n\t\tthis.serverAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'validationName',\r\n\t\t\t\t\tcolumnHeader: 'Validation Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'validationVersion',\r\n\t\t\t\t\tcolumnHeader: 'Validation Version',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.serverSelectedColumns =\r\n\t\t\tthis.serverAvailableColumns;\r\n\r\n\t\tthis.presentationLogicAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'presentationName',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'eventType',\r\n\t\t\t\t\tcolumnHeader: 'Event Type',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.presentationLogicSelectedColumns =\r\n\t\t\tthis.presentationLogicAvailableColumns;\r\n\r\n\t\tawait this.setTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueRuleName(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing Rule Name.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'displayName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Display Name',\r\n\t\t\t\t\t\tplaceholder: 'PlaceHolder for Display Name',\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmultipleOf: 10\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueOrder(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.standard\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Workflow'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTableDisplay,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tloadingTableDefinitions: false,\r\n\t\t\t\t\t\ttableDefinitions: this.workflowTableDefinitions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Server Validations'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTableDisplay,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttableDefinitions: this.serverValidationsTableDefinitions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSectionTitle,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: this.presentationLogic\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTableDisplay,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttableDefinitions: this.presentationLogicTableDefinitions\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Excecutes the save action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst ruleDefinitionDataObject: IRuleDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.ruleDefinition.id,\r\n\t\t\t\tname: this.contextData.name,\r\n\t\t\t\tdisplayName: this.contextData.displayName,\r\n\t\t\t\tentityVersionId: this.ruleDefinition.entityVersionId,\r\n\t\t\t\tentityTypeId: this.ruleDefinition.entityTypeId,\r\n\t\t\t\toverridable: this.ruleDefinition.overridable,\r\n\t\t\t\tdescription: this.contextData.description,\r\n\t\t\t\torder: this.contextData.order\r\n\t\t\t};\r\n\r\n\t\tawait this.ruleDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.ruleDefinition.id,\r\n\t\t\t\truleDefinitionDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setTableDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setWorkflowTableDefinitions();\r\n\t\tawait this.setServerValidationsTableDefinitions();\r\n\t\tawait this.setPresentationLogicTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the workflow table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setWorkflowTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.workflowTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Rule Workflows',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Rule Workflow'),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: `DefinitionId eq ${this.ruleDefinition.id}`,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst ruleViolationWorkflowActions:\r\n\t\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst ruleViolations: any[] = [];\r\n\r\n\t\t\t\t\t\tfor (const violationWorkflowAction of\r\n\t\t\t\t\t\t\truleViolationWorkflowActions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet actionDefinitionName: string =\r\n\t\t\t\t\t\t\t\tAppConstants.empty;\r\n\t\t\t\t\t\t\tlet actionDefinitionId: number = null;\r\n\r\n\t\t\t\t\t\t\tfor (const workflowActionDefinition\r\n\t\t\t\t\t\t\t\tof this.workflowActionDefinitions)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (violationWorkflowAction\r\n\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t=== workflowActionDefinition.id)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tactionDefinitionName =\r\n\t\t\t\t\t\t\t\t\t\tworkflowActionDefinition.name;\r\n\r\n\t\t\t\t\t\t\t\t\tactionDefinitionId =\r\n\t\t\t\t\t\t\t\t\t\tworkflowActionDefinition.id;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tlet actionType: string = AppConstants.empty;\r\n\t\t\t\t\t\t\tif (violationWorkflowAction.actionTypeId ===\r\n\t\t\t\t\t\t\t\tAppConstants.ruleActionTypes.blocked)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tactionType =\r\n\t\t\t\t\t\t\t\t\tAppConstants.ruleActionTypeNames.blocked;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse if (violationWorkflowAction.actionTypeId ===\r\n\t\t\t\t\t\t\t\tAppConstants.ruleActionTypes.continue)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tactionType =\r\n\t\t\t\t\t\t\t\t\tAppConstants.ruleActionTypeNames.continue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\truleViolations.push(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tid: violationWorkflowAction.id,\r\n\t\t\t\t\t\t\t\t\tactionType: actionType,\r\n\t\t\t\t\t\t\t\t\tactionDefinitionName: actionDefinitionName,\r\n\t\t\t\t\t\t\t\t\tactionDefinitionId: actionDefinitionId\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn ruleViolations;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.workflowAvailableColumns,\r\n\t\t\t\tselectedColumns: this.workflowSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'actionDefinitionId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\t\t\tthis.workflowActionDefinitionOptions\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueWorkflowName(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Existing Action Definition Name.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\tthis.createViolationWorkflow()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst canDeactivate:\r\n\t\t\t\t\t\t\t\t\t\tboolean | Observable =\r\n\t\t\t\t\t\t\t\t\t\tthis.appCanDeactivateGuard\r\n\t\t\t\t\t\t\t\t\t\t\t.canDeactivate(this);\r\n\r\n\t\t\t\t\t\t\t\t\tif (canDeactivate === false)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst routeData: string =\r\n\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\truleWorkflowDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/ruleWorkflow/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData: routeData\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t\t'Confirm to Remove Rule Violation Workflow '\r\n\t\t\t\t\t\t\t\t+ this.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.actionDefinitionName,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async () =>\r\n\t\t\t\t\t\t\t\t\tthis.deleteViolationWorkflow()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the server validations table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setServerValidationsTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.serverValidationsTableDefinitions =\r\n\t\t{\r\n\t\t\ttableTitle: 'Server Validations',\r\n\t\t\texpandTitle: () =>\r\n\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\tthis.serverValidationsCommonTableContext,\r\n\t\t\t\t\t'Server Validation'),\r\n\t\t\thideTableTitle: true,\r\n\t\t\thideSettings: true,\r\n\t\t\tnestedTable: true,\r\n\t\t\tobjectSearch: {\r\n\t\t\t\tfilter: `DefinitionId eq ${this.ruleDefinition.id}`,\r\n\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\tvirtualPageSize: 5\r\n\t\t\t},\r\n\t\t\tapiPromise:\r\n\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst ruleValidationDefinitions:\r\n\t\t\t\t\t\t\tIRuleValidationDefinition[] =\r\n\t\t\t\t\t\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\tconst ruleValidations: any[] = [];\r\n\r\n\t\t\t\t\tfor (const ruleValidation of ruleValidationDefinitions)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet validationName: string = AppConstants.empty;\r\n\t\t\t\t\t\tlet validationVersion: number = null;\r\n\r\n\t\t\t\t\t\tfor (const ruleValidator of\r\n\t\t\t\t\t\t\tthis.ruleValidatorDefinitions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (ruleValidation.validatorDefinitionId ===\r\n\t\t\t\t\t\t\t\truleValidator.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalidationName =\r\n\t\t\t\t\t\t\t\t\truleValidator.name;\r\n\t\t\t\t\t\t\t\tvalidationVersion =\r\n\t\t\t\t\t\t\t\t\truleValidator.versionNumber;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\truleValidations.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: ruleValidation.id,\r\n\t\t\t\t\t\t\t\tvalidatorDefinitionId:\r\n\t\t\t\t\t\t\t\t\truleValidation.validatorDefinitionId,\r\n\t\t\t\t\t\t\t\tvalidationName: validationName,\r\n\t\t\t\t\t\t\t\tvalidationVersion: validationVersion\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ruleValidations;\r\n\t\t\t\t},\r\n\t\t\tavailableColumns: this.serverAvailableColumns,\r\n\t\t\tselectedColumns: this.serverSelectedColumns,\r\n\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t{\r\n\t\t\t\tthis.serverValidationsCommonTableContext = commonTableContext;\r\n\t\t\t},\r\n\t\t\tactions: {\r\n\t\t\t\tcreate: {\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'validatorDefinitionId',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\tAppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\toptions: this.ruleValidatorDefinitionOptions\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tthis.uniqueValidatorDefinitionName(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t'Can not add multiple validation '\r\n\t\t\t\t\t\t\t\t\t\t+ 'Definitions.'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\tthis.createServerValidations()\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\tupdate: {\r\n\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst canDeactivate:\r\n\t\t\t\t\t\t\t\t\t\tboolean | Observable =\r\n\t\t\t\t\t\t\t\t\t\tthis.appCanDeactivateGuard\r\n\t\t\t\t\t\t\t\t\t\t\t.canDeactivate(this);\r\n\r\n\t\t\t\t\t\t\t\t\tif (canDeactivate === false)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst itemId: number =\r\n\t\t\t\t\t\t\t\t\t\tthis.serverValidationsCommonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem.id;\r\n\t\t\t\t\t\t\t\t\tconst updateRouteData: string =\r\n\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\truleValidationDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\titemId\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/ruleValidations/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData: updateRouteData\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tdelete: {\r\n\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t'Confirm to Remove Rule Validation Definition'\r\n\t\t\t\t\t\t\t+ ` ${this.serverValidationsCommonTableContext\r\n\t\t\t\t\t\t\t\t.source.selectedItem.validationName}`,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\tcommand: async () =>\r\n\t\t\t\t\t\t\t\tthis.deleteServerValidations()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the presentation logic table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tpublic async setPresentationLogicTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.presentationLogicTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: this.presentationLogic,\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.presentationLogicCommonTableContext,\r\n\t\t\t\t\t\tthis.presentationLogic),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: `DefinitionId eq ${this.ruleDefinition.id}`,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst rulePresentationDefinitions:\r\n\t\t\t\t\t\t\t\tIRulePresentationDefinition[] =\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst rulePresentations: any[] = [];\r\n\r\n\t\t\t\t\t\tfor (const rulePresentation of\r\n\t\t\t\t\t\t\trulePresentationDefinitions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet presentationName: string = AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\tfor (const presentationLogic of\r\n\t\t\t\t\t\t\t\tthis.rulePresentationLogicDefinition)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (rulePresentation\r\n\t\t\t\t\t\t\t\t\t.presentationLogicDefinitionId ===\r\n\t\t\t\t\t\t\t\t\t\tpresentationLogic.id)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tpresentationName = presentationLogic.name;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trulePresentations.push(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tid: rulePresentation.id,\r\n\t\t\t\t\t\t\t\t\tpresentationName: presentationName,\r\n\t\t\t\t\t\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\trulePresentation\r\n\t\t\t\t\t\t\t\t\t\t\t.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\t\t\tjsonData:\r\n\t\t\t\t\t\t\t\t\t\trulePresentation.jsonData,\r\n\t\t\t\t\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\t\t\t\t\trulePresentation.dataKey,\r\n\t\t\t\t\t\t\t\t\tdefinitionId:\r\n\t\t\t\t\t\t\t\t\t\trulePresentation\r\n\t\t\t\t\t\t\t\t\t\t\t.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\t\t\teventType: rulePresentation.eventType,\r\n\t\t\t\t\t\t\t\t\torder: rulePresentation.order\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn rulePresentations;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.presentationLogicAvailableColumns,\r\n\t\t\t\tselectedColumns: this.presentationLogicSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.presentationLogicCommonTableContext =\r\n\t\t\t\t\t\tcommonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'presentationLogicDefinitionId',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\t\t\tthis.presentationLogicDefinitionOptions\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\tthis.createPresentationDefinition()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst canDeactivate:\r\n\t\t\t\t\t\t\t\t\t\tboolean | Observable =\r\n\t\t\t\t\t\t\t\t\t\tthis.appCanDeactivateGuard\r\n\t\t\t\t\t\t\t\t\t\t\t.canDeactivate(this);\r\n\r\n\t\t\t\t\t\t\t\t\tif (canDeactivate === false)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst itemId: number =\r\n\t\t\t\t\t\t\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem.id;\r\n\t\t\t\t\t\t\t\t\tconst updateRouteData: string =\r\n\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\trulePresentationDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\titemId\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/rulePresentation'\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ '/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData: updateRouteData\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t\t'Confirm to Remove Presentation Definition '\r\n\t\t\t\t\t\t\t\t+ this.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t\t\t.source.selectedItem.presentationName,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async () =>\r\n\t\t\t\t\t\t\t\t\tthis.deletePresentationDefinition()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdateIndex:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the rule name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async uniqueRuleName(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingRules: IRuleDefinition[] =\r\n\t\t\t\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`id neq ${this.ruleDefinition.id}`\r\n\t\t\t\t\t\t+ ` and name eq '${control.value}'`\r\n\t\t\t\t\t\t+ ' and entityTypeId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and entityVersionId'\r\n\t\t\t\t\t\t+ ` eq '${this.entityDefinition.versionId}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingRules.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the workflow name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async uniqueWorkflowName(control: UntypedFormControl):\r\n\t\tPromise\r\n\t{\r\n\t\tconst existingruleViolationWorkflowActionDefinitions:\r\n\t\t\tIRuleViolationWorkflowActionDefinition[] =\r\n\t\t\t\r\n\t\t\tawait this.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`WorkflowActionDefinitionId eq ${control.value}`\r\n\t\t\t\t\t\t+ ` and definitionId eq ${this.ruleDefinition.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\texistingruleViolationWorkflowActionDefinitions\r\n\t\t\t\t.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the validator definition name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async uniqueValidatorDefinitionName(\r\n\t\t_control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingRuleValidatorDefinition:\r\n\t\t\tIRuleValidationDefinition[] =\r\n\t\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`definitionId eq ${this.ruleDefinition.id}`,\r\n\t\t\t\t\t// To Do\r\n\t\t\t\t\t// This will allow add multiple validations\r\n\t\t\t\t\t// for the same rule definition once the server validation\r\n\t\t\t\t\t// allows to add it.\r\n\t\t\t\t\t// + ` and validatorDefinitionId eq ${control.value}`\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingRuleValidatorDefinition.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the rule order is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async uniqueOrder(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingRules: IRuleDefinition[] =\r\n\t\t\t\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`id neq ${this.ruleDefinition.id}`\r\n\t\t\t\t\t\t+ ` and order eq ${control.value}`\r\n\t\t\t\t\t\t+ ' and entityTypeId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and entityVersionId'\r\n\t\t\t\t\t\t+ ` eq '${this.entityDefinition.versionId}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingRules.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new rule validation.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async createServerValidations(): Promise\r\n\t{\r\n\t\tconst createServerValidationAction:\r\n\t\t\tFunction = async() =>\r\n\t\t\t{\r\n\t\t\t\tconst validatorDefinition: IRuleValidatorDefinition =\r\n\t\t\t\t\tawait this.ruleValidatorDefinitionApiService\r\n\t\t\t\t\t\t.get(this.serverValidationsCommonTableContext\r\n\t\t\t\t\t\t\t.source.selectedItem.validatorDefinitionId);\r\n\t\t\t\tconst validatorJsonData: string =\r\n\t\t\t\t\tvalidatorDefinition.jsonData\r\n\t\t\t\t\t\t.replace(\r\n\t\t\t\t\t\t\t/\\\\\"/g,\r\n\t\t\t\t\t\t\t'\"');\r\n\r\n\t\t\t\tconst validatorJsonDataObject: any =\r\n\t\t\t\t\tJSON.parse(validatorJsonData);\r\n\r\n\t\t\t\tconst validationDataObject: any =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: {}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tfor (const schema of validatorJsonDataObject.schema)\r\n\t\t\t\t{\r\n\t\t\t\t\tvalidationDataObject.data[schema] =\r\n\t\t\t\t\t\tAppConstants.empty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst newRuleValidationDefinitionActionDefinition:\r\n\t\t\t\t\tIRuleValidationDefinition =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\tvalidatorDefinitionId:\r\n\t\t\t\t\t\t\tthis.serverValidationsCommonTableContext\r\n\t\t\t\t\t\t\t\t.source.selectedItem.validatorDefinitionId,\r\n\t\t\t\t\t\tjsonData: `${JSON.stringify(\r\n\t\t\t\t\t\t\tvalidationDataObject,\r\n\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\tAppConstants.jsonTabIndent)}`\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newRuleValidationId: number =\r\n\t\t\t\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t\t\t\t.create(newRuleValidationDefinitionActionDefinition);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/ruleValidations/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\truleValidationDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\tnewRuleValidationId\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tconst canDeactivate:\r\n\t\t\tboolean | Observable =\r\n\t\t\tthis.appCanDeactivateGuard.canDeactivate(this);\r\n\r\n\t\tif (canDeactivate === false)\r\n\t\t{\r\n\t\t\tthis.serverValidationsCommonTableContext\r\n\t\t\t\t.source\r\n\t\t\t\t.toggleCreateDisplay();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateServerValidationAction(),\r\n\t\t\t\t'Creating Server Validation',\r\n\t\t\t\t'Created Server Validation',\r\n\t\t\t\t'Server Validation was successfully created.',\r\n\t\t\t\t'Server Validation was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing rule validation.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async deleteServerValidations(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.serverValidationsCommonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteServerValidations: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.serverValidationsCommonTableContext\r\n\t\t\t\t\t.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteServerValidations(),\r\n\t\t\t\t'Deleting Server Validation',\r\n\t\t\t\t'Deleted Server Validation',\r\n\t\t\t\t'Server Validation was successfully deleted.',\r\n\t\t\t\t'Server Validation was not deleted.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new rule violation workflow.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async createViolationWorkflow(): Promise\r\n\t{\r\n\t\tconst createViolationWorkflowAction:\r\n\t\t\tFunction = async() =>\r\n\t\t\t{\r\n\t\t\t\tconst newRuleViolationWorkflowActionDefinition:\r\n\t\t\t\t\t\tIRuleViolationWorkflowActionDefinition =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\tactionTypeId: 1,\r\n\t\t\t\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.actionDefinitionId\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newViolationWorkflowId: number =\r\n\t\t\t\t\tawait this\r\n\t\t\t\t\t\t.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t\t\t.create(newRuleViolationWorkflowActionDefinition);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/ruleWorkflow/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\truleWorkflowDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\tnewViolationWorkflowId\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tconst canDeactivate:\r\n\t\t\tboolean | Observable =\r\n\t\t\tthis.appCanDeactivateGuard.canDeactivate(this);\r\n\r\n\t\tif (canDeactivate === false)\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.toggleCreateDisplay();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateViolationWorkflowAction(),\r\n\t\t\t\t'Creating Violation Workflow',\r\n\t\t\t\t'Created Violation Workflow',\r\n\t\t\t\t'Violation Workflow was successfully created.',\r\n\t\t\t\t'Violation Workflow was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing violation workflow.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async deleteViolationWorkflow(): Promise\r\n\t{\r\n\t\tconst deleteViolationWorkflow: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t\t.delete(this.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteViolationWorkflow(),\r\n\t\t\t\t'Deleting Violation Workflow',\r\n\t\t\t\t'Deleted Violation Workflow',\r\n\t\t\t\t'Violation Workflow was successfully deleted.',\r\n\t\t\t\t'Violation Workflow was not deleted.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new rule presentation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async createPresentationDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.presentationLogicCommonTableContext.source.selectedItem;\r\n\r\n\t\tconst newPresentationDefinitionAction:\r\n\t\t\tFunction = async() =>\r\n\t\t\t{\r\n\t\t\t\tconst presentationLogic: IRulePresentationLogicDefinition =\r\n\t\t\t\t\tawait this.rulePresentationLogicDefinitionApiService\r\n\t\t\t\t\t\t.get(selectedItem.presentationLogicDefinitionId);\r\n\t\t\t\tconst presentationLogicJsonData: string =\r\n\t\t\t\t\tpresentationLogic.jsonData;\r\n\r\n\t\t\t\tconst presentationLogicDefinitionJsonDataObject =\r\n\t\t\t\t\tJSON.parse(presentationLogicJsonData);\r\n\r\n\t\t\t\tconst presentationDefinitionDataObject =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: {}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tfor (const schema of\r\n\t\t\t\t\tpresentationLogicDefinitionJsonDataObject.schema)\r\n\t\t\t\t{\r\n\t\t\t\t\tpresentationDefinitionDataObject.data[schema] =\r\n\t\t\t\t\t\tAppConstants.empty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst newRulePresentationDefinition:\r\n\t\t\t\t\t\tIRulePresentationDefinition =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\tjsonData: `${JSON.stringify(\r\n\t\t\t\t\t\t\t\tpresentationDefinitionDataObject,\r\n\t\t\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\t\t\tAppConstants.jsonTabIndent)}`,\r\n\t\t\t\t\t\t\tdataKey: AppConstants.empty,\r\n\t\t\t\t\t\t\teventType:\r\n\t\t\t\t\t\t\t\tthis.rulePresentationService\r\n\t\t\t\t\t\t\t\t\t.eventTypes.onChange,\r\n\t\t\t\t\t\t\torder: ((this.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t\t.source\r\n\t\t\t\t\t\t\t\t.virtualData[\r\n\t\t\t\t\t\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t\t\t\t.source\r\n\t\t\t\t\t\t\t\t\t\t.virtualData.length - 1]\r\n\t\t\t\t\t\t\t\t?.order ?? 0) + 10)\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newRulePresentationId: number =\r\n\t\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t\t.create(newRulePresentationDefinition);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/rulePresentation/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\trulePresentationDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\tnewRulePresentationId\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tconst canDeactivate:\r\n\t\t\tboolean | Observable =\r\n\t\t\tthis.appCanDeactivateGuard.canDeactivate(this);\r\n\r\n\t\tif (canDeactivate === false)\r\n\t\t{\r\n\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t.source.toggleCreateDisplay();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnewPresentationDefinitionAction(),\r\n\t\t\t\t'Creating Presentation Logic',\r\n\t\t\t\t'Created Presentation Logic',\r\n\t\t\t\t'Presentation Logic was successfully created.',\r\n\t\t\t\t'Presentation Logic was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing rule presentation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate async deletePresentationDefinition(): Promise\r\n\t{\r\n\t\tconst deletePresentationDefinition: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeletePresentationDefinition(),\r\n\t\t\t\t'Deleting Presentation Logic',\r\n\t\t\t\t'Deleted Presentation Logic',\r\n\t\t\t\t'Presentation Logic was successfully deleted.',\r\n\t\t\t\t'Presentation Logic was not deleted.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the order index of the selected row item\r\n\t * up or down based on the indexOperator.\r\n\t *\r\n\t * @async\r\n\t * @param {any} selectedItem\r\n\t * The selected item to update the index of.\r\n\t * @param {number} indexReference\r\n\t * The index reference to add or substract to the current\r\n\t * selected order index.\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate async updateOrderIndex(\r\n\t\tselectedItem: any,\r\n\t\tindexReference: number): Promise\r\n\t{\r\n\t\tthis.presentationLogicCommonTableContext.source\r\n\t\t\t.loadingNextDataset = true;\r\n\t\tthis.presentationLogicCommonTableContext.source.selectedItem =\r\n\t\t\tselectedItem;\r\n\r\n\t\tconst updateOrderIndex: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst orderedRequisites: any[] =\r\n\t\t\t\t\tthis.presentationLogicCommonTableContext.source.virtualData\r\n\t\t\t\t\t\t.filter((data) => data !== undefined)\r\n\t\t\t\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\t\t\t\titemOne.order - itemTwo.order);\r\n\r\n\t\t\t\tconst neighborOrderIndex: number =\r\n\t\t\t\t\t\tthis.findSelectedChildIndex(\r\n\t\t\t\t\t\t\torderedRequisites,\r\n\t\t\t\t\t\t\tselectedItem) + indexReference;\r\n\r\n\t\t\t\tconst neighbor: any =\r\n\t\t\t\t\torderedRequisites[neighborOrderIndex];\r\n\r\n\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tneighbor.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: neighbor.id,\r\n\t\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\t\t\t\tneighbor.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\tjsonData: neighbor.jsonData,\r\n\t\t\t\t\t\t\tdataKey: neighbor.dataKey,\r\n\t\t\t\t\t\t\teventType: neighbor.eventType,\r\n\t\t\t\t\t\t\torder: 1000\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\tjsonData: selectedItem.jsonData,\r\n\t\t\t\t\t\t\tdataKey: selectedItem.dataKey,\r\n\t\t\t\t\t\t\teventType: selectedItem.eventType,\r\n\t\t\t\t\t\t\torder: neighbor.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tneighbor.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: neighbor.id,\r\n\t\t\t\t\t\t\tdefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\t\t\t\tneighbor.presentationLogicDefinitionId,\r\n\t\t\t\t\t\t\tjsonData: neighbor.jsonData,\r\n\t\t\t\t\t\t\tdataKey: neighbor.dataKey,\r\n\t\t\t\t\t\t\teventType: neighbor.eventType,\r\n\t\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t.source.virtualData[neighborOrderIndex] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...neighbor,\r\n\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t};\r\n\t\t\t\tthis.presentationLogicCommonTableContext.source.virtualData[\r\n\t\t\t\t\tneighborOrderIndex - indexReference] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.presentationLogicCommonTableContext\r\n\t\t\t\t\t\t\t.source.selectedItem,\r\n\t\t\t\t\t\torder: neighbor.order\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.sortCommonTableByOrder();\r\n\t\t\t\tthis.presentationLogicCommonTableContext\r\n\t\t\t\t\t.source.loadingNextDataset = false;\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOrderIndex(),\r\n\t\t\t\t'Updating Presentation Logic Order',\r\n\t\t\t\t'Updated Presentation Logic Order',\r\n\t\t\t\t'Presentation Logic Order was successfully updated.',\r\n\t\t\t\t'Presentation Logic Order was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the selected child index.\r\n\t *\r\n\t * @param {any[]} children\r\n\t * The children object array.\r\n\t * @param {any} selectedChild\r\n\t * The selected child.\r\n\t * @returns {number}\r\n\t * The child index selected.\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate findSelectedChildIndex(\r\n\t\tchildren: any[],\r\n\t\tselectedChild: any): number\r\n\t{\r\n\t\tfor (let index = 0; index < children.length; index++)\r\n\t\t{\r\n\t\t\tif (children[index].id === selectedChild.id\r\n\t\t\t\t&& children[index].order === selectedChild.order)\r\n\t\t\t{\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the common table context data by order.\r\n\t *\r\n\t * @memberof EntityRuleDefinitionComponent\r\n\t */\r\n\tprivate sortCommonTableByOrder(): void\r\n\t{\r\n\t\tthis.commonTableContext.source.virtualData\r\n\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\titemOne.order - itemTwo.order);\r\n\t\tthis.commonTableContext.source.virtualData =\r\n\t\t\t[\r\n\t\t\t\t...this.commonTableContext.source.virtualData\r\n\t\t\t];\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tIRuleDefinitionDto\r\n} from '@api/interfaces/rules/rule-definition.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRulePresentationDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-definition.api.service';\r\nimport {\r\n\tRulePresentationLogicDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-logic-definition.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIRulePresentationDefinition\r\n} from '@shared/interfaces/rules/rule-presentation-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tRulePresentationService\r\n} from '@shared/services/rule-presentation.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-entity-rule-presentation',\r\n\ttemplateUrl: './entity-rule-presentation.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-rule-presentation.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity rule presentation\r\n * component.\r\n *\r\n * @export\r\n * @class EntityRulePresentationComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityRulePresentationComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityRulePresentationComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {RuleDefinitionApiService} ruleDefinitionApiService\r\n\t * The api service used to get rule definition data.\r\n\t * @param {RulePresentationLogicDefinitionApiService}\r\n\t * rulePresentationLogicDefinitionApiService\r\n\t * The api service used to get rule presentation logic definition data.\r\n\t * @param {RulePresentationDefinitionApiService}\r\n\t * rulePresentationDefinitionApiService\r\n\t * The api service used to get rule presentation definition data.\r\n\t * @param {RulePresentationService} rulePresentationService\r\n\t * The rule presentation service used to get event type data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic ruleDefinitionApiService: RuleDefinitionApiService,\r\n\t\tpublic rulePresentationLogicDefinitionApiService:\r\n\t\t\tRulePresentationLogicDefinitionApiService,\r\n\t\tpublic rulePresentationDefinitionApiService:\r\n\t\t\tRulePresentationDefinitionApiService,\r\n\t\tpublic rulePresentationService: RulePresentationService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IRuleDefinitionDto}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinitionDto;\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic eventTypeOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the rule presentation definition.\r\n\t *\r\n\t * @type {IRulePresentationDefinition}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic rulePresentationDefinition: IRulePresentationDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the rule presentation definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic rulePresentationDefinitionId: number;\r\n\r\n\t/**\r\n\t * Sets the rule presentation definition id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tprivate readonly rulePresentationDefinitionIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.rulePresentationDefinitionId;\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.rulePresentationDefinitionId =\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.rulePresentationDefinitionIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.rulePresentationDefinition =\r\n\t\t\t\r\n\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t.get(this.rulePresentationDefinitionId);\r\n\r\n\t\tthis.ruleDefinition =\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.get(this.rulePresentationDefinition.definitionId);\r\n\r\n\t\tthis.eventTypeOptions = [\r\n\t\t\t{\r\n\t\t\t\tlabel: this.rulePresentationService.eventTypes.onChange,\r\n\t\t\t\tvalue: this.rulePresentationService.eventTypes.onChange\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel:\r\n\t\t\t\t\tthis.rulePresentationService.eventTypes.onChangeValidation,\r\n\t\t\t\tvalue:\r\n\t\t\t\t\tthis.rulePresentationService.eventTypes.onChangeValidation\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel:\r\n\t\t\t\t\tthis.rulePresentationService.eventTypes\r\n\t\t\t\t\t\t.onChangeValidationAsync,\r\n\t\t\t\tvalue:\r\n\t\t\t\t\tthis.rulePresentationService.eventTypes\r\n\t\t\t\t\t\t.onChangeValidationAsync\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tthis.contextData = {\r\n\t\t\tdata: {\r\n\t\t\t\tid: this.rulePresentationDefinition.id,\r\n\t\t\t\tpresentationLogicName:\r\n\t\t\t\t\t(await this.rulePresentationLogicDefinitionApiService\r\n\t\t\t\t\t\t.get(this.rulePresentationDefinition\r\n\t\t\t\t\t\t\t.presentationLogicDefinitionId)).name,\r\n\t\t\t\tdataKey: this.rulePresentationDefinition.dataKey,\r\n\t\t\t\teventType: this.rulePresentationDefinition.eventType,\r\n\t\t\t\torder: this.rulePresentationDefinition.order,\r\n\t\t\t\tdefinition: this.rulePresentationDefinition.jsonData\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.saveTitle = 'Rule Presentation';\r\n\t\tthis.saveContent = `${this.ruleDefinition.name} Rule Presentation`;\r\n\t}\r\n\r\n\t/**\r\n\t * Excecutes the save action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst rulePresentationDataObject: IRulePresentationDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.rulePresentationDefinition.id,\r\n\t\t\t\tdefinitionId: this.rulePresentationDefinition.definitionId,\r\n\t\t\t\tpresentationLogicDefinitionId:\r\n\t\t\t\t\tthis.rulePresentationDefinition\r\n\t\t\t\t\t\t.presentationLogicDefinitionId,\r\n\t\t\t\tdataKey: this.contextData.data.dataKey,\r\n\t\t\t\teventType: this.contextData.data.eventType,\r\n\t\t\t\torder: this.contextData.data.order,\r\n\t\t\t\tjsonData: this.contextData.data.definition,\r\n\t\t\t};\r\n\r\n\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.rulePresentationDefinition.id,\r\n\t\t\t\trulePresentationDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.presentationLogicName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.dataKey',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Data Key'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDataKey: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.dataKeyValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol)),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Must start with \\'data.\\''\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.eventType',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Event Type',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions: this.eventTypeOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.order',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmultipleOf: 10\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueOrder(\r\n\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.definition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.large\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.definitionValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage: AppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the definition is a correct input.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tprivate definitionValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\t// Checks if entry is an object type.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tJSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Not a valid Definition Object.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the requisite order is unique.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tprivate dataKeyValidator(\r\n\t\tcontrol: UntypedFormControl): RegExpMatchArray\r\n\t{\r\n\t\treturn control.value.match(/(^(data.))/g);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the requisite order is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof EntityRulePresentationComponent\r\n\t */\r\n\tprivate async uniqueOrder(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst items: IRulePresentationDefinition[] =\r\n\t\t\t\r\n\t\t\tawait this.rulePresentationDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`id neq ${this.rulePresentationDefinition.id}`\r\n\t\t\t\t\t\t+ ` and order eq ${control.value}`\r\n\t\t\t\t\t\t+ ' and definitionId eq'\r\n\t\t\t\t\t\t+ ` ${this.ruleDefinition.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(items.length <= 0);\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams\r\n} from '@angular/router';\r\nimport {\r\n\tIRuleDefinitionDto\r\n} from '@api/interfaces/rules/rule-definition.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRuleValidationDefinitionApiService\r\n} from '@api/services/rules/rule-validation-definition.api.service';\r\nimport {\r\n\tRuleValidatorDefinitionApiService\r\n} from '@api/services/rules/rule-validator-definition.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIRuleValidationDefinition\r\n} from '@shared/interfaces/rules/rule-validation-definition.interface';\r\nimport {\r\n\tIRuleValidatorDefinition\r\n} from '@shared/interfaces/rules/rule-validator-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-entity-rule-validations',\r\n\ttemplateUrl: './entity-rule-validations.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-rule-validations.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity rule validations\r\n * component.\r\n *\r\n * @export\r\n * @class EntityRuleValidationsComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityRuleValidationsComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityRuleValidationsComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {securityAccessPolicyDefinitionApiService}\r\n\t * securityAccessPolicyDefinitionApiService\r\n\t * The api service used to get security access policy definition data.\r\n\t * @param {securityAccessPolicyApiService}\r\n\t * SecurityAccessPolicyDefinitionApiService\r\n\t * The api service used to get security access policy data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic ruleDefinitionApiService: RuleDefinitionApiService,\r\n\t\tpublic ruleValidatorDefinitionApiService:\r\n\t\t\tRuleValidatorDefinitionApiService,\r\n\t\tpublic ruleValidationDefinitionApiService:\r\n\t\t\tRuleValidationDefinitionApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IRuleDefinitionDto}\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinitionDto;\r\n\r\n\t/**\r\n\t * Gets or sets the rule validation definition.\r\n\t *\r\n\t * @type {IRuleValidationDefinition}\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic ruleValidationDefinition: IRuleValidationDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the rule validation definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic ruleValidationDefinitionId: number;\r\n\r\n\t/**\r\n\t * Sets the rule definition id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tprivate readonly ruleValidationDefinitionIdQueryParameter: string =\r\n\t\tAppConstants.commonProperties.ruleValidationDefinitionId;\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.ruleValidationDefinitionId =\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.ruleValidationDefinitionIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.ruleValidationDefinition =\r\n\t\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t\t.get(this.ruleValidationDefinitionId);\r\n\r\n\t\tthis.ruleDefinition =\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.get(this.ruleValidationDefinition.definitionId);\r\n\r\n\t\tconst validator: IRuleValidatorDefinition =\r\n\t\t\tawait this.ruleValidatorDefinitionApiService\r\n\t\t\t\t.get(this.ruleValidationDefinition.validatorDefinitionId);\r\n\t\tthis.contextData = {\r\n\t\t\tdata: {\r\n\t\t\t\tid: this.ruleValidationDefinition.id,\r\n\t\t\t\tvalidatorName: validator.name,\r\n\t\t\t\tdefinition: this.ruleValidationDefinition.jsonData\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.saveTitle = 'Rule Validation';\r\n\t\tthis.saveContent = `${this.ruleDefinition.name} Rule Validation`;\r\n\t}\r\n\r\n\t/**\r\n\t * Excecutes the save action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst ruleValidationDataObject: IRuleValidationDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.ruleValidationDefinition.id,\r\n\t\t\t\tdefinitionId: this.ruleValidationDefinition.definitionId,\r\n\t\t\t\tvalidatorDefinitionId:\r\n\t\t\t\t\tthis.ruleValidationDefinition.validatorDefinitionId,\r\n\t\t\t\tjsonData: this.contextData.data.definition,\r\n\t\t\t};\r\n\r\n\t\tawait this.ruleValidationDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.ruleValidationDefinition.id,\r\n\t\t\t\truleValidationDataObject);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleValidationsComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.validatorName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.definition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.large\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidDefinition: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.definitionValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield)),\r\n\t\t\t\t\t\t\tmessage: AppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the definition is a correct input.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control to get the input value.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {boolean}\r\n\t * The validation passed or failed.\r\n\t * @memberof EntityLayoutDefinitionComponent\r\n\t */\r\n\tprivate definitionValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\t// Checks if entry is an object type.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tJSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validDefinition.message =\r\n\t\t\t\t'Not a valid Definition Object.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tEntityManagerDirective\r\n} from '@admin/directives/entity-manager.directive';\r\nimport {\r\n\tComponent,\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIRuleDefinitionDto\r\n} from '@api/interfaces/rules/rule-definition.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRuleViolationWorkflowActionDefinitionApiService\r\n} from '@api/services/rules/rule-violation-workflow-action-definition.api.service';\r\nimport {\r\n\tSecurityGroupRuleDefinitionViolationOverrideApiService\r\n} from '@api/services/security/security-group-rule-definition-violation-override.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIRuleViolationWorkflowActionDefinition\r\n} from '@shared/interfaces/rules/rule-violation-workflow-action-definition.interface';\r\nimport {\r\n\tISecurityGroupRuleDefinitionViolationOverride\r\n} from '@shared/interfaces/security/security-group-rule-definition-violation-override.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-rule-workflow',\r\n\ttemplateUrl: './entity-rule-workflow.component.html',\r\n\tstyleUrls: [\r\n\t\t'./entity-rule-workflow.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the entity rule workflow\r\n * component.\r\n *\r\n * @export\r\n * @class EntityRuleWorkflowComponent\r\n * @extends {EntityManagerDirective}\r\n */\r\nexport class EntityRuleWorkflowComponent\r\n\textends EntityManagerDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityRuleWorkflowComponent.\r\n\t *\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {RuleDefinitionApiService} ruleDefinitionApiService\r\n\t * The api service used to get rule definition data.\r\n\t * @param {RuleViolationWorkflowActionDefinitionApiService}\r\n\t * ruleViolationWorkflowActionDefinitionApiService\r\n\t * The api service used to get rule violation workflowAction definition\r\n\t * data.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionApiService\r\n\t * The api service used to get workflow action definition data.\r\n\t * @param {SecurityGroupRuleDefinitionViolationOverrideApiService}\r\n\t * securityGroupRuleViolationOverrideApiService\r\n\t * The service used to get Security Group Rule Definition\r\n\t * Violation Override data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The service used to get the site layout data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic ruleDefinitionApiService: RuleDefinitionApiService,\r\n\t\tpublic ruleViolationWorkflowActionDefinitionApiService:\r\n\t\t\tRuleViolationWorkflowActionDefinitionApiService,\r\n\t\tpublic workflowActionDefinitionApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic securityGroupRuleViolationOverrideApiService:\r\n\t\t\tSecurityGroupRuleDefinitionViolationOverrideApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\troute,\r\n\t\t\tactivityService,\r\n\t\t\tresolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the rule definition.\r\n\t *\r\n\t * @type {IRuleDefinitionDto}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic ruleDefinition: IRuleDefinitionDto;\r\n\r\n\t/**\r\n\t * Gets or sets the rule violation workflow action definition.\r\n\t *\r\n\t * @type {IRuleViolationWorkflowActionDefinition}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic ruleViolationWorkflowActionDefinition:\r\n\t\tIRuleViolationWorkflowActionDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the rule workflow definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic ruleWorkflowDefinitionId: number;\r\n\r\n\t/**\r\n\t * Gets or sets the rule action type options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic ruleActionTypeOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the security group options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic securityGroupOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the security group rule definition violation override.\r\n\t *\r\n\t * @type {ISecurityGroupRuleDefinitionViolationOverride[]}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic securityGroupRuleDefinitionViolationOverride:\r\n\t\tISecurityGroupRuleDefinitionViolationOverride[];\r\n\r\n\t/**\r\n\t * Gets or sets the security groups.\r\n\t *\r\n\t * @type {number[]}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic securityGroups: number[] = [];\r\n\r\n\t/**\r\n\t * Sets the rule definition id query parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tprivate readonly ruleWorkflowDefinitionIdQueryParameter:\r\n\t\tstring =\r\n\t\t\tAppConstants.commonProperties.ruleWorkflowDefinitionId;\r\n\r\n\t/**\r\n\t * Sets the context data required for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic async setContextData(): Promise\r\n\t{\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe((parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.ruleWorkflowDefinitionId =\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.ruleWorkflowDefinitionIdQueryParameter];\r\n\t\t\t}));\r\n\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.ruleViolationWorkflowActionDefinition =\r\n\t\t\t\r\n\t\t\tawait this.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t\t.get(this.ruleWorkflowDefinitionId);\r\n\r\n\t\tthis.ruleDefinition =\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.get(this.ruleViolationWorkflowActionDefinition.definitionId);\r\n\r\n\t\tthis.ruleActionTypeOptions = [\r\n\t\t\t{\r\n\t\t\t\tlabel: AppConstants.ruleActionTypeNames.blocked,\r\n\t\t\t\tvalue: AppConstants.ruleActionTypes.blocked\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: AppConstants.ruleActionTypeNames.continue,\r\n\t\t\t\tvalue: AppConstants.ruleActionTypes.continue\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tthis.securityGroupOptions =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions();\r\n\r\n\t\tthis.securityGroups = [];\r\n\r\n\t\tthis.securityGroupRuleDefinitionViolationOverride =\r\n\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t.query('ruleDefinitionId eq '\r\n\t\t\t\t\t+ this.ruleViolationWorkflowActionDefinition.definitionId\r\n\t\t\t\t\t+ ' and workflowActionDefinitionId eq'\r\n\t\t\t\t\t+ ` ${this.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t.workflowActionDefinitionId}`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.securityGroupRuleDefinitionViolationOverride\r\n\t\t\t.forEach((securityRuleViolation) =>\r\n\t\t\t{\r\n\t\t\t\tthis.securityGroups.push(securityRuleViolation.groupId);\r\n\t\t\t});\r\n\r\n\t\tthis.contextData = {\r\n\t\t\tdata: {\r\n\t\t\t\tid: this.ruleViolationWorkflowActionDefinition.id,\r\n\t\t\t\tactionTypeId: this.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t.actionTypeId,\r\n\t\t\t\tworkflowActionDefinitionName:\r\n\t\t\t\t\t(await this.workflowActionDefinitionApiService\r\n\t\t\t\t\t\t.get(this.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t.workflowActionDefinitionId)).name,\r\n\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\tthis.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t.workflowActionDefinitionId,\r\n\t\t\t\tsecurity: this.securityGroups\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.saveTitle = 'Rule Definition';\r\n\t\tthis.saveContent = `${this.ruleDefinition.name} Rule Definition`;\r\n\t}\r\n\r\n\t/**\r\n\t * Excecutes the save action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic async saveAction(): Promise\r\n\t{\r\n\t\tconst ruleWorkflowDataObject: IRuleViolationWorkflowActionDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: this.ruleViolationWorkflowActionDefinition.id,\r\n\t\t\t\tdefinitionId:\r\n\t\t\t\t\tthis.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t.definitionId,\r\n\t\t\t\tactionTypeId: this.contextData.data.actionTypeId,\r\n\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\tthis.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t.workflowActionDefinitionId,\r\n\t\t\t};\r\n\r\n\t\tawait this.ruleViolationWorkflowActionDefinitionApiService\r\n\t\t\t.update(\r\n\t\t\t\tthis.ruleViolationWorkflowActionDefinition.id,\r\n\t\t\t\truleWorkflowDataObject);\r\n\r\n\t\t// Update Override Permissions if applicable\r\n\t\tif (this.contextData.data.security.length !==\r\n\t\t\tthis.securityGroups.length)\r\n\t\t{\r\n\t\t\tif (this.securityGroups.length >\r\n\t\t\t\tthis.contextData.data.security.length)\r\n\t\t\t{\r\n\t\t\t\tfor (let securityGroupIndex = 0;\r\n\t\t\t\t\tsecurityGroupIndex < this.securityGroups.length;\r\n\t\t\t\t\tsecurityGroupIndex++)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet existingGroup = false;\r\n\t\t\t\t\tfor (const securityRule of this.contextData.data.security)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (securityRule ===\r\n\t\t\t\t\t\t\tthis.securityGroups[securityGroupIndex])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texistingGroup = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (existingGroup === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t\t\t\t.delete(\r\n\t\t\t\t\t\t\t\tawait this.getSecurityRuleViolationOverrideId(\r\n\t\t\t\t\t\t\t\t\tsecurityGroupIndex));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor (const securityRule of this.contextData.data.security)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet existingGroup = false;\r\n\r\n\t\t\t\t\tfor (const securityGroup of this.securityGroups)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (securityRule === securityGroup)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texistingGroup = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (existingGroup === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst securityRuleViolationOverrideDataObject:\r\n\t\t\t\t\t\t\tISecurityGroupRuleDefinitionViolationOverride =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tgroupId: securityRule,\r\n\t\t\t\t\t\t\t\truleDefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\t\t\t\t\tthis.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t\t\t\t.workflowActionDefinitionId\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t\t\t\t.create(securityRuleViolationOverrideDataObject);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tfor (let index = 0;\r\n\t\t\t\tindex < this.securityGroups.length;\r\n\t\t\t\tindex++)\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tawait this.getSecurityRuleViolationOverrideId(index));\r\n\t\t\t}\r\n\r\n\t\t\tfor (const securityRule of this.contextData.data.security)\r\n\t\t\t{\r\n\t\t\t\tconst securityRuleViolationOverrideDataObject:\r\n\t\t\t\t\tISecurityGroupRuleDefinitionViolationOverride =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tgroupId: securityRule,\r\n\t\t\t\t\t\truleDefinitionId: this.ruleDefinition.id,\r\n\t\t\t\t\t\tworkflowActionDefinitionId:\r\n\t\t\t\t\t\t\tthis.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t\t.workflowActionDefinitionId\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t\t.create(securityRuleViolationOverrideDataObject);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout fields.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic async setLayoutFields(): Promise\r\n\t{\r\n\t\tthis.layoutFields =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.workflowActionDefinitionName',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Action',\r\n\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.actionTypeId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions: this.ruleActionTypeOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.security',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Override Permissions',\r\n\t\t\t\t\t\toptions: this.securityGroupOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * gets the security rule violation override id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} securityGroupIndex\r\n\t * The security group index.\r\n\t * @returns {Promise}\r\n\t * The security rule violation override id.\r\n\t * @memberof EntityRuleWorkflowComponent\r\n\t */\r\n\tpublic async getSecurityRuleViolationOverrideId(\r\n\t\tsecurityGroupIndex: number): Promise\r\n\t{\r\n\t\tconst securityGroupRuleDefinitionViolationOverride:\r\n\t\t\tISecurityGroupRuleDefinitionViolationOverride =\r\n\t\t\tawait this.securityGroupRuleViolationOverrideApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t'groupId eq'\r\n\t\t\t\t\t\t+ ` ${this.securityGroups[securityGroupIndex]}`\r\n\t\t\t\t\t\t+ ' and ruleDefinitionId eq'\r\n\t\t\t\t\t\t+ ` ${this.ruleDefinition.id}`\r\n\t\t\t\t\t\t+ ' and workflowActionDefinitionId eq'\r\n\t\t\t\t\t\t+ ` ${this.ruleViolationWorkflowActionDefinition\r\n\t\t\t\t\t\t\t.workflowActionDefinitionId}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn securityGroupRuleDefinitionViolationOverride.id;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tIRuleDefinitionDto\r\n} from '@api/interfaces/rules/rule-definition.dto.interface';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIRuleDefinition\r\n} from '@shared/interfaces/rules/rule-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-entity-rules',\r\n\ttemplateUrl: './entity-rules.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system entity rules\r\n * component.\r\n *\r\n * @export\r\n * @class EntityRulesComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EntityRulesComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityRulesComponent.\r\n\t *\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to get the entity definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get the entity type data.\r\n\t * @param {RuleDefinitionApiService} ruleDefinitionApiService\r\n\t * The api service used to get rule definition data.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic ruleDefinitionApiService: RuleDefinitionApiService,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic entityDefinitionId: number;\r\n\r\n\t/**\r\n\t * Initializes the component to set the page variables\r\n\t * and setup the table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page variables needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tthis.entityDefinitionId = this.route.snapshot.paramMap.get(\r\n\t\t\tAppConstants.commonProperties.id) as unknown as number;\r\n\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.get(this.entityDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.entityDefinition.typeId);\r\n\r\n\t\tthis.tableFilterQuery = 'EntityTypeId'\r\n\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t+ ' and EntityVersionId eq'\r\n\t\t\t+ ` ${this.entityDefinition.versionId}`;\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'displayName',\r\n\t\t\t\t\tcolumnHeader: 'Display Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'overridable',\r\n\t\t\t\t\tcolumnHeader: 'Overridable',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the common table definitions needed for this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Rule Definitions',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Rule Definition'),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t\tthis.ruleDefinitionApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueName(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Rule Name.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: async() => this.createAction()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst routeData: string =\r\n\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\truleDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/ruleDefinition/edit',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteData: routeData\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() => this.deleteAction(),\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement(),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdateIndex:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new entity layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate async createAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createRuleAction:\r\n\t\t\tFunction = async() =>\r\n\t\t\t{\r\n\t\t\t\tlet order: number = 10;\r\n\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\tthis.commonTableContext.source.virtualData)\r\n\t\t\t\t\t&& this.commonTableContext.source.virtualData.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\torder =\r\n\t\t\t\t\t\tthis.commonTableContext.source.virtualData[\r\n\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t.virtualData.length - 1].order;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst newRule: IRuleDefinitionDto =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\t\tentityTypeId: this.entityDefinition.typeId,\r\n\t\t\t\t\t\t\tentityVersionId: this.entityDefinition.versionId,\r\n\t\t\t\t\t\t\tdisplayName: selectedItem.name,\r\n\t\t\t\t\t\t\toverridable: false,\r\n\t\t\t\t\t\t\tdescription: null,\r\n\t\t\t\t\t\t\torder: order\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\tconst newRuleId: number =\r\n\t\t\t\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t\t\t\t.create(newRule);\r\n\r\n\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'admin/entity/ruleDefinition/edit',\r\n\t\t\t\t\t\tthis.entityDefinitionId\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\truleDefinitionId:\r\n\t\t\t\t\t\t\t\t\t\t\t\tnewRuleId\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateRuleAction(),\r\n\t\t\t\t'Creating Rule Definition',\r\n\t\t\t\t'Created Rule Definition',\r\n\t\t\t\t`Rule Definition ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was created to Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Rule Definition ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was not created to Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the common table delete statement.\r\n\t *\r\n\t * @async\r\n\t * @returns {string}\r\n\t * The delete statement\r\n\t * @memberof EntityLayoutsComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\treturn `Confirm you are about to delete Rule Definition\r\n\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t${this.commonTableContext.source.selectedItem.name}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing entity access policy.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate async deleteAction(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteAction: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteAction(),\r\n\t\t\t\t'Deleting Rule Definition',\r\n\t\t\t\t'Deleted Rule Definition',\r\n\t\t\t\t`Rule Definition ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was deleted from Entity ${this.entityType.name}.`,\r\n\t\t\t\t`Rule Definition ${selectedItem.name}`\r\n\t\t\t\t\t+ ` was not deleted from Entity ${this.entityType.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Form Control used to get the input value\r\n\t * @returns {Promise}\r\n\t * The Validator promise result.\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate async uniqueName(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst existingRules: IRuleDefinitionDto[] =\r\n\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`name eq '${control.value}'`\r\n\t\t\t\t\t\t+ ' and entityTypeId'\r\n\t\t\t\t\t\t+ ` eq ${this.entityDefinition.typeId}`\r\n\t\t\t\t\t\t+ ' and entityVersionId'\r\n\t\t\t\t\t\t+ ` eq '${this.entityDefinition.versionId}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(existingRules.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the order index of the selected row item\r\n\t * up or down based on the indexOperator.\r\n\t *\r\n\t * @async\r\n\t * @param {any} selectedItem\r\n\t * The selected item to update the index of.\r\n\t * @param {number} indexReference\r\n\t * The index reference to add or substract to the current\r\n\t * selected order index.\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate async updateOrderIndex(\r\n\t\tselectedItem: any,\r\n\t\tindexReference: number): Promise\r\n\t{\r\n\t\tthis.commonTableContext.source.loadingNextDataset = true;\r\n\t\tthis.commonTableContext.source.selectedItem = selectedItem;\r\n\r\n\t\tconst updateOrderIndex: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst orderedRequisites: any[] =\r\n\t\t\t\t\tthis.commonTableContext.source.virtualData\r\n\t\t\t\t\t\t.filter((data) => data !== undefined)\r\n\t\t\t\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\t\t\t\titemOne.order - itemTwo.order);\r\n\r\n\t\t\t\tconst neighborOrderIndex: number =\r\n\t\t\t\t\t\tthis.findSelectedChildIndex(\r\n\t\t\t\t\t\t\torderedRequisites,\r\n\t\t\t\t\t\t\tselectedItem) + indexReference;\r\n\r\n\t\t\t\tconst neighbor: any =\r\n\t\t\t\t\torderedRequisites[neighborOrderIndex];\r\n\r\n\t\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tneighbor.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: neighbor.id,\r\n\t\t\t\t\t\t\tentityTypeId: neighbor.entityTypeId,\r\n\t\t\t\t\t\t\tentityVersionId: neighbor.entityVersionId,\r\n\t\t\t\t\t\t\tname: neighbor.name,\r\n\t\t\t\t\t\t\tdisplayName: neighbor.displayName,\r\n\t\t\t\t\t\t\tdescription: neighbor.description,\r\n\t\t\t\t\t\t\toverridable: neighbor.overridable,\r\n\t\t\t\t\t\t\torder: 1000\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\tentityTypeId: selectedItem.entityTypeId,\r\n\t\t\t\t\t\t\tentityVersionId: selectedItem.entityVersionId,\r\n\t\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\t\tdisplayName: selectedItem.displayName,\r\n\t\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\t\toverridable: selectedItem.overridable,\r\n\t\t\t\t\t\t\torder: neighbor.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.ruleDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tneighbor.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: neighbor.id,\r\n\t\t\t\t\t\t\tentityTypeId: neighbor.entityTypeId,\r\n\t\t\t\t\t\t\tentityVersionId: neighbor.entityVersionId,\r\n\t\t\t\t\t\t\tname: neighbor.name,\r\n\t\t\t\t\t\t\tdisplayName:\r\n\t\t\t\t\t\t\t\tneighbor.displayName,\r\n\t\t\t\t\t\t\tdescription: neighbor.description,\r\n\t\t\t\t\t\t\toverridable: neighbor.overridable,\r\n\t\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.commonTableContext.source.virtualData[neighborOrderIndex] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...orderedRequisites[neighborOrderIndex],\r\n\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t};\r\n\t\t\t\tthis.commonTableContext.source.virtualData[\r\n\t\t\t\t\tneighborOrderIndex - indexReference] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.commonTableContext.source.selectedItem,\r\n\t\t\t\t\t\torder: orderedRequisites[neighborOrderIndex].order\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.sortCommonTableByOrder();\r\n\t\t\t\tthis.commonTableContext.source.loadingNextDataset = false;\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOrderIndex(),\r\n\t\t\t\t'Updating Rule Definition Order',\r\n\t\t\t\t'Updated Rule Definition Order',\r\n\t\t\t\t'Rule Definition Order was successfully updated.',\r\n\t\t\t\t'Rule Definition Order was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the selected child index.\r\n\t *\r\n\t * @param {any[]} children\r\n\t * The children object array.\r\n\t * @param {any} selectedChild\r\n\t * The selected child.\r\n\t * @returns {number}\r\n\t * The child index selected.\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate findSelectedChildIndex(\r\n\t\tchildren: any[],\r\n\t\tselectedChild: any): number\r\n\t{\r\n\t\tfor (let index = 0; index < children.length; index++)\r\n\t\t{\r\n\t\t\tif (children[index].id === selectedChild.id\r\n\t\t\t\t&& children[index].order === selectedChild.order)\r\n\t\t\t{\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the common table context data by order.\r\n\t *\r\n\t * @memberof EntityRulesComponent\r\n\t */\r\n\tprivate sortCommonTableByOrder(): void\r\n\t{\r\n\t\tthis.commonTableContext.source.virtualData\r\n\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\titemOne.order - itemTwo.order);\r\n\t\tthis.commonTableContext.source.virtualData =\r\n\t\t\t[\r\n\t\t\t\t...this.commonTableContext.source.virtualData\r\n\t\t\t];\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n@Component({\r\n\tselector: 'app-entity-manager-search',\r\n\ttemplateUrl: './entity-manager-search.component.html',\r\n\tstyleUrls: ['./entity-manager-search.component.scss'],\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system entity manager search\r\n * component.\r\n *\r\n * @export\r\n * @class EntityManagerSearchComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class EntityManagerSearchComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the EntityManagerSearchComponent class.\r\n\t *\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The api service used to load emtoty definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to load entity type data.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The api service used to load entity version data.\r\n\t * @param {Router} router\r\n\t * The service that provides navigation on row clickage.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic router: Router,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the search input element.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\t@ViewChild('SearchInput')\r\n\tpublic searchInputElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the search input value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic searchInputValue: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the table filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic tableFilter: string = null;\r\n\r\n\t/**\r\n\t * Gets or sets the full set of entity types.\r\n\t *\r\n\t * @type {IEntityType[]}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic entityTypes: IEntityType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the full set of entity versions.\r\n\t *\r\n\t * @type {IEntityVersion[]}\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic entityVersions: IEntityVersion[] = [];\r\n\r\n\t/**\r\n\t * Initializes the entity manager search component by seting up page\r\n\t * variables and table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'group',\r\n\t\t\t\t\tcolumnHeader: 'Group',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'version',\r\n\t\t\t\t\tcolumnHeader: 'Version',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'enabled',\r\n\t\t\t\t\tcolumnHeader: 'Enabled',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'startDate',\r\n\t\t\t\t\tcolumnHeader: 'Start Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++,\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'endDate',\r\n\t\t\t\t\tcolumnHeader: 'End Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder,\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\r\n\t\tawait this.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Enter key press event to excecution the search accion.\r\n\t *\r\n\t * @param {KeyboardEvent} event\r\n\t * The key press event data object.\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic searchOnEnterKeyPress(event: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key === AppConstants.keyBoardKeyConstants.enter)\r\n\t\t{\r\n\t\t\tthis.searchEntity();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Applies a filter to search by entity type.\r\n\t * This will reload the common table with the entity type data that contains\r\n\t * the input criteria.\r\n\t *\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic searchEntity(): void\r\n\t{\r\n\t\tif (this.searchInputElement.nativeElement.value ===\r\n\t\t\tthis.searchInputValue)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.searchInputValue = this.searchInputElement.nativeElement.value;\r\n\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tAppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for the current admin page.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.entityTypes =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\t\tthis.entityVersions =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityVersionApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Entity Search',\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\tfullPageReservedHeight:\r\n\t\t\t\t\tAppConstants.staticLayoutSizes.tableSearchHeight,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst entityDefinitions: IEntityDefinition[] =\r\n\t\t\t\t\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst dataPromise: object[] = [];\r\n\r\n\t\t\t\t\t\tfor (const entityDefinition of entityDefinitions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst decorateViewModel: any =\r\n\t\t\t\t\t\t\t\tthis.decorateViewModel(entityDefinition);\r\n\r\n\t\t\t\t\t\t\tif (!AnyHelper.isNull(decorateViewModel))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdataPromise.push(\r\n\t\t\t\t\t\t\t\t\tthis.decorateViewModel(entityDefinition));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn dataPromise;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel: async(model: any) =>\r\n\t\t\t\t\tthis.decorateViewModel(model),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'All Entities',\r\n\t\t\t\t\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled Entities',\r\n\t\t\t\t\t\t\t\t\tvalue: 'true'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Disabled Entities',\r\n\t\t\t\t\t\t\t\t\tvalue: 'false'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilter\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t'admin/entity/definition/'\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'overview/view',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @param {IWorkflowActionDefinitions} entityDefinition\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {any}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof EntityManagerSearchComponent\r\n\t */\r\n\tpublic decorateViewModel(\r\n\t\tentityDefinition: IEntityDefinition): any\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityTypes.find((type: IEntityType) =>\r\n\t\t\t\ttype.id === entityDefinition.typeId);\r\n\t\tconst typeName: string =\r\n\t\t\tentityType.name;\r\n\t\tconst typeGroup: string =\r\n\t\t\tentityType.group;\r\n\r\n\t\tconst entityVersion: IEntityVersion =\r\n\t\t\tthis.entityVersions.find((version: IEntityVersion) =>\r\n\t\t\t\tversion.id === entityDefinition.versionId);\r\n\t\tconst versionNumber: number =\r\n\t\t\tentityVersion.number;\r\n\t\tconst versionEnabled: boolean =\r\n\t\t\tentityVersion.enabled;\r\n\t\tconst versionStartDate: string =\r\n\t\t\tentityVersion.startDate;\r\n\t\tconst versionEndDate: string =\r\n\t\t\tentityVersion.endDate;\r\n\r\n\t\tif ((AnyHelper.isNull(this.tableFilter)\r\n\t\t\t|| versionEnabled === JSON.parse(this.tableFilter))\r\n\t\t\t\t&& (AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tthis.searchInputValue)\r\n\t\t\t\t\t|| typeName.toLowerCase()\r\n\t\t\t\t\t\t.includes(\r\n\t\t\t\t\t\t\tthis.searchInputValue\r\n\t\t\t\t\t\t\t\t.toLowerCase())))\r\n\t\t{\r\n\t\t\tconst viewModel: any =\r\n\t\t\t\t{\r\n\t\t\t\t\tid: entityDefinition.id,\r\n\t\t\t\t\tname: typeName,\r\n\t\t\t\t\tgroup: typeGroup,\r\n\t\t\t\t\tversion: versionNumber,\r\n\t\t\t\t\tenabled: versionEnabled,\r\n\t\t\t\t\tstartDate: versionStartDate,\r\n\t\t\t\t\tendDate: versionEndDate,\r\n\t\t\t\t};\r\n\r\n\t\t\treturn viewModel;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityApplicationDto\r\n} from '@api/interfaces/security/security-application.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * application controller.\r\n *\r\n * @export\r\n * @class SecurityApplicationApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecurityApplicationApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecurityApplicationApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityApplicationApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securityApplications;\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tSecurityApplicationApiService\r\n} from '@api/services/security/security-application.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISecurityApplication\r\n} from '@shared/interfaces/security/security-application.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n@Component({\r\n\tselector: 'app-applications',\r\n\ttemplateUrl: './applications.component.html',\r\n\tstyleUrls: [\r\n\t\t'./applications.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the security applications\r\n * component.\r\n *\r\n * @export\r\n * @class ApplicationsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class ApplicationsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ApplicationsComponent class.\r\n\t *\r\n\t * @param {SecurityApplicationApiService} securityApplicationApiService\r\n\t * The api service used to load security application data.\r\n\t * @param {SecuritySessionApiService} securitySessionApiService\r\n\t * The api service used to load security session data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof ApplicationsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityApplicationApiService: SecurityApplicationApiService,\r\n\t\tpublic securitySessionsApiService: SecuritySessionApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ApplicationsComponent\r\n\t */\r\n\tpublic securityApplicationsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based filter.\r\n\t *\r\n\t * @memberof ApplicationsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'apiKey',\r\n\t\t\t\t\tcolumnHeader: 'Api Key',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'enabled',\r\n\t\t\t\t\tcolumnHeader: 'Enabled',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof ApplicationsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.securityApplicationsTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Applications',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Application'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise: (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\tthis.securityApplicationApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueNameValidator(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Application Name not available.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'apiKey',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Api Key',\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueKey: {\r\n\t\t\t\t\t\t\t\t\t\texpression: async (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueKeyValidator(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Application Key not available.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'enabled',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputSwitch,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\t\t\t\tdefault: false\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tCommonFormlyFieldConstants.publicField,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createApplication()\r\n\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'All Applications',\r\n\t\t\t\t\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled Applications',\r\n\t\t\t\t\t\t\t\t\tvalue: 'Enabled eq true'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Disabled Applications',\r\n\t\t\t\t\t\t\t\t\tvalue: 'Enabled eq false'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilterQuery\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcomponent: null,\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'apiKey',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Api Key',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'enabled',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputSwitch,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.updateNameValidator(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Application Name not available.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'enabled',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputSwitch,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\t\t\t\tdefault: false\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tCommonFormlyFieldConstants.publicField,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdefinition: null,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.updateApplication()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: () => this.deleteApplication(),\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.deleteStatement()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an existing application.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tpublic async updateApplication(): Promise\r\n\t{\r\n\t\tconst updateApplication: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tthis.commonTableContext.source.selectedItem.id,\r\n\t\t\t\t\t\tthis.commonTableContext.source.selectedItem);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateApplication(),\r\n\t\t\t\t'Updating Application',\r\n\t\t\t\t'Updated Application',\r\n\t\t\t\t`Application ${this.commonTableContext.source.selectedItem.id} `\r\n\t\t\t\t\t+ 'was updated.',\r\n\t\t\t\t`Application ${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t\t\twas not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the the entered name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Formly form control.\r\n\t * @return {Promise}\r\n\t * The validity to display or not a formly error and\r\n\t * disable or enable the action.\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async uniqueNameValidator(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst applicationName:\r\n\t\t\tISecurityApplication[] =\r\n\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(AnyHelper.isNullOrEmpty(applicationName[0]));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the the entered key is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Formly form control.\r\n\t * @return {Promise}\r\n\t * The validity to display or not a formly error and\r\n\t * disable or enable the action.\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async uniqueKeyValidator(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst applicationKey:\r\n\t\t\tISecurityApplication[] =\r\n\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`ApiKey eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(AnyHelper.isNullOrEmpty(applicationKey[0]));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the name is allowed to be saved.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The Formly form control.\r\n\t * @return {Promise}\r\n\t * The validity to display or not a formly error and\r\n\t * disable or enable the action.\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async updateNameValidator(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst originalApplication:\r\n\t\t\tISecurityApplication =\r\n\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t.get(this.commonTableContext\r\n\t\t\t\t\t.source.selectedItem.id);\r\n\r\n\t\tconst applicationName:\r\n\t\t\tISecurityApplication[] =\r\n\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tcontrol.value === originalApplication.name\r\n\t\t\t\t|| AnyHelper.isNullOrEmpty(applicationName[0]));\r\n\t}\r\n\r\n\t/**\r\n\t * Create a new application.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async createApplication(): Promise\r\n\t{\r\n\t\tconst createApplication: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\tthis.commonTableContext.source.selectedItem);\r\n\r\n\t\t\t\t// Refresh this value for an accurate created by id.\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t\t\t.get(createdId);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateApplication(),\r\n\t\t\t\t'Creating Application',\r\n\t\t\t\t'Created Application',\r\n\t\t\t\t'Application was created.',\r\n\t\t\t\t'Application was not created.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing application.\r\n\t *\r\n\t * @async\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async deleteApplication(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteApplication: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securityApplicationApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteApplication(),\r\n\t\t\t\t'Deleting Application',\r\n\t\t\t\t'Deleted Application',\r\n\t\t\t\t`Application ${selectedItem.id} `\r\n\t\t\t\t\t+ 'was deleted.',\r\n\t\t\t\t`Application ${selectedItem.id}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof ApplicationComponent\r\n\t */\r\n\tprivate async deleteStatement(): Promise\r\n\t{\r\n\t\tconst currentIsoDateTime: string =\r\n\t\t\tDateTime.now()\r\n\t\t\t\t.toUTC()\r\n\t\t\t\t.toISO();\r\n\r\n\t\tconst aMonthFromCurrentIsoDateTime: string =\r\n\t\t\tDateTime.now()\r\n\t\t\t\t.minus({ month: 1 })\r\n\t\t\t\t.toUTC()\r\n\t\t\t\t.toISO();\r\n\r\n\t\tconst activeSessions =\r\n\t\t\tawait this.securitySessionsApiService\r\n\t\t\t\t.aggregate(\r\n\t\t\t\t\t'Count',\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t'ApplicationId eq '\r\n\t\t\t\t\t\t+ `${this.commonTableContext.source.selectedItem?.id} `\r\n\t\t\t\t\t\t+ `AND ExpireDate < '${currentIsoDateTime}' AND `\r\n\t\t\t\t\t\t+ `ExpireDate > '${aMonthFromCurrentIsoDateTime}'`);\r\n\r\n\t\treturn `Confirm you are about to delete Application\r\n\t\t\t${this.commonTableContext.source.selectedItem?.id}\r\n\t\t\t${(await this.securityApplicationApiService.get(\r\n\t\tthis.commonTableContext.source.selectedItem?.id)).name}\r\n\t\t\twhich had ${activeSessions[0].value}\r\n\t\t\tactive sessions in the last 30 days.`;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective\r\n} from '@angular/core';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[PageContext]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component that will have a page\r\n * context available.\r\n *\r\n * @export\r\n * @class PageContextDirective\r\n */\r\nexport class PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of a page context containing component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof PageContextDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the page context of this component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof PageContextDirective\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tsource: this,\r\n\t\t\t\tdata: {}\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-session-events',\r\n\ttemplateUrl: './session-events.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system session events\r\n * component.\r\n *\r\n * @export\r\n * @class SessionEventsComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class SessionEventsComponent\r\n\textends PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the SessionEvents component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof SessionEventsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n}","\r\n\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tChartConfiguration,\r\n\tTick,\r\n\tTimeUnit\r\n} from 'chart.js';\r\nimport {\r\n\t_DeepPartialObject\r\n} from 'chart.js/dist/types/utils';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/**\r\n * A class representing a singleton chart factory. This is used to create\r\n * common initial chart configurations to be displayed site wide.\r\n *\r\n * @export\r\n * @class ChartFactory\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ChartFactory\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a chart factory.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used to define and handle\r\n\t * site layout changes.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default line chart configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {string[] | string[][] | number[] | number[][]\r\n\t\t| Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The set of labels to be displayed in the line chart's x axis.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this line chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the y axis value type.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial line chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic lineChart(\r\n\t\ttitle: string,\r\n\t\tlabels: string[] | string[][]\r\n\t\t\t| number[] | number[][]\r\n\t\t\t| Date[] | Date[][]\r\n\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdata: number[] | null | undefined | number[][],\r\n\t\tdataLabel: string): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttype: ChartConstants.chartTypes.line,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tlabels: labels,\r\n\t\t\t\t\tdatasets: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\t\tlabel: dataLabel,\r\n\t\t\t\t\t\t\tborderWidth: 1,\r\n\t\t\t\t\t\t\tfill: true,\r\n\t\t\t\t\t\t\tspanGaps: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\toptions: {\r\n\t\t\t\t\telements: {\r\n\t\t\t\t\t\tpoint: {\r\n\t\t\t\t\t\t\tradius: 2,\r\n\t\t\t\t\t\t\thoverRadius: 3\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tline: {\r\n\t\t\t\t\t\t\ttension: .4\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\thover: {\r\n\t\t\t\t\t\tmode: 'index',\r\n\t\t\t\t\t\tintersect: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlayout: {\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaintainAspectRatio: true,\r\n\t\t\t\t\tresponsive: true,\r\n\t\t\t\t\tscales: {\r\n\t\t\t\t\t\tx: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tticks: {\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ty: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tticks: {\r\n\t\t\t\t\t\t\t\tcallback: (\r\n\t\t\t\t\t\t\t\t\ttickValue: string | number,\r\n\t\t\t\t\t\t\t\t\t_index: number,\r\n\t\t\t\t\t\t\t\t\t_ticks: Tick[]) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t// Remove decimals\r\n\t\t\t\t\t\t\t\t\tif (typeof tickValue ===\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.propertyTypes.number\r\n\t\t\t\t\t\t\t\t\t\t\t&& Math.floor(tickValue) ===\r\n\t\t\t\t\t\t\t\t\t\t\t\ttickValue)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn tickValue;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tplugins: {\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\ttext: title\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttooltip: {\r\n\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\tmode: 'index',\r\n\t\t\t\t\t\t\tintersect: false,\r\n\t\t\t\t\t\t\tyAlign: 'center',\r\n\t\t\t\t\t\t\txAlign: 'right'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default bar chart configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {string[] | string[][] | number[] | number[][]\r\n\t\t| Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The set of labels to be displayed in the line chart's x axis.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this line chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the y axis value type.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial line chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic barChart(\r\n\t\ttitle: string,\r\n\t\tlabels: string[] | string[][]\r\n\t\t\t\t| number[] | number[][]\r\n\t\t\t\t| Date[] | Date[][]\r\n\t\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdata: number[] | null | undefined | number[][] = [],\r\n\t\tdataLabel: string = AppConstants.empty): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttype: ChartConstants.chartTypes.bar,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tlabels: labels,\r\n\t\t\t\t\tdatasets: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\t\tlabel: dataLabel\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\toptions: {\r\n\t\t\t\t\tscales: {\r\n\t\t\t\t\t\ty: {\r\n\t\t\t\t\t\t\tbeginAtZero: true,\r\n\t\t\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tplugins: {\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\ttext: title\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaxBarThickness: 50\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default stacked bar chart configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {string[] | string[][] | number[] | number[][]\r\n\t\t| Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The set of labels to be displayed in the line chart's x axis.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this line chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the y axis value type.\r\n\t * @param {DateTime[]} dateRange\r\n\t * The x axis date range.\r\n\t * @param {TimeUnit} timeUnit\r\n\t * The time unit used for the chart data sets.\r\n\t * @param {string} dateFormat\r\n\t * The date format to display the x asis labels and tooltips.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial line chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic stackedBarChart(\r\n\t\ttitle: string,\r\n\t\tlabels: string[] | string[][]\r\n\t\t\t\t| number[] | number[][]\r\n\t\t\t\t| Date[] | Date[][]\r\n\t\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdateRange: DateTime[],\r\n\t\ttimeUnit: TimeUnit,\r\n\t\tdateFormat: string,\r\n\t\tstackedTimeFormat: string,\r\n\t\tdataSetLabels: string[] = null): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\tthis.barChart(\r\n\t\t\t\ttitle,\r\n\t\t\t\tlabels);\r\n\r\n\t\tchartConfiguration.options.scales =\r\n\t\t\t<_DeepPartialObject<{}>>\r\n\t\t\t{\r\n\t\t\t\tx: {\r\n\t\t\t\t\tstacked: true,\r\n\t\t\t\t\tdateRange: dateRange,\r\n\t\t\t\t\ttimeUnit: timeUnit,\r\n\t\t\t\t\tstackedTimeFormat: stackedTimeFormat,\r\n\t\t\t\t\tdateFormat: dateFormat,\r\n\t\t\t\t\tdataSetLabels: dataSetLabels\r\n\t\t\t\t},\r\n\t\t\t\ty: {\r\n\t\t\t\t\tstacked: true,\r\n\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\tdisplay: false\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default pie chart configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {string[] | string[][] | number[] | number[][]\r\n\t\t| Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The splitout of data or 'slices' to be displayed in the pie chart.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this pie chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the pie slice value type.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial pie chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic pieChart(\r\n\t\ttitle: string,\r\n\t\tlabels: string[] | string[][]\r\n\t\t\t| number[] | number[][]\r\n\t\t\t| Date[] | Date[][]\r\n\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdata: number[] | null | undefined | number[][],\r\n\t\tdataLabel: string): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttype: ChartConstants.chartTypes.pie,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tdatasets: [{\r\n\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\tlabel: dataLabel,\r\n\t\t\t\t\t\tborderWidth: 1\r\n\t\t\t\t\t}],\r\n\t\t\t\t\tlabels: labels\r\n\t\t\t\t},\r\n\t\t\t\toptions: {\r\n\t\t\t\t\thover: {\r\n\t\t\t\t\t\tmode: 'point',\r\n\t\t\t\t\t\tintersect: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlayout: {\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaintainAspectRatio: true,\r\n\t\t\t\t\tresponsive: true,\r\n\t\t\t\t\tplugins: {\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\ttext: title\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttooltip: {\r\n\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\tmode: 'point',\r\n\t\t\t\t\t\t\tintersect: true,\r\n\t\t\t\t\t\t\tyAlign: 'center'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default pie doughnut configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {string[] | string[][] | number[] | number[][]\r\n\t\t| Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The splitout of data or 'slices' to be displayed in the pie chart.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this pie chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the pie slice value type.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial pie chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic doughnutChart(\r\n\t\ttitle: string,\r\n\t\tlabels: string[] | string[][]\r\n\t\t\t| number[] | number[][]\r\n\t\t\t| Date[] | Date[][]\r\n\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdata: number[] | null | undefined | number[][],\r\n\t\tdataLabel: string): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttype: ChartConstants.chartTypes.doughnut,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tlabels: labels,\r\n\t\t\t\t\tdatasets: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: dataLabel,\r\n\t\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\t\tborderWidth: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\toptions: {\r\n\t\t\t\t\thover: {\r\n\t\t\t\t\t\tmode: 'point',\r\n\t\t\t\t\t\tintersect: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlayout: {\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaintainAspectRatio: true,\r\n\t\t\t\t\tresponsive: true,\r\n\t\t\t\t\tplugins: {\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\t\ttext: title\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttooltip: {\r\n\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\tmode: 'point',\r\n\t\t\t\t\t\t\tintersect: true,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default time based line chart configuration.\r\n\t *\r\n\t * @param {string} title\r\n\t * The primary chart title.\r\n\t * @param {Date[] | Date[][] | DateTime[] | DateTime[][]} labels\r\n\t * The set of labels to be displayed in the time based line chart's x axis.\r\n\t * @param {number[] | null | undefined | number[][]} data\r\n\t * The data set to be displayed in this time based line chart.\r\n\t * @param {string} dataLabel\r\n\t * The label used for defining the y axis value type.\r\n\t * @param {TimeUnit} timeUnit\r\n\t * The unit of time displayed along the x axis.\r\n\t * @see ChartConstants.timeUnits\r\n\t * @param {number} timeUnitStepSize\r\n\t * The expected x value that the time unit will increase for each data\r\n\t * value. Ie: '1' 'day' or '24' 'hour's.\r\n\t * @param {string} tooltipFormat\r\n\t * A datetime based output of available formats. This will define how the\r\n\t * x or time based data value is displayed in the hover tooltip.\r\n\t * @returns {ChartConfiguration}\r\n\t * A valid initial time based line chart configuration ready for display.\r\n\t * @memberof ChartFactory\r\n\t */\r\n\tpublic timeLineChart(\r\n\t\ttitle: string,\r\n\t\tlabels: Date[] | Date[][]\r\n\t\t\t| DateTime[] | DateTime[][],\r\n\t\tdata: number[] | null | undefined | number[][],\r\n\t\tdataLabel: string,\r\n\t\ttimeUnit: TimeUnit,\r\n\t\ttimeUnitStepSize: number,\r\n\t\ttooltipFormat: string): ChartConfiguration\r\n\t{\r\n\t\tconst chartConfiguration: ChartConfiguration =\r\n\t\t\tthis.lineChart(\r\n\t\t\t\ttitle,\r\n\t\t\t\tlabels,\r\n\t\t\t\tdata,\r\n\t\t\t\tdataLabel);\r\n\r\n\t\tchartConfiguration.options.scales.x =\r\n\t\t\t{\r\n\t\t\t\tdisplay: true,\r\n\t\t\t\tgrid: {\r\n\t\t\t\t\tdisplay: false\r\n\t\t\t\t},\r\n\t\t\t\ttype: 'time',\r\n\t\t\t\tticks: {\r\n\t\t\t\t\tsampleSize: timeUnitStepSize\r\n\t\t\t\t},\r\n\t\t\t\ttime: {\r\n\t\t\t\t\tunit: timeUnit,\r\n\t\t\t\t\ttooltipFormat: tooltipFormat,\r\n\t\t\t\t\tdisplayFormats: {\r\n\t\t\t\t\t\t'minute': 'h:mm a',\r\n\t\t\t\t\t\t'hour': 'h:mm a',\r\n\t\t\t\t\t\t'day': 'M/d/yy',\r\n\t\t\t\t\t\t'week': 'MMM dd',\r\n\t\t\t\t\t\t'month': 'MMM',\r\n\t\t\t\t\t\t'year': 'yyyy'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn chartConfiguration;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{userLabel || 'User'}}\r\n\t\t\t\t\r\n\t\t\t\t{{userName || 'loading...'}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tApplication\r\n\t\t\t\t\r\n\t\t\t\t{{application || 'loading...'}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tToken\r\n\t\t\t\t\r\n\t\t\t\t{{token}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tCreate Date\r\n\t\t\t\t\r\n\t\t\t\t{{createDate}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tLast Active Date\r\n\t\t\t\t\r\n\t\t\t\t{{lastActiveDate}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tExpire Date\r\n\t\t\t\t\r\n\t\t\t\t{{expireDate}}\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecurityApplicationApiService\r\n} from '@api/services/security/security-application.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISecuritySessionEvent\r\n} from '@shared/interfaces/security/security-session-event.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-session',\r\n\ttemplateUrl: './session.component.html',\r\n\tstyleUrls: ['./session.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the session component.\r\n *\r\n * @export\r\n * @class SessionComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n */\r\nexport class SessionComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the SessionComponent class.\r\n\t *\r\n\t * @param {SecurityApplicationApiService} securityApplicationApiService\r\n\t * The api service used to load security application data.\r\n\t * @param {SecuritySessionApiService} securitySessionApiService\r\n\t * The api service used to load security session data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to work with entity instances.\r\n\t * @param {ChartFactory} chartFactory\r\n\t * The chart factory to use for charted information displays.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The api service used to load the side layout data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityApplicationApiService: SecurityApplicationApiService,\r\n\t\tpublic securitySessionApiService: SecuritySessionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic chartFactory: ChartFactory,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the formated token value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic token: string;\r\n\r\n\t/**\r\n\t * Gets or sets the formated create date value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic createDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the formated last active date value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic lastActiveDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the formated expire date value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic expireDate: string;\r\n\r\n\t/**\r\n\t * Gets or sets the user name value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic userName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the user label value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic userLabel: string;\r\n\r\n\t/**\r\n\t * Gets or sets the application value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic application: string;\r\n\r\n\t/**\r\n\t * Gets or sets the context menu items.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic summaryCardItems: object;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic securitySessionEventTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic loadingTableDefinition: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the event by response chart definition.\r\n\t *\r\n\t * @type {{\r\n\t\tchartColors: string[],\r\n\t\tchartLabels: string[],\r\n\t\tchartPivotProperty: string}}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly eventByResponseChartDefinition: {\r\n\t\tchartColors: string[];\r\n\t\tchartLabels: string[];\r\n\t\tchartPivotProperty: string;\r\n\t} = {\r\n\t\t\tchartColors: [\r\n\t\t\t\tChartConstants.themeColors.green,\r\n\t\t\t\tChartConstants.themeColors.red,\r\n\t\t\t\tChartConstants.themeColors.orange\r\n\t\t\t],\r\n\t\t\tchartLabels: [\r\n\t\t\t\t'Success',\r\n\t\t\t\t'Error',\r\n\t\t\t\t'Redirection'\r\n\t\t\t],\r\n\t\t\tchartPivotProperty: 'Response'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets the event by method chart definition.\r\n\t *\r\n\t * @type {{\r\n\t\tchartColors: string[],\r\n\t\tchartLabels: string[],\r\n\t\tchartPivotProperty: string}}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly eventByMethodChartDefinition: {\r\n\t\tchartColors: string[];\r\n\t\tchartLabels: string[];\r\n\t\tchartPivotProperty: string;\r\n\t} = {\r\n\t\t\tchartColors: [\r\n\t\t\t\tChartConstants.themeColors.blue,\r\n\t\t\t\tChartConstants.themeColors.lightBlue,\r\n\t\t\t\tChartConstants.themeColors.yellow\r\n\t\t\t],\r\n\t\t\tchartLabels: [\r\n\t\t\t\t'Get',\r\n\t\t\t\t'Put',\r\n\t\t\t\t'Post'\r\n\t\t\t],\r\n\t\t\tchartPivotProperty: 'Name'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets the events by method string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly eventsByMethod: string = 'Events by Method';\r\n\r\n\t/**\r\n\t * Handles the data setup on initialization.\r\n\t * This will setup the required variables for the session page component.\r\n\t *\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.partiallyMaskedToken(\r\n\t\t\tthis.context.source.selectedItem.token);\r\n\t\tthis.datesSetup();\r\n\t\tthis.userName = await this.getUserName();\r\n\t\tthis.application = await this.getApplication();\r\n\t\tthis.setupContextMenuItems();\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up chart context menu items on this component.\r\n\t * This will setup the data and summary cards.\r\n\t *\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic async setupContextMenuItems(): Promise\r\n\t{\r\n\t\tthis.summaryCardItems =\r\n\t\t[\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdataPromise: new Promise(async (resolve) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst sessionEvents = await this.securitySessionApiService\r\n\t\t\t\t\t\t.querySessionEvents(\r\n\t\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t'id desc',\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\tlet millisecondsCounter = 0;\r\n\t\t\t\t\tlet millisecondsDateDifference = 0;\r\n\r\n\t\t\t\t\tsessionEvents.forEach(\r\n\t\t\t\t\t\t(item: ISecuritySessionEvent) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tmillisecondsDateDifference =\r\n\t\t\t\t\t\t\t\tDate.parse(item.changeDate) -\r\n\t\t\t\t\t\t\t\tDate.parse(item.createDate);\r\n\r\n\t\t\t\t\t\t\tmillisecondsCounter += millisecondsDateDifference;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst millisecondsAverage: number =\r\n\t\t\t\t\t\tmillisecondsCounter / sessionEvents.length;\r\n\r\n\t\t\t\t\tconst timeAverage =\r\n\t\t\t\t\t\tthis.getAverageTime(millisecondsAverage);\r\n\r\n\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresponseTime: `${timeAverage}`\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t\tsummaryTemplate: '${data.responseTime}',\r\n\t\t\t\ttitleTemplate: 'Avg Response Time',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\tsquareCardDisplay: false\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition: >{\r\n\t\t\t\t\t\tdataPromise: new Promise(async (resolve) => {\r\n\t\t\t\t\t\t\tconst sessionEvents =\r\n\t\t\t\t\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t\t\t\t\t.querySessionEvents(\r\n\t\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t\t'id desc',\r\n\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\t\t\tlet successCounter: number = 0;\r\n\t\t\t\t\t\t\tlet redirectionCounter: number = 0;\r\n\t\t\t\t\t\t\tlet errorCounter: number = 0;\r\n\t\t\t\t\t\t\tsessionEvents.forEach(\r\n\t\t\t\t\t\t\t\t(item: ISecuritySessionEvent) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst firstCharacter: string =\r\n\t\t\t\t\t\t\t\t\t\titem.response?.slice(0, 1);\r\n\t\t\t\t\t\t\t\t\tif (firstCharacter === '2')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsuccessCounter++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (firstCharacter === '3')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tredirectionCounter++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (firstCharacter === '4'\r\n\t\t\t\t\t\t\t\t\t\t|| firstCharacter === '5')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\terrorCounter++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tresponse: 'success'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tvalue: successCounter\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tresponse: 'redirection'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tvalue: redirectionCounter\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tresponse: 'error'\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tvalue: errorCounter\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tchartColors:\r\n\t\t\t\t\t\t\tthis.eventByResponseChartDefinition\r\n\t\t\t\t\t\t\t\t.chartColors,\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.doughnutChart(\r\n\t\t\t\t\t\t\t'Error Count Ratio',\r\n\t\t\t\t\t\t\tthis.eventByResponseChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t'Number of Events'),\r\n\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\tthis.eventByResponseChartDefinition\r\n\t\t\t\t\t\t\t\t.chartPivotProperty\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: 'Error Count Ratio',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\t\tsummaryCardDisplay: false,\r\n\t\t\t\t\tsquareCardDisplay: true\r\n\t\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdataPromise: new Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst sessionEvents =\r\n\t\t\t\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t\t\t\t.aggregateSessionEvents(\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\t\t'Count',\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\teventCounter: sessionEvents[0].value\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}),\r\n\t\t\t\tsummaryTemplate: '${data.eventCounter}',\r\n\t\t\t\ttitleTemplate: 'Number of Events',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\tsquareCardDisplay: false\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tchartDefinition: >{\r\n\t\t\t\t\tdataPromise: new Promise(async (resolve) => {\r\n\t\t\t\t\t\tconst sessionEvents =\r\n\t\t\t\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t\t\t\t.querySessionEvents(\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t'id desc',\r\n\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\tAppConstants.dataLimits.large,\r\n\t\t\t\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\t\tlet getCounter: number = 0;\r\n\t\t\t\t\t\tlet putCounter: number = 0;\r\n\t\t\t\t\t\tlet postCounter: number = 0;\r\n\r\n\t\t\t\t\t\tsessionEvents.forEach(\r\n\t\t\t\t\t\t\t(item: ISecuritySessionEvent) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst firstCharacters: string =\r\n\t\t\t\t\t\t\t\t\titem.name?.slice(0, 4);\r\n\t\t\t\t\t\t\t\tif (firstCharacters\r\n\t\t\t\t\t\t\t\t\t.includes(AppConstants.apiMethods\r\n\t\t\t\t\t\t\t\t\t\t.get.toUpperCase()))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tgetCounter++;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\tif (firstCharacters\r\n\t\t\t\t\t\t\t\t\t\t.includes(AppConstants.apiMethods\r\n\t\t\t\t\t\t\t\t\t\t\t.put.toUpperCase()))\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tputCounter++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\tif (firstCharacters\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(AppConstants.apiMethods\r\n\t\t\t\t\t\t\t\t\t\t\t\t.post.toUpperCase()))\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tpostCounter++;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: AppConstants.apiMethods.get\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: getCounter\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: AppConstants.apiMethods.update\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: putCounter\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: AppConstants.apiMethods.create\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: postCounter\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tchartColors: this.eventByMethodChartDefinition.chartColors,\r\n\t\t\t\t\tchartConfiguration: this.chartFactory.doughnutChart(\r\n\t\t\t\t\t\tthis.eventsByMethod,\r\n\t\t\t\t\t\tthis.eventByMethodChartDefinition.chartLabels,\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\tthis.eventsByMethod),\r\n\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\tthis.eventByMethodChartDefinition\r\n\t\t\t\t\t\t\t.chartPivotProperty\r\n\t\t\t\t},\r\n\t\t\t\ttitleTemplate: this.eventsByMethod,\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\tsummaryCardDisplay: false,\r\n\t\t\t\tsquareCardDisplay: true\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Event',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'response',\r\n\t\t\t\t\tcolumnHeader: 'Result',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Time',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the average time.\r\n\t *\r\n\t * @param {number} millisecondsAverage\r\n\t * The milliseconds average time.\r\n\t * @returns {string}\r\n\t * The calculated average time.\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic getAverageTime(millisecondsAverage: number): string\r\n\t{\r\n\t\tif (this.siteLayoutService.getContentCssClass()\r\n\t\t\t!== AppConstants.cssClasses.pContentSmallPhone)\r\n\t\t{\r\n\t\t\treturn millisecondsAverage % 1 === 0\r\n\t\t\t\t? millisecondsAverage + 'ms'\r\n\t\t\t\t: millisecondsAverage.toFixed(2) + 'ms';\r\n\t\t}\r\n\t\telse if (millisecondsAverage < 10)\r\n\t\t{\r\n\t\t\treturn (millisecondsAverage % 1 === 0)\r\n\t\t\t\t? millisecondsAverage + 'ms'\r\n\t\t\t\t: millisecondsAverage.toFixed(2) + 'ms';\r\n\t\t}\r\n\t\telse if ((millisecondsAverage / 1000) < 10)\r\n\t\t{\r\n\t\t\treturn (millisecondsAverage / 1000) % 1 === 0\r\n\t\t\t\t? (millisecondsAverage / 1000) + 's'\r\n\t\t\t\t: (millisecondsAverage / 1000).toFixed(2) + 's';\r\n\t\t}\r\n\r\n\t\treturn '+1min';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the interpolated value of a user name\r\n\t * queried from the api interface.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic async getUserName(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst user = await this.entityInstanceApiService\r\n\t\t\t.get(this.context.source.selectedItem.entityInstanceId);\r\n\r\n\t\tconst userFullName = StringHelper.interpolate(\r\n\t\t\t'${user.data.firstName} ${user.data.lastName}',\r\n\t\t\tuser);\r\n\r\n\t\tif (userFullName.includes(AppConstants.undefined))\r\n\t\t{\r\n\t\t\tthis.userLabel = 'User Id';\r\n\r\n\t\t\treturn this.context.source.selectedItem.entityInstanceId.toString();\r\n\t\t}\r\n\r\n\t\tthis.userLabel = 'User';\r\n\r\n\t\treturn userFullName;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the interpolated value of an application\r\n\t * queried from the api interface.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic async getApplication(): Promise\r\n\t{\r\n\t\tconst application = await this.securityApplicationApiService\r\n\t\t\t.get(this.context.source.selectedItem.applicationId);\r\n\r\n\t\treturn\tStringHelper.interpolate('${application.name}', application);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the dates using luxon to translate the utc to local.\r\n\t *\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic datesSetup(): void\r\n\t{\r\n\t\tconst dbCreateDate =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.createDate);\r\n\t\tthis.createDate = this.dateFormatter(dbCreateDate);\r\n\r\n\t\tconst dbLastActiveDate =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.lastActiveDate);\r\n\t\tthis.lastActiveDate = this.dateFormatter(dbLastActiveDate);\r\n\r\n\t\tconst dbExpireDate =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.expireDate);\r\n\t\tthis.expireDate = this.dateFormatter(dbExpireDate);\r\n\t}\r\n\r\n\t/**\r\n\t * Translates the date to an specific format and appends\r\n\t * the time difference from that date to now by using luxon js.\r\n\t *\r\n\t * @param {DateTime} date\r\n\t * The date to be formatted.\r\n\t * @returns {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic dateFormatter(\r\n\t\tdate: DateTime): string\r\n\t{\r\n\t\treturn date.toLocal()\r\n\t\t\t.toFormat(DateHelper.presetFormats.dateAndHourFormat)\r\n\t\t\t+ ` (${date.toRelative()})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the token full value to a patialle masked token.\r\n\t *\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic partiallyMaskedToken(fullToken: string): void\r\n\t{\r\n\t\tconst partialToken: string = fullToken?.substring(\r\n\t\t\tfullToken.length - 10,\r\n\t\t\tfullToken.length);\r\n\t\tconst mask: string = '...';\r\n\t\tthis.token = mask + partialToken;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the definitions for the entity search common table\r\n\t *\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.securitySessionEventTableDefinitions =\r\n\t\t\t{\r\n\r\n\t\t\t\ttableTitle: 'Session Events',\r\n\t\t\t\texpandTitle: () => 'View Event',\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tid: this.context.source.selectedItem.id,\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tlast: null,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst sessionEvents: ISecuritySessionEvent[] =\r\n\t\t\t\t\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t\t\t\t\t.querySessionEvents(\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.id,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.limit,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.last);\r\n\r\n\t\t\t\t\t\treturn sessionEvents;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Request',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'response',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Response',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'createDate',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customCalendar,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Create Date',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'changeDate',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customCalendar,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Change Date',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinition = false;\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t
      \r\n\t\t\t
    • \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    • \r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tanimate,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tBooleanFadeAnimation,\r\n\tDisplayAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-information-menu',\r\n\ttemplateUrl: './information-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./information-menu.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tBooleanFadeAnimation,\r\n\t\tDisplayAnimation,\r\n\t\ttrigger('easeAnimation', [\r\n\t\t\tstate('void', style({\r\n\t\t\t\ttransform: 'translate(.5em, 0)',\r\n\t\t\t\topacity: 0\r\n\t\t\t})),\r\n\t\t\tstate('*', style({\r\n\t\t\t\ttransform: 'translate(.5em, 0)',\r\n\t\t\t\topacity: 1\r\n\t\t\t})),\r\n\t\t\ttransition('* => void',\r\n\t\t\t\tanimate('195ms ease-out')),\r\n\t\t\ttransition('void => *',\r\n\t\t\t\tanimate('195ms ease-in'))\r\n\t\t]),\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an information menu.\r\n *\r\n * @export\r\n * @class InformationMenuComponent\r\n * @implements {AfterViewInit}\r\n */\r\nexport class InformationMenuComponent\r\nimplements AfterViewInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the information menu component.\r\n\t *\r\n\t * @param {SiteLayoutService}\r\n\t * The site layout service used to watch for layout changes.\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the menu items to display in this component.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\t@Input() public informationMenuItems:\r\n\t\tIInformationMenuItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the display value for a completed data load for\r\n\t * an async populated information menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\t@Input() public initialLoadComplete: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the element reference for the information menu\r\n\t * item list.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\t@ViewChild('InformationMenuItems', { read: ElementRef })\r\n\tpublic informationMenu: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the active overlay value, used to define\r\n\t * if an information menu item is currently displaying\r\n\t * a popout.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic overlayActive: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component currently\r\n\t * displayed in the overlay.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic overlayDynamicComponent: string;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic overlayContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the display value for the left mask.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic displayLeftMask: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the display value for the right mask.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic displayRightMask: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or the draggable value on whether or nor additional\r\n\t * content exists and is not displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic get draggable(): boolean\r\n\t{\r\n\t\treturn this.displayLeftMask === true\r\n\t\t\t|| this.displayRightMask === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the multiplier for the drag scroll event.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tprivate readonly scrollMultiplier: number = 2.5;\r\n\r\n\t/**\r\n\t * Gets the debounce delay for allowing a loaded\r\n\t * view and calculating the masks.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tprivate readonly afterViewInitDebounceDelay: number =\r\n\t\tAppConstants.time.quarterSecond;\r\n\r\n\t/**\r\n\t * Gets the debounce delay for validating proper arrow displays\r\n\t * following layout changes.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tprivate readonly layoutChangedDebounceDelay: number =\r\n\t\tAppConstants.time.twentyFiveMilliseconds;\r\n\r\n\t/**\r\n\t * Handles the site layout change event.\r\n\t * This will set the scroll masks on layout changes and hide the\r\n\t * overlay.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.initialLoadComplete === true)\r\n\t\t{\r\n\t\t\tthis.closeOverlayPanel();\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.informationMenu)\r\n\t\t\t&& !AnyHelper.isNull(this.informationMenu.nativeElement))\r\n\t\t{\r\n\t\t\tthis.scrollInformationMenuTo(\r\n\t\t\t\tthis.informationMenu.nativeElement.scrollLeft);\r\n\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setScrollMasks(\r\n\t\t\t\t\tthis.informationMenu.nativeElement.scrollLeft);\r\n\t\t\t},\r\n\t\t\tthis.layoutChangedDebounceDelay);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this list when a non bubbled click\r\n\t * event occurs outside of this element.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent)\r\n\tpublic hideAssociatedMenus(): void\r\n\t{\r\n\t\tthis.closeOverlayPanel();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the after view init event.\r\n\t * This will set the scroll masks on initial load.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setScrollMasks(\r\n\t\t\t\t\tthis.informationMenu.nativeElement.scrollLeft);\r\n\t\t\t},\r\n\t\t\tthis.afterViewInitDebounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the scroll right button click event.\r\n\t * This will translate the x position of the div 100%\r\n\t * to the left.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic scrollRight(): void\r\n\t{\r\n\t\tconst horizontalScroll: number =\r\n\t\t\tthis.informationMenu.nativeElement.scrollLeft\r\n\t\t\t\t+ this.getHorizontalScrollWidth();\r\n\r\n\t\tthis.scrollInformationMenuTo(horizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the scroll left button click event.\r\n\t * This will translate the x position of the div 100%\r\n\t * to the right.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic scrollLeft(): void\r\n\t{\r\n\t\tconst horizontalScroll: number =\r\n\t\t\tthis.informationMenu.nativeElement.scrollLeft\r\n\t\t\t\t- this.getHorizontalScrollWidth();\r\n\r\n\t\tthis.scrollInformationMenuTo(horizontalScroll);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the press event sent from a hammerjs touch event.\r\n\t * This will set the active class on the information menu list.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic press(): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.informationMenu.nativeElement\r\n\t\t\t\t.classList.add('active');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the press up event sent from a hammerjs touch event.\r\n\t * This will remove the active class on the information menu list.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic pressUp(): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.informationMenu.nativeElement\r\n\t\t\t\t.classList.remove('active');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the swipe event sent from a hammerjs touch event.\r\n\t * This will calculate the direction and velocity of this\r\n\t * swipe action and scroll to that location.\r\n\t *\r\n\t * @param {any} event\r\n\t * The sent swipe event.\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic swipe(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (this.draggable === true)\r\n\t\t{\r\n\t\t\tthis.scrollInformationMenuTo(\r\n\t\t\t\tthis.informationMenu.nativeElement.scrollLeft\r\n\t\t\t\t\t- (Math.abs(event.deltaX)\r\n\t\t\t\t\t\t* event.overallVelocityX\r\n\t\t\t\t\t\t* this.scrollMultiplier));\r\n\r\n\t\t\tthis.pressUp();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click outside event by closing the active overlay\r\n\t * panel.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic closeOverlayPanel(): void\r\n\t{\r\n\t\tif (this.overlayActive === true)\r\n\t\t{\r\n\t\t\tthis.overlayActive = false;\r\n\t\t\tthis.setScrollMasks(\r\n\t\t\t\tthis.informationMenu.nativeElement.scrollLeft);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the summary card click event sent from a child summary card.\r\n\t * This will handle array based displays, overlays, and scrolling when\r\n\t * a click event occurs in the child.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic summaryCardClicked(\r\n\t\tdata: {\r\n\t\t\tdynamicComponent: string;\r\n\t\t\tsummaryCardElement: HTMLDivElement;\r\n\t\t\tdynamicComponentContext: any;\r\n\t\t}): void\r\n\t{\r\n\t\tconst displayOverlay =\r\n\t\t\t!AnyHelper.isNullOrEmpty(data.dynamicComponent);\r\n\r\n\t\tif (this.overlayActive === true\r\n\t\t\t&& displayOverlay === true)\r\n\t\t{\r\n\t\t\tthis.overlayDynamicComponent = data.dynamicComponent;\r\n\t\t\tthis.overlayContext = data.dynamicComponentContext;\r\n\t\t\tthis.overlayActive = false;\r\n\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.scrollToSummaryCard(\r\n\t\t\t\t\t\tdata.summaryCardElement,\r\n\t\t\t\t\t\ttrue);\r\n\t\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.overlayDynamicComponent = data.dynamicComponent;\r\n\t\tthis.overlayContext = data.dynamicComponentContext;\r\n\t\tthis.overlayActive =\r\n\t\t\tdisplayOverlay && !this.overlayActive;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.scrollToSummaryCard(\r\n\t\t\t\t\tdata.summaryCardElement,\r\n\t\t\t\t\tthis.overlayActive);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the horizontal scroll width of the information\r\n\t * menu component.\r\n\t *\r\n\t * @returns {number}\r\n\t * The calculated scroll width of the information menu items.\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic getHorizontalScrollWidth(): number\r\n\t{\r\n\t\treturn this.informationMenu.nativeElement\r\n\t\t\t.getBoundingClientRect().width;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the display values for the left and right mask based\r\n\t * on available scroll translations in the information menu\r\n\t * list.\r\n\t *\r\n\t * @param {number} horizontalScroll\r\n\t * The x translation recently scrolled to.\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic setScrollMasks(\r\n\t\thorizontalScroll: number): void\r\n\t{\r\n\t\tthis.displayLeftMask =\r\n\t\t\thorizontalScroll > 0;\r\n\t\tthis.displayRightMask =\r\n\t\t\tthis.informationMenu.nativeElement.scrollWidth >\r\n\t\t\t\thorizontalScroll\r\n\t\t\t\t\t+ this.informationMenu.nativeElement\r\n\t\t\t\t\t\t.getBoundingClientRect().width + 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a smooth scroll to animation on the information\r\n\t * menu list.\r\n\t *\r\n\t * @param {number} horizontalScroll\r\n\t * The x translation to perform on the current information\r\n\t * menu list. This is a bounds safe action and will only\r\n\t * fire if a scroll is available to this sent location.\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic scrollInformationMenuTo(\r\n\t\thorizontalScroll: number): void\r\n\t{\r\n\t\tthis.informationMenu.nativeElement\r\n\t\t\t.scrollTo(\r\n\t\t\t\t{\r\n\t\t\t\t\tleft: horizontalScroll,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() => this.setScrollMasks(horizontalScroll),\r\n\t\t\tthis.layoutChangedDebounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the information menu to a centered summary card\r\n\t * and recalculates mask and scroll displays.\r\n\t *\r\n\t * @memberof InformationMenuComponent\r\n\t */\r\n\tpublic scrollToSummaryCard(\r\n\t\tsummaryCardComponent: HTMLDivElement,\r\n\t\tsetAsActive: boolean): void\r\n\t{\r\n\t\tthis.overlayActive = setAsActive;\r\n\r\n\t\tconst elementLocation: number =\r\n\t\t\tthis.informationMenu.nativeElement.scrollLeft\r\n\t\t\t\t+ summaryCardComponent\r\n\t\t\t\t\t.getBoundingClientRect().left\r\n\t\t\t\t- this.informationMenu.nativeElement\r\n\t\t\t\t\t.getBoundingClientRect().left;\r\n\t\tconst elementMiddle: number =\r\n\t\t\tsummaryCardComponent\r\n\t\t\t\t.getBoundingClientRect().width / 2;\r\n\t\tconst informationMenuMiddle: number =\r\n\t\t\tthis.getHorizontalScrollWidth() / 2;\r\n\r\n\t\tthis.scrollInformationMenuTo(\r\n\t\t\telementLocation\r\n\t\t\t\t- informationMenuMiddle\r\n\t\t\t\t\t+ elementMiddle);\r\n\r\n\t\tthis.setScrollMasks(\r\n\t\t\tthis.informationMenu.nativeElement.scrollLeft);\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tSessionComponent\r\n} from '@admin/components/security/sessions/session-expand/session.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tChartHelper\r\n} from '@shared/helpers/chart.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIChartContext\r\n} from '@shared/interfaces/dynamic-interfaces/chart-context.interface';\r\nimport {\r\n\tISecuritySession\r\n} from '@shared/interfaces/security/security-session.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-sessions',\r\n\ttemplateUrl: './sessions.component.html',\r\n\tstyleUrls: [\r\n\t\t'./sessions.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the sessions component.\r\n *\r\n * @export\r\n * @class SessionsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class SessionsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the SessionsComponent class.\r\n\t *\r\n\t * @param {SecuritySessionApiService} securitySessionApiService\r\n\t * The api service used to load security session data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to work with entity instances.\r\n\t * @param {ChartFactory} chartFactory\r\n\t * The chart factory to use for charted information displays.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securitySessionApiService: SecuritySessionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic chartFactory: ChartFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t\tthis.apiService = securitySessionApiService;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by active sessions. The current\r\n\t * filter that will limit the query to active sessions. Active\r\n\t * is defined as enabled with an expire date greater than right now.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic activeSessionsFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by active users. The current\r\n\t * filter that will limit the query to active users. Active\r\n\t * is defined as enabled with an expire date greater than right now.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic activeUsersCount: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the active users filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic activeUsersFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter to occurrences today.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic startOfDayFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a by hour\r\n\t * chart splitout for today.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic todaysHourLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by the last thirty days.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic lastThirtyDaysFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a last thirty dat\r\n\t * chart splitout.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic thirtyDayLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the array of information menu items.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic informationMenuItems: IInformationMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the array of page level charts.\r\n\t *\r\n\t * @type {IChartDefinition[]}\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic pageCharts: IChartDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tpublic securitySessionsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Sets the Sessions Last Thirty Days string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly sessionsLastThirtyDays: string = 'Sessions Last 30 Days';\r\n\r\n\t/**\r\n\t * Sets the Users Last Thirty Days string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly usersLastThirtyDays: string = 'Users Last 30 Days';\r\n\r\n\t/**\r\n\t * Sets the Number Of Sessions string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly numberOfSessions: string = 'Number of Sessions';\r\n\r\n\t /**\r\n\t * Sets the Number Of Users string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionComponent\r\n\t */\r\n\tprivate readonly numberOfUsers: string = 'Number of Users';\r\n\r\n\t /**\r\n\t * Sets up variables used in this component.\r\n\t *\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tconst currentDate: DateTime = DateTime.local();\r\n\t\tconst currentUtcDateTime: string =\r\n\t\tcurrentDate.toISO();\r\n\t\tthis.activeSessionsFilter =\r\n\t\t`Enabled eq true AND ExpireDate > '${currentUtcDateTime}'`;\r\n\t\tthis.activeUsersFilter =\r\n\t\t`Enabled eq true AND ExpireDate > '${currentUtcDateTime}'`;\r\n\r\n\t\tthis.startOfDayFilter =\r\n\t\tApiFilterHelper.getStartOfDayFilter(\r\n\t\t\t'CreateDate',\r\n\t\t\tcurrentDate);\r\n\t\tthis.lastThirtyDaysFilter =\r\n\t\tApiFilterHelper.getLastNumberOfDaysFilter(\r\n\t\t\t'CreateDate',\r\n\t\t\tcurrentDate,\r\n\t\t\tAppConstants.days.thirtyDays);\r\n\t\tthis.todaysHourLabels =\r\n\t\tChartHelper.getHourLabelsByDay(\r\n\t\t\tcurrentDate);\r\n\t\tthis.thirtyDayLabels =\r\n\t\tChartHelper.getLastNumberOfDayLabels(\r\n\t\t\tcurrentDate,\r\n\t\t\tAppConstants.days.thirtyDays);\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'entityInstanceId',\r\n\t\t\t\t\tcolumnHeader: 'User',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'applicationId',\r\n\t\t\t\t\tcolumnHeader: 'Application',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Create Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'lastActiveDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Last Active Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'expireDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Expire Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'token',\r\n\t\t\t\t\tcolumnHeader: 'Token',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'enabled',\r\n\t\t\t\t\tcolumnHeader: 'Enabled',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t /**\r\n\t * Sets up information menu items displayed in this component.\r\n\t *\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic setupInformationMenuItems(): void\r\n\t{\r\n\t\tconst primaryGroupByValues: string =\r\n\t\t'CreateDate.ConvertToSystemTime().Year, '\r\n\t\t\t\t+ 'CreateDate.ConvertToSystemTime().Month, '\r\n\t\t\t\t+ 'CreateDate.ConvertToSystemTime().Day';\r\n\t\tconst hourGroupByValue: string =\r\n\t\t\t'CreateDate.ConvertToSystemTime().Hour';\r\n\r\n\t\tthis.informationMenuItems =\r\n\t\t\t[]>\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\tthis.sessionsLastThirtyDays,\r\n\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\tthis.numberOfSessions,\r\n\t\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t\t>>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdataPromise:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.sessionsLastThirtyDays,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfSessions,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.timeUnits.day,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.day),\r\n\t\t\t\t\t\t\t\t\t\t\tchartColors: [\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.themeColors.primary\r\n\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\t\tfillMissingDataSets: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: this.sessionsLastThirtyDays,\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.extraLarge\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues + ', EntityInstanceId'),\r\n\t\t\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\tthis.usersLastThirtyDays,\r\n\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\tthis.numberOfSessions,\r\n\t\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t\t>>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdataPromise:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ ', EntityInstanceId'),\r\n\t\t\t\t\t\t\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.usersLastThirtyDays,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfUsers,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.timeUnits.day,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\t\tfillMissingDataSets: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: this.usersLastThirtyDays,\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t+ `, ${hourGroupByValue}`),\r\n\t\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t'Today\\'s Sessions',\r\n\t\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\tthis.numberOfSessions,\r\n\t\t\t\t\t\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t\t>>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdataPromise:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ AppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.characters.comma\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ hourGroupByValue),\r\n\t\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Today\\'s Sessions',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfSessions,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.timeUnits.hour,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\t\tfillMissingDataSets: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: 'Sessions Today',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.medium\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t+ `, ${hourGroupByValue}, `\r\n\t\t\t\t\t\t\t\t\t+ 'EntityInstanceId'),\r\n\t\t\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t'Today\\'s Users',\r\n\t\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\tthis.numberOfUsers,\r\n\t\t\t\t\t\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t\t>>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tchartDefinition: {\r\n\t\t\t\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ `, ${hourGroupByValue}, `\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'EntityInstanceId'),\r\n\t\t\t\t\t\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\t'Today\\'s Users',\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfUsers,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\t\tfillMissingDataSets: true,\r\n\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: 'Users Today',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.small\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tthis.activeSessionsFilter,\r\n\t\t\t\t\t\tnull),\r\n\t\t\t\t\tsummaryTemplate: '${data[0].value}',\r\n\t\t\t\t\ttitleTemplate: 'Total Active Sessions',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull),\r\n\t\t\t\t\tsummaryTemplate: '${data[0].value}',\r\n\t\t\t\t\ttitleTemplate: 'Total Sessions',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.medium\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tthis.activeUsersFilter,\r\n\t\t\t\t\t\t'EntityInstanceId'),\r\n\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\tsummaryTemplate: '${data[0].value}',\r\n\t\t\t\t\ttitleTemplate: 'Total Active Users',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.medium\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t'EntityInstanceId'),\r\n\t\t\t\t\tgroupByCount: true,\r\n\t\t\t\t\tsummaryTemplate: '${data[0].value}',\r\n\t\t\t\t\ttitleTemplate: 'Total Users',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.small\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t /**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.securitySessionsTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Sessions',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Session'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst securitySessions: ISecuritySession[] =\r\n\t\t\t\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\treturn securitySessions.map(\r\n\t\t\t\t\t\t\t(session: ISecuritySession) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsession.token =\r\n\t\t\t\t\t\t\t\t\tsession.token.substring(0, 16)\r\n\t\t\t\t\t\t\t\t\t\t+ '...';\r\n\r\n\t\t\t\t\t\t\t\treturn session;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Latest Sessions',\r\n\t\t\t\t\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Latest Active Sessions',\r\n\t\t\t\t\t\t\t\t\tvalue: 'Enabled eq true AND ExpireDate > '\r\n\t\t\t\t\t\t\t\t\t\t+ `'${DateTime.local().toISO()}'`\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilterQuery\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcomponent: SessionComponent,\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'enabled',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputSwitch,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'expireDate',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customCalendar,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Expire Date',\r\n\t\t\t\t\t\t\t\t\tshowTime: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [],\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'enabled',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputSwitch,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Enabled',\r\n\t\t\t\t\t\t\t\t\tdefault: false\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'expireDate',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customCalendar,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Expire Date',\r\n\t\t\t\t\t\t\t\t\tshowTime: true,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.updateSession()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an existing session.\r\n\t *\r\n\t * @async\r\n\t * @memberof SessionsComponent\r\n\t */\r\n\tprivate async updateSession(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\t\tselectedItem.expireDate =\r\n\t\t\t(selectedItem.enabled === false)\r\n\t\t\t\t? DateTime.local().toISO()\r\n\t\t\t\t: selectedItem.expireDate;\r\n\r\n\t\tconst updateSession: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\tselectedItem);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateSession(),\r\n\t\t\t\t'Updating Sesssion',\r\n\t\t\t\t'Updated Session',\r\n\t\t\t\t`Session ${selectedItem.id} was updated.`,\r\n\t\t\t\t`Session ${selectedItem.id} was not `\r\n\t\t\t\t\t+ 'updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n}","\r\n
    \r\n\t
    \r\n\t\t\r\n\t\t\tGroup Details\r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tName\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{context.source.selectedItem.name}}\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-manage-user-group',\r\n\ttemplateUrl: './manage-user-group.component.html',\r\n\tstyleUrls: [\r\n\t\t'./manage-user-group.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the security applications\r\n * component.\r\n *\r\n * @export\r\n * @class ManageUserGroupComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ManageUserGroupComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ManageUserGroupComponent class.\r\n\t *\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The api service used to load security application data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to load entity instance data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {Router} router\r\n\t * The router used in this component for site navigation.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used in this component for site navigation.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic router: Router,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof BaseExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tpublic manageUserGroupTableDefinitionsView: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table update view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tpublic manageUserGroupTableDefinitionsUpdate: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic viewAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic viewSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic updateAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic updateSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic formly layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the error message displayed on the formly async validator.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tpublic asyncValidatorErrorMessage: string;\r\n\r\n\t/**\r\n\t * Gets or sets the route debounce time.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate readonly routeDebounceTime: number =\r\n\t\tAppConstants.time.oneHundredMilliseconds;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tthis.viewAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'userName',\r\n\t\t\t\t\tcolumnHeader: 'User Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.viewSelectedColumns =\r\n\t\t\tthis.viewAvailableColumns;\r\n\r\n\t\tthis.updateAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.viewAvailableColumns\r\n\t\t\t];\r\n\t\tthis.updateSelectedColumns =\r\n\t\t\tthis.updateAvailableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\tdisabled:\r\n\t\t\t\t\t\t\tthis.context.source.displayMode ===\r\n\t\t\t\t\t\t\t\tAppConstants.displayMode.view\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tdisabled:\r\n\t\t\t\t\t\t\tthis.context.source.displayMode ===\r\n\t\t\t\t\t\t\t\tAppConstants.displayMode.view,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\trows: 5,\r\n\t\t\t\t\t\tdisabled:\r\n\t\t\t\t\t\t\tthis.context.source.displayMode ===\r\n\t\t\t\t\t\t\t\tAppConstants.displayMode.view\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst sharedTableDefinitions: any =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Membership',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'User Membership'),\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst users: number[] =\r\n\t\t\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t\t\t.getSecurityGroupUsers(\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id);\r\n\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\t\t\t\t\tconst filterQuery: string =\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(objectSearch.filter)\r\n\t\t\t\t\t\t\t\t? `Id in (${users})`\r\n\t\t\t\t\t\t\t\t: `Id in (${users}) AND ${objectSearch.filter}`;\r\n\r\n\t\t\t\t\t\tconst entityInstances: object[] =\r\n\t\t\t\t\t\t\t\t(!AnyHelper.isNull(users[0]))\r\n\t\t\t\t\t\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t\t\t.query(filterQuery,\r\n\t\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\t\tobjectSearch.limit)\r\n\t\t\t\t\t\t\t\t\t: [];\r\n\r\n\t\t\t\t\t\tconst manageGroupUsers: object[] = [];\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(entityInstances[0]))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tentityInstances.forEach(\r\n\t\t\t\t\t\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst userName: string =\r\n\t\t\t\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\t\t\t\t'${entityInstance.data.userName}',\r\n\t\t\t\t\t\t\t\t\t\t\tentityInstance);\r\n\r\n\t\t\t\t\t\t\t\t\tmanageGroupUsers.push(\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tid: entityInstance.id,\r\n\t\t\t\t\t\t\t\t\t\t\tuserName: userName\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn manageGroupUsers;\r\n\t\t\t\t\t},\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.manageUserGroupTableDefinitionsView =\r\n\t\t\t{\r\n\t\t\t\t...sharedTableDefinitions,\r\n\t\t\t\tavailableColumns: this.viewAvailableColumns,\r\n\t\t\t\tselectedColumns: this.viewSelectedColumns,\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`${this.moduleService\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.name}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ '/entities',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.typeGroups\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.users,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'view',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\tthis.routeDebounceTime);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.manageUserGroupTableDefinitionsUpdate =\r\n\t\t\t{\r\n\t\t\t\t...sharedTableDefinitions,\r\n\t\t\t\tavailableColumns: this.updateAvailableColumns,\r\n\t\t\t\tselectedColumns: this.updateSelectedColumns,\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'userName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tvalidUsername: {\r\n\t\t\t\t\t\t\t\t\t\texpression: async(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.validUserName(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield),\r\n\t\t\t\t\t\t\t\t\t\tmessage: AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Add',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createSecurityGroupUser()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\t`${this.moduleService.name}/`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'entities',\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.typeGroups.users,\r\n\t\t\t\t\t\t\t\t\t\t\t\t'view',\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: () => this.deleteSecurityGroupUser()\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t\t'Confirm to remove user '\r\n\t\t\t\t\t\t\t\t+ `${this.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem?.id} `\r\n\t\t\t\t\t\t\t\t+ `${this.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem?.userName} `\r\n\t\t\t\t\t\t\t\t+ 'from Security Group'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if user name is valid.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The field form config.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async validUserName(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst initialPromiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tthis.entityInstanceApiService.query(\r\n\t\t\t\t\t`userName eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t];\r\n\r\n\t\tinitialPromiseArray.push(\r\n\t\t\tthis.securityGroupApiService.getSecurityGroupUsers(\r\n\t\t\t\tthis.context.source.selectedItem?.id));\r\n\r\n\t\treturn Promise.all(\r\n\t\t\tinitialPromiseArray)\r\n\t\t\t.then((\r\n\t\t\t\t[\r\n\t\t\t\t\tentityInstance,\r\n\t\t\t\t\tsecurityGroupUsers\r\n\t\t\t\t]) =>\r\n\t\t\t{\r\n\t\t\t\tfield.asyncValidators.validUsername.message =\r\n\t\t\t\t\t'Invalid username.';\r\n\t\t\t\tlet subscribedUser: boolean = false;\r\n\t\t\t\tsecurityGroupUsers.forEach((user: number) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (user === entityInstance[0]?.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsubscribedUser = true;\r\n\t\t\t\t\t\tfield.asyncValidators.validUsername.message =\r\n\t\t\t\t\t\t\t'Username already subscribed.';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn Promise.resolve(\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(entityInstance[0])\r\n\t\t\t\t\t\t\t&& subscribedUser === false);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * creates a new Security Group User.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async createSecurityGroupUser(): Promise\r\n\t{\r\n\t\tconst createSecurityGroupUser: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst entityInstanceUser: IEntityInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t`userName eq '${\r\n\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.userName}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\tawait this.securityGroupApiService.createSecurityGroupUser(\r\n\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\tentityInstanceUser.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem.id =\r\n\t\t\t\t\tentityInstanceUser.id;\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateSecurityGroupUser(),\r\n\t\t\t\t'Adding User',\r\n\t\t\t\t'Added User',\r\n\t\t\t\t'User was added.',\r\n\t\t\t\t'User was not added.'));\r\n\t}\r\n\r\n\t/**\r\n\t * deletes an existing Security Group User.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async deleteSecurityGroupUser(): Promise\r\n\t{\r\n\t\tconst deleteSecurityGroupUser: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupApiService.deleteSecurityGroupUser(\r\n\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\tthis.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteSecurityGroupUser(),\r\n\t\t\t\t'Removing User',\r\n\t\t\t\t'Removed User',\r\n\t\t\t\t'User was removed.',\r\n\t\t\t\t'User was not removed.'));\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tManageUserGroupComponent\r\n} from '@admin/components/security/users/manage-user-group-expand/manage-user-group.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-manage-user-groups',\r\n\ttemplateUrl: './manage-user-groups.component.html',\r\n\tstyleUrls: [\r\n\t\t'./manage-user-groups.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the security applications\r\n * component.\r\n *\r\n * @export\r\n * @class ManageUserGroupsComponent\r\n */\r\nexport class ManageUserGroupsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ManageUserGroupsComponent class.\r\n\t *\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The api service used to load security group data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof ManageUserGroupsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUserGroupsComponent\r\n\t */\r\n\tpublic manageUserGroupsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ManageUserGroupsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.manageUserGroupsTableDefinitions = {\r\n\t\t\ttableTitle: 'Groups',\r\n\t\t\texpandTitle: () =>\r\n\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t'Group'),\r\n\t\t\tobjectSearch: {\r\n\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t},\r\n\t\t\tapiPromise: (objectSearch: IObjectSearch) =>\r\n\t\t\t\tthis.securityGroupApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\tcommonTableContext:\r\n\t\t\t\t(commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\tactions: {\r\n\t\t\t\tcreate: {\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\tvalidGroupName: {\r\n\t\t\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tthis.validGroupName(control),\r\n\t\t\t\t\t\t\t\t\tmessage: 'Group name not available.'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\t\t\tdisabled: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tCommonFormlyFieldConstants.publicField,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: () => this.createSecurityGroup()\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\tview: {\r\n\t\t\t\t\tcomponent: ManageUserGroupComponent,\r\n\t\t\t\t\titems: []\r\n\t\t\t\t},\r\n\t\t\t\tupdate: {\r\n\t\t\t\t\tcomponent: ManageUserGroupComponent,\r\n\t\t\t\t\tlayout: [],\r\n\t\t\t\t\tdefinition: null,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: () => this.updateSecurityGroup()\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\tdelete: {\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tcommand: () => this.deleteSecurityGroup()\r\n\t\t\t\t\t\t}],\r\n\t\t\t\t\tdeleteStatement: () => this.deleteStatement(),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Security Group.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async createSecurityGroup(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createSecurityGroup: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\tselectedItem);\r\n\r\n\t\t\t\t// Refresh the created by id.\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t.get(createdId);\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateSecurityGroup(),\r\n\t\t\t\t'Creating Group',\r\n\t\t\t\t'Created Group',\r\n\t\t\t\t'Group was created.',\r\n\t\t\t\t'Group was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a new Security Group.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async updateSecurityGroup(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst updateSecurityGroup: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\tselectedItem);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateSecurityGroup(),\r\n\t\t\t\t'Updating Group',\r\n\t\t\t\t'Updated Group',\r\n\t\t\t\t`Group ${selectedItem.id} was updated.`,\r\n\t\t\t\t`Group ${selectedItem.id} was not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a new Security Group.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async deleteSecurityGroup(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteSecurityGroup: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteSecurityGroup(),\r\n\t\t\t\t'Deleting Group',\r\n\t\t\t\t'Deleted Group',\r\n\t\t\t\t`Group ${selectedItem.id} was deleted.`,\r\n\t\t\t\t`Group ${selectedItem.id} was not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if group name is valid.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof ManageUserGroupsComponent\r\n\t */\r\n\tprivate async validGroupName(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst userGroup: ISecurityGroup[] =\r\n\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty );\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tAnyHelper.isNullOrEmpty(userGroup[0]));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement to be displayed on the\r\n\t * delete expand view.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof ManageUserGroupComponent\r\n\t */\r\n\tprivate async deleteStatement(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\t\tconst users: number[] =\r\n\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t.getSecurityGroupUsers(\r\n\t\t\t\t\tselectedItem.id);\r\n\r\n\t\tif (selectedItem.name ===\r\n\t\t\tAppConstants.securityGroups.waterStreetStandard\r\n\t\t\t|| selectedItem.name ===\r\n\t\t\t\tAppConstants.securityGroups.supportUsers\r\n\t\t\t|| selectedItem.name ===\r\n\t\t\t\tAppConstants.securityGroups.users\r\n\t\t\t|| selectedItem.name ===\r\n\t\t\t\tAppConstants.securityGroups.waterStreetStandard)\r\n\t\t{\r\n\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = true;\r\n\r\n\t\t\treturn 'Unable to delete system groups.';\r\n\t\t}\r\n\r\n\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t.delete.items[0].disabled = false;\r\n\r\n\t\treturn 'Confirm you are about to delete Group '\r\n\t\t\t+ `${selectedItem.id} `\r\n\t\t\t+ `${selectedItem.name} `\r\n\t\t\t+ `which has ${users.length} users.`;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tUsername {{context.source.selectedItem.userName}}\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n@Component({\r\n\tselector: 'app-manage-user-expand',\r\n\ttemplateUrl: './manage-user-expand.component.html',\r\n\tstyleUrls: [\r\n\t\t'./manage-user-expand.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the security applications\r\n * component.\r\n *\r\n * @export\r\n * @class ManageUserComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ManageUserComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ManageUserComponent class.\r\n\t *\r\n\t * @param {SecurityApplicationApiService} securityApplicationApiService\r\n\t * The api service used to load security application data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof BaseExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic manageUserTableDefinitionsView: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table update view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic manageUserTableDefinitionsUpdate: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic viewAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic viewSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic updateAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic updateSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the error message displayed on the formly async validator.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic asyncValidatorErrorMessage: string;\r\n\r\n\t/**\r\n\t * Gets or sets the security groups.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic securityGroups: ISecurityGroup[];\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tthis.viewAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'securityGroup',\r\n\t\t\t\t\tcolumnHeader: 'Group Name',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.viewSelectedColumns =\r\n\t\t\tthis.viewAvailableColumns;\r\n\r\n\t\tthis.updateAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.viewAvailableColumns\r\n\t\t\t];\r\n\t\tthis.updateSelectedColumns =\r\n\t\t\tthis.updateAvailableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setSecurityGroups();\r\n\r\n\t\tconst baseTableDefinitions: any =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Group Membership',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Group Membership'),\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 4\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\t\t\tthis.context.source.selectedItem;\r\n\t\t\t\t\t\tconst securityGroups: ISecurityGroup[] =\r\n\t\t\t\t\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\t\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\t\t\t\t\t'SecurityGroupEntityInstances.Any('\r\n\t\t\t\t\t\t\t\t\t+ 'EntityInstanceId eq '\r\n\t\t\t\t\t\t\t\t\t+ `'${selectedItem.id}')`,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy);\r\n\r\n\t\t\t\t\t\treturn securityGroups\r\n\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t(securityGroup: ISecurityGroup) =>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: securityGroup.id,\r\n\t\t\t\t\t\t\t\t\t\tsecurityGroup: securityGroup.name\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.manageUserTableDefinitionsView =\r\n\t\t\t{\r\n\t\t\t\t...baseTableDefinitions,\r\n\t\t\t\tavailableColumns: this.viewAvailableColumns,\r\n\t\t\t\tselectedColumns: this.viewSelectedColumns,\r\n\t\t\t\tactions: {}\r\n\t\t\t};\r\n\r\n\t\tthis.manageUserTableDefinitionsUpdate =\r\n\t\t\t{\r\n\t\t\t\t...baseTableDefinitions,\r\n\t\t\t\tavailableColumns: this.updateAvailableColumns,\r\n\t\t\t\tselectedColumns: this.updateSelectedColumns,\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'securityGroup',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tvalidSecurityGroup: {\r\n\t\t\t\t\t\t\t\t\t\texpression: async(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.isValidSecurityGroup(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield),\r\n\t\t\t\t\t\t\t\t\t\tmessage: AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Add',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.addUserSecurityGroup()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement: async () =>\r\n\t\t\t\t\t\t\t'Confirm to remove user '\r\n\t\t\t\t\t\t\t\t+ this.context.source.selectedItem.userName\r\n\t\t\t\t\t\t\t\t+ ' from security group '\r\n\t\t\t\t\t\t\t\t+ `${this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.securityGroup}.`,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: () => this.removeUserSecurityGroup()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Set Security Groups.\r\n\t *\r\n\t * @private\r\n\t * @async\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tprivate async setSecurityGroups(): Promise\r\n\t{\r\n\t\tconst securityGroups: ISecurityGroup[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.securityGroups = securityGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the user from security group.\r\n\t *\r\n\t * @private\r\n\t * @async\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tprivate async removeUserSecurityGroup(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst removeUserSecurityGroup: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst securityGroup =\r\n\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t`Name eq '${selectedItem.securityGroup}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.deleteSecurityGroupUser(\r\n\t\t\t\t\t\tsecurityGroup[0].id,\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tremoveUserSecurityGroup(),\r\n\t\t\t\t`Removing User ${selectedItem.userName} `\r\n\t\t\t\t\t+ 'from Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}`,\r\n\t\t\t\t`Removed User ${selectedItem.userName} `\r\n\t\t\t\t\t+ 'from Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}`,\r\n\t\t\t\t`User ${this.context.source.selectedItem.userName} `\r\n\t\t\t\t\t+ 'was removed from Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}.`,\r\n\t\t\t\t`User ${this.context.source.selectedItem.userName} `\r\n\t\t\t\t\t+ 'was not removed from Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Add the user to security group.\r\n\t *\r\n\t * @private\r\n\t * @async\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tprivate async addUserSecurityGroup(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst addUserSecurityGroup: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst securityGroup =\r\n\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t`Name eq '${selectedItem.securityGroup}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t.createSecurityGroupUser(\r\n\t\t\t\t\t\tsecurityGroup[0].id,\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem.id\r\n\t\t\t\t\t= securityGroup[0].id;\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\taddUserSecurityGroup(),\r\n\t\t\t\t`Adding User ${selectedItem.userName} `\r\n\t\t\t\t\t+ 'to Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}`,\r\n\t\t\t\t`Added User ${selectedItem.userName} `\r\n\t\t\t\t\t+ 'to Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}`,\r\n\t\t\t\t`User ${this.context.source.selectedItem.userName} `\r\n\t\t\t\t\t+ 'was added to Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}.`,\r\n\t\t\t\t`User ${this.context.source.selectedItem.userName} `\r\n\t\t\t\t\t+ 'was not added to Security Group '\r\n\t\t\t\t\t+ `${selectedItem.securityGroup}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the value is a valid Security Group.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @private\r\n\t * @async\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tprivate async isValidSecurityGroup(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tconst initialPromiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tthis.securityGroupApiService.query(\r\n\t\t\t\t\t`Name eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t];\r\n\r\n\t\treturn Promise.all(\r\n\t\t\tinitialPromiseArray)\r\n\t\t\t.then(async (\r\n\t\t\t\t[\r\n\t\t\t\t\tsecurityGroup\r\n\t\t\t\t]) =>\r\n\t\t\t{\r\n\t\t\t\tfield.asyncValidators.validSecurityGroup.message =\r\n\t\t\t\t\t'Invalid security group.';\r\n\t\t\t\tlet subscribedUser: boolean = false;\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(securityGroup[0]))\r\n\t\t\t\t{\r\n\t\t\t\t\tconst securityGroupUsers: number[] =\r\n\t\t\t\t\t\tawait this.securityGroupApiService\r\n\t\t\t\t\t\t\t.getSecurityGroupUsers(securityGroup[0]?.id);\r\n\t\t\t\t\tsecurityGroupUsers.forEach(\r\n\t\t\t\t\t\t(user: number) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (user === this.context.source.selectedItem.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsubscribedUser = true;\r\n\t\t\t\t\t\t\t\tfield.asyncValidators\r\n\t\t\t\t\t\t\t\t\t.validSecurityGroup.message =\r\n\t\t\t\t\t\t\t\t\t\t'Group already taken.';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Promise.resolve(\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(securityGroup[0])\r\n\t\t\t\t\t\t&& subscribedUser === false);\r\n\t\t\t});\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tManageUserComponent\r\n} from '@admin/components/security/users/manage-user-expand/manage-user-expand.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAuthenticateApiService\r\n} from '@api/services/security/authenticate.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIActionTableConfiguration\r\n} from '@shared/interfaces/application-objects/actions-table-configuration.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tISecuritySession\r\n} from '@shared/interfaces/security/security-session.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-manage-users',\r\n\ttemplateUrl: './manage-users.component.html',\r\n\tstyleUrls: [\r\n\t\t'./manage-users.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the security applications\r\n * component.\r\n *\r\n * @export\r\n * @class ManageUsersComponent\r\n */\r\nexport class ManageUsersComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ManageUsersComponent class.\r\n\t *\r\n\t * @param {SecurityApplicationApiService} securityApplicationApiService\r\n\t * The api service used to load security application data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to load entity instance data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic securityGroupApiService: SecurityGroupApiService,\r\n\t\tpublic securitySessionApiService: SecuritySessionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic authenticateApiService: AuthenticateApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic manageUsersTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the security groups.\r\n\t *\r\n\t * @type {ISecurityGroup[]}\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic securityGroups: ISecurityGroup[];\r\n\r\n\t/**\r\n\t * Gets or sets the filter criteria.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic filterCriteria: string;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'userName',\r\n\t\t\t\t\tcolumnHeader: 'Username',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'firstName',\r\n\t\t\t\t\tcolumnHeader: 'First Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'lastName',\r\n\t\t\t\t\tcolumnHeader: 'Last Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'email',\r\n\t\t\t\t\tcolumnHeader: 'Email',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.securityGroups =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.securityGroupApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.manageUsersTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: AppConstants.securityGroups.users,\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'User'),\r\n\t\t\t\tfullPageReservedHeight:\r\n\t\t\t\t\tAppConstants.staticLayoutSizes.tableSearchHeight,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: !AnyHelper.isNullOrEmpty(this.filterCriteria)\r\n\t\t\t\t\t\t? `Keywords.Contains('${this.filterCriteria}') eq true`\r\n\t\t\t\t\t\t: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\t\t\tconst entityInstances: object[] =\r\n\t\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst users: object[] = [];\r\n\t\t\t\t\t\tentityInstances.forEach(\r\n\t\t\t\t\t\t\tasync(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tusers.push(\r\n\t\t\t\t\t\t\t\t\tthis.decorateViewModel(\r\n\t\t\t\t\t\t\t\t\t\tentityInstance));\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn users;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\t(model: any) =>\r\n\t\t\t\t\t\tthis.decorateViewModel(model),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: this.getActions()\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the filter criteria event to the table display. This will set\r\n\t * the object search filter to the provided filter value.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filterCriteria\r\n\t * The filter event sent from the search component.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic filterCriteriaChanged(\r\n\t\tfilterCriteria: string): void\r\n\t{\r\n\t\tthis.filterCriteria = filterCriteria;\r\n\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\t!AnyHelper.isNullOrEmpty(this.filterCriteria)\r\n\t\t\t\t? `Keywords.Contains('${this.filterCriteria}') eq true`\r\n\t\t\t\t: AppConstants.empty);\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @param {any} model\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {any}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tpublic decorateViewModel(\r\n\t\tmodel: any): any\r\n\t{\r\n\t\tconst viewModel: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: model.id,\r\n\t\t\t\tuserName:\r\n\t\t\t\t\tmodel.data.userName,\r\n\t\t\t\tfirstName:\r\n\t\t\t\t\tmodel.data.firstName,\r\n\t\t\t\tlastName:\r\n\t\t\t\t\tmodel.data.lastName,\r\n\t\t\t\temail:\r\n\t\t\t\t\tmodel.data.email\r\n\t\t\t};\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Entity Instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async createEntityInstance(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createObject: IEntityInstance =\r\n\t\t\t{\r\n\t\t\t\tid: 0,\r\n\t\t\t\tversionNumber: 1,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\temail: selectedItem.email,\r\n\t\t\t\t\tfirstName: selectedItem.firstName,\r\n\t\t\t\t\tlastName: selectedItem.lastName,\r\n\t\t\t\t\tuserName: selectedItem.userName\r\n\t\t\t\t},\r\n\t\t\t\tentityType: 'User'\r\n\t\t\t};\r\n\r\n\t\tconst createEntityInstance: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.createEntityInstance(\r\n\t\t\t\t\t\t\tcreateObject,\r\n\t\t\t\t\t\t\tAppConstants.typeGroups.systems,\r\n\t\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t\t\tcreatedId);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateEntityInstance(),\r\n\t\t\t\t'Creating User',\r\n\t\t\t\t'Created User',\r\n\t\t\t\t'User was created.',\r\n\t\t\t\t'User was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an existing Entity Instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async updateEntityInstance(): Promise\r\n\t{\r\n\t\tconst updateUser: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\tconst entityInstance: IEntityInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.get(this.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tentityInstance.data =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...entityInstance.data,\r\n\t\t\t\t\t\t...this.commonTableContext.source.selectedItem\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tdelete entityInstance.data.id;\r\n\r\n\t\t\t\tentityInstance.data.taxId =\r\n\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\tentityInstance.data.taxId,\r\n\t\t\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\t\t\tentityInstance.data.password = AppConstants.empty;\r\n\r\n\t\t\t\tconst updateInstanceObject: any =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: this.commonTableContext.source.selectedItem.id,\r\n\t\t\t\t\t\tresourceIdentifier: entityInstance.resourceIdentifier,\r\n\t\t\t\t\t\tentityType: entityInstance.entityType,\r\n\t\t\t\t\t\tversionNumber: entityInstance.versionNumber,\r\n\t\t\t\t\t\tdata: entityInstance.data\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\t\t\tdelete updateInstanceObject.data.password;\r\n\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\tupdateInstanceObject);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateUser(),\r\n\t\t\t\t'Updating User',\r\n\t\t\t\t'Updated User',\r\n\t\t\t\t`User ${this.commonTableContext.source.selectedItem.id} `\r\n\t\t\t\t\t+ 'was updated.',\r\n\t\t\t\t`User ${this.commonTableContext.source.selectedItem.id} `\r\n\t\t\t\t\t+ 'was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing Entity Instance.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async deleteEntityInstance(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteEntityInstance: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteEntityInstance(),\r\n\t\t\t\t'Deleting User',\r\n\t\t\t\t'Deleted User',\r\n\t\t\t\t`User ${selectedItem.id} was deleted.`,\r\n\t\t\t\t`User ${selectedItem.id} was not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if user name is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async uniqueUserName(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst userName: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService.query(\r\n\t\t\t\t`userName eq '${control.value}'`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tAnyHelper.isNullOrEmpty(userName[0]));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement to be displayed on the\r\n\t * delete expand view.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async deleteStatement(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst securitySessions: ISecuritySession[] =\r\n\t\t\tawait this.securitySessionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`entityInstanceId eq ${selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(securitySessions[0]))\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = true;\r\n\r\n\t\t\treturn 'Unable to delete user. User has already logged in.';\r\n\t\t}\r\n\r\n\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t.delete.items[0].disabled = false;\r\n\r\n\t\treturn 'Confirm you are about to delete User '\r\n\t\t\t+ `${selectedItem.userName}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the actions for the table.\r\n\t *\r\n\t * @returns {any}\r\n\t * The actions for the table.\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate getActions(): any\r\n\t{\r\n\t\tconst actionTableConfiguration: IActionTableConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tcreate: {\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'userName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Username',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\tuniqueUsername: {\r\n\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.uniqueUserName(control),\r\n\t\t\t\t\t\t\t\t\tmessage: 'Username not available.'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'firstName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'First Name',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'lastName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Last Name',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'email',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Email',\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\tvalidation: ['email'],\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: () => this.createEntityInstance()\r\n\t\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\tview: {\r\n\t\t\t\t\tcomponent: ManageUserComponent,\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'userName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Username',\r\n\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'firstName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'First Name',\r\n\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'lastName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Last Name',\r\n\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'email',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Email',\r\n\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\tvalidation: ['email']\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: []\r\n\t\t\t\t},\r\n\t\t\t\tupdate: {\r\n\t\t\t\t\tcomponent: ManageUserComponent,\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'firstName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'First Name',\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'lastName',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Last Name',\r\n\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'email',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Email',\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\tgridColumns: 12\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\tvalidation: ['email']\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tdefinition: null,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Actions',\r\n\t\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Reset Password',\r\n\t\t\t\t\t\t\t\t\tcommand: () => this.resetPassword()\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Re-Send Welcome Letter',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\t\tcommand: () => this.sendWelcomeLetter()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: () => this.updateEntityInstance()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tdelete: {\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\tcommand: () => this.deleteEntityInstance()\r\n\t\t\t\t\t\t}],\r\n\t\t\t\t\tdeleteStatement: () => this.deleteStatement()\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\treturn actionTableConfiguration;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the user password.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async resetPassword(): Promise\r\n\t{\r\n\t\tconst userName: string =\r\n\t\t\tthis.commonTableContext.source.selectedItem.userName;\r\n\r\n\t\tconst resetUserPassword: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.authenticateApiService.reset(userName);\r\n\r\n\t\t\t\tthis.commonTableContext.source.displayTable();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tresetUserPassword(),\r\n\t\t\t\t'Resetting User',\r\n\t\t\t\t'User was successfully reset',\r\n\t\t\t\t`User ${userName} was reset.`,\r\n\t\t\t\t`User ${userName} was not reset.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends the user welcome letter.\r\n\t *\r\n\t * @async\r\n\t * @memberof ManageUsersComponent\r\n\t */\r\n\tprivate async sendWelcomeLetter(): Promise\r\n\t{\r\n\t\tconst userName: string =\r\n\t\t\tthis.commonTableContext.source.selectedItem.userName;\r\n\t\tconst userId: string =\r\n\t\t\tthis.commonTableContext.source.selectedItem.id;\r\n\r\n\t\tconst sendUserWelcomeLetter: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.systems;\r\n\t\t\t\tconst systemInstance: IEntityInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.get(\r\n\t\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tAppConstants.typeGroups.systems;\r\n\t\t\t\tawait this.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tsystemInstance.id,\r\n\t\t\t\t\t'CreateSystemWelcomeLetter',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t'UserId=' + userId);\r\n\r\n\t\t\t\tthis.commonTableContext.source.displayTable();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tsendUserWelcomeLetter(),\r\n\t\t\t\t`Re-Sending Welcome Letter for ${userName}`,\r\n\t\t\t\t`User ${userName} welcome letter`,\r\n\t\t\t\t'Welcome letter was successfully re-send.',\r\n\t\t\t\t'Welcome letter was not re-send.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{{context.source.selectedItem.requestMethod}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{requestUrl}}\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t{{timeLog}}\r\n\t\t\r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tUser Name\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.source.selectedItem.userName}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tRequest Host\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.source.selectedItem.requestHost}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tLogger\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.source.selectedItem.logger}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCall Site\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{context.source.selectedItem.callsite}}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tMessage\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t{{context.source.selectedItem.message}}\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tMessage\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t{{context.source.selectedItem.message}}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tUser Name\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{context.source.selectedItem.userName}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tRequest Host\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{context.source.selectedItem.requestHost}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tLogger\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{context.source.selectedItem.logger}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tCall Site\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{context.source.selectedItem.callsite}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-log',\r\n\ttemplateUrl: './log.component.html',\r\n\tstyleUrls: ['./log.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the log component.\r\n *\r\n * @export\r\n * @class LogComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class LogComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the LogComponent class.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the request url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic requestUrl: string;\r\n\r\n\t/**\r\n\t * Gets or sets the time log.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic timeLog: string;\r\n\r\n\t/**\r\n\t * Gets or sets the method type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic method: string;\r\n\r\n\t/**\r\n\t * Initialices the component by executing a format\r\n\t * request url to be displayed into this view.\r\n\t *\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.formatRequestUrl();\r\n\t\tthis.formatTime();\r\n\t\tthis.getMethodClassName();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the specific api url location from the request url\r\n\t * given by the log api service response.\r\n\t *\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic formatRequestUrl(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.source.selectedItem.requestHost))\r\n\t\t{\r\n\t\t\tconst requestHost = this.context.source.selectedItem.requestHost\r\n\t\t\t\t.replace(':8080', AppConstants.empty);\r\n\t\t\tthis.requestUrl = (this.context.source.selectedItem.requestUrl\r\n\t\t\t\t.split('//'))[1]\r\n\t\t\t\t.replace(requestHost, AppConstants.empty);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets and formats the time log to local time in order\r\n\t * to be displayed within the expanded view component.\r\n\t *\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic formatTime(): void\r\n\t{\r\n\t\tthis.timeLog =\r\n\t\t\tDateTime.fromISO(this.context.source.selectedItem.time)\r\n\t\t\t\t.toLocal()\r\n\t\t\t\t.toFormat(DateHelper.presetFormats.dateAndHourFormat);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets and method class name to be set into\r\n\t * the scss style and define the background\r\n\t * color for the request method section.\r\n\t *\r\n\t * @memberof LogComponent\r\n\t */\r\n\tpublic getMethodClassName(): void\r\n\t{\r\n\t\tconst requestMethod: string =\r\n\t\t\t(this.context.source.selectedItem.requestMethod)\r\n\t\t\t\t.toUpperCase();\r\n\r\n\t\tthis.method = (requestMethod === AppConstants.httpRequestTypes.post\r\n\t\t\t|| requestMethod === AppConstants.httpRequestTypes.get\r\n\t\t\t|| requestMethod === AppConstants.httpRequestTypes.delete\r\n\t\t\t|| requestMethod === AppConstants.httpRequestTypes.put\r\n\t\t\t|| requestMethod === AppConstants.httpRequestTypes.patch\r\n\t\t\t|| requestMethod === AppConstants.httpRequestTypes.head)\r\n\t\t\t? this.context.source.selectedItem.requestMethod\r\n\t\t\t\t.toLowerCase()\r\n\t\t\t: 'other';\r\n\t}\r\n}\r\n","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLogComponent\r\n} from '@admin/components/system/logs/log-expand/log.component';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tLogApiService\r\n} from '@api/services/logs/log.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tChartHelper\r\n} from '@shared/helpers/chart.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIChartContext\r\n} from '@shared/interfaces/dynamic-interfaces/chart-context.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-logs',\r\n\ttemplateUrl: './logs.component.html',\r\n\tstyleUrls: ['./logs.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the logs component.\r\n *\r\n * @export\r\n * @class LogsComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class LogsComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the logs component and sets up\r\n\t * the list columns to be displayed in the logs table.\r\n\t *\r\n\t * @param {LogApiService} logApiService\r\n\t * The api service used to load log data.\r\n\t * @param {ChartFactory} chartFactory\r\n\t * The chart factory to use for charted information displays.\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic logApiService: LogApiService,\r\n\t\tpublic chartFactory: ChartFactory,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t\tthis.apiService = logApiService;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter to occurrences today.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic startOfDayFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a by hour\r\n\t * chart splitout for today.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic todaysHourLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by the last thirty days.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic lastThirtyDaysFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a last thirty dat\r\n\t * chart splitout.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic thirtyDayLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the array of information menu items.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic informationMenuItems: IInformationMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic logsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets the common definitions used for pie charts displayed\r\n\t * information menu.\r\n\t *\r\n\t * @type {{\r\n\t\tchartColors: string[],\r\n\t\tchartLabels: string[],\r\n\t\tchartPivotProperty: string\r\n\t\t}}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tprivate readonly pieChartDefinition: {\r\n\t\tchartColors: string[];\r\n\t\tchartLabels: string[];\r\n\t\tchartPivotProperty: string;\r\n\t} = {\r\n\t\t\tchartColors: [\r\n\t\t\t\tChartConstants.themeColors.indigo,\r\n\t\t\t\tChartConstants.themeColors.lightGreen,\r\n\t\t\t\tChartConstants.themeColors.orange,\r\n\t\t\t\tChartConstants.themeColors.amber\r\n\t\t\t],\r\n\t\t\tchartLabels: [\r\n\t\t\t\t'Info',\r\n\t\t\t\t'Trace',\r\n\t\t\t\t'Warning',\r\n\t\t\t\t'Error'\r\n\t\t\t],\r\n\t\t\tchartPivotProperty: 'Level'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets logs last thirty days string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tprivate readonly logsLastThirtyDays: string = 'Logs Last 30 Days';\r\n\r\n\t/**\r\n\t * Sets number of logs string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tprivate readonly numberOfLogs: string = 'Number of Logs';\r\n\r\n\t/**\r\n\t * Sets up variables used in this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tconst currentDate: DateTime = DateTime.local();\r\n\r\n\t\tthis.startOfDayFilter =\r\n\t\t\tApiFilterHelper.getStartOfDayFilter(\r\n\t\t\t\t'Time',\r\n\t\t\t\tcurrentDate);\r\n\t\tthis.lastThirtyDaysFilter =\r\n\t\t\tApiFilterHelper.getLastNumberOfDaysFilter(\r\n\t\t\t\t'Time',\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.thirtyDays);\r\n\t\tthis.todaysHourLabels =\r\n\t\t\tChartHelper.getHourLabelsByDay(\r\n\t\t\t\tcurrentDate);\r\n\t\tthis.thirtyDayLabels =\r\n\t\t\tChartHelper.getLastNumberOfDayLabels(\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.thirtyDays);\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'userName',\r\n\t\t\t\t\tcolumnHeader: 'User Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'requestHost',\r\n\t\t\t\t\tcolumnHeader: 'Request Host',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'requestMethod',\r\n\t\t\t\t\tcolumnHeader: 'Request Method',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'requestUrl',\r\n\t\t\t\t\tcolumnHeader: 'Request Url',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'requestQueryString',\r\n\t\t\t\t\tcolumnHeader: 'Request Query String',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'callsite',\r\n\t\t\t\t\tcolumnHeader: 'Callsite',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'exception',\r\n\t\t\t\t\tcolumnHeader: 'Exception',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'stackTrace',\r\n\t\t\t\t\tcolumnHeader: 'Stack Trace',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'level',\r\n\t\t\t\t\tcolumnHeader: 'Level',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'message',\r\n\t\t\t\t\tcolumnHeader: 'Message',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'time',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Date & Time',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'logger',\r\n\t\t\t\t\tcolumnHeader: 'Logger',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up information menu items displayed in this component.\r\n\t *\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic setupInformationMenuItems(): void\r\n\t{\r\n\t\tconst primaryGroupByValues: string =\r\n\t\t\t'Time.ConvertToSystemTime().Year, '\r\n\t\t\t\t+ 'Time.ConvertToSystemTime().Month,'\r\n\t\t\t\t+ 'Time.ConvertToSystemTime().Day';\r\n\r\n\t\tthis.informationMenuItems =\r\n\t\t[\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\tthis.logsLastThirtyDays,\r\n\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfLogs,\r\n\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: >\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.logsLastThirtyDays,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\tthis.numberOfLogs,\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: this.logsLastThirtyDays,\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.extraLarge\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t+ ', Time.ConvertToSystemTime().Hour'),\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t'Today\\'s Logs',\r\n\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfLogs,\r\n\t\t\t\t\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: >\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues\r\n\t\t\t\t\t\t\t\t\t\t\t+ ', Time.ConvertToSystemTime()'\r\n\t\t\t\t\t\t\t\t\t\t\t+ '.Hour'),\r\n\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t'Today\\'s Logs',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.todaysHourLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\tthis.numberOfLogs,\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.timeUnits.hour,\r\n\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.hour)\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: 'Logs Today',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t'Level'),\r\n\t\t\t\t\t\tchartColors:\r\n\t\t\t\t\t\t\tthis.pieChartDefinition.chartColors,\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.pieChart(\r\n\t\t\t\t\t\t\t'Log Splitouts last 30 days',\r\n\t\t\t\t\t\t\tthis.pieChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfLogs),\r\n\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\tthis.pieChartDefinition.chartPivotProperty\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: >\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\t'Level'),\r\n\t\t\t\t\t\t\t\t\tchartColors:\r\n\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition.chartColors,\r\n\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\tthis.chartFactory.pieChart(\r\n\t\t\t\t\t\t\t\t\t\t\t'Log Splitouts last 30 days',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\tthis.numberOfLogs),\r\n\t\t\t\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t.chartPivotProperty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: 'Log Splitout Last 30 Days',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.extraLarge\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t'Level'),\r\n\t\t\t\t\t\tchartColors: this.pieChartDefinition.chartColors,\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.pieChart(\r\n\t\t\t\t\t\t\t'Today\\'s Log Splitout',\r\n\t\t\t\t\t\t\tthis.pieChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfLogs),\r\n\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\tthis.pieChartDefinition.chartPivotProperty\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata: >\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataPromise: this.apiService.aggregate(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\tthis.startOfDayFilter,\r\n\t\t\t\t\t\t\t\t\t\t'Level'),\r\n\t\t\t\t\t\t\t\t\tchartColors:\r\n\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition.chartColors,\r\n\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\tthis.chartFactory.pieChart(\r\n\t\t\t\t\t\t\t\t\t\t\t'Today\\'s Log Splitout',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\tthis.numberOfLogs),\r\n\t\t\t\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\t\t\t\tthis.pieChartDefinition\r\n\t\t\t\t\t\t\t\t\t\t\t.chartPivotProperty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: 'Log Splitout Today',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the list column definitions for the current logs object\r\n\t * list.\r\n\t *\r\n\t * @memberof LogsComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.logsTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'System Logs',\r\n\t\t\t\texpandTitle: () => 'View Log',\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\t(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t\tthis.logApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Latest Logs',\r\n\t\t\t\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Error Logs',\r\n\t\t\t\t\t\t\t\tvalue: 'level eq \\'ERROR\\''\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilterQuery\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcomponent: LogComponent,\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'exception',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Exception',\r\n\t\t\t\t\t\t\t\t\tuseMarkdown: false,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\t\t\t\texpanded: true,\r\n\t\t\t\t\t\t\t\t\tcopyToClipboard: true,\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t'`${model.exception}`'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'stackTrace',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Stack Trace',\r\n\t\t\t\t\t\t\t\t\tuseMarkdown: false,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\t\t\t\texpanded: true,\r\n\t\t\t\t\t\t\t\t\tcopyToClipboard: true,\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t'`${model.stackTrace}`'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-maintenance',\r\n\ttemplateUrl: './maintenance.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the system maintenance\r\n * component.\r\n *\r\n * @export\r\n * @class MaintenanceComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class MaintenanceComponent\r\n\textends PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the maintenance component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof MaintenanceComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n}","\r\n\t
    \r\n\t
    \r\n
    ","import { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\n\nclass MinusIcon extends BaseIcon {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MinusIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MinusIcon, isStandalone: true, selector: \"MinusIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MinusIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'MinusIcon',\n standalone: true,\n imports: [CommonModule, BaseIcon],\n template: `\n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MinusIcon };\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { PlusIcon } from 'primeng/icons/plus';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * Panel is a container with the optional content toggle feature.\n * @group Components\n */\nclass Panel {\n el;\n /**\n * Defines if content of panel can be expanded and collapsed.\n * @group Props\n */\n toggleable;\n /**\n * Header text of the panel.\n * @group Props\n */\n header;\n /**\n * Defines the initial state of panel content, supports one or two-way binding as well.\n * @group Props\n */\n collapsed;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Position of the icons.\n * @group Props\n */\n iconPos = 'end';\n /**\n * Expand icon of the toggle button.\n * @group Props\n * @deprecated since v15.4.2, use `headericons` template instead.\n */\n expandIcon;\n /**\n * Collapse icon of the toggle button.\n * @group Props\n * @deprecated since v15.4.2, use `headericons` template instead.\n */\n collapseIcon;\n /**\n * Specifies if header of panel cannot be displayed.\n * @group Props\n * @deprecated since v15.4.2, use `headericons` template instead.\n */\n showHeader = true;\n /**\n * Specifies the toggler element to toggle the panel content.\n * @group Props\n */\n toggler = 'icon';\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n /**\n * Emitted when the collapsed changes.\n * @param {boolean} value - New Value.\n * @group Emits\n */\n collapsedChange = new EventEmitter();\n /**\n * Callback to invoke before panel toggle.\n * @param {PanelBeforeToggleEvent} event - Custom panel toggle event\n * @group Emits\n */\n onBeforeToggle = new EventEmitter();\n /**\n * Callback to invoke after panel toggle.\n * @param {PanelAfterToggleEvent} event - Custom panel toggle event\n * @group Emits\n */\n onAfterToggle = new EventEmitter();\n footerFacet;\n templates;\n iconTemplate;\n animating;\n headerTemplate;\n contentTemplate;\n footerTemplate;\n headerIconTemplate;\n get id() {\n return UniqueComponentId();\n }\n get buttonAriaLabel() {\n return this.header;\n }\n constructor(el) {\n this.el = el;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'icons':\n this.iconTemplate = item.template;\n break;\n case 'headericons':\n this.headerIconTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n onHeaderClick(event) {\n if (this.toggler === 'header') {\n this.toggle(event);\n }\n }\n onIconClick(event) {\n if (this.toggler === 'icon') {\n this.toggle(event);\n }\n }\n toggle(event) {\n if (this.animating) {\n return false;\n }\n this.animating = true;\n this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });\n if (this.toggleable) {\n if (this.collapsed)\n this.expand();\n else\n this.collapse();\n }\n event.preventDefault();\n }\n expand() {\n this.collapsed = false;\n this.collapsedChange.emit(this.collapsed);\n }\n collapse() {\n this.collapsed = true;\n this.collapsedChange.emit(this.collapsed);\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n onKeyDown(event) {\n if (event.code === 'Enter' || event.code === 'Space') {\n this.toggle(event);\n event.preventDefault();\n }\n }\n onToggleDone(event) {\n this.animating = false;\n this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Panel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Panel, selector: \"p-panel\", inputs: { toggleable: \"toggleable\", header: \"header\", collapsed: \"collapsed\", style: \"style\", styleClass: \"styleClass\", iconPos: \"iconPos\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", showHeader: \"showHeader\", toggler: \"toggler\", transitionOptions: \"transitionOptions\" }, outputs: { collapsedChange: \"collapsedChange\", onBeforeToggle: \"onBeforeToggle\", onAfterToggle: \"onAfterToggle\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n
    \n {{ header }}\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 `, isInline: true, styles: [\"@layer primeng{.p-panel-header{display:flex;align-items:center}.p-panel-title{line-height:1;order:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-panel-toggleable.p-panel-expanded>.p-toggleable-content:not(.ng-animating){overflow:visible}.p-panel-toggleable .p-toggleable-content{overflow:hidden}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => PlusIcon), selector: \"PlusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MinusIcon), selector: \"MinusIcon\" }], animations: [\n trigger('panelContent', [\n state('hidden', style({\n height: '0'\n })),\n state('void', style({\n height: '{{height}}'\n }), { params: { height: '0' } }),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => hidden', animate('{{transitionParams}}')),\n transition('void => visible', animate('{{transitionParams}}'))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Panel, decorators: [{\n type: Component,\n args: [{ selector: 'p-panel', template: `\n
    \n
    \n {{ header }}\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 `, animations: [\n trigger('panelContent', [\n state('hidden', style({\n height: '0'\n })),\n state('void', style({\n height: '{{height}}'\n }), { params: { height: '0' } }),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => hidden', animate('{{transitionParams}}')),\n transition('void => visible', animate('{{transitionParams}}'))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-panel-header{display:flex;align-items:center}.p-panel-title{line-height:1;order:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-panel-toggleable.p-panel-expanded>.p-toggleable-content:not(.ng-animating){overflow:visible}.p-panel-toggleable .p-toggleable-content{overflow:hidden}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { toggleable: [{\n type: Input\n }], header: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], toggler: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], collapsedChange: [{\n type: Output\n }], onBeforeToggle: [{\n type: Output\n }], onAfterToggle: [{\n type: Output\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass PanelModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelModule, declarations: [Panel], imports: [CommonModule, SharedModule, RippleModule, PlusIcon, MinusIcon], exports: [Panel, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelModule, imports: [CommonModule, SharedModule, RippleModule, PlusIcon, MinusIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule, PlusIcon, MinusIcon],\n exports: [Panel, SharedModule],\n declarations: [Panel]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Panel, PanelModule };\n","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tTest Helpers\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t

    \r\n\t\t\t\t\tParameters\r\n\t\t\t\t\t\r\n\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t

    Results:

    \r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectionToken,\r\n\tInjector,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormArray,\r\n\tUntypedFormBuilder,\r\n\tUntypedFormGroup,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport {\r\n\tApiTokenLookup\r\n} from '@api/api-token.lookup';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'app-testbuilder',\r\n\ttemplateUrl: './test-builder.component.html',\r\n\tstyleUrls: [\r\n\t\t'./test-builder.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * Used by QA to automate testing services\r\n *\r\n * @export\r\n * @class TestBuilderComponent\r\n * @extends {PageContextDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class TestBuilderComponent\r\n\textends PageContextDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of TestBuilderComponent, and\r\n\t * creates a reactive formBuilder object.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {Injector} injector\r\n\t * Injects a selected service.\r\n\t * @param {FormBuilder} formBuilder\r\n\t * Builds a form object.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used in this component.\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly injector: Injector,\r\n\t\tprivate readonly formBuilder: UntypedFormBuilder,\r\n\t\tprivate readonly operationService: OperationService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\r\n\t\tthis.servicesForm = this.formBuilder.group({\r\n\t\t\tapiService: [AppConstants.empty, Validators.required],\r\n\t\t\ttypeGroup: [AppConstants.empty],\r\n\t\t\tapiMethod: [AppConstants.empty, Validators.required],\r\n\t\t\tparams: this.formBuilder.array([\r\n\t\t\t\tthis.createParamItem()\r\n\t\t\t])\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or Sets the servicesForm.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic servicesForm: UntypedFormGroup;\r\n\r\n\t/**\r\n\t * Gets or Sets the servicesArray.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic servicesArray: object[];\r\n\r\n\t/**\r\n\t * Gets or Sets the injectedService.\r\n\t *\r\n\t * @type {*}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic injectedService: any;\r\n\r\n\t/**\r\n\t * Gets or Setsthe methodsArray.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic methodsArray: object[];\r\n\r\n\t/**\r\n\t * Gets or Sets the results.\r\n\t *\r\n\t * @type {*}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic results: any;\r\n\r\n\t/**\r\n\t * Gets or Sets the showTypeGroup, showing or hiding the\r\n\t * typeGroup form control.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic showTypeGroup: boolean = false;\r\n\r\n\t/**\r\n\t * Load array of services from lookup\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tconst tempArray: object[] = [];\r\n\t\tObject.keys(ApiTokenLookup.tokens)\r\n\t\t\t.forEach(\r\n\t\t\t\tkey => tempArray\r\n\t\t\t\t\t.push({name: key}));\r\n\r\n\t\tthis.servicesArray = tempArray;\r\n\r\n\t\t// Add a blank entry for the dropdown\r\n\t\tthis.servicesArray.unshift({ name: '' });\r\n\t}\r\n\r\n\t/**\r\n\t * Temporary method used to throw an Angular error in the\r\n\t * application environment, this is used to test the global\r\n\t * application error handler.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic throwAngularError(): void\r\n\t{\r\n\t\tthrow new Error('Expected Angular error.');\r\n\t}\r\n\r\n\t/**\r\n\t * Temporary method used to throw an HttpResponseError in the\r\n\t * application environment, this is used to test the global\r\n\t * application error handler.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic throwHttpResponseError(): void\r\n\t{\r\n\t\tthis.operationService.populateOperationGroup(\r\n\t\t\t'TestFailure',\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Temporary method used to throw an ApiError in the\r\n\t * application environment, this is used to test the global\r\n\t * application error handler.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic throwApiError(): void\r\n\t{\r\n\t\tthrow new ApiError(\r\n\t\t\t'Expected ApiError',\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Error Title 1',\r\n\t\t\t\t\tname: 'Error Name 1',\r\n\t\t\t\t\tdescription: 'Error Description 1',\r\n\t\t\t\t\tdate: DateTime.utc().toISO(),\r\n\t\t\t\t\tmessage: 'Test Error 1',\r\n\t\t\t\t\tmessages: []\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Error Title 2',\r\n\t\t\t\t\tname: 'Error Name 2',\r\n\t\t\t\t\tdescription: 'Error Description 2',\r\n\t\t\t\t\tdate: DateTime.utc().toISO(),\r\n\t\t\t\t\tmessage: 'Test Error 2',\r\n\t\t\t\t\tmessages: []\r\n\t\t\t\t}\r\n\t\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * Injects selected service to component and gets it's methods.\r\n\t *\r\n\t * @param {*} value // Comes from the dropdown.\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic onSelectService(value: any): void\r\n\t{\r\n\t\tthis.isEntityInstanceApiService(value.name);\r\n\r\n\t\tthis.resetMethodsDropdown();\r\n\r\n\t\tthis.resetParam();\r\n\r\n\t\tthis.results = null;\r\n\r\n\t\tthis.injectedService = this.injector.get(\r\n\t\t\tApiTokenLookup.tokens[value.name] as InjectionToken);\r\n\r\n\t\t// Get the Prototype of the Service and it's Base.\r\n\t\tconst ownMethodsObject = Object.getPrototypeOf(this.injectedService);\r\n\t\tconst parentMethodsObject = Object.getPrototypeOf(ownMethodsObject);\r\n\r\n\t\t// Merge the two methods lists, sort and remove duplicates\r\n\t\tthis.methodsArray = this.getAllMethods(ownMethodsObject);\r\n\t\tthis.methodsArray =\r\n\t\t\tthis.methodsArray.concat(\r\n\t\t\t\tthis.getAllMethods(parentMethodsObject));\r\n\r\n\t\tthis.methodsArray.sort(\r\n\t\t\t(firstElement, secondElement) =>\r\n\t\t\t{\r\n\t\t\t\tconst firstName = (firstElement).name.toLowerCase();\r\n\t\t\t\tconst secondName = (secondElement).name.toLowerCase();\r\n\r\n\t\t\t\tif (firstName < secondName)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (firstName > secondName)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\r\n\t\t// Add blank option to dropdown.\r\n\t\tthis.methodsArray.unshift({ name: '' });\r\n\t}\r\n\r\n\t/**\r\n\t * Handle events for when a method is chosen.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic onSelectMethod(): void\r\n\t{\r\n\t\t// Reset the parameters input\r\n\t\tthis.resetParam();\r\n\r\n\t\tthis.results = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Submit the form, calling a service's method passing in parameters.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic onSubmit(): void\r\n\t{\r\n\t\t// If selected Service is EntityInstanceApiService\r\n\t\t// set the typegroup property from the text field\r\n\t\tconst typeGroupValue = this.servicesForm.get('typeGroup').value;\r\n\r\n\t\tthis.injectedService.typeGroup = (typeGroupValue)\r\n\t\t\t? typeGroupValue\r\n\t\t\t: null;\r\n\r\n\t\tthis.results = null;\r\n\r\n\t\tconst selectedMethod =\r\n\t\t\tthis.servicesForm.get('apiMethod').value;\r\n\r\n\t\t// Massage the Params (converting to object if needed)\r\n\t\tconst paramsList = (this.servicesForm.get('params')).controls\r\n\t\t\t.map(\r\n\t\t\t\t(paramItem: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet tempParam: any = paramItem.controls.paramValue.value;\r\n\t\t\t\t\tif (paramItem.controls.isParamObject.value)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempParam = JSON.parse(tempParam);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn tempParam;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.injectedService[selectedMethod.name]\r\n\t\t\t\t.apply(this.injectedService, paramsList || [])\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(data: any) => this.results = data || 'SUCCESS!'\r\n\t\t\t\t)\r\n\t\t\t\t.catch(\r\n\t\t\t\t\t(error: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.results =\r\n\t\t\t\t\t\t\t'ERROR. Unable to complete this request.';\r\n\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tthis.results = 'ERROR. Choose a different API method call.';\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add a param form control to the form.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic addParam(): void\r\n\t{\r\n\t\tconst paramsArray: UntypedFormArray =\r\n\t\t\tthis.servicesForm.get('params') as UntypedFormArray;\r\n\t\tparamsArray.push(this.createParamItem());\r\n\t}\r\n\r\n\t/**\r\n\t * Remove a param form control from the form.\r\n\t *\r\n\t * @param {any} index\r\n\t * The index of the selected control to remove.\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic removeParam(index: any): void\r\n\t{\r\n\t\tconst paramsArray: UntypedFormArray =\r\n\t\t\tthis.servicesForm.get('params') as UntypedFormArray;\r\n\t\tparamsArray.removeAt(index);\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the params FormArray.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic resetParam(): void\r\n\t{\r\n\t\tconst paramsArray: UntypedFormArray =\r\n\t\t\tthis.servicesForm.get('params') as UntypedFormArray;\r\n\t\tparamsArray.clear();\r\n\t\tparamsArray.push(this.createParamItem());\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the api method dropdown.\r\n\t *\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tpublic resetMethodsDropdown(): void\r\n\t{\r\n\t\tthis.methodsArray = [];\r\n\t\tthis.servicesForm.get('apiMethod')\r\n\t\t\t.setValue('');\r\n\t}\r\n\r\n\t/**\r\n\t * Create FormGroup object for params FormArray\r\n\t *\r\n\t * @private\r\n\t * @returns {FormGroup}\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tprivate createParamItem(): UntypedFormGroup\r\n\t{\r\n\t\treturn this.formBuilder.group({\r\n\t\t\tisParamObject: false,\r\n\t\t\tparamValue: ''\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all the methods of a class.\r\n\t *\r\n\t * @private\r\n\t * @param {*} object The protoype of the class\r\n\t * @returns array of strings\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tprivate getAllMethods(object: any): object[]\r\n\t{\r\n\t\treturn Object.getOwnPropertyNames(object)\r\n\t\t\t.filter(function(property)\r\n\t\t\t{\r\n\t\t\t\treturn typeof object[property] === 'function' &&\r\n\t\t\t\t\tproperty !== 'constructor';\r\n\t\t\t})\r\n\t\t\t.map((methodName: string) =>\r\n\t\t\t\t({ name: methodName })\r\n\t\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the selected service is EntityInstanceApiService.\r\n\t *\r\n\t * @private\r\n\t * @param {string} serviceName Name from service dropdown.\r\n\t * @memberof TestBuilderComponent\r\n\t */\r\n\tprivate isEntityInstanceApiService(serviceName: string): void\r\n\t{\r\n\t\tthis.showTypeGroup = (serviceName === 'EntityInstanceApiService')\r\n\t\t\t? true\r\n\t\t\t: false;\r\n\r\n\t\tif (!this.showTypeGroup)\r\n\t\t{\r\n\t\t\tthis.servicesForm.get('typeGroup')\r\n\t\t\t\t.setValue('');\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-defaults',\r\n\ttemplateUrl: './defaults.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the user interface defaults\r\n * component.\r\n *\r\n * @export\r\n * @class DefaultsComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class DefaultsComponent\r\n\textends PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the defaults component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof DefaultsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n}","\r\n\t
    \r\n\t
    \r\n
    ","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIDisplayComponentType\r\n} from '@shared/interfaces/display-components/display-component-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-display-definitions',\r\n\ttemplateUrl: './display-definitions.component.html',\r\n\tstyleUrls: [\r\n\t\t'./display-definitions.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the display component definitions\r\n * component.\r\n *\r\n * @export\r\n * @class DisplayDefinitionsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class DisplayDefinitionsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the DisplayDefinitionsComponent class.\r\n\t *\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The api service used to load display component definition data.\r\n\t * @param {DisplayComponentTypeApiService} displayComponentTypeApiService\r\n\t * The api service used to load display component type data.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The api service used to load display component instance data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentTypeApiService: DisplayComponentTypeApiService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the key for a nested display component type name value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate readonly displayTypeNameKey: string =\r\n\t\t'displayType.name';\r\n\r\n\t/**\r\n\t * Gets or sets the key for a nested display component type name value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate readonly displayTypeDescriptionKey: string =\r\n\t\t'displayType.description';\r\n\r\n\t/**\r\n\t * Gets or sets the key for a nested display component type public value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate readonly displayTypePublicKey: string =\r\n\t\t'displayType.public';\r\n\r\n\t/**\r\n\t * Gets or sets the key for a nested display component type public value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate readonly displayTypeOwnershipSecurityGroupKey: string =\r\n\t\t'displayType.ownershipSecurityGroupId';\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: 1\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: this.displayTypeNameKey,\r\n\t\t\t\t\tcolumnHeader: 'Component Type',\r\n\t\t\t\t\tdisplayOrder: 2\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'componentName',\r\n\t\t\t\t\tcolumnHeader: 'Component Name',\r\n\t\t\t\t\tdisplayOrder: 3\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Definitions',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Display Component Definition'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet displayDefinitions: any[] = [];\r\n\t\t\t\t\t\tconst apiDefinitions: IDisplayComponentDefinition[] =\r\n\t\t\t\t\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst promiseArray: Promise[] = [];\r\n\t\t\t\t\t\tfor (const apiDefinition of apiDefinitions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\t\t\t\tthis.decorateViewModel(\r\n\t\t\t\t\t\t\t\t\tapiDefinition));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tawait Promise.all(promiseArray)\r\n\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\t(decoratedDefinitions: any[]) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdisplayDefinitions = decoratedDefinitions;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn displayDefinitions;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel: async(model: any) =>\r\n\t\t\t\t\tthis.decorateViewModel(model),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeNameKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\t\talphaNumeric: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t/^[a-zA-Z0-9.]*$/.test(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Must contain letters, '\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'numbers or periods only.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueType: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.isExistingType(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Type.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'componentName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Component Name'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypePublicKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeOwnershipSecurityGroupKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeDescriptionKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'jsonData',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customTextArea,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Attributes',\r\n\t\t\t\t\t\t\t\t\trows: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.textAreaRowSizes.standard,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\t\tvalidJson: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.isValidJson(control, field),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createDisplayDefinition()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeNameKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'componentName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Component Name',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypePublicKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeOwnershipSecurityGroupKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeDescriptionKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'jsonData',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Attributes',\r\n\t\t\t\t\t\t\t\t\tuseCodeBlock: true,\r\n\t\t\t\t\t\t\t\t\tcodeBlockType:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.markdownLanguages.json,\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t'`${model.jsonData}`'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeNameKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\t\talphaNumeric: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t/^[a-zA-Z0-9.]*$/.test(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t'Must contain letters, numbers or '\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'periods only.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueType: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.allowToUpdateType(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Type.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'componentName',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Component Name'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypePublicKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeOwnershipSecurityGroupKey,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition '\r\n\t\t\t\t\t\t\t\t\t\t+ CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t\t.props\r\n\t\t\t\t\t\t\t\t\t\t\t.label\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: this.displayTypeDescriptionKey,\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'jsonData',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t.customControls.customTextArea,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Attributes',\r\n\t\t\t\t\t\t\t\t\trows: FormlyConstants\r\n\t\t\t\t\t\t\t\t\t\t.textAreaRowSizes.standard,\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\t\t\t\tvalidJson: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.isValidJson(control, field),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.updateDisplayDefinition()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\tcommand: () => this.deleteDisplayDefinition()\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement(),\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the display component definition object.\r\n\t *\r\n\t * @param {IDisplayComponentDefinition} model\r\n\t * The display component definition object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tpublic async decorateViewModel(\r\n\t\tmodel: IDisplayComponentDefinition): Promise\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\t...model,\r\n\t\t\t\tdisplayType:\r\n\t\t\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t\t\t.get(model.typeId)\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async createDisplayDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any = this.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst displayComponentTypeId: number =\r\n\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t.create(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: selectedItem.displayType.name,\r\n\t\t\t\t\t\tdescription: selectedItem.displayType.description,\r\n\t\t\t\t\t\tpublic: selectedItem.displayType.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tselectedItem.displayType.ownershipSecurityGroupId\r\n\t\t\t\t\t});\r\n\r\n\t\tconst displayComponentDefinitionData: IDisplayComponentDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tcomponentDefinition: selectedItem.componentDefinition,\r\n\t\t\t\tcomponentName: selectedItem.componentName,\r\n\t\t\t\tjsonData: selectedItem.jsonData,\r\n\t\t\t\ttypeId: displayComponentTypeId,\r\n\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\tselectedItem.ownershipSecurityGroupId\r\n\t\t\t};\r\n\r\n\t\tconst createDisplayComponentDefinition: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tselectedItem.id =\r\n\t\t\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\tdisplayComponentDefinitionData);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t\t\t.get(selectedItem.id);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateDisplayComponentDefinition(),\r\n\t\t\t\t'Creating Display Definition',\r\n\t\t\t\t'Created Display Definition',\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async updateDisplayDefinition(): Promise\r\n\t{\r\n\t\tconst updateDisplayComponentDefinition: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\t\t\tconst displayComponentType: IDisplayComponentType =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: selectedItem.displayType.id,\r\n\t\t\t\t\t\tname: selectedItem.displayType.name,\r\n\t\t\t\t\t\tdescription: selectedItem.displayType.description,\r\n\t\t\t\t\t\tpublic: selectedItem.displayType.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tselectedItem.displayType.ownershipSecurityGroupId,\r\n\t\t\t\t\t\tcreatedById: selectedItem.displayType.createdById\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.displayType.id,\r\n\t\t\t\t\t\tdisplayComponentType);\r\n\r\n\t\t\t\tconst displayComponentDefinition: IDisplayComponentDefinition =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\tcomponentName: selectedItem.componentName,\r\n\t\t\t\t\t\tcomponentDefinition: selectedItem.componentDefinition,\r\n\t\t\t\t\t\tjsonData: selectedItem.jsonData,\r\n\t\t\t\t\t\ttypeId: selectedItem.typeId,\r\n\t\t\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tselectedItem.ownershipSecurityGroupId,\r\n\t\t\t\t\t\tcreatedById: selectedItem.createdById\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\tdisplayComponentDefinition);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateDisplayComponentDefinition(),\r\n\t\t\t\t'Updating the Display Definition',\r\n\t\t\t\t'Updated the Display Definition',\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas successfully updated.`,\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\tconst selectedItem: any = this.commonTableContext.source.selectedItem;\r\n\t\tconst displayComponentInstanceRelationships:\r\n\t\t\tIDisplayComponentInstance[] =\r\n\t\t\t\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`DefinitionId eq ${selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.tableDefinitions.actions.delete.items[0].disabled\r\n\t\t\t= displayComponentInstanceRelationships.length > 0;\r\n\r\n\t\treturn displayComponentInstanceRelationships.length > 0\r\n\t\t\t? `Unable to delete Display Component Definition\r\n\t\t\t\t${selectedItem.id}\r\n\t\t\t\t${selectedItem.componentName}\r\n\t\t\t\tdue to the existence of instances.`\r\n\t\t\t: `Confirm you are about to delete Display Component Definition\r\n\t\t\t\t${selectedItem.id}\r\n\t\t\t\t${selectedItem.componentName}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async deleteDisplayDefinition(): Promise\r\n\t{\r\n\t\tconst deleteDisplayComponentDefinition: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.displayComponentDefinitionApiService\r\n\t\t\t\t\t.delete(this.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t\t.delete(this.commonTableContext.source.selectedItem.typeId);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteDisplayComponentDefinition(),\r\n\t\t\t\t'Deleting the Display Definition',\r\n\t\t\t\t'Deleted the Display Definition',\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas successfully deleted.`,\r\n\t\t\t\t`Display Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the type is existing or not.\r\n\t *\r\n\t * @async\r\n\t * @param {string} value\r\n\t * The type value.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async isExistingType(value: string): Promise\r\n\t{\r\n\t\tconst displayType =\r\n\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name.ToLower() eq '${value.toLowerCase()}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(displayType.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the updated value is existing or not.\r\n\t *\r\n\t * @async\r\n\t * @param {string} value\r\n\t * The type value.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate async allowToUpdateType(value: string): Promise\r\n\t{\r\n\t\tlet allowedToUpdate: boolean = true;\r\n\t\tconst persistedGroup =\r\n\t\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t\t.get(this.commonTableContext.source.selectedItem.typeId);\r\n\r\n\t\tif (persistedGroup.name !== value)\r\n\t\t{\r\n\t\t\tconst displayComponentType =\r\n\t\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`Name.ToLower() eq '${value.toLowerCase()}'`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tallowedToUpdate = displayComponentType.length <= 0;\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(allowedToUpdate);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if value is a valid JSON format.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form contrl.\r\n\t * @returns {FormlyFieldConfig}\r\n\t * The formly field config.\r\n\t * @memberof DisplayDefinitionsComponent\r\n\t */\r\n\tprivate isValidJson(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): boolean\r\n\t{\r\n\t\tlet isValidJson: boolean = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tJSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tisValidJson = false;\r\n\t\t\tfield.validators.validJson.message =\r\n\t\t\t\t'Not a valid JSON.';\r\n\t\t}\r\n\r\n\t\treturn isValidJson;\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-display-management-expand',\r\n\ttemplateUrl: './display-management-expand.component.html',\r\n\tstyleUrls: ['./display-management-expand.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * operation definition expand component.\r\n *\r\n * @export\r\n * @class DisplayManagementExpandComponent\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class DisplayManagementExpandComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the DisplayManagementExpandComponent.\r\n\t *\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The api service to use to handle instance data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The common options factory used to populate dropdown data.\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the main loading state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the static formly layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic staticFormlyLayout: FormlyFieldConfig[] ;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic formly layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic dynamicFormlyLayout: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading dynamic layout state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic loadingDynamicLayout: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the static formly validity.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic staticValidity: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic formly validity.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic dynamicValidity: boolean;\r\n\r\n\t/**\r\n\t * Initializes the component by setting the formly layouts.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setStaticFormlyLayout();\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks the two formly forms validities.\r\n\t *\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic checkValidity(): void\r\n\t{\r\n\t\tthis.context.source\r\n\t\t\t.validExpandComponentChanged(\r\n\t\t\t\tthis.staticValidity === true\r\n\t\t\t\t\t&& this.dynamicValidity === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the static form validity and\r\n\t * checks overall validity.\r\n\t *\r\n\t * @param {boolean} event\r\n\t * The form validity.\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic staticFormValidity(event: boolean): void\r\n\t{\r\n\t\tthis.staticValidity = event;\r\n\t\tthis.checkValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the dynamic form validity and\r\n\t * checks overall validity.\r\n\t *\r\n\t * @param {boolean} event\r\n\t * The form validity.\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic dynamicFormValidity(event: boolean): void\r\n\t{\r\n\t\tthis.dynamicValidity = event;\r\n\t\tthis.checkValidity();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the static formly layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic async setStaticFormlyLayout(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tthis.staticFormlyLayout = [\r\n\t\t\t{\r\n\t\t\t\tkey: 'typeId',\r\n\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\toptions: (this.context.source.customContext.source)\r\n\t\t\t\t\t\t.displayComponentTypeOptions\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'definitionId',\r\n\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\toptions: (this.context.source.customContext.source)\r\n\t\t\t\t\t\t.displayComponentDefinitionOptions,\r\n\t\t\t\t\tchange:\r\n\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\tthis.setDynamicFormlyLayout(\r\n\t\t\t\t\t\t\t\tfield.formControl.value)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'name',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t},\r\n\t\t\t\tasyncValidators: {\r\n\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\tasync (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.isExistingName(control),\r\n\t\t\t\t\t\tmessage: 'Existing instance Name.'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'securityGroups',\r\n\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\tlabel: 'Security Groups',\r\n\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\toptions: (this.context.source.customContext.source)\r\n\t\t\t\t\t\t.securityGroupOptions\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t.publicField,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t.props,\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t.props,\r\n\t\t\t\t\tlabel: 'Instance Owner(s)',\r\n\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\trequired: true,\r\n\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'description',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the dynamic formly layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic async setDynamicFormlyLayout(\r\n\t\tdefinitionId: number): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(definitionId))\r\n\t\t{\r\n\t\t\tthis.context.source.selectedItem.displayDefinition = null;\r\n\t\t\tthis.dynamicFormlyLayout = [];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst interpolationData: object = {};\r\n\r\n\t\tthis.context.source.selectedItem.definitionId =\r\n\t\t\tdefinitionId;\r\n\t\tthis.context.source.selectedItem =\r\n\t\t\tawait (this.context.source.customContext.source)\r\n\t\t\t\t.decorateViewModel(\r\n\t\t\t\t\tthis.context.source.selectedItem);\r\n\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tselectedItem.displayDefinition.jsonData)\r\n\t\t\t&& this.context.source.displayMode ===\r\n\t\t\t\tAppConstants.displayMode.create)\r\n\t\t{\r\n\t\t\tconst interpolationSchema: string[] =\r\n\t\t\t\tJSON.parse(selectedItem.displayDefinition.jsonData)\r\n\t\t\t\t\t.interpolationSchema;\r\n\r\n\t\t\tif (!AnyHelper.isNull(interpolationSchema))\r\n\t\t\t{\r\n\t\t\t\tinterpolationSchema.forEach(\r\n\t\t\t\t\t(interpolationItem) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinterpolationData[interpolationItem] =\r\n\t\t\t\t\t\t\tAppConstants.empty;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tconst attributes: object =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tinterpolationData: interpolationData,\r\n\t\t\t\t\t\tparameterDefinition: {},\r\n\t\t\t\t\t\tparameterLayout: [],\r\n\t\t\t\t\t\tinitialParameters: {}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tselectedItem.jsonData =\r\n\t\t\t\t\tJSON.stringify(\r\n\t\t\t\t\t\tattributes,\r\n\t\t\t\t\t\tundefined,\r\n\t\t\t\t\t\tAppConstants.jsonTabIndent);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dynamicFormlyLayout =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\ttitle: 'Definition',\r\n\t\t\t\t\t\tuseCodeBlock: true,\r\n\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\tcodeBlockType: AppConstants.markdownLanguages.json,\r\n\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t'`${model.displayDefinition.jsonData}`'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'jsonData',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Attributes',\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.standard\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidAttibute: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tthis.attributeValidator(\r\n\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\t\t\tinterpolationData),\r\n\t\t\t\t\t\t\tmessage: AppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.loadingDynamicLayout = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the attribute field meets the\r\n\t * templated criteria.\r\n\t *\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field config\r\n\t * @param {object} interpolationData\r\n\t * The interpolation data.\r\n\t * @returns {boolean}\r\n\t * Whether the entry is valid or not.\r\n\t *\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic attributeValidator(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tinterpolationData: object): boolean\r\n\t{\r\n\t\t// Validates if null or empty.\r\n\t\tif (AnyHelper.isNullOrEmpty(control.value))\r\n\t\t{\r\n\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t'This value is required.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet isValid: boolean;\r\n\t\tlet attributeObject: any;\r\n\r\n\t\t// Checks if a valid json.\r\n\t\ttry\r\n\t\t{\r\n\t\t\tattributeObject = JSON.parse(control.value);\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t'Content is not a valid JSON.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Validates no extra properties inside interpolationData.\r\n\t\tif (Object.keys(interpolationData)?.length > 0\r\n\t\t\t&& !AnyHelper.isNullOrEmpty(attributeObject.interpolationData))\r\n\t\t{\r\n\t\t\tfor (const fieldValue of Object.keys(\r\n\t\t\t\tattributeObject.interpolationData))\r\n\t\t\t{\r\n\t\t\t\tisValid = false;\r\n\t\t\t\tfor (const originalValue of Object.keys(interpolationData))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (fieldValue === originalValue)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tisValid = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isValid !== true)\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t\t\tfieldValue +\r\n\t\t\t\t\t\t\t' is not a valid interpolation data property.';\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validates interpolationData is required.\r\n\t\tif (attributeObject.interpolationData === undefined)\r\n\t\t{\r\n\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t'Interpolation Data field is required.';\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Validates each outside property type.\r\n\t\tfor (const value of Object.keys(attributeObject))\r\n\t\t{\r\n\t\t\tswitch (value){\r\n\t\t\t\tcase 'interpolationData':\r\n\t\t\t\t{\r\n\t\t\t\t\tlet isValidType = this.propertyTypeChecker(\r\n\t\t\t\t\t\tattributeObject,\r\n\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\tvalue);\r\n\r\n\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(attributeObject[value])\r\n\t\t\t\t\t\t&& Object.entries(attributeObject[value]).length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t\t\t\t`${value} must have at least one definition `\r\n\t\t\t\t\t\t\t\t+ 'property.';\r\n\r\n\t\t\t\t\t\tisValidType = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (isValidType === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase 'initialParameters':\r\n\t\t\t\tcase 'parameterDefinition':\r\n\t\t\t\t{\r\n\t\t\t\t\tconst isValidType = this.propertyTypeChecker(\r\n\t\t\t\t\t\tattributeObject,\r\n\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\tvalue);\r\n\r\n\t\t\t\t\tif (isValidType === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase 'parameterLayout':\r\n\t\t\t\t{\r\n\t\t\t\t\tconst isValidType =\r\n\t\t\t\t\t\tthis.propertyTypeChecker(\r\n\t\t\t\t\t\t\tattributeObject,\r\n\t\t\t\t\t\t\tfield,\r\n\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\tAppConstants.propertyTypes.array,\r\n\t\t\t\t\t\t\t'is not a valid object array.');\r\n\r\n\t\t\t\t\tif (isValidType === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t// Validates no extra outside properties are allowed.\r\n\t\t\t\tdefault:\r\n\t\t\t\t{\r\n\t\t\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t\t\tvalue +\r\n\t\t\t\t\t\t\t'is not part of the definition template.';\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validates if any duplicate key.\r\n\t\tconst duplicates: object[] =\r\n\t\t\tcontrol.value\r\n\t\t\t\t.replace(/(\\r\\n|\\n|\\r)/gm, AppConstants.empty)\r\n\t\t\t\t.match(/\\b(\\w+)(?=\":)\\b(?=.*?\\b\\1\\b)/ig);\r\n\r\n\t\tif (duplicates?.length > 0)\r\n\t\t{\r\n\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t`${duplicates[0]} is a duplicate key.`;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks the property type.\r\n\t *\r\n\t * @param {object} attributeObject\r\n\t * The attribute Object.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field config\r\n\t * @param {string} value\r\n\t * The string value.\r\n\t * @param {propertyType} string\r\n\t * The property type.\r\n\t * @param {string} message\r\n\t * The message string.\r\n\t * @returns {boolean}\r\n\t * Whether the property is a valid type.\r\n\t *\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tpublic propertyTypeChecker(\r\n\t\tattributeObject: object,\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tvalue: string,\r\n\t\tpropertyType: string = AppConstants.propertyTypes.object,\r\n\t\tmessage: string = 'is not a valid object.'): boolean\r\n\t{\r\n\t\tlet isValidType: boolean = true;\r\n\r\n\t\tif (propertyType === AppConstants.propertyTypes.object)\r\n\t\t{\r\n\t\t\tisValidType = typeof attributeObject[value]\r\n\t\t\t\t=== AppConstants.propertyTypes.object\r\n\t\t\t\t&& attributeObject[value]?.length === undefined;\r\n\t\t}\r\n\t\telse if (propertyType === AppConstants.propertyTypes.array)\r\n\t\t{\r\n\t\t\tisValidType = typeof attributeObject[value]\r\n\t\t\t\t=== AppConstants.propertyTypes.object\r\n\t\t\t\t&& attributeObject[value]?.length !== undefined;\r\n\t\t}\r\n\r\n\t\tif (isValidType === false)\r\n\t\t{\r\n\t\t\tfield.validators.validAttibute.message =\r\n\t\t\t\t`${value} ${message}`;\r\n\t\t}\r\n\r\n\t\treturn isValidType;\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the value is existing or not.\r\n\t * Note: This validation will not find matches if the user does not have\r\n\t * query permissions for the entity with a matching name.\r\n\t *\r\n\t * @async\r\n\t * @param {UntypedFormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof DisplayManagementExpandComponent\r\n\t */\r\n\tprivate async isExistingName(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst initialPromiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`Name.ToLower() eq '${control.value.toLowerCase()}'`,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t];\r\n\r\n\t\tinitialPromiseArray.push(\r\n\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Id eq ${this.context.source.selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty));\r\n\r\n\t\treturn Promise.all(\r\n\t\t\tinitialPromiseArray)\r\n\t\t\t.then(\r\n\t\t\t\tasync (\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\ttypedOperationName,\r\n\t\t\t\t\t\texistingOperation\r\n\t\t\t\t\t]) =>\r\n\t\t\t\t\tPromise.resolve(\r\n\t\t\t\t\t\ttypedOperationName.length === 0\r\n\t\t\t\t\t\t\t|| typedOperationName[0].name ===\r\n\t\t\t\t\t\t\t\texistingOperation[0]?.name));\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIDisplayComponentType\r\n} from '@shared/interfaces/display-components/display-component-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDisplayManagementExpandComponent\r\n} from './display-management-expand/display-management-expand.component';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-display-management-component',\r\n\ttemplateUrl: './display-management.component.html',\r\n\tstyleUrls: [\r\n\t\t'./display-management.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the workflow engine action\r\n * execution history component.\r\n *\r\n * @export\r\n * @class DisplayManagementComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class DisplayManagementComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the DisplayManagementComponent class.\r\n\t *\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The api service used to load display component definition data.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The api service used to load display component instance data.\r\n\t * @param {DisplayComponentTypeApiService} displayComponentTypeApiService\r\n\t * The api service used to load display component type data.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The api service used to load display component data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {SecurityGroupApiService} securityGroupApiService\r\n\t * The api service used to get security group data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic displayComponentTypeApiService: DisplayComponentTypeApiService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Sets the data chunk limit.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic dataChunkLimit: number = 100;\r\n\r\n\t/**\r\n\t * Gets or sets the operation query params.\r\n\t *\r\n\t * @type {IObjectSearch}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic operationQueryParams: IObjectSearch =\r\n\t\t{\r\n\t\t\tfilter: AppConstants.empty,\r\n\t\t\torderBy: `Id ${AppConstants.sortDirections.ascending}`,\r\n\t\t\toffset: null,\r\n\t\t\tlimit: this.dataChunkLimit\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the display component type options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic displayComponentTypeOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the display component definition options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic displayComponentDefinitionOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the security group options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic securityGroupOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * Gets or sets the display management context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic displayManagementContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Initializes the display management component by seting up page variables\r\n\t * and table definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tawait this.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tawait this.displayComponentService.setStoredVariables();\r\n\r\n\t\tthis.displayComponentTypeOptions =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tthis.displayComponentService.displayComponentTypes,\r\n\t\t\t\t'name',\r\n\t\t\t\t'id');\r\n\r\n\t\tthis.displayComponentDefinitionOptions =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tthis.displayComponentService.displayComponentDefinitions,\r\n\t\t\t\t'componentName',\r\n\t\t\t\t'id');\r\n\r\n\t\tthis.securityGroupOptions =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'displayType.name',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'displayDefinition.componentName',\r\n\t\t\t\t\tcolumnHeader: 'Definition',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.displayManagementContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Management',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Display Component Instance'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst displayComponentInstances:\r\n\t\t\t\t\t\t\tIDisplayComponentInstance[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tlet dataReturn = [];\r\n\t\t\t\t\t\tconst promiseArray: Promise[] = [];\r\n\t\t\t\t\t\tfor (const apiDefinition of displayComponentInstances)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\t\t\t\tthis.decorateViewModel(\r\n\t\t\t\t\t\t\t\t\tapiDefinition));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tawait Promise.all(promiseArray)\r\n\t\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\t\t(decoratedDisplayManagement: any[]) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataReturn = decoratedDisplayManagement;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn dataReturn;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tcomponent: DisplayManagementExpandComponent,\r\n\t\t\t\t\t\tcustomContext: this.displayManagementContext,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createDisplayInstance()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tsetAdditionalSelectedItemData: async() =>\r\n\t\t\t\t\t\t\tthis.setAdditionalSelectedItemData(),\r\n\t\t\t\t\t\tcustomContext: this.displayManagementContext,\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'typeId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\toptions: this.displayComponentTypeOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'definitionId',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Definition',\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\t\t\tthis.displayComponentDefinitionOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'securityGroups',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customMultiSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Security Groups',\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\toptions: this.securityGroupOptions\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.publicField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.publicField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\t\t\t\tlabel: 'Instance Owner(s)',\r\n\t\t\t\t\t\t\t\t\toptions: this.securityGroupOptions,\r\n\t\t\t\t\t\t\t\t\tdisabled: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Definition',\r\n\t\t\t\t\t\t\t\t\tuseCodeBlock: true,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: true,\r\n\t\t\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\t\t\tcodeBlockType:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.markdownLanguages.json,\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t'`${model.displayDefinition.jsonData}`'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customTextDisplay,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Attributes',\r\n\t\t\t\t\t\t\t\t\tuseCodeBlock: true,\r\n\t\t\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\t\t\tcodeBlockType:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.markdownLanguages.json,\r\n\t\t\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t\t\t'`${model.jsonData}`'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tsetAdditionalSelectedItemData: async() =>\r\n\t\t\t\t\t\t\tthis.setAdditionalSelectedItemData(),\r\n\t\t\t\t\t\tcomponent: DisplayManagementExpandComponent,\r\n\t\t\t\t\t\tcustomContext: this.displayManagementContext,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.updateDisplayDefinition()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\tcommand: () => this.deleteDisplayInstance()\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement(),\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the display component definition object.\r\n\t *\r\n\t * @param {IDisplayComponentInstance} model\r\n\t * The display component instance object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tpublic async decorateViewModel(\r\n\t\tmodel: IDisplayComponentInstance): Promise\r\n\t{\r\n\t\tawait this.displayComponentService.setStoredVariables();\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\t...model,\r\n\t\t\t\tdisplayType:\r\n\t\t\t\t\tthis.displayComponentService.displayComponentTypes\r\n\t\t\t\t\t\t.find((displayComponentType: IDisplayComponentType) =>\r\n\t\t\t\t\t\t\tdisplayComponentType.id === model.typeId),\r\n\t\t\t\tdisplayDefinition:\r\n\t\t\t\t\tthis.displayComponentService.displayComponentDefinitions\r\n\t\t\t\t\t\t.find((displayComponentDefinition:\r\n\t\t\t\t\t\t\tIDisplayComponentDefinition) =>\r\n\t\t\t\t\t\t\tdisplayComponentDefinition.id ===\r\n\t\t\t\t\t\t\t\tmodel.definitionId)\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate async createDisplayInstance(): Promise\r\n\t{\r\n\t\tconst createDisplayInstance: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\t\t\tconst displayComponentInstanceId: number =\r\n\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\t\t\ttypeId: parseInt(\r\n\t\t\t\t\t\t\t\t\tselectedItem.typeId,\r\n\t\t\t\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\t\t\t\tdefinitionId: parseInt(\r\n\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem.definitionId,\r\n\t\t\t\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\t\t\t\tjsonData: selectedItem.jsonData ?? {},\r\n\t\t\t\t\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\t\t\tselectedItem.ownershipSecurityGroupId\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\tselectedItem.id = displayComponentInstanceId;\r\n\r\n\t\t\t\tfor (let index = 0;\r\n\t\t\t\t\tindex <\r\n\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t.securityGroups.length;\r\n\t\t\t\t\tindex++)\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\tdisplayComponentInstanceId,\r\n\t\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.securityGroups[index],\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Reset this value to get the fresh created by id.\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.commonTableContext.source.selectedItem,\r\n\t\t\t\t\t\t...await this.displayComponentInstanceApiService.get(\r\n\t\t\t\t\t\t\tselectedItem.id)\r\n\t\t\t\t\t};\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateDisplayInstance(),\r\n\t\t\t\t'Creating Display Instance',\r\n\t\t\t\t'Created Display Instance',\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate async updateDisplayDefinition(): Promise\r\n\t{\r\n\t\tconst updateDisplayInstance: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\t\ttypeId: parseInt(\r\n\t\t\t\t\t\t\t\tselectedItem.typeId,\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\t\t\tdefinitionId: parseInt(\r\n\t\t\t\t\t\t\t\tselectedItem.definitionId,\r\n\t\t\t\t\t\t\t\tAppConstants.parseRadix),\r\n\t\t\t\t\t\t\tjsonData: selectedItem.jsonData,\r\n\t\t\t\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\t\tselectedItem.ownershipSecurityGroupId,\r\n\t\t\t\t\t\t\tcreatedById: selectedItem.createdById\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tconst existingSecurityGroups: number[] =\r\n\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\t\t\tif (existingSecurityGroups.length\r\n\t\t\t\t\t!== selectedItem.securityGroups.length)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const existingSecurityGroup of existingSecurityGroups)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\t\texistingSecurityGroup);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (let index = 0;\r\n\t\t\t\t\t\tindex < selectedItem.securityGroups.length;\r\n\t\t\t\t\t\tindex++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t\t.securityGroups[index],\r\n\t\t\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateDisplayInstance(),\r\n\t\t\t\t'Updating Display Instance',\r\n\t\t\t\t'Updated Display Instance',\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully updated.`,\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\treturn `Confirm you are about to delete Display Component Instance\r\n\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t${this.commonTableContext.source.selectedItem.name}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes display definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate async deleteDisplayInstance(): Promise\r\n\t{\r\n\t\tconst deleteDisplayComponentInstance: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tthis.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteDisplayComponentInstance(),\r\n\t\t\t\t'Deleting the Display Instance',\r\n\t\t\t\t'Deleted the Display Instance',\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas successfully deleted.`,\r\n\t\t\t\t`Display Instance\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.componentName}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @param {any} apiData\r\n\t * The api resolved with data for the dropdown options.\r\n\t * @param {string} label\r\n\t * The dropdown label to map with the data promise results.\r\n\t * @param {string} value\r\n\t * The dropdown value to map with the data promise results.\r\n\t * @async\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate getDropdownOptions(\r\n\t\tapiData: any,\r\n\t\tlabel: string,\r\n\t\tvalue: string): IDropdownOption[]\r\n\t{\r\n\t\treturn (apiData)\r\n\t\t\t.map((item: any) =>\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: item[label],\r\n\t\t\t\t\tvalue: item[value]\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the additional selected item data.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The additional selected item data object.\r\n\t * @memberof DisplayManagementComponent\r\n\t */\r\n\tprivate async setAdditionalSelectedItemData(): Promise\r\n\t{\r\n\t\tconst securityGroups: number[] =\r\n\t\t\tthis.commonTableContext.source.selectedItem.id === 0\r\n\t\t\t\t? []\r\n\t\t\t\t: await this.displayComponentInstanceApiService\r\n\t\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\t\tthis.commonTableContext.source.selectedItem.id);\r\n\r\n\t\tthis.commonTableContext.source.selectedItem.securityGroups =\r\n \t\t\tsecurityGroups;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-logos',\r\n\ttemplateUrl: './logos.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the user interface logos\r\n * component.\r\n *\r\n * @export\r\n * @class LogosComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class LogosComponent\r\n\textends PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the logos component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof LogosComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n}","\r\n\t
    \r\n\t
    \r\n
    ","\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tIBaseEntity\r\n} from '@api/interfaces/base/base-entity.interface';\r\nimport {\r\n\tOperationDefinitionParameterApiService\r\n} from '@api/services/operations/operation-definition-parameter.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tOperationTypeParameterApiService\r\n} from '@api/services/operations/operation-type-parameter.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationDefinitionParameter\r\n} from '@operation/interfaces/operation-definition-parameter.interface';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tIOperationTypeParameter\r\n} from '@operation/interfaces/operation-type-parameter.interface';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-operation-definition',\r\n\ttemplateUrl: './operation-definition.component.html',\r\n\tstyleUrls: [\r\n\t\t'./operation-definition.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * operation definition expand component.\r\n *\r\n * @export\r\n * @class OperationDefinitionComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class OperationDefinitionComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the OperationDefinitionComponent class.\r\n\t *\r\n\t * @param {OperationDefinitionParameterApiService}\r\n\t * \toperationDefinitionParameterApiService\r\n\t * The api service used to load operation definition parameter data.\r\n\t * @param {OperationTypeParameterApiService}\r\n\t * \toperationTypeParameterApiService\r\n\t * The api service used to load operation type parameter data.\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The api service used to load operation group data.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The api service used to load operation definition data.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for bulk operation service calls.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used to handle shared logic.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The base class used to detect tree changes.\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationDefinitionParameterApiService:\r\n\t\t\tOperationDefinitionParameterApiService,\r\n\t\tpublic operationTypeParameterApiService:\r\n\t\t\tOperationTypeParameterApiService,\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t\tthis.loadingTableDefinitions = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the parameters common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersTableDefinitionsView: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersViewAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersViewSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the\r\n\t * operation groups common table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsTableDefinitionsView: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsViewAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsViewSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the\r\n\t * parameters common table update view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersTableDefinitionsUpdate: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersUpdateAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic parametersUpdateSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the\r\n\t * operation groups common table update view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsTableDefinitionsUpdate: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsUpdateAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupsUpdateSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the error message displayed on the formly async validator.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic asyncValidatorErrorMessage: string;\r\n\r\n\t/**\r\n\t * Gets or sets the operation groups.\r\n\t *\r\n\t * @type {IOperationGroup[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroups: IOperationGroup[];\r\n\r\n\t/**\r\n\t * Gets or sets the operation group options.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationGroupOptions: object[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation type parameters.\r\n\t *\r\n\t * @type {IOperationTypeParameter[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationTypeParameters: IOperationTypeParameter[];\r\n\r\n\t/**\r\n\t * Gets or sets the operation type parameter options.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic operationTypeParameterOptions: object[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loading operations definition flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic loadingOperationDefinition: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the type id.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic typeId: number;\r\n\r\n\t/**\r\n\t * Gets the operation group friendly name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate readonly operationGroupName: string =\r\n\t\t'Operation Group';\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.parametersViewAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'value',\r\n\t\t\t\t\tcolumnHeader: 'Value',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.parametersViewSelectedColumns =\r\n\t\t\tthis.parametersViewAvailableColumns;\r\n\r\n\t\tthis.parametersUpdateAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.parametersViewSelectedColumns\r\n\t\t\t];\r\n\t\tthis.parametersUpdateSelectedColumns =\r\n\t\t\tthis.parametersUpdateAvailableColumns;\r\n\r\n\t\tdisplayOrder = 1;\r\n\t\tthis.operationGroupsViewAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'operationGroupName',\r\n\t\t\t\t\tcolumnHeader: this.operationGroupName,\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.operationGroupsViewSelectedColumns =\r\n\t\t\tthis.operationGroupsViewAvailableColumns;\r\n\r\n\t\tthis.operationGroupsUpdateAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.operationGroupsViewAvailableColumns\r\n\t\t\t];\r\n\t\tthis.operationGroupsUpdateSelectedColumns =\r\n\t\t\tthis.operationGroupsUpdateAvailableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the available parameter options.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic async setAvailableParameterOptions(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t\tthis.operationTypeParameterOptions = [];\r\n\t\tthis.operationService.operationTypeParameters\r\n\t\t\t.filter(\r\n\t\t\t\t(operationTypeParameter) =>\r\n\t\t\t\t\toperationTypeParameter.typeId === selectedItem.typeId)\r\n\t\t\t.forEach(\r\n\t\t\t\t(operationTypeParameter) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.operationTypeParameterOptions\r\n\t\t\t\t\t\t.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: operationTypeParameter.name,\r\n\t\t\t\t\t\t\t\tlabel: operationTypeParameter.name\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a common table\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tif (this.context.source.displayMode !==\r\n\t\t\tAppConstants.displayMode.create\r\n\t\t\t&& this.context.source.displayMode !==\r\n\t\t\t\tAppConstants.displayMode.delete)\r\n\t\t{\r\n\t\t\tawait this.setupParameterTableDefinitions();\r\n\t\t\tawait this.setupOperationGroupsTableDefinitions();\r\n\t\t\tawait this.getAssociatedSecurityGroup();\r\n\t\t}\r\n\r\n\t\tthis.loadingOperationDefinition = false;\r\n\t\tthis.loadingTableDefinitions = false;\r\n\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for common operation group tables.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic async setupOperationGroupsTableDefinitions(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\t\tawait this.dataSetup();\r\n\r\n\t\tthis.operationGroupsTableDefinitionsView =\r\n\t\t\t{\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\ttableTitle: 'Associated Operation Groups',\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: 3\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync () =>\r\n\t\t\t\t\t\tthis.getOperationGroupParents(),\r\n\t\t\t\tavailableColumns:\r\n\t\t\t\t\tthis.operationGroupsViewAvailableColumns,\r\n\t\t\t\tselectedColumns:\r\n\t\t\t\t\tthis.operationGroupsViewSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tconst operationGroupLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.operationGroupId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tlabel: this.operationGroupName,\r\n\t\t\t\t\t\tplaceholder: 'Select an Operation Group',\r\n\t\t\t\t\t\toptions: this.operationGroupOptions,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueOperationGroup: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.associatedGroup(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing Operation Group.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.operationGroupsTableDefinitionsUpdate =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Associated Operation Groups',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\tthis.operationGroupName),\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: operationGroupLayout,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t\t\t\tthis.createGroupAssociation()\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement: async () =>\r\n\t\t\t\t\t\t\t'Confirm to remove parent group '\r\n\t\t\t\t\t\t\t\t\t+ 'association '\r\n\t\t\t\t\t\t\t\t\t+ selectedItem.operationGroupName\r\n\t\t\t\t\t\t\t\t\t+ `from operation definition\r\n\t\t\t\t\t\t\t\t\t${selectedItem.name}.`,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t\t\t\tthis.deleteGroupAssociation()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: 3\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync () =>\r\n\t\t\t\t\t\tthis.getOperationGroupParents(),\r\n\t\t\t\tavailableColumns:\r\n\t\t\t\t\tthis.operationGroupsUpdateAvailableColumns,\r\n\t\t\t\tselectedColumns:\r\n\t\t\t\t\tthis.operationGroupsUpdateSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for common parameter tables.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tpublic async setupParameterTableDefinitions(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\r\n\t\tthis.parametersTableDefinitionsView =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Parameters',\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise: async () =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst displayParameters: any[] = [];\r\n\t\t\t\t\tconst operationTypeParameters: IOperationTypeParameter[] =\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tawait this.operationTypeParameterApiService.query(\r\n\t\t\t\t\t\t\t`typeId eq ${selectedItem.typeId}`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\tfor (const operationTypeParameter\r\n\t\t\t\t\t\tof operationTypeParameters)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst operationDefinitionFilterString =\r\n\t\t\t\t\t\t\t(!AnyHelper\r\n\t\t\t\t\t\t\t\t.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tthis.parametersTableDefinitionsView\r\n\t\t\t\t\t\t\t\t\t\t.objectSearch.filter))\r\n\t\t\t\t\t\t\t\t? this.parametersTableDefinitionsView\r\n\t\t\t\t\t\t\t\t\t.objectSearch.filter\r\n\t\t\t\t\t\t\t\t\t\t+ 'and typeParameterId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ operationTypeParameter.id\r\n\t\t\t\t\t\t\t\t\t\t+ 'and definitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ selectedItem.id\r\n\t\t\t\t\t\t\t\t: 'typeParameterId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ operationTypeParameter.id\r\n\t\t\t\t\t\t\t\t\t\t+ 'and definitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ selectedItem.id;\r\n\r\n\t\t\t\t\t\tconst operationDefinitionParameter:\r\n\t\t\t\t\t\t\tIOperationDefinitionParameter =\r\n\t\t\t\t\t\t\tawait this.operationDefinitionParameterApiService\r\n\t\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t\toperationDefinitionFilterString,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(operationDefinitionParameter))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdisplayParameters.unshift(\r\n\t\t\t\t\t\t\t\tthis.mapDisplayParameter(\r\n\t\t\t\t\t\t\t\t\toperationDefinitionParameter,\r\n\t\t\t\t\t\t\t\t\toperationTypeParameter));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn displayParameters;\r\n\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.parametersViewAvailableColumns,\r\n\t\t\t\tselectedColumns: this.parametersViewSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tawait this.setAvailableParameterOptions();\r\n\t\tthis.parametersTableDefinitionsUpdate =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Parameters',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Operation Parameter'),\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'data.name',\r\n\t\t\t\t\t\t\t\ttype:\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Parameter Type',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder: 'Select a Parameter Type',\r\n\t\t\t\t\t\t\t\t\toptions: this.operationTypeParameterOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueCombination: {\r\n\t\t\t\t\t\t\t\t\t\texpression: async (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.isExistingType(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Parameter.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'data.value',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Parameter Value',\r\n\t\t\t\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdefinition: null,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t\t\t\tthis.createNewParameter()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement: async () =>\r\n\t\t\t\t\t\t\t`Confirm to remove parameter\r\n\t\t\t\t\t\t\t\t${this.commonTableContext.data.name}\r\n\t\t\t\t\t\t\t\tfrom operation definition\r\n\t\t\t\t\t\t\t\t${selectedItem.name}.`,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tawait this.removeParameter();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync () =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst displayParameters: any[] = [];\r\n\t\t\t\t\t\tconst operationTypeParameters:\r\n\t\t\t\t\t\t\tIOperationTypeParameter[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this.operationTypeParameterApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t`typeId eq ${selectedItem.typeId}`,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\t\tfor (const operationTypeParameter\r\n\t\t\t\t\t\t\tof operationTypeParameters)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst operationDefinitionFilterString = (\r\n\t\t\t\t\t\t\t\t!AnyHelper\r\n\t\t\t\t\t\t\t\t\t.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\tthis.parametersTableDefinitionsUpdate\r\n\t\t\t\t\t\t\t\t\t\t\t.objectSearch.filter))\r\n\t\t\t\t\t\t\t\t? `${this.parametersTableDefinitionsUpdate\r\n\t\t\t\t\t\t\t\t\t.objectSearch.filter} `\r\n\t\t\t\t\t\t\t\t\t\t+ 'and typeParameterId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ `${operationTypeParameter.id} `\r\n\t\t\t\t\t\t\t\t\t\t+ 'and definitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ `${selectedItem.id}`\r\n\t\t\t\t\t\t\t\t: 'typeParameterId eq '\r\n\t\t\t\t\t\t\t\t\t+ `${operationTypeParameter.id} `\r\n\t\t\t\t\t\t\t\t\t+ 'and definitionId eq '\r\n\t\t\t\t\t\t\t\t\t+ `${selectedItem.id}`;\r\n\r\n\t\t\t\t\t\t\tconst operationDefinitionParameter:\r\n\t\t\t\t\t\t\t\tIOperationDefinitionParameter =\r\n\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t.operationDefinitionParameterApiService\r\n\t\t\t\t\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t\t\t\t\toperationDefinitionFilterString,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t\ttrue);\r\n\r\n\t\t\t\t\t\t\tif (!AnyHelper.isNull(operationDefinitionParameter))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdisplayParameters.unshift(\r\n\t\t\t\t\t\t\t\t\tthis.mapDisplayParameter(\r\n\t\t\t\t\t\t\t\t\t\toperationDefinitionParameter,\r\n\t\t\t\t\t\t\t\t\t\toperationTypeParameter));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn displayParameters;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.parametersUpdateAvailableColumns,\r\n\t\t\t\tselectedColumns: this.parametersUpdateSelectedColumns,\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the security groups associated by operation\r\n\t * definition to be displayed in the update view.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async getAssociatedSecurityGroup(): Promise\r\n\t{\r\n\t\tconst securityGroups: number[] =\r\n\t\t\tawait this.operationDefinitionApiService\r\n\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\tthis.context.source.selectedItem.id);\r\n\r\n\t\tthis.context.source.selectedItem.securityGroups =\r\n\t\t\tsecurityGroups;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the the validity for an unique\r\n\t * data combination set.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The formly field configuration.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async isExistingType(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\tfield: FormlyFieldConfig): Promise\r\n\t{\r\n\t\tconst typeParameter =\r\n\t\t\tawait this.operationTypeParameterApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${control.value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst operationDefinitionParameter =\r\n\t\t\tawait this.operationDefinitionParameterApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'DefinitionId eq '\r\n\t\t\t\t\t\t+ this.context.source.selectedItem.id\r\n\t\t\t\t\t\t+ ' and TypeParameterId eq ' + typeParameter[0].id,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst persistedData =\r\n\t\t\tawait this.operationDefinitionApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Id eq ${this.context.source.selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (persistedData[0].typeId !==\r\n\t\t\tthis.context.source.selectedItem.typeId)\r\n\t\t{\r\n\t\t\tfield.asyncValidators.uniqueCombination.message =\r\n\t\t\t\t'Save the updated type prior.';\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tpersistedData[0].typeId ===\r\n\t\t\t\t this.context.source.selectedItem.typeId\r\n\t\t\t\t&& operationDefinitionParameter.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and adds a new operation parameter\r\n\t * associated to the operation definition in play.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async createNewParameter(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\t\tconst typeParameterName =\r\n\t\t\tawait this.operationTypeParameterApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`name eq '${selectedItem.name}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tconst name: string = selectedItem.data.name;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.operationDefinitionParameterApiService\r\n\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdefinitionId: selectedItem.id,\r\n\t\t\t\t\t\t\ttypeParameterId: typeParameterName[0].id,\r\n\t\t\t\t\t\t\tvalue: selectedItem.value\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t`Adding Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ `to Operation Definition ${name}`,\r\n\t\t\t\t`Added Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ `to Operation Definition ${name}`,\r\n\t\t\t\t`Parameter ${selectedItem.name} was added to `\r\n\t\t\t\t\t+ `Operation Definition ${name}.`,\r\n\t\t\t\t`Parameter ${selectedItem.name} was not added to `\r\n\t\t\t\t\t+ `Operation Definition ${name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an operation parameter\r\n\t * associated to the operation definition in play.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async removeParameter(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\t\tconst name: string = selectedItem.data.name;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.operationDefinitionParameterApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tselectedItem.id),\r\n\t\t\t\t`Removing Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ `from Operation Definition ${name}`,\r\n\t\t\t\t`Removed Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ `from Operation Definition ${name}`,\r\n\t\t\t\t`Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ 'was removed from Operation Definition '\r\n\t\t\t\t\t+ `${name}.`,\r\n\t\t\t\t`Parameter ${selectedItem.name} `\r\n\t\t\t\t\t+ 'was not removed from Operation Definition '\r\n\t\t\t\t\t+ `${name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an operation group\r\n\t * associated as the parent of an\r\n\t * operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async createGroupAssociation(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\t\tconst name: string = selectedItem.data.name;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.operationGroupApiService\r\n\t\t\t\t\t.createChild(\r\n\t\t\t\t\t\tselectedItem.operationGroupId,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\torder: 0,\r\n\t\t\t\t\t\t\ttype: 'OperationDefinition'\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t`Adding Group Association\r\n\t\t\t\t\t${selectedItem.operationGroupName}\r\n\t\t\t\t\tto Operation Definition ${name}`,\r\n\t\t\t\t'Added Group Association '\r\n\t\t\t\t\t+ `${selectedItem.operationGroupName}`\r\n\t\t\t\t\t+ ` to Operation Definition ${name}`,\r\n\t\t\t\t'Group Association '\r\n\t\t\t\t\t+ `${selectedItem.operationGroupName}`\r\n\t\t\t\t\t+ ' was added to Operation Definition '\r\n\t\t\t\t\t+ `${name}.`,\r\n\t\t\t\t'Group Association '\r\n\t\t\t\t\t+ `${selectedItem.operationGroupName}`\r\n\t\t\t\t\t+ 'was not added to Operation Definition'\r\n\t\t\t\t\t+ `${name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an operation group\r\n\t * associated as the parent of an\r\n\t * operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async deleteGroupAssociation(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.context.source.selectedItem;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.operationGroupApiService\r\n\t\t\t\t\t.deleteChild(\r\n\t\t\t\t\t\tselectedItem.operationGroupId,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\ttype: 'OperationDefinition'\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t`Removing Parent Group Association\r\n\t\t\t\t\t${selectedItem.operationGroupName}\r\n\t\t\t\t\tfrom Operation Definition ${selectedItem.data.name}`,\r\n\t\t\t\t`Removed Parent Group Association\r\n\t\t\t\t\t${selectedItem.operationGroupName}\r\n\t\t\t\t\tfrom Operation Definition ${selectedItem.data.name}`,\r\n\t\t\t\t`Parent Group Association\r\n\t\t\t\t\t${selectedItem.operationGroupName}\r\n\t\t\t\t\twas removed from Operation Definition\r\n\t\t\t\t\t${selectedItem.data.name}.`,\r\n\t\t\t\t`Parent Group Association\r\n\t\t\t\t\t${selectedItem.operationGroupName}\r\n\t\t\t\t\twas not removed from Operation Definition\r\n\t\t\t\t\t${selectedItem.data.name}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if there is any\r\n\t * associated Operation Group existing.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async associatedGroup(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tlet isNotExisting = true;\r\n\r\n\t\tconst childOperationGroupHierarchies =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'ChildOperationGroupHierarchies.Any(ChildDefinitionId eq ' +\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id + ')',\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tchildOperationGroupHierarchies.forEach(\r\n\t\t\t(operationGroup: IBaseEntity) =>\r\n\t\t\t{\r\n\t\t\t\tif (control.value === operationGroup.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tisNotExisting = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn Promise.resolve(isNotExisting);\r\n\t}\r\n\r\n\t/**\r\n\t * Maps a Display Parameter object.\r\n\t *\r\n\t * @param {IOperationDefinitionParameter} operationDefinitionParameter\r\n\t * The operation definition parameter.\r\n\t * @param {IOperationTypeParameter} operationTypeParameter\r\n\t * The operation type parameter.\r\n\t * @returns {any[]}\r\n\t * The display parameter.\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate mapDisplayParameter(\r\n\t\toperationDefinitionParameter: IOperationDefinitionParameter,\r\n\t\toperationTypeParameter: IOperationTypeParameter): any\r\n\t{\r\n\t\treturn {\r\n\t\t\tid: operationDefinitionParameter.id,\r\n\t\t\tname: operationTypeParameter.name,\r\n\t\t\tvalue: operationDefinitionParameter.value\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the data needed for the common table display.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async dataSetup(): Promise\r\n\t{\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t\tthis.operationService.operationGroups.forEach(\r\n\t\t\t(operationGroup) =>\r\n\t\t\t{\r\n\t\t\t\tthis.operationGroupOptions\r\n\t\t\t\t\t.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: operationGroup.id,\r\n\t\t\t\t\t\t\tlabel: operationGroup.name\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets operation group parents.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionComponent\r\n\t */\r\n\tprivate async getOperationGroupParents(): Promise\r\n\t{\r\n\t\tconst operationGroupsParents: any[] = [];\r\n\r\n\t\tconst childOperationGroupHierarchies =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'ChildOperationGroupHierarchies.Any('\r\n\t\t\t\t\t\t+ 'ChildDefinitionId eq '\r\n\t\t\t\t\t\t+ this.context.source.selectedItem.id + ')',\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tchildOperationGroupHierarchies\r\n\t\t\t.forEach(\r\n\t\t\t\t(childOperationGroupHierarchy) =>\r\n\t\t\t\t{\r\n\t\t\t\t\toperationGroupsParents.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid:\r\n\t\t\t\t\t\t\t\tchildOperationGroupHierarchy.id,\r\n\t\t\t\t\t\t\toperationGroupId:\r\n\t\t\t\t\t\t\t\tchildOperationGroupHierarchy.id,\r\n\t\t\t\t\t\t\toperationGroupName:\r\n\t\t\t\t\t\t\t\tchildOperationGroupHierarchy.name\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\treturn operationGroupsParents;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tOperationDefinitionComponent\r\n} from '@admin/components/user-interface/operations/operation-definitions/operation-expand/operation-definition.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport { InsuranceService } from '@insurance/services/insurance.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationDefinitionParameter\r\n} from '@operation/interfaces/operation-definition-parameter.interface';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tIOperationTypeParameter\r\n} from '@operation/interfaces/operation-type-parameter.interface';\r\nimport {\r\n\tIOperationType\r\n} from '@operation/interfaces/operation-type.interface';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-operation-definitions',\r\n\ttemplateUrl: './operation-definitions.component.html',\r\n\tstyleUrls: ['./operation-definitions.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the operation definitions component.\r\n *\r\n * @export\r\n * @class OperationDefinitionsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class OperationDefinitionsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the logs component and sets up\r\n\t * the list columns to be displayed in the logs table.\r\n\t *\r\n\t * @param {OperationService} operationService\r\n\t * The api service used to load the operation data.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionsApiService\r\n\t * The api service used to load the operation definition data.\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The api service used to load the operation group data.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used to load the session data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service to be displayed in the Activity List Component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationDefinitionsApiService: OperationDefinitionApiService,\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic operationDefinitionsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the security group options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic securityGroupOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation type options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic operationTypeOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the security groups from database.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic securityGroups: ISecurityGroup[];\r\n\r\n\t/**\r\n\t * Gets or sets the operation Types from database.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic operationTypes: IOperationType[];\r\n\r\n\t/**\r\n\t * Gets the field value debounce time.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate readonly fieldValueDebounceTime: number = 2000;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'operationTypeName',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'label',\r\n\t\t\t\t\tcolumnHeader: 'Label',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'icon',\r\n\t\t\t\t\tcolumnHeader: 'Icon',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the list column definitions for the current\r\n\t * operation definition object list.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tawait this.operationService.setStoredVariables();\r\n\r\n\t\tthis.securityGroups =\r\n\t\t\tawait this.insuranceService.getMasterSecurityGroups();\r\n\r\n\t\tthis.securityGroupOptions =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tthis.securityGroups);\r\n\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t\tthis.operationTypeOptions = [];\r\n\t\tthis.operationService.operationTypes.forEach(\r\n\t\t\t(operationType) =>\r\n\t\t\t{\r\n\t\t\t\tthis.operationTypeOptions\r\n\t\t\t\t\t.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: operationType.id,\r\n\t\t\t\t\t\t\tlabel: operationType.name\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tconst itemLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmaxLength: 64\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\tasync (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\tthis.isExistingName(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing definition Name.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'typeId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tplaceholder: 'Select an Operation Type',\r\n\t\t\t\t\t\toptions: this.operationTypeOptions,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'label',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Label',\r\n\t\t\t\t\t\tmaxLength: 64\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmaxLength: 256\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'icon',\r\n\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t.customIconInput,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Icon',\r\n\t\t\t\t\t\texternalLinkTooltip: 'Font Awesome Icons',\r\n\t\t\t\t\t\texternalLink: AppConstants\r\n\t\t\t\t\t\t\t.externalUrls.fontAwesomeIcons,\r\n\t\t\t\t\t\tmaxLength: 256\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'securityGroups',\r\n\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Security Groups',\r\n\t\t\t\t\t\tplaceholder: 'Select a Security Group',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions: this.securityGroupOptions,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\tlabel: 'Definition Owner(s)',\r\n\t\t\t\t\t\toptions: this.securityGroupOptions,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst updateLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t...cloneDeep(itemLayout).map(\r\n\t\t\t\t\t(layoutItem: FormlyFieldConfig) =>\r\n\t\t\t\t\t\tlayoutItem.key === 'typeId'\r\n\t\t\t\t\t\t\t? {\r\n\t\t\t\t\t\t\t\t...layoutItem,\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tallowedToChange: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\tasync(control:\r\n\t\t\t\t\t\t\t\t\t\t\t\tUntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.allowedToChange(control),\r\n\t\t\t\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t\t\t\t 'Existing definition Parameter.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t: layoutItem)\r\n\t\t\t];\r\n\r\n\t\tthis.operationDefinitionsTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Operations',\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst operationDefinitions: IOperationDefinition[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\toperationDefinitions.forEach(\r\n\t\t\t\t\t\t\t(operationDefinition) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.decorateViewModel(operationDefinition);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn operationDefinitions;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\t(model: any) => this.decorateViewModel(model),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Operation Definition'),\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tcomponent: OperationDefinitionComponent,\r\n\t\t\t\t\t\tlayout:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...cloneDeep(itemLayout)\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\t\ticon: AppConstants.empty,\r\n\t\t\t\t\t\t\t\t\tid: 'createOperationDefinition',\r\n\t\t\t\t\t\t\t\t\tstyleClass: 'ui-button-primary',\r\n\t\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t\t\tthis.createOperationDefinition()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcomponent: OperationDefinitionComponent,\r\n\t\t\t\t\t\tlayout:\r\n\t\t\t\t\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...cloneDeep(itemLayout)\r\n\t\t\t\t\t\t\t\t]),\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tcomponent: OperationDefinitionComponent,\r\n\t\t\t\t\t\tlayout:\r\n\t\t\t\t\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...cloneDeep(updateLayout)\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tfalse),\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t\tthis.updateOperationDefinition()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tcomponent: OperationDefinitionComponent,\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\t\tthis.deleteOperationDefinition()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t\tthis.deleteStatementLogic()\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\t\tIDynamicComponentContext<\r\n\t\t\t\t\t\t\tCommonTableComponent,\r\n\t\t\t\t\t\t\tany>) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the operation definition object.\r\n\t *\r\n\t * @param {any} model\r\n\t * The operation definition object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tpublic async decorateViewModel(\r\n\t\tmodel: any): Promise\r\n\t{\r\n\t\tmodel.operationTypeName =\r\n\t\t\tthis.getOperationTypeName(\r\n\t\t\t\tmodel);\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a delete statement string\r\n\t * based on the operation groups and\r\n\t * parameters associated to an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The delete statement to be displayed on the component.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async deleteStatementLogic(): Promise\r\n\t{\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\t\tconst displayParameters = [];\r\n\r\n\t\tconst operationTypeParameters =\r\n\t\t\tthis.operationService.operationTypeParameters\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(operationTypeParameter: IOperationTypeParameter) =>\r\n\t\t\t\t\t\toperationTypeParameter.typeId === selectedItem.typeId);\r\n\r\n\t\tlet operationDefinitionParameters = [];\r\n\r\n\t\tfor (const operationTypeParameter of operationTypeParameters)\r\n\t\t{\r\n\t\t\toperationDefinitionParameters =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.operationService.operationDefinitionParameters\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(definitionParameter:\r\n\t\t\t\t\t\t\t\tIOperationDefinitionParameter) =>\r\n\t\t\t\t\t\t\t\tdefinitionParameter.typeParameterId ===\r\n\t\t\t\t\t\t\t\t\toperationTypeParameter.id\r\n\t\t\t\t\t\t\t\t\t&& definitionParameter.definitionId\r\n\t\t\t\t\t\t\t\t\t\t=== selectedItem.id)\r\n\t\t\t\t];\r\n\r\n\t\t\toperationDefinitionParameters\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(operationDefinitionParameter) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdisplayParameters.unshift({\r\n\t\t\t\t\t\t\tid: operationDefinitionParameter.id,\r\n\t\t\t\t\t\t\tname: operationTypeParameter.name,\r\n\t\t\t\t\t\t\tvalue: operationDefinitionParameter.value});\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst childOperationGroupHierarchies: IOperationGroup[] =\r\n\t\t\t\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'ChildOperationGroupHierarchies.Any(ChildDefinitionId eq '\r\n\t\t\t\t\t\t+ selectedItem.id + ')',\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tlet deleteStatement: string;\r\n\t\tif (displayParameters.length > 0\r\n\t\t\t|| childOperationGroupHierarchies.length > 0)\r\n\t\t{\r\n\t\t\tthis.operationDefinitionsTableDefinitions\r\n\t\t\t\t.actions.delete.items[0].disabled = true;\r\n\r\n\t\t\tdeleteStatement =\r\n\t\t\t\t`Not allowed to delete Operation Definitions with\r\n\t\t\t\t\tassociated Operation Groups or Parameters.\r\n\t\t\t\t\tRemove them first.`;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.operationDefinitionsTableDefinitions\r\n\t\t\t\t.actions.delete.items[0].disabled = false;\r\n\r\n\t\t\tconst operationDefinition: IOperationDefinition[] =\r\n\t\t\t\tthis.operationService.operationDefinitions\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(definition: IOperationDefinition) =>\r\n\t\t\t\t\t\t\tdefinition.id ===\r\n\t\t\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\t\tdeleteStatement =\r\n\t\t\t\t`Confirm you are about to delete Operation Definition\r\n\t\t\t\t\t${selectedItem.id}\r\n\t\t\t\t\t${operationDefinition[0].name}.`;\r\n\t\t}\r\n\r\n\t\treturn deleteStatement;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async deleteOperationDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tthis.operationDefinitionsApiService\r\n\t\t\t\t\t.delete(selectedItem.id),\r\n\t\t\t\t'Deleting Operation Definition',\r\n\t\t\t\t'Deleted Operation Definition',\r\n\t\t\t\t`Operation Definition ${selectedItem.id} `\r\n\t\t\t\t\t+ 'was deleted.',\r\n\t\t\t\t`Operation Definition ${selectedItem.id} `\r\n\t\t\t\t\t+ 'was not deleted.'));\r\n\r\n\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async updateOperationDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst updateOperationDefinition =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst operationDefinitionData: IOperationDefinition =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\tlabel: selectedItem.label,\r\n\t\t\t\t\t\ticon: selectedItem.icon,\r\n\t\t\t\t\t\ttypeId: selectedItem.typeId,\r\n\t\t\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tselectedItem.ownershipSecurityGroupId,\r\n\t\t\t\t\t\tcreatedById: selectedItem.createdById\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\toperationDefinitionData);\r\n\r\n\t\t\t\tconst mappedSecurityGroups: number[] =\r\n\t\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t\t.getSecurityGroups(\r\n\t\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\t\t\tmappedSecurityGroups.sort(\r\n\t\t\t\t\t(itemOne: number,\r\n\t\t\t\t\t\titemTwo: number) =>\r\n\t\t\t\t\t\t(itemOne - itemTwo));\r\n\r\n\t\t\t\tselectedItem\r\n\t\t\t\t\t.securityGroups.sort(\r\n\t\t\t\t\t\t(itemOne: number,\r\n\t\t\t\t\t\t\titemTwo: number) =>\r\n\t\t\t\t\t\t\t(itemOne - itemTwo));\r\n\r\n\t\t\t\tif (mappedSecurityGroups !==\r\n\t\t\t\t\tselectedItem.securityGroups)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const mappedSecurityGroup of mappedSecurityGroups)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\t\tmappedSecurityGroup);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const securityGroup of\r\n\t\t\t\t\t\tselectedItem.securityGroups)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\t\tthis.commonTableContext.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\tsecurityGroup);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOperationDefinition(),\r\n\t\t\t\t'Updating Operation Definition',\r\n\t\t\t\t'Updated Operation Definition',\r\n\t\t\t\t'Operation Definition '\r\n\t\t\t\t\t+ `${selectedItem.id} `\r\n\t\t\t\t\t+ 'was updated.',\r\n\t\t\t\t'Operation Definition '\r\n\t\t\t\t\t+ `${selectedItem.id} `\r\n\t\t\t\t\t+ 'was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async createOperationDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\t\tawait this.operationService.setStoredVariables();\r\n\r\n\t\tconst createOperationDefinition =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst operationDefinitionData: IOperationDefinition =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\tlabel: selectedItem.label,\r\n\t\t\t\t\t\ticon: selectedItem.icon,\r\n\t\t\t\t\t\ttypeId: selectedItem.typeId,\r\n\t\t\t\t\t\tpublic: selectedItem.public,\r\n\t\t\t\t\t\townershipSecurityGroupId:\r\n\t\t\t\t\t\t\tselectedItem.ownershipSecurityGroupId\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst createdOperationId: number =\r\n\t\t\t\t\tawait this.operationDefinitionsApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\toperationDefinitionData);\r\n\t\t\t\tselectedItem.id = createdOperationId;\r\n\r\n\t\t\t\tconst promiseArray: Promise[] = [];\r\n\t\t\t\tselectedItem.securityGroups.forEach(\r\n\t\t\t\t\t(securityGroupId: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.securityGroups\r\n\t\t\t\t\t\t\t.forEach(\r\n\t\t\t\t\t\t\t\t(securityGroup: ISecurityGroup) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (securityGroupId ===\r\n\t\t\t\t\t\t\t\t\t\tsecurityGroup.id)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpromiseArray.push(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.operationDefinitionsApiService\r\n\t\t\t\t\t\t\t\t\t\t\t\t.createSecurityGroupMap(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcreatedOperationId,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsecurityGroup.id));\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\tawait Promise.all(promiseArray);\r\n\r\n\t\t\t\t// Reset this value to get the fresh created by id.\r\n\t\t\t\tthis.decorateViewModel(selectedItem);\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...selectedItem,\r\n\t\t\t\t\t\t...await this.operationDefinitionsApiService.get(\r\n\t\t\t\t\t\t\tselectedItem.id)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateOperationDefinition(),\r\n\t\t\t\t'Creating Operation Definition',\r\n\t\t\t\t'Created Operation Definition',\r\n\t\t\t\t`Operation Definition ${selectedItem.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Operation Definition ${selectedItem.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the value is existing or not.\r\n\t * Note: This validation will not find matches if the user does not have\r\n\t * query permissions for the operation definition entity with a\r\n\t * matching name.\r\n\t *\r\n\t * @async\r\n\t * @param {UntypedFormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async isExistingName(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tconst initialPromiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tthis.operationDefinitionsApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`Name.ToLower() eq '${control.value.toLowerCase()}'`,\r\n\t\t\t\t\t\tAppConstants.empty)\r\n\t\t\t];\r\n\r\n\t\tinitialPromiseArray.push(\r\n\t\t\tthis.operationDefinitionsApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Id eq ${this.commonTableContext.source.selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty));\r\n\r\n\t\treturn Promise.all(\r\n\t\t\tinitialPromiseArray)\r\n\t\t\t.then(\r\n\t\t\t\tasync(\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\ttypedOperationNames,\r\n\t\t\t\t\t\texistingOperations\r\n\t\t\t\t\t]) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (typedOperationNames.length > 0\r\n\t\t\t\t\t\t&& typedOperationNames[0].name !==\r\n\t\t\t\t\t\t\texistingOperations[0]?.name)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn Promise.resolve(false);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn Promise.resolve(true);\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the typeId is allowed to\r\n\t * be modified depending on the existing parameter type.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate async allowedToChange(control: UntypedFormControl): Promise\r\n\t{\r\n\t\tawait this.operationService.setStoredVariables();\r\n\t\tlet allowToChange: boolean = false;\r\n\t\tlet operationDefinitionParameter: object[] = [];\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst existingParameters: IOperationDefinitionParameter[] =\r\n\t\t\tthis.operationService.operationDefinitionParameters\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(definitionParameter:\r\n\t\t\t\t\t\tIOperationDefinitionParameter) =>\r\n\t\t\t\t\t\tdefinitionParameter.definitionId ===\r\n\t\t\t\t\t\t\tselectedItem.id);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(control.value))\r\n\t\t{\r\n\t\t\tconst typeParameterDefinition =\r\n\t\t\t\tthis.operationService.operationTypeParameters\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(operationTypeParameter: IOperationTypeParameter) =>\r\n\t\t\t\t\t\t\toperationTypeParameter.typeId === control.value);\r\n\r\n\t\t\toperationDefinitionParameter =\r\n\t\t\t\ttypeParameterDefinition.length > 0\r\n\t\t\t\t\t? this.operationService.operationDefinitionParameters\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(definitionParameter:\r\n\t\t\t\t\t\t\t\tIOperationDefinitionParameter) =>\r\n\t\t\t\t\t\t\t\tdefinitionParameter.definitionId ===\r\n\t\t\t\t\t\t\t\t\tselectedItem.id\r\n\t\t\t\t\t\t\t\t&& definitionParameter.typeParameterId ===\r\n\t\t\t\t\t\t\t\t\ttypeParameterDefinition[0].id)\r\n\t\t\t\t\t: [];\r\n\t\t}\r\n\r\n\t\tif (existingParameters.length === 0\r\n\t\t\t|| operationDefinitionParameter.length > 0)\r\n\t\t{\r\n\t\t\tallowToChange = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst persistedData: IOperationDefinition[] =\r\n\t\t\t\tthis.operationService.operationDefinitions\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(operationDefinition: IOperationDefinition)\t=>\r\n\t\t\t\t\t\t\toperationDefinition.id === selectedItem.id);\r\n\r\n\t\t\tif (control.value !== persistedData[0].typeId)\r\n\t\t\t{\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontrol.setValue(\r\n\t\t\t\t\t\t\tpersistedData[0].typeId,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\temitEvent: false,\r\n\t\t\t\t\t\t\t\temitModelToViewChange: true,\r\n\t\t\t\t\t\t\t\temitViewToModelChange: false\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t},\r\n\t\t\t\t\tthis.fieldValueDebounceTime);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(allowToChange);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the operation type name based on the operation definition.\r\n\t *\r\n\t * @param {IOperationDefinition} operationDefinition\r\n\t * The operation definition object.\r\n\t * @returns {string}\r\n\t * The operation type name.\r\n\t * @memberof OperationDefinitionsComponent\r\n\t */\r\n\tprivate getOperationTypeName(\r\n\t\toperationDefinition: IOperationDefinition): string\r\n\t{\r\n\t\treturn this.operationTypeOptions\r\n\t\t\t.find(\r\n\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\toption.value ===\r\n\t\t\t\t\t\toperationDefinition.typeId)\r\n\t\t\t?.label;\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tFieldType,\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-operation-group-create-child',\r\n\ttemplateUrl: './operation-group-create-child.component.html',\r\n\tstyleUrls: ['./operation-group-create-child.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * operation group expand component.\r\n *\r\n * @export\r\n * @class OperationGroupCreateChild\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class OperationGroupCreateChildComponent\r\n\textends FieldType\r\n\timplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the OperationGroupCreateChild class.\r\n\t *\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The api service used to load operation group data.\r\n\t * @param {OperationDefinitionApiService} operationGroupApiService\r\n\t * The api service used to load operation definition data.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @param {ChangeDetectorRef} changeRef\r\n\t * The change detector reference.\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeRef: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the operation definitions.\r\n\t *\r\n\t * @type {IOperationDefinition[]}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic operationDefinitions: IOperationDefinition[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation groups.\r\n\t *\r\n\t * @type {IOperationGroup[]}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic operationGroups: IOperationGroup[] = [];\r\n\r\n\t/**\r\n\t * Sets the data chunk limit.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic dataChunkLimit: number = 100;\r\n\r\n\t/**\r\n\t * Gets or sets the operation query params.\r\n\t *\r\n\t * @type {IObjectSearch}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic operationQueryParams: IObjectSearch =\r\n\t\t{\r\n\t\t\tfilter: AppConstants.empty,\r\n\t\t\torderBy: `Id ${AppConstants.sortDirections.ascending}`,\r\n\t\t\toffset: null,\r\n\t\t\tlimit: this.dataChunkLimit\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the operation child type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic operationChildType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the create formly layout.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic createFormlylayout: object[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading layout state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic loadingLayout: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the layout redraw debounce delay.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tprivate readonly layoutRedrawDebounceDelay: number = 250;\r\n\r\n\t/**\r\n\t * Initialazes the operation group create child component\r\n\t * by getting all existing operation groups and definitions\r\n\t * and drawing a formly layout.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic async ngOnInit()\r\n\t{\r\n\t\tthis.operationGroups =\r\n\t\t\tawait this.populateOperations(\r\n\t\t\t\t{\r\n\t\t\t\t\toperationQueryReturn:\r\n\t\t\t\t\t\tasync(queryParams: any) =>\r\n\t\t\t\t\t\t\tthis.operationGroupApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tqueryParams.filter,\r\n\t\t\t\t\t\t\t\t\tqueryParams.orderBy,\r\n\t\t\t\t\t\t\t\t\tqueryParams.offset,\r\n\t\t\t\t\t\t\t\t\tqueryParams.limit),\r\n\t\t\t\t\toperationQueryParams: this.operationQueryParams\r\n\t\t\t\t});\r\n\r\n\t\tthis.operationDefinitions =\r\n\t\t\tawait this.populateOperations(\r\n\t\t\t\t{\r\n\t\t\t\t\toperationQueryReturn: async(queryParams: any) =>\r\n\t\t\t\t\t\tthis.operationDefinitionApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tqueryParams.filter,\r\n\t\t\t\t\t\t\t\tqueryParams.orderBy,\r\n\t\t\t\t\t\t\t\tqueryParams.offset,\r\n\t\t\t\t\t\t\t\tqueryParams.limit),\r\n\t\t\t\t\toperationQueryParams: this.operationQueryParams\r\n\t\t\t\t});\r\n\r\n\t\tthis.defineFormlyLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Defines the formly layout.\r\n\t *\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic defineFormlyLayout(): void\r\n\t{\r\n\t\tthis.createFormlylayout =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'type',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\tplaceholder: 'Select a Type',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tdefault: this.operationChildType,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: 'OperationDefinition',\r\n\t\t\t\t\t\t\t\t\tlabel: 'Operation Definition'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: 'OperationGroup',\r\n\t\t\t\t\t\t\t\t\tlabel: 'Operation Group'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (field.formControl.value\r\n\t\t\t\t\t\t\t\t\t=== this.operationChildType)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (field.formControl.pristine === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfield.formControl.setValue(\r\n\t\t\t\t\t\t\t\t\t\tthis.operationChildType);\r\n\t\t\t\t\t\t\t\t\tthis.changeRef.detectChanges();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.operationChildType =\r\n\t\t\t\t\t\t\t\t\t\tfield.formControl.value;\r\n\t\t\t\t\t\t\t\t\tthis.loadingLayout = true;\r\n\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.defineFormlyLayout();\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tthis.layoutRedrawDebounceDelay);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\tplaceholder: 'Select a Name',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdefault: null,\r\n\t\t\t\t\t\toptions: this.mapDefinitionNames(\r\n\t\t\t\t\t\t\tthis.operationChildType),\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueCombination: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueCombination(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing Relationship.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customInputNumber,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\tmultipleOf: 10,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueOrder(control),\r\n\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.loadingLayout = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Filters and maps the operation definition\r\n\t * based on the entity type\r\n\t *\r\n\t * @param {string} type\r\n\t * The operation type id.\r\n\t * @returns {Observable}\r\n\t * An observable array filtered and mapped\r\n\t * based on the type id.\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tpublic mapDefinitionNames(type: string): object[]\r\n\t{\r\n\t\tlet operationType: any[] = [];\r\n\r\n\t\tif (type === 'OperationDefinition')\r\n\t\t{\r\n\t\t\toperationType = this.operationDefinitions;\r\n\t\t}\r\n\t\telse if (type === 'OperationGroup')\r\n\t\t{\r\n\t\t\toperationType = this.operationGroups;\r\n\t\t}\r\n\r\n\t\treturn operationType.map(\r\n\t\t\t(option: IOperationDefinition | IOperationGroup) =>\r\n\t\t\t\t({\r\n\t\t\t\t\tvalue: option.id,\r\n\t\t\t\t\tlabel: option.name\r\n\t\t\t\t}))\r\n\t\t\t.sort((\r\n\t\t\t\toptionOne: IDropdownOption,\r\n\t\t\t\toptionTwo: IDropdownOption) =>\r\n\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\toptionOne,\r\n\t\t\t\t\toptionTwo,\r\n\t\t\t\t\t'label'));\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the operation order is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tprivate async uniqueOrder(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tlet operationGroupRelationships: IOperationGroupRelationship[] =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tthis.context.source.customContext.source.selectedItem.id);\r\n\t\toperationGroupRelationships =\r\n\t\t\toperationGroupRelationships.filter(\r\n\t\t\t\t(child: IOperationGroupRelationship) =>\r\n\t\t\t\t\tchild.order === parseInt(\r\n\t\t\t\t\t\tcontrol.value,\r\n\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\toperationGroupRelationships.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the operation relationship\r\n\t * with parent group and child type is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tprivate async uniqueCombination(\r\n\t\tcontrol: UntypedFormControl): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.operationChildType))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet operationGroupRelationships: IOperationGroupRelationship[] =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.getChildren(\r\n\t\t\t\t\tthis.context.source.customContext.source.selectedItem.id);\r\n\t\toperationGroupRelationships =\r\n\t\t\toperationGroupRelationships.filter(\r\n\t\t\t\t(child: IOperationGroupRelationship) =>\r\n\t\t\t\t\tchild.id === control.value\r\n\t\t\t\t\t\t&& child.type === this.operationChildType);\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\toperationGroupRelationships.length === 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the operation object with all the existing.\r\n\t *\r\n\t * @async\r\n\t * @param {any} operationQueryDefinitions\r\n\t * The operation api definitions.\r\n\t * @returns {Promise}\r\n\t * The awaitable promise data query.\r\n\t * @memberof OperationGroupCreateChild\r\n\t */\r\n\tprivate async populateOperations(\r\n\t\toperationQueryDefinitions: any): Promise\r\n\t{\r\n\t\tlet dataChunk =\r\n\t\t\tawait operationQueryDefinitions\r\n\t\t\t\t.operationQueryReturn(\r\n\t\t\t\t\toperationQueryDefinitions.operationQueryParams);\r\n\r\n\t\tlet operations =\r\n\t\t\t[\r\n\t\t\t\t...dataChunk\r\n\t\t\t];\r\n\r\n\t\twhile (dataChunk.length === this.dataChunkLimit)\r\n\t\t{\r\n\t\t\toperationQueryDefinitions.operationQueryParams.filter =\r\n\t\t\t\t`Id gt ${dataChunk[dataChunk.length - 1].id}`;\r\n\r\n\t\t\tdataChunk =\r\n\t\t\t\tawait operationQueryDefinitions\r\n\t\t\t\t\t.operationQueryReturn(\r\n\t\t\t\t\t\toperationQueryDefinitions.operationQueryParams);\r\n\r\n\t\t\toperations =\r\n\t\t\t\t[\r\n\t\t\t\t\t...operations,\r\n\t\t\t\t\t...dataChunk\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn operations;\r\n\t}\r\n}","\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tOperationGroupCreateChildComponent\r\n} from '@admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group-create/operation-group-create-child.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-operation-group',\r\n\ttemplateUrl: './operation-group.component.html',\r\n\tstyleUrls: [\r\n\t\t'./operation-group.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the\r\n * operation group expand component.\r\n *\r\n * @export\r\n * @class OperationGroupComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class OperationGroupComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the OperationGroupComponent class.\r\n\t *\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The api service used to load operation group data.\r\n\t * @param {OperationDefinitionApiService} operationGroupApiService\r\n\t * The api service used to load operation definition data.\r\n\t * @param {OperationTypeApiService} operationTypeApiService\r\n\t * The api service used to load operation type data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component to get its data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the\r\n\t * children common only view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childrenTableDefinitionsView: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childViewAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childViewSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the\r\n\t * children common table update view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childrenTableDefinitionsUpdate: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childUpdateAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic childUpdateSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Sets the data chunk limit.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic dataChunkLimit: number = 100;\r\n\r\n\t/**\r\n\t * Gets ir Sets the operation query params.\r\n\t *\r\n\t * @type {IObjectSearch}\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic operationQueryParams: IObjectSearch =\r\n\t\t{\r\n\t\t\tfilter: AppConstants.empty,\r\n\t\t\torderBy: `Id ${AppConstants.sortDirections.ascending}`,\r\n\t\t\toffset: null,\r\n\t\t\tlimit: this.dataChunkLimit\r\n\t\t};\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\r\n\t\tthis.childViewAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'type',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.childViewSelectedColumns = this.childViewAvailableColumns;\r\n\r\n\t\tthis.childUpdateAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.childViewAvailableColumns\r\n\t\t\t];\r\n\t\tthis.childUpdateSelectedColumns = this.childUpdateAvailableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for a common table\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.childrenTableDefinitionsView =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Children',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Operation Child'),\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy:\r\n\t\t\t\t\t\t\t`order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync () =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst children: IOperationGroupRelationship[] =\r\n\t\t\t\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id);\r\n\r\n\t\t\t\t\t\treturn this.decorateViewModelArray(\r\n\t\t\t\t\t\t\tchildren);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.childViewAvailableColumns,\r\n\t\t\t\tselectedColumns: this.childViewSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.childrenTableDefinitionsUpdate =\r\n\t\t\t{\r\n\t\t\t\t...cloneDeep(this.childrenTableDefinitionsView),\r\n\t\t\t\tactions:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\t\tcustomContext:\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\tthis.context,\r\n\t\t\t\t\t\t\tcomponent: OperationGroupCreateChildComponent,\r\n\t\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\t\tcommand: async() => this.createChild()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tupdateIndex: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst groupName: string =\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.name;\r\n\t\t\t\t\t\t\t\tconst childName: string =\r\n\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem.name;\r\n\r\n\t\t\t\t\t\t\t\treturn 'Confirm to remove child '\r\n\t\t\t\t\t\t\t\t\t+ `${childName} `\r\n\t\t\t\t\t\t\t\t\t+ 'from operation group '\r\n\t\t\t\t\t\t\t\t\t+ `${groupName}.`;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\t\tcommand: () => this.deleteChild()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model array.\r\n\t *\r\n\t * @param {IOperationGroupRelationship[]} modoperationGroupRelationshipsel\r\n\t * The array to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model array for display in this component.\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tpublic async decorateViewModelArray(\r\n\t\toperationGroupRelationships:\r\n\t\t\tIOperationGroupRelationship[]): Promise\r\n\t{\r\n\t\tconst childrenData = [];\r\n\t\tlet baseIdCounter = 1;\r\n\r\n\t\tfor (const child of operationGroupRelationships)\r\n\t\t{\r\n\t\t\tlet operationName: string = AppConstants.empty;\r\n\t\t\tif (child.type === 'OperationDefinition')\r\n\t\t\t{\r\n\t\t\t\toperationName =\r\n\t\t\t\t\t(await this.operationDefinitionApiService\r\n\t\t\t\t\t\t.get(child.id)).name;\r\n\t\t\t}\r\n\t\t\telse if (child.type === 'OperationGroup')\r\n\t\t\t{\r\n\t\t\t\toperationName =\r\n\t\t\t\t\t(await this.operationGroupApiService\r\n\t\t\t\t\t\t.get(child.id)).name;\r\n\t\t\t}\r\n\r\n\t\t\tchildrenData.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tid: baseIdCounter,\r\n\t\t\t\t\tbaseId: child.id,\r\n\t\t\t\t\torder: child.order,\r\n\t\t\t\t\tname: operationName,\r\n\t\t\t\t\ttype: child.type\r\n\t\t\t\t});\r\n\r\n\t\t\tbaseIdCounter++;\r\n\t\t}\r\n\r\n\t\treturn childrenData;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the order index of the selected row item\r\n\t * up or down based on the indexOperator.\r\n\t *\r\n\t * @async\r\n\t * @param {any} selectedItem\r\n\t * The selected item to update the index of.\r\n\t * @param {number} indexReference\r\n\t * The index reference to add or substract to the current\r\n\t * selected order index.\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tprivate async updateOrderIndex(\r\n\t\tselectedItem: any,\r\n\t\tindexReference: number): Promise\r\n\t{\r\n\t\tthis.commonTableContext.source.loadingNextDataset = true;\r\n\t\tthis.commonTableContext.source.selectedItem = selectedItem;\r\n\r\n\t\tconst updateOrderIndex: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst children: IOperationGroupRelationship[] =\r\n\t\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t\t.getChildren(this.context.source.selectedItem.id);\r\n\t\t\t\tchildren.sort(\r\n\t\t\t\t\t(itemOne: any,\r\n\t\t\t\t\t\titemTwo: any) =>\r\n\t\t\t\t\t\titemOne.order - itemTwo.order);\r\n\r\n\t\t\t\tconst orderedChildren: IOperationGroupRelationship[] =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t...children\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\tconst neighborOrderIndex: number =\r\n\t\t\t\t\tthis.findSelectedChildIndex(\r\n\t\t\t\t\t\torderedChildren,\r\n\t\t\t\t\t\tselectedItem) + indexReference;\r\n\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.updateChild(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedChildren[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\ttype: orderedChildren[neighborOrderIndex].type,\r\n\t\t\t\t\t\t\torder: 1000\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.updateChild(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.baseId,\r\n\t\t\t\t\t\t\ttype: selectedItem.type,\r\n\t\t\t\t\t\t\torder: orderedChildren[neighborOrderIndex].order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.updateChild(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedChildren[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\ttype: orderedChildren[neighborOrderIndex].type,\r\n\t\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.commonTableContext.source.virtualData[\r\n\t\t\t\t\tneighborOrderIndex].order =\r\n\t\t\t\t\t\tselectedItem.order;\r\n\t\t\t\tthis.commonTableContext.source.selectedItem.order =\r\n\t\t\t\t\torderedChildren[neighborOrderIndex].order;\r\n\r\n\t\t\t\tthis.sortCommonTableByOrder();\r\n\t\t\t\tthis.commonTableContext.source.loadingNextDataset = false;\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOrderIndex(),\r\n\t\t\t\t'Updating Child Order',\r\n\t\t\t\t'Updated Child Order',\r\n\t\t\t\t'Child Order was successfully updated.',\r\n\t\t\t\t'Child Order was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the selected child index.\r\n\t *\r\n\t * @param {IOperationGroupRelationship} children\r\n\t * The children object array.\r\n\t * @param {any} selectedChild\r\n\t * The selected child.\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tprivate findSelectedChildIndex(\r\n\t\tchildren: IOperationGroupRelationship[],\r\n\t\tselectedChild: any): number\r\n\t{\r\n\t\tfor (let index = 0; index < children.length; index++)\r\n\t\t{\r\n\t\t\tif (children[index].id === selectedChild.baseId\r\n\t\t\t\t&& children[index].type === selectedChild.type\r\n\t\t\t\t&& children[index].order === selectedChild.order)\r\n\t\t\t{\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the common table context data by order.\r\n\t *\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tprivate sortCommonTableByOrder(): void\r\n\t{\r\n\t\tthis.commonTableContext.source.virtualData\r\n\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\titemOne.order - itemTwo.order);\r\n\t\tthis.commonTableContext.source.virtualData =\r\n\t\t\t[\r\n\t\t\t\t...this.commonTableContext.source.virtualData\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new child to the operation group.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tprivate async createChild(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createChild: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.createChild(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.name,\r\n\t\t\t\t\t\t\ttype: selectedItem.type,\r\n\t\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tselectedItem.baseId = selectedItem.name;\r\n\t\t\t\tif (selectedItem.type === 'OperationDefinition')\r\n\t\t\t\t{\r\n\t\t\t\t\tselectedItem.name =\r\n\t\t\t\t\t\t(await this.operationDefinitionApiService\r\n\t\t\t\t\t\t\t.get(selectedItem.name)).name;\r\n\t\t\t\t}\r\n\t\t\t\telse if (selectedItem.type === 'OperationGroup')\r\n\t\t\t\t{\r\n\t\t\t\t\tselectedItem.name =\r\n\t\t\t\t\t\t(await this.operationGroupApiService\r\n\t\t\t\t\t\t\t.get(selectedItem.name)).name;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.commonTableContext.source.addSelectedItem();\r\n\t\t\t\tthis.sortCommonTableByOrder();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateChild(),\r\n\t\t\t\t'Creation Child Relationship',\r\n\t\t\t\t'Created Child Relationship',\r\n\t\t\t\t'Child Relationship was created.',\r\n\t\t\t\t'Child Relationship was not created.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing child to the operation group.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupComponent\r\n\t */\r\n\tprivate async deleteChild(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteChild: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.deleteChild(\r\n\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.baseId,\r\n\t\t\t\t\t\t\ttype: selectedItem.type\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteChild(),\r\n\t\t\t\t'Deleting Child Relationship',\r\n\t\t\t\t'Deleted Child Relationship',\r\n\t\t\t\t`Child Relationship ${selectedItem.baseId} ` +\r\n\t\t\t\t\t'was deleted.',\r\n\t\t\t\t`Child Relationship ${selectedItem.baseId} ` +\r\n\t\t\t\t\t'was not deleted.'));\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonFormlyFieldConstants\r\n} from '@shared/constants/common-formly-field-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tOperationGroupComponent\r\n} from './operation-group-expand/operation-group.component';\r\nimport { InsuranceService } from '@insurance/services/insurance.service';\r\n\r\n/* eslint-disable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-operation-groups',\r\n\ttemplateUrl: './operation-groups.component.html',\r\n\tstyleUrls: [\r\n\t\t'./operation-groups.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the user interface operation\r\n * groups component.\r\n *\r\n * @export\r\n * @class OperationGroupsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class OperationGroupsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the operation group component and sets up\r\n\t * the services to be utilized within the component.\r\n\t *\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The api service used to load the operation group data.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for common dropdown options.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service to be displayed in the Activity List Component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The inusrance service.\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tprivate readonly insuranceService: InsuranceService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tpublic operationGroupsTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets the formly validator debounce time.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate readonly validatorDebounceTime: number = 250;\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'label',\r\n\t\t\t\t\tcolumnHeader: 'Label',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'icon',\r\n\t\t\t\t\tcolumnHeader: 'Icon',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the list column definitions for the current\r\n\t * operation definition object list.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tconst securityGroupOptions: IDropdownOption[] =\r\n\t\t\tawait this.optionsFactory.getSecurityGroupOptions(\r\n\t\t\t\tawait this.insuranceService.getMasterSecurityGroups());\r\n\r\n\t\tconst itemLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\tdescription: 'Name',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmaxLength: 64\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\texpression: async(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.allowToUpdateName(control.value),\r\n\t\t\t\t\t\t\tmessage: 'Existing Name.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'label',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Label',\r\n\t\t\t\t\t\tdescription: 'Label',\r\n\t\t\t\t\t\tmaxLength: 64\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'icon',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customIconInput,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Icon',\r\n\t\t\t\t\t\tdescription: 'Icon',\r\n\t\t\t\t\t\texternalLinkTooltip: 'Font Awesome Icons',\r\n\t\t\t\t\t\texternalLink: AppConstants\r\n\t\t\t\t\t\t\t.externalUrls.fontAwesomeIcons,\r\n\t\t\t\t\t\tmaxLength: 256\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description',\r\n\t\t\t\t\t\tdescription: 'Description',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmaxLength: 256\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.publicField\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t.ownershipSecurityGroupField,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t...CommonFormlyFieldConstants\r\n\t\t\t\t\t\t\t.ownershipSecurityGroupField\r\n\t\t\t\t\t\t\t.props,\r\n\t\t\t\t\t\tlabel: 'Group Owner(s)',\r\n\t\t\t\t\t\toptions: securityGroupOptions,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst createLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\t...cloneDeep(itemLayout).map(\r\n\t\t\t\t\t(layoutItem: FormlyFieldConfig) =>\r\n\t\t\t\t\t\tlayoutItem.key === 'name'\r\n\t\t\t\t\t\t\t? {\r\n\t\t\t\t\t\t\t\t...layoutItem,\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueName: {\r\n\t\t\t\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\tthis.isExistingName(control.value),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Name.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t: layoutItem)\r\n\t\t\t];\r\n\r\n\t\tthis.operationGroupsTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Groups',\r\n\t\t\t\tobjectSearch:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilter: AppConstants.empty,\r\n\t\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\t\toffset: 0,\r\n\t\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\t(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t\tthis.operationGroupApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Operation Group'),\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tlayout: createLayout,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.createOperationGroup()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcomponent: OperationGroupComponent,\r\n\t\t\t\t\t\tlayout:\r\n\t\t\t\t\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...cloneDeep(itemLayout)\r\n\t\t\t\t\t\t\t\t]),\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tcomponent: OperationGroupComponent,\r\n\t\t\t\t\t\tlayout:\r\n\t\t\t\t\t\t\tFormlyHelper.disableAllFields(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...cloneDeep(itemLayout)\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tfalse),\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand: () => this.updateOperationGroup()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\tcommand: () => this.deleteOperationGroup()\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tdeleteStatement: () => this.deleteStatementLogic(),\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async createOperationGroup(): Promise\r\n\t{\r\n\t\tconst operationGroup: IOperationGroup =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createOperationGroup: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\toperationGroup.id =\r\n\t\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\toperationGroup);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t\t.get(operationGroup.id);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateOperationGroup(),\r\n\t\t\t\t'Creating Operation Group',\r\n\t\t\t\t'Created Operation Group',\r\n\t\t\t\t`Operation Group ${operationGroup.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Operation Group ${operationGroup.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an operation definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async updateOperationGroup(): Promise\r\n\t{\r\n\t\tconst operationGroup: IOperationGroup =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst updateOperationGroup: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\toperationGroup.id,\r\n\t\t\t\t\t\toperationGroup);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOperationGroup(),\r\n\t\t\t\t'Updating Operation Group',\r\n\t\t\t\t'Updated Operation Group',\r\n\t\t\t\t`Operation Group ${operationGroup.id}\r\n\t\t\t\t\twas updated.`,\r\n\t\t\t\t`Operation Group ${operationGroup.id}\r\n\t\t\t\t\twas not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an operation groups.\r\n\t *\r\n\t * @async\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async deleteOperationGroup(): Promise\r\n\t{\r\n\t\tconst operationGroup: IOperationGroup =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteOperationGroup: () => Promise =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.delete(operationGroup.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteOperationGroup(),\r\n\t\t\t\t'Deleting Operation Group',\r\n\t\t\t\t'Deleted Operation Group',\r\n\t\t\t\t`Operation Group ${operationGroup.id} ` +\r\n\t\t\t\t\t'was deleted.',\r\n\t\t\t\t`Operation Group ${operationGroup.id} ` +\r\n\t\t\t\t\t'was not deleted.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the value is existing or not.\r\n\t *\r\n\t * @async\r\n\t * @param {string} value\r\n\t * The Name value.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async isExistingName(value: string): Promise\r\n\t{\r\n\t\tconst operationGroup =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${value}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => resolve(operationGroup.length === 0),\r\n\t\t\t\t\tthis.validatorDebounceTime);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Defines and validates if the value is existing or not.\r\n\t *\r\n\t * @async\r\n\t * @param {string} value\r\n\t * The Name value.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async allowToUpdateName(\r\n\t\tvalue: string): Promise\r\n\t{\r\n\t\tlet allowedToUpdate: boolean = true;\r\n\t\tconst persistedGroup: any =\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.get(this.commonTableContext.source.selectedItem.id);\r\n\r\n\t\tif (persistedGroup.name !== value)\r\n\t\t{\r\n\t\t\tconst operationGroup =\r\n\t\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`Name eq '${value}'`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tallowedToUpdate = operationGroup.length <= 0;\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => resolve(allowedToUpdate),\r\n\t\t\t\t\tthis.validatorDebounceTime);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a delete statement string\r\n\t * based on if there are any children relationship.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The delete statement to be displayed on te component.\r\n\t * @memberof OperationGroupsComponent\r\n\t */\r\n\tprivate async deleteStatementLogic(): Promise\r\n\t{\r\n\t\tconst childRelationship = await this.operationGroupApiService\r\n\t\t\t.getChildren(this.commonTableContext.source.selectedItem.id);\r\n\r\n\t\tthis.operationGroupsTableDefinitions.actions.delete.items[0]\r\n\t\t\t.disabled = childRelationship.length > 0;\r\n\r\n\t\treturn childRelationship.length > 0\r\n\t\t\t? `Unable to delete Group\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\tdue to child relationships.`\r\n\t\t\t: `Confirm you are about to delete Group\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.name}.`;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n@Component({\r\n\tselector: 'app-styles',\r\n\ttemplateUrl: './styles.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the user interface styles\r\n * component.\r\n *\r\n * @export\r\n * @class StylesComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class StylesComponent\r\n\textends PageContextDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of the styles component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof StylesComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n}","\r\n\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-action-definition-router',\r\n\ttemplateUrl: './action-definition-router.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of action definition\r\n * router component.\r\n *\r\n * @export\r\n * @class ActionDefinitionRouterComponent\r\n */\r\nexport class ActionDefinitionRouterComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\r\n\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tId:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.id}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tEntity Type:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.entityTypeId}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tEntity Version:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.entityVersionId}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tName:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.name}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tDescription:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.description}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tClass Reference:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.classReference}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tClass Definition:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.classDefinition}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tFailure Action:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.failureActionId}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tCreate Date:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.createDate}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tStart Date:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.startDate}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tEnd Date:\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{actionDefinition.endDate}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-action-definition',\r\n\ttemplateUrl: './action-definition.component.html',\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an action definition\r\n * display.\r\n *\r\n * @export\r\n * @class ActionDefinitionComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class ActionDefinitionComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActionDefinitionComponent class.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {Router} router\r\n\t * The router used in this component for site navigation.\r\n\t * @param {WorkflowActionDefinitionsApiService} actionDefinitionsApiService\r\n\t * The api service used to gather action definition data.\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic actionDefinitionsApiService: WorkflowActionDefinitionsApiService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the action definition currently displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions}\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tpublic actionDefinition: IWorkflowActionDefinitions =\r\n\t\t{};\r\n\r\n\t/**\r\n\t * Gets or sets the loading value for this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tpublic loading: boolean;\r\n\r\n\t/**\r\n\t * Gets the page level operation group name for this component's\r\n\t * context menu.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tpublic readonly pageContextOperationGroupName: string =\r\n\t\t'WorkflowAction.PageContext';\r\n\r\n\t/**\r\n\t * Gets the page context for this component which is passed\r\n\t * to associated context components.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tdata: {\r\n\t\t\t\tactionDefinition: this.actionDefinition\r\n\t\t\t},\r\n\t\t\tsource: this\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the name of the id route parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionDefinitionComponent\r\n\t */\r\n\tprivate readonly idRouteParameter: string = 'id';\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This will load the action definition based on the route id sent to this\r\n\t * component.\r\n\t *\r\n\t * @memberof ActionDefinitionComponent\r\n\t*/\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tconst actionDefinitionId: number =\r\n\t\t\tparseInt(\r\n\t\t\t\tthis.route.snapshot.paramMap.get(\r\n\t\t\t\t\tthis.idRouteParameter),\r\n\t\t\t\t10);\r\n\r\n\t\tthis.actionDefinition =\r\n\t\t\tawait this.actionDefinitionsApiService.get(\r\n\t\t\t\tactionDefinitionId);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIWorkflowActionInstancesDto\r\n} from '@api/interfaces/workflow/workflow-action-instances.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the workflow\r\n * action instances controller.\r\n *\r\n * @export\r\n * @class WorkflowActionInstancesApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class WorkflowActionInstancesApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a WorkflowActionInstancesApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof WorkflowActionInstancesApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.workflowActionInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an IWorkflowActionInstancesDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {IWorkflowActionInstancesDto} _entity\r\n\t * The workflow action instance to create.\r\n\t * @returns {Promise}\r\n\t * The newly created item identifier.\r\n\t * @memberof WorkflowActionInstancesApiService\r\n\t */\r\n\tpublic async create(\r\n\t\t_entity: IWorkflowActionInstancesDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an IWorkflowActionInstancesDto with the specified information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} _id\r\n\t * Id of the workflow action instance to update.\r\n\t * @param {IWorkflowActionInstancesDto} _entity\r\n\t * The workflow action instance to update.\r\n\t * @returns {Promise}\r\n\t * Updated item identifier\r\n\t * @memberof WorkflowActionInstancesApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: IWorkflowActionInstancesDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.update,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an IWorkflowActionInstancesDto with the specified identifier.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} id\r\n\t * The identifier of the workflow action instance to delete.\r\n\t * @returns {Promise}\r\n\t * An observable of the delete no-content response.\r\n\t * @memberof WorkflowActionInstancesApiService\r\n\t */\r\n\tpublic async delete(\r\n\t\t_id: number): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getHandledByOthersMessage(\r\n\t\t\t\tAppConstants.apiMethods.delete,\r\n\t\t\t\tAppConstants.systemEngines.workflowEngine\r\n\t\t\t));\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tWorkflowActionInstancesApiService\r\n} from '@api/services/workflow/workflow-action-instances.api.service';\r\nimport {\r\n\tWorkflowRequisiteTypesApiService\r\n} from '@api/services/workflow/workflow-requisite-types.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tIWorkflowActionInstances\r\n} from '@shared/interfaces/workflow/workflow-action-instances.interface';\r\nimport {\r\n\tIWorkflowActionRequisites\r\n} from '@shared/interfaces/workflow/workflow-action-requisites.interface';\r\nimport {\r\n\tIWorkflowRequisiteTypes\r\n} from '@shared/interfaces/workflow/workflow-requisite-types.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-action-definition-expand',\r\n\ttemplateUrl: './action-definition-expand.component.html',\r\n\tstyleUrls: [\r\n\t\t'./action-definition-expand.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an action definition expand.\r\n *\r\n * @export\r\n * @class ActionDefinitionExpandComponent\r\n * @implements {ActionDefinitionExpandComponent}\r\n * @implements {IDynamicComponent}\r\n */\r\nexport class ActionDefinitionExpandComponent\r\n\textends CommonTablePageDirective\r\n\timplements IDynamicComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActionDefinitionExpandComponent class.\r\n\t *\r\n\t * @param {WorkflowRequisiteTypesApiService} workflowRequisiteTypeApiService\r\n\t * The api service used to gather workflow requisite type data.\r\n\t * @param {WorkflowActionInstancesApiService}\r\n\t * workflowActionInstanceApiService\r\n\t * The api service used to gather workflow action instance data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @param {ChartFactory} chartFactory\r\n\t * The chart factory service.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic workflowRequisiteTypeApiService:\r\n\t\t\tWorkflowRequisiteTypesApiService,\r\n\t\tpublic workflowActionInstanceApiService:\r\n\t\t\tWorkflowActionInstancesApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic chartFactory: ChartFactory,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the postrequisite common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic postRequisiteCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the prerequisite common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic preRequisiteCommonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout definition.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic formlyLayoutDefinition: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading formly definitions.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic loadingFormlyDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the PreRequisite table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic preRequisiteTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic preRequisiteAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic preRequisiteSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the PostRequisite table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic postRequisiteTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic postRequisiteAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic postRequisiteSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loading instance table definitions.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic loadingInstanceTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the PostRequisite table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic actionInstanceTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic actionInstanceAvailableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic actionInstanceSelectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the workflow requisite types.\r\n\t *\r\n\t * @type {IWorkflowRequisiteTypes[]}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic requisiteTypes: IWorkflowRequisiteTypes[];\r\n\r\n\t/**\r\n\t * Gets or sets the action definition expand context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic actionExpandDefinitionsContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the context menu items.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic summaryCardItems: object;\r\n\r\n\t/**\r\n\t * Gets or sets the context menu items.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic chartItem: object;\r\n\r\n\t/**\r\n\t * Gets or sets the local storage filter used\r\n\t * to hide or show context menu content.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic filter: string;\r\n\r\n\t/**\r\n\t * Gets or sets if display the requisites tables.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic displayRequisiteTables: boolean = true;\r\n\r\n\t/**\r\n\t * Sets the event by method chart definition.\r\n\t *\r\n\t * @type {{\r\n\t\tchartColors: string[],\r\n\t\tchartLabels: string[],\r\n\t\tchartPivotProperty: string}}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate readonly eventByMethodChartDefinition: {\r\n\t\tchartColors: string[];\r\n\t\tchartLabels: string[];\r\n\t\tchartPivotProperty: string;\r\n\t} = {\r\n\t\t\tchartColors: [\r\n\t\t\t\tChartConstants.themeColors.green,\r\n\t\t\t\tChartConstants.themeColors.red,\r\n\t\t\t\tChartConstants.themeColors.yellow\r\n\t\t\t],\r\n\t\t\tchartLabels: [\r\n\t\t\t\t'Complete',\r\n\t\t\t\t'Failed',\r\n\t\t\t\t'Pending'\r\n\t\t\t],\r\n\t\t\tchartPivotProperty: 'Name'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the instance by state string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate readonly instancesByState: string = 'Instances by State';\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tawait this.setFormlyLayoutDefinition();\r\n\r\n\t\tthis.actionExpandDefinitionsContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\r\n\t\tthis.requisiteTypes =\r\n\t\t\tawait this.workflowRequisiteTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tthis.filter =\r\n\t\t\t`actionDefinitionId eq ${this.context.source\r\n\t\t\t\t.selectedItem.id}`;\r\n\r\n\t\tthis.setupContextMenuItems();\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.actionInstanceAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'entityInstanceId',\r\n\t\t\t\t\tcolumnHeader: 'Entity Instance Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'userId',\r\n\t\t\t\t\tcolumnHeader: 'User Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'responseTime',\r\n\t\t\t\t\tcolumnHeader: 'Response Time',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'state',\r\n\t\t\t\t\tcolumnHeader: 'State',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.actionInstanceSelectedColumns =\r\n\t\t\tthis.actionInstanceAvailableColumns;\r\n\r\n\t\tdisplayOrder = 1;\r\n\t\tthis.preRequisiteAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'order',\r\n\t\t\t\t\tcolumnHeader: 'Order',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.preRequisiteSelectedColumns =\r\n\t\t\tthis.preRequisiteAvailableColumns;\r\n\r\n\t\tthis.postRequisiteAvailableColumns =\r\n\t\t\t[\r\n\t\t\t\t...this.preRequisiteAvailableColumns\r\n\t\t\t];\r\n\t\tthis.postRequisiteSelectedColumns =\r\n\t\t\tthis.postRequisiteAvailableColumns;\r\n\r\n\t\tthis.setActionInstanceTableDefinitions();\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.context.source\r\n\t\t\t.selectedItem.entityTypeId))\r\n\t\t{\r\n\t\t\tthis.loadingTableDefinitions = true;\r\n\t\t\tawait this.setPreRequisiteTableDefinitions();\r\n\t\t\tawait this.setPostRequisiteTableDefinitions();\r\n\t\t\tthis.loadingTableDefinitions = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up chart context menu items on this component.\r\n\t * This will setup the data and summary cards.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async setupContextMenuItems(): Promise\r\n\t{\r\n\t\tthis.summaryCardItems =\r\n\t\t\t[\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: new Promise(async (resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionInstances =\r\n\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t'ActionDefinitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ this.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\t\tlet averageResponse: number = 0;\r\n\r\n\t\t\t\t\t\tactionInstances.forEach((actionInstance) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taverageResponse +=\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\tactionInstance.changeDate)\r\n\t\t\t\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\t\t\tactionInstance.createDate))\r\n\t\t\t\t\t\t\t\t\t.milliseconds;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tconst totalAverageTime: number =\r\n\t\t\t\t\t\t\taverageResponse / actionInstances.length;\r\n\r\n\t\t\t\t\t\tconst responseTime =\r\n\t\t\t\t\t\t\tthis.getAverageResponseTime(totalAverageTime);\r\n\r\n\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresponseTime: `${responseTime}`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsummaryTemplate: '${data.responseTime}',\r\n\t\t\t\t\ttitleTemplate: 'Avg Response Time',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\t\tsquareCardDisplay: false\r\n\t\t\t\t},\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tdataPromise: new Promise(async (resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionInstances =\r\n\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t'Count',\r\n\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t'ActionDefinitionId eq '\r\n\t\t\t\t\t\t\t\t\t\t+ this.context.source.selectedItem.id);\r\n\r\n\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tactionInstances: `${actionInstances[0].value}`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsummaryTemplate: '${data.actionInstances}',\r\n\t\t\t\t\ttitleTemplate: 'Instances Count',\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\t\tsquareCardDisplay: false\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst dataId: string = this.context.source.selectedItem.id;\r\n\t\tthis.chartItem =\r\n\t\t\t[\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tchartDefinition: >{\r\n\t\t\t\t\t\tdataPromise: new Promise(async (resolve) => {\r\n\t\t\t\t\t\t\tconst completeStateCount =\r\n\t\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t'Count',\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t\t`ActionDefinitionId eq ${dataId}`\r\n\t\t\t\t\t\t\t\t\t\t\t+ ` And StateId eq ${1}`);\r\n\r\n\t\t\t\t\t\t\tconst failedStateCount =\r\n\t\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t'Count',\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t\t`ActionDefinitionId eq ${dataId}`\r\n\t\t\t\t\t\t\t\t\t\t+ ` And StateId eq ${2}`);\r\n\r\n\t\t\t\t\t\t\tconst pendingStateCount =\r\n\t\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t'Count',\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\t\t\t\t`ActionDefinitionId eq ${dataId}`\r\n\t\t\t\t\t\t\t\t\t\t+ ` And StateId eq ${3}`);\r\n\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: 'complete'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: completeStateCount[0].value\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: 'failed'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: failedStateCount[0].value\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tkey:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: 'pending'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tvalue: pendingStateCount[0].value\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tchartColors:\r\n\t\t\t\t\t\t\tthis.eventByMethodChartDefinition.chartColors,\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.doughnutChart(\r\n\t\t\t\t\t\t\tthis.instancesByState,\r\n\t\t\t\t\t\t\tthis.eventByMethodChartDefinition.chartLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.instancesByState),\r\n\t\t\t\t\t\tchartPivotProperty:\r\n\t\t\t\t\t\t\tthis.eventByMethodChartDefinition.chartPivotProperty\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitleTemplate: this.instancesByState,\r\n\t\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\t\tsummaryCardDisplay: false,\r\n\t\t\t\t\tsquareCardDisplay: true\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly layout definitions.\r\n\t *\r\n\t * @param {number} averageTime\r\n\t * The average time in miliseconds.\r\n\t * @returns {string}\r\n\t * The formated average time calculation to be displayed\r\n\t * within a summary card.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic getAverageResponseTime(\r\n\t\taverageTime: number): string\r\n\t{\r\n\t\tconst dateTimeFromEpoch: DateTime =\r\n\t\t\tDateTime.fromMillis(averageTime);\r\n\r\n\t\treturn !dateTimeFromEpoch.isValid\r\n\t\t\t? AppConstants.timeSpan.zeroMinutes\r\n\t\t\t: `${dateTimeFromEpoch.minute}:`\r\n\t\t\t\t+ `${dateTimeFromEpoch.second}.`\r\n\t\t\t\t+ `${dateTimeFromEpoch.millisecond}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly layout definitions.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async setFormlyLayoutDefinition(): Promise\r\n\t{\r\n\t\tconst hideRequiredMarker: boolean =\r\n\t\t\tthis.context.source.displayMode === AppConstants.displayMode.view;\r\n\r\n\t\tconst entityTypeDropdownOptions: IDropdownOption[] =\r\n\t\t\t\tthis.getDropdownOptions(\r\n\t\t\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\t\t\tthis.context?.source?.customContext?.source\r\n\t\t\t\t\t\t\t?.entityTypeApiService,\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tAppConstants.commonProperties.name +\r\n\t\t\t\t\t\t\t` ${AppConstants.sortDirections.ascending}`),\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tAppConstants.commonProperties.id);\r\n\t\tconst failureActionDropdownOptions: IDropdownOption[] =\r\n\t\t\t\tthis.getDropdownOptions(\r\n\t\t\t\t\tawait this.context?.source?.customContext?.source\r\n\t\t\t\t\t\t?.workflowFailureActionsApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t100),\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.formlyLayoutDefinition =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'entityTypeId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Entity Type',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thideRequiredMarker: hideRequiredMarker,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\toptions: entityTypeDropdownOptions,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\tasync (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.entityTypeId\r\n\t\t\t\t\t\t\t\t\t\t=== field.formControl.value)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.context.source.selectedItem.entityTypeId =\r\n\t\t\t\t\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\tfield.formControl.value)\r\n\t\t\t\t\t\t\t\t\t\t? undefined\r\n\t\t\t\t\t\t\t\t\t\t: field.formControl.value;\r\n\r\n\t\t\t\t\t\t\t\tlet entityVersions: IEntityVersion[] = [];\r\n\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tfield.formControl.value))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tentityVersions =\r\n\t\t\t\t\t\t\t\t\t\tawait this.context.source\r\n\t\t\t\t\t\t\t\t\t\t\t.customContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t.entityVersionApiService.query(\r\n\t\t\t\t\t\t\t\t\t\t\t\t`TypeId eq ${field\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.formControl.value}`);\r\n\r\n\t\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t\t.setPreRequisiteTableDefinitions();\r\n\t\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t\t.setPostRequisiteTableDefinitions();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.context.source.selectedItem\r\n\t\t\t\t\t\t\t\t\t.entityVersionId =\r\n\t\t\t\t\t\t\t\t\t\tentityVersions.length === 1\r\n\t\t\t\t\t\t\t\t\t\t\t? entityVersions[0].number\r\n\t\t\t\t\t\t\t\t\t\t\t: undefined;\r\n\r\n\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tawait this.setFormlyLayoutDefinition();\r\n\t\t\t\t\t\t\t\t\t\tthis.displayRequisiteTables =\r\n\t\t\t\t\t\t\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.entityTypeId);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'entityVersionId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thideRequiredMarker: hideRequiredMarker,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tlabel: 'Entity Version',\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tAnyHelper.isNull(\r\n\t\t\t\t\t\t\t\tthis.context\r\n\t\t\t\t\t\t\t\t\t?.source\r\n\t\t\t\t\t\t\t\t\t?.selectedItem\r\n\t\t\t\t\t\t\t\t\t?.entityTypeId)\r\n\t\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t\t: ((await this.context\r\n\t\t\t\t\t\t\t\t\t?.source\r\n\t\t\t\t\t\t\t\t\t.customContext\r\n\t\t\t\t\t\t\t\t\t?.source\r\n\t\t\t\t\t\t\t\t\t?.entityVersionApiService\r\n\t\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t\t'typeId eq '\r\n\t\t\t\t\t\t\t\t\t\t\t+ `${this.context.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.entityTypeId}`,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.empty))\r\n\t\t\t\t\t\t\t\t\t?.map((item: any) =>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: item.number,\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: item.id\r\n\t\t\t\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'name',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Name',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thideRequiredMarker: hideRequiredMarker\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\tuniqueCombination: {\r\n\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tthis.uniqueCombination(control),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Existing Type, Version and Name combination.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'description',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Description'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'failureActionId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tplaceholder: AppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\tlabel: 'Failure Action',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thideRequiredMarker: hideRequiredMarker,\r\n\t\t\t\t\t\toptions: failureActionDropdownOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'classReference',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Class Reference',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\thideRequiredMarker: hideRequiredMarker\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\toneOf: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\tcontrol.value)\r\n\t\t\t\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.classDefinition),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Only one of class definition or class '\r\n\t\t\t\t\t\t\t\t\t+ 'reference can be set.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.required':\r\n\t\t\t\t\t\t\t'model.classDefinition == null '\r\n\t\t\t\t\t\t\t\t+ '|| model.classDefinition.trim() === \"\"'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'classDefinition',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextArea,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Class Definition',\r\n\t\t\t\t\t\trows: FormlyConstants.textAreaRowSizes.standard,\r\n\t\t\t\t\t\trequired: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidCSharpFormat: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(control.value)\r\n\t\t\t\t\t\t\t\t\t|| this.isValidCSharpFormat(\r\n\t\t\t\t\t\t\t\t\t\tcontrol.value),\r\n\t\t\t\t\t\t\tmessage: 'Not a valid C# format.'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\toneOf: {\r\n\t\t\t\t\t\t\texpression: (\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\tfield: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\tcontrol.value)\r\n\t\t\t\t\t\t\t\t\t|| AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\t\t\tfield.model.classReference),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Only one of class definition or class '\r\n\t\t\t\t\t\t\t\t\t+ 'reference can be set.'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.required':\r\n\t\t\t\t\t\t\t'model.classReference == null '\r\n\t\t\t\t\t\t\t\t+ '|| model.classReference.trim() === \"\"'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tif (this.context.source.displayMode === AppConstants.displayMode.view)\r\n\t\t{\r\n\t\t\tthis.formlyLayoutDefinition.forEach(\r\n\t\t\t\t(definition) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tdefinition.props.disabled = true;\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.formlyLayoutDefinition\r\n\t\t\t\t.splice(\r\n\t\t\t\t\t6,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\tlabel: 'Class Definition',\r\n\t\t\t\t\t\t\tuseCodeBlock: true,\r\n\t\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\t\tcodeBlockType:\r\n\t\t\t\t\t\t\t\tAppConstants.markdownLanguages.csharp,\r\n\t\t\t\t\t\t\tcontent: AppConstants.empty\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t\t'`${model.classDefinition == null '\r\n\t\t\t\t\t\t\t\t\t+ '? \"No Data\" : '\r\n\t\t\t\t\t\t\t\t\t+ 'model.classDefinition}`'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.context.source.displayMode === AppConstants.displayMode.create)\r\n\t\t{\r\n\t\t\tthis.context.source.selectedItem.classDefinition =\r\n\t\t\t\t'namespace WaterStreet.Nautix.Data.Workflow.Actions\\n'\r\n\t\t\t\t\t+ '{\\n'\r\n\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Data.Workflow;\\n'\r\n\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Public;\\n'\r\n\t\t\t\t\t+ '\\tusing WaterStreet.Nautix.Public.Workflow;\\n\\r'\r\n\t\t\t\t\t+ '\\tpublic class YourWorkflowAction\\n'\r\n\t\t\t\t\t+ '\\t\\t: BaseAction\\n'\r\n\t\t\t\t\t+ '\\t{\\n'\r\n\t\t\t\t\t+ '\\t\\tpublic override ActionResponse Execute()\\n'\r\n\t\t\t\t\t+ '\\t\\t{\\n'\r\n\t\t\t\t\t+ '\\t\\t\\treturn Ok(new object());\\n'\r\n\t\t\t\t\t+ '\\t\\t}\\n'\r\n\t\t\t\t\t+ '\\t}\\n'\r\n\t\t\t\t\t+ '}';\r\n\t\t}\r\n\r\n\t\tthis.loadingFormlyDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the PreRequisite Table Definitions.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic setActionInstanceTableDefinitions(): void\r\n\t{\r\n\t\tthis.actionInstanceTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Instances',\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.filter,\r\n\t\t\t\t\torderBy: 'Id desc',\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: 50,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\ttableHeight: {\r\n\t\t\t\t\tvirtualPageSizeBased: false,\r\n\t\t\t\t\texplicitHeight: '138'\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionInstances: IWorkflowActionInstances[] =\r\n\t\t\t\t\t\t\tawait this.workflowActionInstanceApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst dataPromise = [];\r\n\r\n\t\t\t\t\t\tactionInstances.forEach(\r\n\t\t\t\t\t\t\t(instance: IWorkflowActionInstances) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdataPromise.push(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: instance.id,\r\n\t\t\t\t\t\t\t\t\t\tentityInstanceId:\r\n\t\t\t\t\t\t\t\t\t\t\tinstance.entityInstanceId,\r\n\t\t\t\t\t\t\t\t\t\tuserId: instance.userId,\r\n\t\t\t\t\t\t\t\t\t\tresponseTime:\r\n\t\t\t\t\t\t\t\t\t\t\t`${DateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\t\t\t\tinstance.changeDate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstance.createDate))\r\n\t\t\t\t\t\t\t\t\t\t\t\t.milliseconds}ms`,\r\n\t\t\t\t\t\t\t\t\t\tstate:\r\n\t\t\t\t\t\t\t\t\t\t\t`${this.getState(instance.stateId)}`\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn dataPromise;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.actionInstanceAvailableColumns,\r\n\t\t\t\tselectedColumns: this.actionInstanceSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'All',\r\n\t\t\t\t\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Complete',\r\n\t\t\t\t\t\t\t\t\tvalue: 'StateId eq 1'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Failed',\r\n\t\t\t\t\t\t\t\t\tvalue: 'StateId eq 2'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Pending',\r\n\t\t\t\t\t\t\t\t\tvalue: 'StateId eq 3'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectedFilterValue: this.filter\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingInstanceTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the State string.\r\n\t *\r\n\t * @param {number} stateId\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic getState(stateId: number): string\r\n\t{\r\n\t\tif (stateId === 1)\r\n\t\t{\r\n\t\t\treturn 'Complete';\r\n\t\t}\r\n\t\telse if (stateId === 2)\r\n\t\t{\r\n\t\t\treturn 'Failed';\r\n\t\t}\r\n\r\n\t\treturn 'Pending';\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the PreRequisite Table Definitions.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async setPreRequisiteTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.preRequisiteTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'PreRequisites',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.preRequisiteCommonTableContext,\r\n\t\t\t\t\t\tAppConstants.workflowRequisiteTypes.preRequisite),\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: 'actionDefinitionId eq '\r\n\t\t\t\t\t\t+ this.context.source.selectedItem.id\r\n\t\t\t\t\t\t+ ' and requisiteTypeId eq '\r\n\t\t\t\t\t\t+ (this.requisiteTypes.filter(requisiteType =>\r\n\t\t\t\t\t\t\trequisiteType.name ===\r\n\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t.preRequisite))[0].id,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionRequisites: IWorkflowActionRequisites[] =\r\n\t\t\t\t\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst preRequisites: IWorkflowActionRequisites[] = [];\r\n\r\n\t\t\t\t\t\tfor (const actionRequisite of actionRequisites)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpreRequisites.push(\r\n\t\t\t\t\t\t\t\tawait this.decorateActionRequisiteViewModel(\r\n\t\t\t\t\t\t\t\t\tactionRequisite));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn preRequisites;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\tasync(model: any) =>\r\n\t\t\t\t\t\tthis.decorateActionRequisiteViewModel(model),\r\n\t\t\t\tavailableColumns: this.preRequisiteAvailableColumns,\r\n\t\t\t\tselectedColumns: this.preRequisiteSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.preRequisiteCommonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif (this.context.source.displayMode !== AppConstants.displayMode.update)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst preRequisiteDropdownOptions: IDropdownOption[] =\r\n\t\t\tthis.getDropdownOptions(\r\n\t\t\t\tawait this.context.source\r\n\t\t\t\t\t.customContext.source\r\n\t\t\t\t\t.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t'EntityTypeId eq '\r\n\t\t\t\t\t\t\t+ `${this.context.source\r\n\t\t\t\t\t\t\t\t.selectedItem.entityTypeId} `\r\n\t\t\t\t\t\t\t+ `and Id ne ${this.context.source\r\n\t\t\t\t\t\t\t\t.selectedItem.id}`,\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t100),\r\n\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\tthis.preRequisiteTableDefinitions.actions =\r\n\t\t\t{\r\n\t\t\t\tcreate: {\r\n\t\t\t\t\tcustomContext: this.actionExpandDefinitionsContext,\r\n\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'requisiteActionDefinitionId',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Action Definition',\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\tAppConstants.placeholders.selectAnOption,\r\n\t\t\t\t\t\t\t\toptions: preRequisiteDropdownOptions,\r\n\t\t\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t.customInputNumber,\r\n\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\ttype: 'number'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\t\t\texpression: (control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\tthis.uniqueOrder(\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t\t.preRequisite),\r\n\t\t\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\tcommand: () => this.createRequisite(\r\n\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t.preRequisite)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tupdateIndex: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t.preRequisite,\r\n\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t.preRequisite,\r\n\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tdelete: {\r\n\t\t\t\t\tdeleteStatement: () =>\r\n\t\t\t\t\t\t'Confirm to remove PreRequisite '\r\n\t\t\t\t\t\t\t+ this.preRequisiteCommonTableContext.source\r\n\t\t\t\t\t\t\t\t.selectedItem.name\r\n\t\t\t\t\t\t\t+ ` from action definition\r\n\t\t\t\t\t\t\t\t${this.context.source.selectedItem.name}.`,\r\n\t\t\t\t\titems: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\tstyleClass: AppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\tthis.deleteRequisite(\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.preRequisite)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the PostRequisite Table Definitions.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async setPostRequisiteTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.postRequisiteTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'PostRequisites',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.postRequisiteCommonTableContext,\r\n\t\t\t\t\t\tAppConstants.workflowRequisiteTypes.postRequisite),\r\n\t\t\t\tnestedTable: true,\r\n\t\t\t\thideSettings: true,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: 'actionDefinitionId eq '\r\n\t\t\t\t\t\t+ this.context.source.selectedItem.id\r\n\t\t\t\t\t\t+ ' and requisiteTypeId eq '\r\n\t\t\t\t\t\t+ (this.requisiteTypes.filter(requisiteType =>\r\n\t\t\t\t\t\t\trequisiteType.name ===\r\n\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t.postRequisite))[0].id,\r\n\t\t\t\t\torderBy: `Order ${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: 5\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst actionRequisites: IWorkflowActionRequisites[] =\r\n\t\t\t\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst postRequisites: IWorkflowActionRequisites[] = [];\r\n\r\n\t\t\t\t\t\tfor (const actionRequisite of actionRequisites)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpostRequisites.push(\r\n\t\t\t\t\t\t\t\tawait this.decorateActionRequisiteViewModel(\r\n\t\t\t\t\t\t\t\t\tactionRequisite));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn postRequisites;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\tasync(model: any) =>\r\n\t\t\t\t\t\tthis.decorateActionRequisiteViewModel(model),\r\n\t\t\t\tavailableColumns: this.postRequisiteAvailableColumns,\r\n\t\t\t\tselectedColumns: this.postRequisiteSelectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.postRequisiteCommonTableContext = commonTableContext;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif (this.context.source.displayMode === AppConstants.displayMode.update)\r\n\t\t{\r\n\t\t\tconst postRequisiteDropdownOptions: IDropdownOption[] =\r\n\t\t\t\tthis.getDropdownOptions(\r\n\t\t\t\t\tawait this.context.source\r\n\t\t\t\t\t\t.customContext.source\r\n\t\t\t\t\t\t.workflowActionDefinitionsApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t'EntityTypeId eq '\r\n\t\t\t\t\t\t\t\t+ `${this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.entityTypeId}`\r\n\t\t\t\t\t\t\t\t+ ` and Id ne ${this.context\r\n\t\t\t\t\t\t\t\t\t.source.selectedItem.id}`,\r\n\t\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t100),\r\n\t\t\t\t\tAppConstants.commonProperties.name,\r\n\t\t\t\t\tAppConstants.commonProperties.id);\r\n\r\n\t\t\tthis.postRequisiteTableDefinitions.actions =\r\n\t\t\t\t{\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tcustomContext: this.actionExpandDefinitionsContext,\r\n\t\t\t\t\t\tlayout: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'requisiteActionDefinitionId',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customSelect,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Action Definition',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\t\t\t\tplaceholder:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.placeholders\r\n\t\t\t\t\t\t\t\t\t\t\t.selectAnOption,\r\n\t\t\t\t\t\t\t\t\toptions: postRequisiteDropdownOptions,\r\n\t\t\t\t\t\t\t\t\tappendTo:\r\n\t\t\t\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tkey: 'order',\r\n\t\t\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t.customInputNumber,\r\n\t\t\t\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\t\t\t\tFormlyConstants.customControls\r\n\t\t\t\t\t\t\t\t\t\t.customFieldWrapper\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\t\tlabel: 'Order',\r\n\t\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\t\ttype: 'number'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tasyncValidators: {\r\n\t\t\t\t\t\t\t\t\tuniqueOrder: {\r\n\t\t\t\t\t\t\t\t\t\texpression:\r\n\t\t\t\t\t\t\t\t\t\t\t(control: UntypedFormControl) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.uniqueOrder(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrol,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.postRequisite),\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Existing Order.'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\t() => this.createRequisite(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.postRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdateIndex: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexUp',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite,\r\n\t\t\t\t\t\t\t\t\t-1)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'updateIndexDown',\r\n\t\t\t\t\t\t\tcommand: async(\r\n\t\t\t\t\t\t\t\tselectedItem: any) =>\r\n\t\t\t\t\t\t\t\tthis.updateOrderIndex(\r\n\t\t\t\t\t\t\t\t\tselectedItem,\r\n\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t.postRequisite,\r\n\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\tdeleteStatement:\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\t\t\t\t\tthis.postRequisiteCommonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem;\r\n\r\n\t\t\t\t\t\t\t\treturn `Confirm to remove PostRequisite\r\n\t\t\t\t\t\t\t\t\t${selectedItem.name}\r\n\t\t\t\t\t\t\t\t\tfrom action definition\r\n\t\t\t\t\t\t\t\t\t${this.context.source.selectedItem.name}.`;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlabel: 'Remove',\r\n\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\tthis.deleteRequisite(\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.workflowRequisiteTypes\r\n\t\t\t\t\t\t\t\t\t\t\t.postRequisite)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @async\r\n\t * @param {IWorkflowActionRequisites} actionRequisite\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async decorateActionRequisiteViewModel(\r\n\t\tactionRequisite: IWorkflowActionRequisites): Promise\r\n\t{\r\n\t\treturn {\r\n\t\t\tid: actionRequisite.id,\r\n\t\t\tname:\r\n\t\t\t\t(await this.context.source.customContext\r\n\t\t\t\t\t?.source\r\n\t\t\t\t\t.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.get(actionRequisite\r\n\t\t\t\t\t\t.requisiteActionDefinitionId))\r\n\t\t\t\t\t?.name,\r\n\t\t\trequisiteTypeId:\r\n\t\t\t\tactionRequisite.requisiteTypeId,\r\n\t\t\tactionDefinitionId:\r\n\t\t\t\tactionRequisite.actionDefinitionId,\r\n\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\tactionRequisite\r\n\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\torder: actionRequisite.order\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the filter criteria event to the table display. This will set\r\n\t * the object search filter to the provided filter value.\r\n\t *\r\n\t * @async\r\n\t * @param {string} filterCriteria\r\n\t * The filter event sent from a table quick filter or formatted in a\r\n\t * component.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tpublic async filterCriteriaChanged(\r\n\t\tfilterCriteria: string): Promise\r\n\t{\r\n\t\tthis.filter =\r\n\t\t\tfilterCriteria === AppConstants.empty\r\n\t\t\t\t? `actionDefinitionId eq ${this.context.source.selectedItem.id}`\r\n\t\t\t\t: `actionDefinitionId eq ${this.context.source.selectedItem.id}\r\n\t\t\t\t\tAnd ${filterCriteria}`;\r\n\r\n\t\tawait this.context.source.filterCriteriaChanged(this.filter);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if content value is a valid c sharp format.\r\n\t *\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate isValidCSharpFormat(value: string): RegExpMatchArray\r\n\t{\r\n\t\treturn value?.match(new RegExp(\r\n\t\t\t'^(?=.*namespace (?=WaterStreet))'\r\n\t\t\t\t+ '(?=.*using (?=WaterStreet))'\r\n\t\t\t\t+ '(?=.*public (?=class))'\r\n\t\t\t\t+ '(?=.*public (?=override))'\r\n\t\t\t\t+ '(?=.*return).*$',\r\n\t\t\t'gs'))\r\n\t\t\t&& value.match(/\\{(?:[^{}]+|\\{(?:[^{}]+|\\{[^{}]\\})\\}+)\\}+/g);\r\n\t}\r\n\r\n\t/**\r\n\t * Validates if the requisite order is unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The field form control.\r\n\t * @param {string} requisiteType\r\n\t * The requisite type.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async uniqueOrder(\r\n\t\tcontrol: UntypedFormControl,\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst workflowRequisiteTypes: IWorkflowRequisiteTypes[] =\r\n\t\t\tawait this.workflowRequisiteTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Name eq '${requisiteType}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst workflowRequisites: IWorkflowActionRequisites[] =\r\n\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Order eq ${control.value} `\r\n\t\t\t\t\t\t+ 'and ActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${this.context.source.selectedItem.id} `\r\n\t\t\t\t\t\t+ 'and RequisiteTypeId eq '\r\n\t\t\t\t\t\t+ workflowRequisiteTypes[0].id,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn Promise.resolve(workflowRequisites.length <= 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Requisite.\r\n\t *\r\n\t * @async\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to create.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async createRequisite(\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\r\n\t\tconst createRequisite: Function =\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tconst requisiteTypeId: number =\r\n\t\t\t\t\t(await this\r\n\t\t\t\t\t\t.workflowRequisiteTypeApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t`Name eq '${requisiteType}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty))[0].id;\r\n\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t\t.create(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: 0,\r\n\t\t\t\t\t\t\t\trequisiteTypeId: requisiteTypeId,\r\n\t\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\t\tthis.context.source.selectedItem.id,\r\n\t\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\t\tcommonTableContext.source.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\t\torder:\r\n\t\t\t\t\t\t\t\t\tcommonTableContext.source.selectedItem\r\n\t\t\t\t\t\t\t\t\t\t.order\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\tcommonTableContext.source.selectedItem.id =\r\n\t\t\t\t\tcreatedId;\r\n\t\t\t\tcommonTableContext.source.selectedItem.requisiteTypeId =\r\n\t\t\t\t\trequisiteTypeId;\r\n\t\t\t\tcommonTableContext.source.selectedItem.actionDefinitionId =\r\n\t\t\t\t\tthis.context.source.selectedItem.id;\r\n\r\n\t\t\t\tawait commonTableContext.source.addSelectedItem();\r\n\t\t\t\tthis.sortCommonTableByOrder(commonTableContext);\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateRequisite(),\r\n\t\t\t\t'Creating Requisite',\r\n\t\t\t\t'Created Requisite',\r\n\t\t\t\t`Requisite\r\n\t\t\t\t\t${commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Requisite\r\n\t\t\t\t\t${commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an existing Requisite.\r\n\t *\r\n\t * @async\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to delete.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async deleteRequisite(\r\n\t\trequisiteType: string): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\r\n\t\tconst selectedItem: any =\r\n\t\t\tcommonTableContext.source.selectedItem;\r\n\r\n\t\tconst deleteRequisite: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t.delete(selectedItem.id);\r\n\r\n\t\t\t\tcommonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteRequisite(),\r\n\t\t\t\t'Deleting Requisite',\r\n\t\t\t\t'Deleted Requisite',\r\n\t\t\t\t`Requisite ${selectedItem.name}\r\n\t\t\t\t\twas successfully deleted.`,\r\n\t\t\t\t`Requisite ${selectedItem.name}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the order index of the selected row item\r\n\t * up or down based on the indexOperator.\r\n\t *\r\n\t * @async\r\n\t * @param {any} selectedItem\r\n\t * The selected item.\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to alter orders for.\r\n\t * @param {number} indexReference\r\n\t * The index reference to add or substract to the current\r\n\t * selected order index.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async updateOrderIndex(\r\n\t\tselectedItem: any,\r\n\t\trequisiteType: string,\r\n\t\tindexReference: number): Promise\r\n\t{\r\n\t\tconst commonTableContext:\r\n\t\t\tIDynamicComponentContext =\r\n\t\t\tthis.getRequisiteTableContext(\r\n\t\t\t\trequisiteType);\r\n\t\tcommonTableContext.source.loadingNextDataset = true;\r\n\t\tcommonTableContext.source.selectedItem = selectedItem;\r\n\r\n\t\tconst updateOrderIndex: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst orderedRequisites: any[] =\r\n\t\t\t\t\tcommonTableContext.source.virtualData\r\n\t\t\t\t\t\t.filter((data) => data !== undefined)\r\n\t\t\t\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\t\t\t\titemOne.order - itemTwo.order);\r\n\r\n\t\t\t\tconst neighborOrderIndex: number =\r\n\t\t\t\t\tthis.findSelectedChildIndex(\r\n\t\t\t\t\t\torderedRequisites,\r\n\t\t\t\t\t\tselectedItem)\r\n\t\t\t\t\t\t+ indexReference;\r\n\r\n\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\torderedRequisites[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].id,\r\n\t\t\t\t\t\t\trequisiteTypeId: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex]\r\n\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder: 1000\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\t\trequisiteTypeId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t.workflowActionRequisitesApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\torderedRequisites[neighborOrderIndex].id,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: orderedRequisites[\r\n\t\t\t\t\t\t\t\tneighborOrderIndex].id,\r\n\t\t\t\t\t\t\trequisiteTypeId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteTypeId,\r\n\t\t\t\t\t\t\tactionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.actionDefinitionId,\r\n\t\t\t\t\t\t\trequisiteActionDefinitionId:\r\n\t\t\t\t\t\t\t\torderedRequisites[neighborOrderIndex]\r\n\t\t\t\t\t\t\t\t\t.requisiteActionDefinitionId,\r\n\t\t\t\t\t\t\torder:\r\n\t\t\t\t\t\t\t\tselectedItem.order\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\tcommonTableContext.source.virtualData[neighborOrderIndex] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...orderedRequisites[neighborOrderIndex],\r\n\t\t\t\t\t\torder: selectedItem.order\r\n\t\t\t\t\t};\r\n\t\t\t\tcommonTableContext.source.virtualData[\r\n\t\t\t\t\tneighborOrderIndex - indexReference] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...commonTableContext.source.selectedItem,\r\n\t\t\t\t\t\torder: orderedRequisites[neighborOrderIndex].order\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.sortCommonTableByOrder(commonTableContext);\r\n\t\t\t\tcommonTableContext.source.loadingNextDataset = false;\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateOrderIndex(),\r\n\t\t\t\t'Updating Requisite Order',\r\n\t\t\t\t'Updated Requisite Order',\r\n\t\t\t\t'Requisite Order was successfully updated.',\r\n\t\t\t\t'Requisite Order was not updated.'),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the requisite table context based on the sent requisite type.\r\n\t *\r\n\t * @param {string} requisiteType\r\n\t * The requisite type to get a table context for.\r\n\t * @returns {IDynamicComponentContext}\r\n\t * The requisite table context.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate getRequisiteTableContext(\r\n\t\trequisiteType: string):\r\n\t\tIDynamicComponentContext\r\n\t{\r\n\t\treturn requisiteType ===\r\n\t\t\tAppConstants.workflowRequisiteTypes.preRequisite\r\n\t\t\t? this.preRequisiteCommonTableContext\r\n\t\t\t: this.postRequisiteCommonTableContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the selected child index.\r\n\t *\r\n\t * @param {any[]} children\r\n\t * The children object array.\r\n\t * @param {any} selectedChild\r\n\t * The selected child.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate findSelectedChildIndex(\r\n\t\tchildren: any[],\r\n\t\tselectedChild: any): number\r\n\t{\r\n\t\tfor (let index = 0; index < children.length; index++)\r\n\t\t{\r\n\t\t\tif (children[index].id === selectedChild.id\r\n\t\t\t\t&& children[index].requisiteActionDefinitionId\r\n\t\t\t\t\t=== selectedChild.requisiteActionDefinitionId\r\n\t\t\t\t&& children[index].order === selectedChild.order)\r\n\t\t\t{\r\n\t\t\t\treturn index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the common table context data by order.\r\n\t *\r\n\t * @param {IDynamicComponentContext}\r\n\t * commonTableContext\r\n\t * The common table context to sort by order.\r\n\t * @memberof EntityActionDefinitionExpandComponent\r\n\t */\r\n\tprivate sortCommonTableByOrder(\r\n\t\tcommonTableContext:\r\n\t\t\tIDynamicComponentContext): void\r\n\t{\r\n\t\tcommonTableContext.source.virtualData\r\n\t\t\t.sort((itemOne: any, itemTwo: any) =>\r\n\t\t\t\titemOne.order - itemTwo.order);\r\n\t\tcommonTableContext.source.virtualData =\r\n\t\t\t[\r\n\t\t\t\t...commonTableContext.source.virtualData\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if entity type, entity verion\r\n\t * and action name combination is existing or unique.\r\n\t *\r\n\t * @async\r\n\t * @param {FormControl} control\r\n\t * The form control.\r\n\t * @returns {Promise}\r\n\t * The field async validation result.\r\n\t * @memberof ActionDefinitionExpandComponent\r\n\t */\r\n\tprivate async uniqueCombination(\r\n\t\tcontrol: UntypedFormControl):\r\n\t\tPromise\r\n\t{\r\n\t\tlet actionDefinitions: IWorkflowActionDefinitions[] = [];\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.source.selectedItem.entityTypeId))\r\n\t\t{\r\n\t\t\tconst entityVersionId = this.context.source.displayMode ===\r\n\t\t\t\tAppConstants.displayMode.create\r\n\t\t\t\t? (await this.context.source.customContext\r\n\t\t\t\t\t.source.entityVersionApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t`TypeId eq ${this.context.source\r\n\t\t\t\t\t\t\t.selectedItem.entityTypeId}`,\r\n\t\t\t\t\t\tAppConstants.empty))[0].id\r\n\t\t\t\t: this.context.source.selectedItem.entityVersionId;\r\n\r\n\t\t\tactionDefinitions =\r\n\t\t\t\tawait this.context.source.customContext.source\r\n\t\t\t\t\t.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\t'EntityTypeId eq '\r\n\t\t\t\t\t\t\t+ `${this.context.source\r\n\t\t\t\t\t\t\t\t.selectedItem.entityTypeId} `\r\n\t\t\t\t\t\t\t+ `and EntityVersionId eq ${entityVersionId} `\r\n\t\t\t\t\t\t\t+ `and Name eq '${control.value}'`,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tactionDefinitions.length === 0\r\n\t\t\t\t|| this.context.source.selectedItem.id ===\r\n\t\t\t\t\tactionDefinitions[0]?.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the dropdown options.\r\n\t *\r\n\t * @param {any} apiData\r\n\t * The api resolved with data for the dropdown options.\r\n\t * @param {string} label\r\n\t * The dropdown label to map with the data promise results.\r\n\t * @param {string} value\r\n\t * The dropdown value to map with the data promise results.\r\n\t * @returns {IDropdownOption[]}\r\n\t * The dropdown options object\r\n\t * @memberof EntityManagerDirective\r\n\t */\r\n\tprivate getDropdownOptions(\r\n\t\tapiData: any,\r\n\t\tlabel: string,\r\n\t\tvalue: string): IDropdownOption[]\r\n\t{\r\n\t\treturn (apiData)\r\n\t\t\t.map((item: any) =>\r\n\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: item[label],\r\n\t\t\t\t\t\tvalue: item[value]\r\n\t\t\t\t\t});\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tActionDefinitionExpandComponent\r\n} from '@admin/components/workflow-engine/action-definitions/action-definitions/action-definition-expand/action-definition-expand.component';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionRequisitesApiService\r\n} from '@api/services/workflow/workflow-action-requisites.api.service';\r\nimport {\r\n\tWorkflowFailureActionsApiService\r\n} from '@api/services/workflow/workflow-failure-actions.api.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-action-definitions',\r\n\ttemplateUrl: './action-definitions.component.html',\r\n\tstyleUrls: ['./action-definitions.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the workflow engine action\r\n * definitions.\r\n *\r\n * @export\r\n * @class ActionDefinitionsComponent\r\n * @extends {CommonTablePageDirective}\r\n */\r\nexport class ActionDefinitionsComponent\r\n\textends CommonTablePageDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActionDefinitionComponent class.\r\n\t *\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t *\tworkflowActionDefinitionsApiService\r\n\t * The api service used to gather action definition data.\r\n\t * @param {WorkflowActionRequisitesApiService}\r\n\t * workflowActionRequisitesApiService\r\n\t * The api service used to gather action requisite data.\r\n\t * @param {WorkflowFailureActionsApiService}\r\n\t * workflowFailureActionsApiService\r\n\t * The api service used to gather action failure data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to gather entity type data.\r\n\t * @param {ActivityService} activityService\r\n\t * The Activity Service.\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic workflowActionDefinitionsApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic workflowActionRequisitesApiService:\r\n\t\t\tWorkflowActionRequisitesApiService,\r\n\t\tpublic workflowFailureActionsApiService:\r\n\t\t\tWorkflowFailureActionsApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the display management context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic actionDefinitionsContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the table filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic tableFilter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the full set of entity types.\r\n\t *\r\n\t * @type {IEntityType[]}\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic entityTypes: IEntityType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the full set of entity versions.\r\n\t *\r\n\t * @type {IEntityVersion[]}\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic entityVersions: IEntityVersion[] = [];\r\n\r\n\t/**\r\n\t * Sets up variables used in this admin page based table.\r\n\t *\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic setupPageVariables(): void\r\n\t{\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'entityTypeName',\r\n\t\t\t\t\tcolumnHeader: 'Entity Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'entityVersionNumber',\r\n\t\t\t\t\tcolumnHeader: 'Entity Version',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'name',\r\n\t\t\t\t\tcolumnHeader: 'Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'classReference',\r\n\t\t\t\t\tcolumnHeader: 'Class Reference',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'failureActionId',\r\n\t\t\t\t\tcolumnHeader: 'Failure Action ',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Create Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'startDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'Start Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'endDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.dateTime,\r\n\t\t\t\t\tcolumnHeader: 'End Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for the standard table\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.entityTypes =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\t\tthis.entityVersions =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityVersionApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.actionDefinitionsContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\r\n\t\tconst entityTypeFilterOptions =\r\n\t\t\tthis.entityTypes\r\n\t\t\t\t.map((type: IEntityType) =>\r\n\t\t\t\t\t({\r\n\t\t\t\t\t\tlabel: type.name,\r\n\t\t\t\t\t\tvalue: `EntityTypeId eq ${type.id}`\r\n\t\t\t\t\t}));\r\n\r\n\t\tentityTypeFilterOptions.unshift(\r\n\t\t\t{\r\n\t\t\t\tlabel: 'All Entity Types',\r\n\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t});\r\n\r\n\t\tthis.tableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Definitions',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\t'Workflow Action Definition'),\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilter,\r\n\t\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst workflowDefinitions:\r\n\t\t\t\t\t\t\tIWorkflowActionDefinitions[] =\r\n\t\t\t\t\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tconst definitionViewModels: any[] = [];\r\n\t\t\t\t\t\tfor (const definition of workflowDefinitions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdefinitionViewModels.push(\r\n\t\t\t\t\t\t\t\tawait this.decorateViewModel(definition));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn definitionViewModels;\r\n\t\t\t\t\t},\r\n\t\t\t\tdecorateViewModel:\r\n\t\t\t\t\tasync(definition: any) =>\r\n\t\t\t\t\t\tthis.decorateViewModel(definition),\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tcreate: {\r\n\t\t\t\t\t\tcustomContext: this.actionDefinitionsContext,\r\n\t\t\t\t\t\tcomponent: ActionDefinitionExpandComponent,\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Create',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t\t\tthis.createActionDefinition()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tupdate: {\r\n\t\t\t\t\t\tcustomContext: this.actionDefinitionsContext,\r\n\t\t\t\t\t\tcomponent: ActionDefinitionExpandComponent,\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Save',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonPrimary,\r\n\t\t\t\t\t\t\t\t\tcommand: () => this.updateActionDefinition()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelete: {\r\n\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlabel: 'Confirm',\r\n\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.pButtonDanger,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tcommand: () => this.deleteActionDefinition()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdeleteStatement: () => this.getDeleteStatement(),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tcustomContext: this.actionDefinitionsContext,\r\n\t\t\t\t\t\tcomponent: ActionDefinitionExpandComponent,\r\n\t\t\t\t\t\titems: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tquickFilters: entityTypeFilterOptions,\r\n\t\t\t\t\t\tselectedFilterValue: this.tableFilter\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the view model for the object.\r\n\t *\r\n\t * @param {IWorkflowActionDefinitions} definition\r\n\t * The object to be decorated as a view model.\r\n\t * @returns {Promise}\r\n\t * The mapped view model for display in this component.\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tpublic decorateViewModel(\r\n\t\tdefinition: IWorkflowActionDefinitions): Promise\r\n\t{\r\n\t\tconst entityVersion: IEntityVersion =\r\n\t\t\tthis.entityVersions.find(\r\n\t\t\t\t(version: IEntityVersion) =>\r\n\t\t\t\t\tversion.id === definition.entityVersionId);\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tthis.entityTypes.find(\r\n\t\t\t\t(type: IEntityType) =>\r\n\t\t\t\t\ttype.id === definition.entityTypeId);\r\n\r\n\t\tconst viewModel: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tid: definition.id,\r\n\t\t\t\tentityTypeId: definition.entityTypeId,\r\n\t\t\t\tentityVersionId: definition.entityVersionId,\r\n\t\t\t\tentityTypeName: entityType.name,\r\n\t\t\t\tentityVersionNumber: entityVersion.number,\r\n\t\t\t\tname: definition.name,\r\n\t\t\t\tdescription: definition.description,\r\n\t\t\t\tclassReference: definition.classReference,\r\n\t\t\t\tclassDefinition: definition.classDefinition,\r\n\t\t\t\tfailureActionId: definition.failureActionId,\r\n\t\t\t\tcreateDate: definition.createDate,\r\n\t\t\t\tstartDate: definition.startDate,\r\n\t\t\t\tendDate: definition.endDate\r\n\t\t\t};\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an action definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tprivate async createActionDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst createActionDefinition: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst workflowActionDefinition: IWorkflowActionDefinitions =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityTypeId: selectedItem.entityTypeId,\r\n\t\t\t\t\t\tentityVersionId: selectedItem.entityVersionId,\r\n\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\tclassReference:\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tselectedItem.classDefinition)\r\n\t\t\t\t\t\t\t\t? selectedItem.classReference\r\n\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\tclassDefinition:\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tselectedItem.classReference)\r\n\t\t\t\t\t\t\t\t? selectedItem.classDefinition\r\n\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\tfailureActionId: selectedItem.failureActionId\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tconst createdId: number =\r\n\t\t\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t\t.create(workflowActionDefinition);\r\n\r\n\t\t\t\tthis.commonTableContext.source.selectedItem =\r\n\t\t\t\t\tawait this.workflowActionDefinitionsApiService.get(\r\n\t\t\t\t\t\tcreatedId);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.addSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tcreateActionDefinition(),\r\n\t\t\t\t'Creating Action Definition',\r\n\t\t\t\t'Created Action Definition',\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${selectedItem.name}\r\n\t\t\t\t\twas successfully created.`,\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${selectedItem.name}\r\n\t\t\t\t\twas not created.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an action definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tprivate async updateActionDefinition(): Promise\r\n\t{\r\n\t\tconst selectedItem: any =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst updateActionDefinition: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst workflowActionDefinition: IWorkflowActionDefinitions =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: selectedItem.id,\r\n\t\t\t\t\t\tentityTypeId: selectedItem.entityTypeId,\r\n\t\t\t\t\t\tentityVersionId: selectedItem.entityVersionId,\r\n\t\t\t\t\t\tname: selectedItem.name,\r\n\t\t\t\t\t\tdescription: selectedItem.description,\r\n\t\t\t\t\t\tclassReference:\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tselectedItem.classDefinition)\r\n\t\t\t\t\t\t\t\t? selectedItem.classReference\r\n\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\tclassDefinition:\r\n\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tselectedItem.classReference)\r\n\t\t\t\t\t\t\t\t? selectedItem.classDefinition\r\n\t\t\t\t\t\t\t\t: null,\r\n\t\t\t\t\t\tfailureActionId: selectedItem.failureActionId\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.update(\r\n\t\t\t\t\t\tselectedItem.id,\r\n\t\t\t\t\t\tworkflowActionDefinition);\r\n\r\n\t\t\t\tawait this.commonTableContext.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateActionDefinition(),\r\n\t\t\t\t'Updating Action Definition',\r\n\t\t\t\t'Updated Action Definition',\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully updated.`,\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not updated.`),\r\n\t\t\tAppConstants.activityStatus.complete,\r\n\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an action definition.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tprivate async deleteActionDefinition(): Promise\r\n\t{\r\n\t\tconst deleteActionDefinition: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.workflowActionDefinitionsApiService\r\n\t\t\t\t\t.delete(\r\n\t\t\t\t\t\tthis.commonTableContext.source.selectedItem.id);\r\n\r\n\t\t\t\tthis.commonTableContext.source.deleteSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tdeleteActionDefinition(),\r\n\t\t\t\t'Deleting Action Definition',\r\n\t\t\t\t'Deleted Action Definition',\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas successfully deleted.`,\r\n\t\t\t\t`Action Definition\r\n\t\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\t\twas not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @async\r\n\t * @return {Promise}\r\n\t * The delete statement string.\r\n\t * @memberof ActionDefinitionsComponent\r\n\t */\r\n\tprivate async getDeleteStatement(): Promise\r\n\t{\r\n\t\tconst existingRequisites =\r\n\t\t\tawait this.workflowActionRequisitesApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'ActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${this.commonTableContext.source.selectedItem.id} `\r\n\t\t\t\t\t\t+ 'Or RequisiteActionDefinitionId eq '\r\n\t\t\t\t\t\t+ `${this.commonTableContext.source.selectedItem.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (existingRequisites.length > 0)\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = true;\r\n\r\n\t\t\treturn `Unable to delete Worflow Action Definition\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.name}\r\n\t\t\t\tdue to existing requisite relationship\r\n\t\t\t\taction definition id\r\n\t\t\t\t${existingRequisites[0].actionDefinitionId}\r\n\t\t\t\tand requisite action definition id\r\n\t\t\t\t${existingRequisites[0].requisiteActionDefinitionId}.`;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.commonTableContext.source.tableDefinitions.actions\r\n\t\t\t\t.delete.items[0].disabled = false;\r\n\r\n\t\t\treturn `Confirm you are about to delete Workflow Action Definition\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.id}\r\n\t\t\t\t${this.commonTableContext.source.selectedItem.name}.`;\r\n\t\t}\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-action-history-expand',\r\n\ttemplateUrl: './action-history-expand.component.html',\r\n\tstyleUrls: [\r\n\t\t'./action-history-expand.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an action history expand.\r\n *\r\n * @export\r\n * @class SessionComponent\r\n * @implements {\r\n * \tIDynamicComponent}\r\n */\r\nexport class ActionHistoryExpandComponent\r\nimplements IDynamicComponent, OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActionHistoryExpandComponent class.\r\n\t *\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionApiService\r\n\t * The api service used to gather workflow action definition data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to gather entity instance data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to gather entity type data.\r\n\t * @param {Router} router\r\n\t * The service that provides navigation among views.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service data.\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic workflowActionDefinitionApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic router: Router,\r\n\t\tpublic moduleService: ModuleService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout definition.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic formlyLayoutDefinition: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the action definition.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic actionDefinition: IWorkflowActionDefinitions;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic entityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the user.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic user: IEntityInstance;\r\n\r\n\t/**\r\n\t * Initializes the Action History Expand Component to define the page\r\n\t * variables and formly definitions.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.actionDefinition =\r\n\t\t\tawait this.workflowActionDefinitionApiService\r\n\t\t\t\t.get(this.context.source.selectedItem.actionDefinitionId);\r\n\r\n\t\tthis.entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.get(this.actionDefinition.entityTypeId);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.entityType.group;\r\n\r\n\t\tthis.entityInstance =\r\n\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.context.source.selectedItem.entityInstanceId)\r\n\t\t\t\t? await this.entityInstanceApiService\r\n\t\t\t\t\t.get(this.context.source.selectedItem.entityInstanceId)\r\n\t\t\t\t: null;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tthis.user = await this.entityInstanceApiService\r\n\t\t\t.get(this.context.source.selectedItem.userId);\r\n\r\n\t\tthis.setFormlyLayoutDefinitions();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the formly layout definitions.\r\n\t *\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic setFormlyLayoutDefinitions(): void\r\n\t{\r\n\t\tconst entityInstanceIdOptions =\r\n\t\t\tAnyHelper.isNull(this.context.source.selectedItem.entityInstanceId)\r\n\t\t\t\t? []\r\n\t\t\t\t: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\tthis.context.source.selectedItem.entityInstanceId,\r\n\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\tthis.getEntityInstanceLabel()\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\r\n\t\tthis.formlyLayoutDefinition =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'actionNameId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Action Name',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem.actionDefinitionId,\r\n\t\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t\tthis.actionDefinition.name\r\n\t\t\t\t\t\t\t}],\r\n\t\t\t\t\t\tactionMenuItems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ticon: 'fa fa-share-square-o',\r\n\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\t`${this.moduleService\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.name.toLowerCase()}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t'workflowEngine',\r\n\t\t\t\t\t\t\t\t\t\t\t\t'actions',\r\n\t\t\t\t\t\t\t\t\t\t\t\t'definitions'\r\n\t\t\t\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'entityInstanceId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Entity Instance',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: entityInstanceIdOptions,\r\n\t\t\t\t\t\tactionMenuItems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ticon: 'fa fa-share-square-o',\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t`${this.moduleService\r\n\t\t\t\t\t\t\t\t\t\t\t\t.name.toLowerCase()}/`\r\n\t\t\t\t\t\t\t\t\t\t\t\t+ 'entities',\r\n\t\t\t\t\t\t\t\t\t\t\t`${this.entityType.group}`,\r\n\t\t\t\t\t\t\t\t\t\t\t'view',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.entityInstanceId\r\n\t\t\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdisabled: AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\t\tthis.context.source\r\n\t\t\t\t\t\t\t\t\t\t.selectedItem.entityInstanceId)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'userId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'User',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: this.context.source.selectedItem.userId,\r\n\t\t\t\t\t\t\t\tlabel: `${this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.userId}\r\n\t\t\t\t\t\t\t\t\t(${this.user.data.userName})`\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'createDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Create Date',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.createDate,\r\n\t\t\t\t\t\t\t\tlabel: `${this.getCreateDateLabel()}`\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'stateId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Status',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 1,\r\n\t\t\t\t\t\t\t\tlabel: 'Completed'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 2,\r\n\t\t\t\t\t\t\t\tlabel: 'Failed'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: 3,\r\n\t\t\t\t\t\t\t\tlabel: 'Pending'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\taddonMenuItems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tgetCustomIcon:\r\n\t\t\t\t\t\t\t\t\t(statusId: number) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tswitch (statusId)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn 'pi pi-check';\r\n\t\t\t\t\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn 'fa fa-fw '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ 'fa-exclamation';\r\n\t\t\t\t\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn 'pi pi-spin pi-spinner';\r\n\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tgetCustomStyle:\r\n\t\t\t\t\t\t\t\t\t(statusId: number) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tswitch (statusId)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn 'color: #3e9018;';\r\n\t\t\t\t\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn 'color: #da2f31;';\r\n\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'changeDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Change Date',\r\n\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: this.context.source\r\n\t\t\t\t\t\t\t\t\t.selectedItem.changeDate,\r\n\t\t\t\t\t\t\t\tlabel: `${this.getChangeDateLabel()}`\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the entity instance label string.\r\n\t *\r\n\t * @returns {string}\r\n\t * The entity instance label string.\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic getEntityInstanceLabel(): string\r\n\t{\r\n\t\treturn !AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.context.source.selectedItem.entityInstanceId)\r\n\t\t\t? `${this.context.source.selectedItem.entityInstanceId}\r\n\t\t\t\t(${this.entityInstance?.entityType})`\r\n\t\t\t: AppConstants.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the create date label string.\r\n\t *\r\n\t * @returns {string}\r\n\t * The create date label string.\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic getCreateDateLabel(): string\r\n\t{\r\n\t\tconst localDate: DateTime =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.createDate).toLocal();\r\n\r\n\t\treturn `${localDate.toFormat(\r\n\t\t\tDateHelper.presetFormats.internationalFullDateFormat)}\r\n\t\t\t(${localDate.toRelative()})`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the change date label string.\r\n\t *\r\n\t * @returns {string}\r\n\t * The change date label string.\r\n\t * @memberof ActionHistoryExpandComponent\r\n\t */\r\n\tpublic getChangeDateLabel(): string\r\n\t{\r\n\t\tconst localDate: DateTime =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.changeDate).toLocal();\r\n\r\n\t\tconst duration: number =\r\n\t\t\tDateTime.fromISO(\r\n\t\t\t\tthis.context.source.selectedItem.changeDate)\r\n\t\t\t\t.diff(DateTime.fromISO(\r\n\t\t\t\t\tthis.context.source.selectedItem.createDate)).milliseconds;\r\n\r\n\t\treturn `${localDate.toFormat(\r\n\t\t\tDateHelper.presetFormats.internationalFullDateFormat)} `\r\n\t\t\t+ `(${this.context.source.tableDefinitions.actions.view\r\n\t\t\t\t.customContext.source.getAverageTimeDuration(duration)} `\r\n\t\t\t+ 'duration)';\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionInstancesApiService\r\n} from '@api/services/workflow/workflow-action-instances.api.service';\r\nimport {\r\n\tDynamicComponentLookup\r\n} from '@dynamicComponents/dynamic-component.lookup';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tChartConstants\r\n} from '@shared/constants/chart-constants';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tChartHelper\r\n} from '@shared/helpers/chart.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIAggregate\r\n} from '@shared/interfaces/application-objects/aggregate.interface';\r\nimport {\r\n\tIChartDefinition\r\n} from '@shared/interfaces/application-objects/chart-definition.interface';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIInformationMenuItem\r\n} from '@shared/interfaces/application-objects/information-menu-item.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIChartContext\r\n} from '@shared/interfaces/dynamic-interfaces/chart-context.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIWorkflowActionDefinitions\r\n} from '@shared/interfaces/workflow/workflow-action-definitions.interface';\r\nimport {\r\n\tIWorkflowActionInstances\r\n} from '@shared/interfaces/workflow/workflow-action-instances.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tSelectItem\r\n} from 'primeng/api';\r\nimport {\r\n\tActionHistoryExpandComponent\r\n} from './action-history-expand/action-history-expand.component';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-action-execution-history',\r\n\ttemplateUrl: './action-execution-history.component.html',\r\n\tstyleUrls: [\r\n\t\t'./action-execution-history.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the workflow engine action\r\n * execution history component.\r\n *\r\n * @export\r\n * @class ActionExecutionHistoryComponent\r\n * @extends {PageContextDirective}\r\n */\r\nexport class ActionExecutionHistoryComponent\r\n\textends PageContextDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ActionDefinitionComponent class.\r\n\t *\r\n\t * @param {WorkflowActionInstancesApiService}\r\n\t * workflowActionInstancesApiService\r\n\t * The api service used to gather action instance data.\r\n\t * @param {WorkflowActionDefinitionsApiService}\r\n\t * workflowActionDefinitionsApiService\r\n\t * The api service used to gather action definition data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to gather entity type data.\r\n\t * @param {ChartFactory} chartFactory\r\n\t * The service to use chart configurations.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic workflowActionInstancesApiService:\r\n\t\t\tWorkflowActionInstancesApiService,\r\n\t\tpublic workflowActionDefinitionsApiService:\r\n\t\t\tWorkflowActionDefinitionsApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic chartFactory: ChartFactory,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the display management context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic actionHistoryContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic tableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic availableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic selectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the table filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic tableFilter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the array of information menu items.\r\n\t *\r\n\t * @type {IInformationMenuItem[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic informationMenuItems: IInformationMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by the last thirty days.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic lastThirtyDaysFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by the last seven days.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic lastSevenDaysFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a last thirty day\r\n\t * chart splitout.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic thirtyDayLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the label array to display in a last seven day\r\n\t * chart splitout.\r\n\t *\r\n\t * @type {DateTime[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic sevenDayLabels: DateTime[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by todays instances. The current\r\n\t * filter that will limit the query to instances createdDate\r\n\t * greater than current date at 0:00:0.0 utc time and less than\r\n\t * current date time.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic todayFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the string used to filter by create date instances from\r\n\t * seven days ago. The current filter that will limit the query to\r\n\t * instances createdDate greater than 7 days ago at 0:00:0.0 utc time and\r\n\t * less than current date time.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic sevenDayFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the action name filter options.\r\n\t *\r\n\t * @type {SelectItem[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic actionNames: IWorkflowActionDefinitions[];\r\n\r\n\t/**\r\n\t * Gets or sets the action definition.\r\n\t *\r\n\t * @type {IWorkflowActionDefinitions[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic actionDefinitions: IWorkflowActionDefinitions[];\r\n\r\n\t/**\r\n\t * Sets the data chunk limit.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic dataChunkLimit: number = 100;\r\n\r\n\t/**\r\n\t * Gets or sets the query params.\r\n\t *\r\n\t * @type {IObjectSearch}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic queryParams: IObjectSearch =\r\n\t\t{\r\n\t\t\tfilter: AppConstants.empty,\r\n\t\t\torderBy: `Id ${AppConstants.sortDirections.ascending}`,\r\n\t\t\toffset: null,\r\n\t\t\tlimit: this.dataChunkLimit\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the definition name filter options.\r\n\t *\r\n\t * @type {SelectItem[]}\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic definitionNameFilterOptions: SelectItem[];\r\n\r\n\t/**\r\n\t * Gets or sets the table row count.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tpublic tableRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets or sets the loading table definitions state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tpublic loadingTableDefinitions: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Sets the actions last thirty days string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tprivate readonly actionsLastThirtyDays: string = 'Actions Last 30 Days';\r\n\r\n\t/**\r\n\t * Sets the number of action instances string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tprivate readonly numberOfActionInstances: string =\r\n\t\t'Number of Action Instances';\r\n\r\n\t/**\r\n\t * Sets the action last seven days string literal.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tprivate readonly actionsLastSevenDays: string = 'Actions Last 7 Days';\r\n\r\n\t/**\r\n\t * Initializes the ActionExecution History Component page setup.\r\n\t *\r\n\t * @async\r\n\t * @memberof AdminPageDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\t\tthis.setupInformationMenuItems();\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definitions for the standard table\r\n\t *\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.actionHistoryContext =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this\r\n\t\t\t};\r\n\r\n\t\tthis.tableDefinitions = {\r\n\t\t\ttableTitle: 'Performed Actions',\r\n\t\t\texpandTitle: 'View Workflow History',\r\n\t\t\tobjectSearch: {\r\n\t\t\t\tfilter: this.tableFilter,\r\n\t\t\t\torderBy: `Id ${AppConstants.sortDirections.descending}`,\r\n\t\t\t\toffset: 0,\r\n\t\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\tvirtualPageSize: this.tableRowCount\r\n\t\t\t},\r\n\t\t\tapiPromise:\r\n\t\t\t\tasync (objectSearch: IObjectSearch) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst workflowActionInstances: IWorkflowActionInstances[] =\r\n\t\t\t\t\t\tawait this.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\treturn workflowActionInstances;\r\n\t\t\t\t},\r\n\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t{\r\n\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t},\r\n\t\t\tactions: {\r\n\t\t\t\tview: {\r\n\t\t\t\t\tcustomContext: this.actionHistoryContext,\r\n\t\t\t\t\tcomponent: ActionHistoryExpandComponent,\r\n\t\t\t\t\titems: []\r\n\t\t\t\t},\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\tquickFilters: this.definitionNameFilterOptions,\r\n\t\t\t\t\tselectedFilterValue: this.tableFilter\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up variables used in this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tthis.actionNames =\r\n\t\t\tawait this.populateNames(\r\n\t\t\t\t{\r\n\t\t\t\t\tqueryReturn: async(queryParams: any) =>\r\n\t\t\t\t\t\tthis.workflowActionDefinitionsApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tqueryParams.filter,\r\n\t\t\t\t\t\t\t\tqueryParams.orderBy,\r\n\t\t\t\t\t\t\t\tqueryParams.offset,\r\n\t\t\t\t\t\t\t\tqueryParams.limit),\r\n\t\t\t\t\tqueryParams: this.queryParams\r\n\t\t\t\t});\r\n\r\n\t\tthis.definitionNameFilterOptions = await this.mapDefinitionNames();\r\n\r\n\t\tconst currentDate: DateTime = DateTime.local();\r\n\r\n\t\tconst currentUtcDateTime: string =\r\n\t\t\tcurrentDate.toISO();\r\n\r\n\t\tconst currentInitialDateTime: string =\r\n\t\t\tDateHelper.startOf(currentDate)\r\n\t\t\t\t.toISO();\r\n\r\n\t\tconst sevenDaysAgoFromCurrentDateTime: string =\r\n\t\t\tDateHelper.startOf(currentDate)\r\n\t\t\t\t.minus({ days: 7 })\r\n\t\t\t\t.toISO();\r\n\r\n\t\tthis.sevenDayFilter =\r\n\t\t\t`createDate > '${sevenDaysAgoFromCurrentDateTime}' AND `\r\n\t\t\t\t+ `createDate < '${currentUtcDateTime}'`;\r\n\r\n\t\tthis.todayFilter =\r\n\t\t\t`createDate > '${currentInitialDateTime}' AND `\r\n\t\t\t\t+ `createDate < '${currentUtcDateTime}'`;\r\n\r\n\t\tthis.lastThirtyDaysFilter =\r\n\t\t\tApiFilterHelper.getLastNumberOfDaysFilter(\r\n\t\t\t\t'CreateDate',\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.thirtyDays);\r\n\r\n\t\tthis.lastSevenDaysFilter =\r\n\t\t\tApiFilterHelper.getLastNumberOfDaysFilter(\r\n\t\t\t\t'CreateDate',\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.sevenDays);\r\n\r\n\t\tthis.thirtyDayLabels =\r\n\t\t\tChartHelper.getLastNumberOfDayLabels(\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.thirtyDays);\r\n\r\n\t\tthis.sevenDayLabels =\r\n\t\t\tChartHelper.getLastNumberOfDayLabels(\r\n\t\t\t\tcurrentDate,\r\n\t\t\t\tAppConstants.days.sevenDays);\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'id',\r\n\t\t\t\t\tcolumnHeader: 'Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'entityInstanceId',\r\n\t\t\t\t\tcolumnHeader: 'Entity Instance Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'actionDefinitionId',\r\n\t\t\t\t\tcolumnHeader: 'Action Definition Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'userId',\r\n\t\t\t\t\tcolumnHeader: 'User Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.date,\r\n\t\t\t\t\tcolumnHeader: 'Create Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'changeDate',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.date,\r\n\t\t\t\t\tcolumnHeader: 'Change Date',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'stateId',\r\n\t\t\t\t\tcolumnHeader: 'State Id',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up information menu items displayed in this component.\r\n\t *\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic setupInformationMenuItems(): void\r\n\t{\r\n\t\tconst primaryGroupByValues: string =\r\n\t\t\t'CreateDate.ConvertToSystemTime().Year, '\r\n\t\t\t\t+ 'CreateDate.ConvertToSystemTime().Month, '\r\n\t\t\t\t+ 'CreateDate.ConvertToSystemTime().Day';\r\n\r\n\t\tthis.informationMenuItems =\r\n\t\t[]>\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise:\r\n\t\t\t\t\t\t\tthis.workflowActionInstancesApiService.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\tthis.actionsLastThirtyDays,\r\n\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfActionInstances,\r\n\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdataPromise: this\r\n\t\t\t\t\t\t\t\t\t\t\t.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.count,\r\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.lastThirtyDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.actionsLastThirtyDays,\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.thirtyDayLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfActionInstances,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.day),\r\n\t\t\t\t\t\t\t\t\t\tchartColors: [\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.themeColors.primary\r\n\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\tfillMissingDataSets: true,\r\n\t\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: this.actionsLastThirtyDays,\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.extraLarge\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tchartDefinition:\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdataPromise: this.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\tthis.lastSevenDaysFilter,\r\n\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\tchartConfiguration: this.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\tthis.actionsLastSevenDays,\r\n\t\t\t\t\t\t\tthis.sevenDayLabels,\r\n\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\tthis.numberOfActionInstances,\r\n\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tChartConstants.formats.day)\r\n\t\t\t\t\t},\r\n\t\t\t\toverlayDynamicComponent:\r\n\t\t\t\t\tDynamicComponentLookup.supportedTypes\r\n\t\t\t\t\t\t.chartComponent,\r\n\t\t\t\toverlayDynamicContext:\r\n\t\t\t\t\t>>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tchartDefinition:\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdataPromise: this\r\n\t\t\t\t\t\t\t\t\t\t\t.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t\t\t\t\t.aggregate(\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.aggregateMethods\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.count,\r\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.lastSevenDaysFilter,\r\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryGroupByValues),\r\n\t\t\t\t\t\t\t\t\t\tchartConfiguration:\r\n\t\t\t\t\t\t\t\t\t\t\tthis.chartFactory.timeLineChart(\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.actionsLastSevenDays,\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.sevenDayLabels,\r\n\t\t\t\t\t\t\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.numberOfActionInstances,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.timeUnits.day,\r\n\t\t\t\t\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tChartConstants.formats.day),\r\n\t\t\t\t\t\t\t\t\t\tchartColors: [\r\n\t\t\t\t\t\t\t\t\t\t\tChartConstants.themeColors.primary\r\n\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdata: [],\r\n\t\t\t\t\t\t\t\tfillMissingDataSets: true,\r\n\t\t\t\t\t\t\t\tsummaryCardDisplay: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsource: this\r\n\t\t\t\t\t},\r\n\t\t\t\ttitleTemplate: this.actionsLastSevenDays,\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.extraLarge\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tdataPromise: this.workflowActionInstancesApiService.aggregate(\r\n\t\t\t\t\tAppConstants.aggregateMethods.count,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.todayFilter,\r\n\t\t\t\t\tnull),\r\n\t\t\t\tsummaryTemplate: '${data[0].value}',\r\n\t\t\t\ttitleTemplate: 'Actions Today',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdataPromise: new Promise(async (resolve) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst actionInstances: IWorkflowActionInstances[] =\r\n\t\t\t\t\t\tawait this.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t`${this.sevenDayFilter}`,\r\n\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\tlet averageResponse: number = 0;\r\n\r\n\t\t\t\t\tactionInstances.forEach(\r\n\t\t\t\t\t\t(actionInstance: IWorkflowActionInstances) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taverageResponse +=\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\tactionInstance.changeDate)\r\n\t\t\t\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\t\t\tactionInstance.createDate))\r\n\t\t\t\t\t\t\t\t\t.milliseconds;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst totalAverageTime: number =\r\n\t\t\t\t\t\taverageResponse / actionInstances.length;\r\n\r\n\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taverageDuration:\r\n\t\t\t\t\t\t\t\t`${this.getAverageTimeDuration(\r\n\t\t\t\t\t\t\t\t\ttotalAverageTime)}`\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}),\r\n\t\t\t\tsummaryTemplate: '${data.averageDuration}',\r\n\t\t\t\ttitleTemplate: '7 Day Avg Duration',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\tsquareCardDisplay: false\r\n\t\t\t},\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tdataPromise: new Promise(async (resolve) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst actionInstances: IWorkflowActionInstances[] =\r\n\t\t\t\t\t\tawait this.workflowActionInstancesApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t`${this.todayFilter}`,\r\n\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\tlet averageResponse: number = 0;\r\n\r\n\t\t\t\t\tactionInstances.forEach(\r\n\t\t\t\t\t\t(actionInstance: IWorkflowActionInstances) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taverageResponse +=\r\n\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\tactionInstance.changeDate)\r\n\t\t\t\t\t\t\t\t\t.diff(\r\n\t\t\t\t\t\t\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\t\t\t\t\t\t\tactionInstance.createDate))\r\n\t\t\t\t\t\t\t\t\t.milliseconds;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst totalAverageTime: number =\r\n\t\t\t\t\t\taverageResponse / actionInstances.length;\r\n\r\n\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taverageDuration:\r\n\t\t\t\t\t\t\t\t`${this.getAverageTimeDuration(\r\n\t\t\t\t\t\t\t\t\ttotalAverageTime)}`\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}),\r\n\t\t\t\tsummaryTemplate: '${data.averageDuration}',\r\n\t\t\t\ttitleTemplate: 'Today Avg Duration',\r\n\t\t\t\twidth: AppConstants.sizeIdentifiers.large,\r\n\t\t\t\tsummaryCardDisplay: true,\r\n\t\t\t\tsquareCardDisplay: false\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly layout definitions.\r\n\t *\r\n\t * @param {number} averageTime\r\n\t * The average time in miliseconds.\r\n\t * @returns {string}\r\n\t * The average time duration string in\r\n\t * format mm:ss.ms\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic getAverageTimeDuration(\r\n\t\taverageTime: number): string\r\n\t{\r\n\t\tconst dateTimeFromEpoch: DateTime =\r\n\t\t\tDateTime.fromMillis(averageTime);\r\n\r\n\t\treturn !dateTimeFromEpoch.isValid\r\n\t\t\t? AppConstants.timeSpan.zeroMinutes\r\n\t\t\t: `${dateTimeFromEpoch.minute}:`\r\n\t\t\t\t+ `${dateTimeFromEpoch.second}.`\r\n\t\t\t\t+ `${dateTimeFromEpoch.millisecond}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps the filter options.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * A select item array promise.\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic async mapDefinitionNames(): Promise\r\n\t{\r\n\t\tconst filterOptions =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'All',\r\n\t\t\t\t\tvalue: AppConstants.empty\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tfor (const actionName of this.actionNames)\r\n\t\t{\r\n\t\t\tfor (const entityType of entityTypes)\r\n\t\t\t{\r\n\t\t\t\tif (entityType.id === actionName.entityTypeId)\r\n\t\t\t\t{\r\n\t\t\t\t\tfilterOptions.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel:\r\n\t\t\t\t\t\t\t\t`${actionName.name} (${entityType.name})`,\r\n\t\t\t\t\t\t\tvalue:\r\n\t\t\t\t\t\t\t\t`ActionDefinitionId eq ${actionName.id}`\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filterOptions\r\n\t\t\t.sort((\r\n\t\t\t\toptionOne: any,\r\n\t\t\t\toptionTwo: any) =>\r\n\t\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\t\toptionOne,\r\n\t\t\t\t\toptionTwo,\r\n\t\t\t\t\t'label'));\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the names object with all the existing.\r\n\t *\r\n\t * @async\r\n\t * @param {any} actionDefinitions\r\n\t * The existing action definitions\r\n\t * @returns {Promise}\r\n\t * The awaitable promise data query.\r\n\t * @memberof ActionExecutionHistoryComponent\r\n\t */\r\n\tpublic async populateNames(actionDefinitions: any): Promise\r\n\t{\r\n\t\tlet dataChunk =\r\n\t\t\tawait actionDefinitions\r\n\t\t\t\t.queryReturn(actionDefinitions.queryParams);\r\n\r\n\t\tlet operations =\r\n\t\t\t[\r\n\t\t\t\t...dataChunk\r\n\t\t\t];\r\n\r\n\t\twhile (dataChunk.length === this.dataChunkLimit)\r\n\t\t{\r\n\t\t\tactionDefinitions.queryParams.filter =\r\n\t\t\t\t`Id gt ${dataChunk[dataChunk.length - 1].id}`;\r\n\r\n\t\t\tdataChunk =\r\n\t\t\t\tawait actionDefinitions\r\n\t\t\t\t\t.queryReturn(actionDefinitions.queryParams);\r\n\r\n\t\t\toperations =\r\n\t\t\t\t[\r\n\t\t\t\t\t...operations,\r\n\t\t\t\t\t...dataChunk\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn operations;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tBack\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t
    \r\n\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-access-denied',\r\n\ttemplateUrl: './access-denied.component.html',\r\n\tstyleUrls: [\r\n\t\t'./access-denied.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of an access denied page.\r\n *\r\n * @export\r\n * @class AccessDeniedComponent\r\n * @implements {OnInit}\r\n */\r\nexport class AccessDeniedComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an AccessDeniedComponent.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The route used in this component.\r\n\t * @param {Router} router\r\n\t * The router used in this component.\r\n\t * @param {Location} location\r\n\t * The router used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used in this component.\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the loading value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the session identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic sessionIdentifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic accessDeniedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic resources: string[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loading value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic clientMessage: string =\r\n\t\tAppConstants.messages.pageAccessNotAllowed;\r\n\r\n\t/**\r\n\t * Gets or sets the parameter identifiers.\r\n\t *\r\n\t * @type {{\r\n\t * \taccessDeniedUrlQueryParameter: string;\r\n\t * \tresourcesQueryParameter: string;\r\n\t * \tclientMessageQueryParameter: string;\r\n\t * }}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic queryParameters: {\r\n\t\taccessDeniedUrlQueryParameter: string;\r\n\t\tresourcesQueryParameter: string;\r\n\t\tclientMessageQueryParameter: string;\r\n\t} = {\r\n\t\t\taccessDeniedUrlQueryParameter: 'route',\r\n\t\t\tresourcesQueryParameter: 'resources',\r\n\t\t\tclientMessageQueryParameter: 'clientMessage',\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the page context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext {\r\n\t\treturn >{\r\n\t\t\tsource: this\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Handles route parameters for display.\r\n\t *\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.route.queryParams.subscribe(\r\n\t\t\t(parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.accessDeniedUrl =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.accessDeniedUrlQueryParameter])\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: mappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.accessDeniedUrlQueryParameter];\r\n\t\t\t\tthis.resources =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.resourcesQueryParameter])\r\n\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t: mappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.resourcesQueryParameter];\r\n\t\t\t\tthis.clientMessage =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.clientMessageQueryParameter])\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: mappedRouteData[\r\n\t\t\t\t\t\t\tthis.queryParameters.clientMessageQueryParameter];\r\n\r\n\t\t\t\tthis.sessionIdentifier = this.sessionService.sessionId;\r\n\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the back action component event.\r\n\t *\r\n\t * @memberof AccessDeniedComponent\r\n\t */\r\n\tpublic backNavigate(): void\r\n\t{\r\n\t\tthis.location.back();\r\n\t}\r\n}","\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t{{displayComponentInstance.title}}\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tCancel\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOnChanges,\r\n\tOnInit,\r\n\tOutput,\r\n\tSimpleChanges,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tBasePageDirective\r\n} from '@shared/directives/base-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisEqual\r\n} from 'lodash-es';\r\n\r\n/* eslint-disable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-display-component-parameter',\r\n\ttemplateUrl: './display-component-parameter.component.html',\r\n\tstyleUrls: [\r\n\t\t'./display-component-parameter.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the display component\r\n * parameter component.\r\n *\r\n * @export\r\n * @class DisplayComponentParameterComponent\r\n * @implements {OnInit}\r\n * @implements {OnChanges}\r\n * @implements {AfterViewInit}\r\n */\r\nexport class DisplayComponentParameterComponent\r\nimplements OnInit, OnChanges, AfterViewInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the display component parameter\r\n\t * component. This component is used to display dynamic formly\r\n\t * content and alter display component parameter layout data\r\n\t * items.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the value that will force cancel to always display\r\n\t * regardless of form changes. If false, this will only display\r\n\t * when a value has altered in the form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public alwaysDisplayCancel: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance associated\r\n\t * with this parameter set.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the layout schema displayed in the formly section\r\n\t * of this component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public parameterLayoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the data associated with the layout schema and\r\n\t * displayed in the formly component.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public parameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic component context associated with this data\r\n\t * set.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy that defines if the form content should be\r\n\t * displayed in a scroll panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public useScrollPanel: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy that defines if the form content will be\r\n\t * displayed in an overlay panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public useOverlay: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy that defines if the settings control\r\n\t * is currently displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public settingsActive: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy that defines if these parameters are being\r\n\t * displayed in a page header.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Input() public pageHeaderParameters: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will emit that the apply parameters\r\n\t * action has been called in this component.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Output() public appliedParameters: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will emit that the cancel action\r\n\t * has been called in this component.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@Output() public cancelClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the scroll panel element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@ViewChild('ScrollPanel')\r\n\tpublic scrollPanel: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the full height form element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@ViewChild('FullHeightFormContainer')\r\n\tpublic fullHeightForm: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the initial value sent into this component for parameter layout\r\n\t * data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic archivedParameterLayoutData: any = { data: {}};\r\n\r\n\t/**\r\n\t * Gets or sets the valid value of the contained parameter form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the changed value of the parameter data. This is\r\n\t * used to define if the apply button is available due to new data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic valueChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the calculated dynamic form height along with the title\r\n\t * and associated buttonset.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic fullDynamicFormHeight: number;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy defining if we should display the dynamic form\r\n\t * in a scroll panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic useFixedHeightScrollPanel: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy defining if this parameter container should\r\n\t * display above the parameter header when clicked. This is only applicable\r\n\t * to page header parameter sets.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic displayAbove: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the last calendar target so that resizes will only occur\r\n\t * once.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic lastCalendarTarget: string;\r\n\r\n\t/**\r\n\t * Gets the identifier used for a widget overlay.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tprivate readonly overlayIdentifier: string = 'widget-overlay';\r\n\r\n\t/**\r\n\t * Gets the class sent to appended calendars in this parameter component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tprivate readonly appendedCalendarPanelClass: string =\r\n\t\t'appended-calendar-panel';\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.settingsActive === true)\r\n\t\t{\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.settingsActive = false;\r\n\t\t\t});\r\n\r\n\t\t\tthis.cancelClick();\r\n\t\t}\r\n\r\n\t\tif (this.pageHeaderParameters === true)\r\n\t\t{\r\n\t\t\tthis.calculateHeaderParameterDisplay();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this setting display when a non bubbled\r\n\t * click event occurs outside of this element.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (controlIdentifer !== this.overlayIdentifier)\r\n\t\t{\r\n\t\t\tthis.siteLayoutChanged();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set the inital parameter layout data value\r\n\t * for future on change comparisons.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.archivedParameterLayoutData.data =\r\n\t\t\t{...this.parameterLayoutData?.data};\r\n\t}\r\n\r\n\t/**\r\n\t * On component after view initialization event.\r\n\t * This method is used to decorate input formly fields with\r\n\t * a link to the append to container in this component.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(this.parameterLayoutSchema)\r\n\t\t\t\t\t|| this.useScrollPanel === false)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.parameterLayoutSchema\r\n\t\t\t\t\t.forEach((fieldConfig: FormlyFieldConfig) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfieldConfig.props.appendTo =\r\n\t\t\t\t\t\t\tFormlyConstants.appendToTargets.body;\r\n\r\n\t\t\t\t\t\tif (fieldConfig.type ===\r\n\t\t\t\t\t\t\tFormlyConstants.customControls.customCalendar)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfieldConfig.props.panelStyleClass =\r\n\t\t\t\t\t\t\t\tthis.appendedCalendarPanelClass;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * On component changes event.\r\n\t * This method is used to look for differences in the inital parameter\r\n\t * layout data values and the current data values. If differences are\r\n\t * found this will call the applied parameters click event so this\r\n\t * can be handled.\r\n\t *\r\n\t * @param {SimpleChanges} simpleChanges\r\n\t * The altered values that fired this on change event.\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic ngOnChanges(\r\n\t\tsimpleChanges: SimpleChanges): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(\r\n\t\t\tsimpleChanges.parameterLayoutData?.previousValue?.data)\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\tsimpleChanges.parameterLayoutData?.currentValue?.data)\r\n\t\t\t&& !isEqual(\r\n\t\t\t\tthis.archivedParameterLayoutData.data,\r\n\t\t\t\tsimpleChanges.parameterLayoutData.currentValue.data))\r\n\t\t{\r\n\t\t\tthis.archivedParameterLayoutData.data =\r\n\t\t\t\t{...this.parameterLayoutData?.data};\r\n\r\n\t\t\tthis.appliedParameters.emit();\r\n\t\t}\r\n\r\n\t\tif (this.pageHeaderParameters === true\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\tsimpleChanges.settingsActive?.previousValue)\r\n\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\tsimpleChanges.settingsActive?.currentValue)\r\n\t\t\t&& simpleChanges.settingsActive.previousValue === false\r\n\t\t\t&& simpleChanges.settingsActive.currentValue === true)\r\n\t\t{\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.calculateHeaderParameterDisplay();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click on the apply action found in this component. This will\r\n\t * emit the applied parameter click event to listening components.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic applyClick(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tthis.archivedParameterLayoutData.data =\r\n\t\t\t{...this.parameterLayoutData?.data};\r\n\r\n\t\tthis.appliedParameters.emit();\r\n\t\tthis.valueChanged = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click on the cancel action found in this component. This will\r\n\t * emit the cancel click event to listening components.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic cancelClick(\r\n\t\tevent: any = null): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(event))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\t\tthis.overlayIdentifier);\r\n\t\t}\r\n\r\n\t\tif (!isEqual(\r\n\t\t\tthis.parameterLayoutData.data,\r\n\t\t\tthis.archivedParameterLayoutData.data))\r\n\t\t{\r\n\t\t\tthis.parameterLayoutData.data =\r\n\t\t\t\t{...this.archivedParameterLayoutData.data};\r\n\t\t}\r\n\r\n\t\tthis.cancelClicked.emit();\r\n\t\tthis.valueChanged = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles calculations and setting displays for this parameter display\r\n\t * if shown in a page header. This sets a scroll panel or a display\r\n\t * above the parameter header component if required.\r\n\t *\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic calculateHeaderParameterDisplay(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.fullHeightForm?.nativeElement)\r\n\t\t\t&& this.useScrollPanel === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(this.fullHeightForm?.nativeElement))\r\n\t\t{\r\n\t\t\tthis.fullDynamicFormHeight =\r\n\t\t\t\tMath.ceil(this.fullHeightForm.nativeElement\r\n\t\t\t\t\t.getBoundingClientRect().height)\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.parameterContainerTitleHeight\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.parameterButtonSetHeight;\r\n\t\t}\r\n\r\n\t\tconst pageTop: number =\r\n\t\t\t(DocumentHelper.getElementVerticalPositionById(\r\n\t\t\t\tdocument,\r\n\t\t\t\tBasePageDirective.contentTopIdentifier) || 0);\r\n\r\n\t\tthis.displayAbove =\r\n\t\t\tthis.siteLayoutService.windowHeight / 2 < pageTop;\r\n\t\tconst availableHeight: number =\r\n\t\t\tthis.siteLayoutService.windowHeight\r\n\t\t\t\t- pageTop\r\n\t\t\t\t- window.scrollY;\r\n\r\n\t\tconst useScrollPanel: boolean =\r\n\t\t\tthis.fullDynamicFormHeight >= availableHeight;\r\n\r\n\t\tif ((this.useScrollPanel === false\r\n\t\t\t&& useScrollPanel === true)\r\n\t\t\t|| (this.useScrollPanel === true\r\n\t\t\t\t&& useScrollPanel === false))\r\n\t\t{\r\n\t\t\tthis.useScrollPanel = useScrollPanel;\r\n\t\t\tthis.useFixedHeightScrollPanel = useScrollPanel;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates and calls a widget container click event. This is used\r\n\t * to handle attaching calendar input overlays as a width matching their\r\n\t * respective element.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that sent this click action.\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic containerClicked(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (this.useScrollPanel === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Simulate a pointer event if a click event is sent.\r\n\t\tif (AnyHelper.isNull(event.path))\r\n\t\t{\r\n\t\t\tlet parentElement: any = event.target;\r\n\t\t\tconst clickEventPath: any[] = [];\r\n\r\n\t\t\twhile (parentElement != null)\r\n\t\t\t{\r\n\t\t\t\tclickEventPath.push(parentElement);\r\n\t\t\t\tparentElement = parentElement.parentElement;\r\n\t\t\t}\r\n\r\n\t\t\tevent.path = clickEventPath;\r\n\t\t}\r\n\r\n\t\tconst calendarClicked: boolean =\r\n\t\t\t[\r\n\t\t\t\t...event.path[0].classList,\r\n\t\t\t\t...event.path[1].classList,\r\n\t\t\t\t...event.path[2].classList,\r\n\t\t\t\t...event.path[3].classList\r\n\t\t\t].filter(\r\n\t\t\t\t(value: string) =>\r\n\t\t\t\t\tAppConstants.clickOutsidePanelControl\r\n\t\t\t\t\t\t.includes(value)).length > 0;\r\n\r\n\t\tif (calendarClicked === false)\r\n\t\t{\r\n\t\t\tthis.lastCalendarTarget = AppConstants.empty;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.lastCalendarTarget === event.target.classList[0]\r\n\t\t\t|| this.siteLayoutService.contentWidth <\r\n\t\t\t\tAppConstants.layoutBreakpoints.smallPhone)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.lastCalendarTarget = event.target.classList[0];\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tconst appendedCalendarPanels: NodeListOf =\r\n\t\t\t\t\tdocument.querySelectorAll(\r\n\t\t\t\t\t\t`.${this.appendedCalendarPanelClass}`);\r\n\r\n\t\t\t\tappendedCalendarPanels.forEach(\r\n\t\t\t\t\t(appendedCalendarPanel: Element) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst boundingBox: DOMRect =\r\n\t\t\t\t\t\t\tappendedCalendarPanel.getBoundingClientRect();\r\n\t\t\t\t\t\tconst finalWidth: number =\r\n\t\t\t\t\t\t\tboundingBox.width\r\n\t\t\t\t\t\t\t\t+ AppConstants.staticLayoutSizes\r\n\t\t\t\t\t\t\t\t\t.calendarInputIcon;\r\n\r\n\t\t\t\t\t\tappendedCalendarPanel.setAttribute(\r\n\t\t\t\t\t\t\t'style',\r\n\t\t\t\t\t\t\tappendedCalendarPanel.getAttribute('style')\r\n\t\t\t\t\t\t\t\t+ `;min-width: ${Math.round(finalWidth)}`\r\n\t\t\t\t\t\t\t\t+ 'px !important;');\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed parameter set.\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic validParametersChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.isValid = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the parameter changed event sent from the child dynamic\r\n\t * formly component. This will notify the component of changes to\r\n\t * data in the formly display.\r\n\t *\r\n\t * @param {boolean} changed\r\n\t * The changed truthy of the current displayed parameter set.\r\n\t * @memberof DisplayComponentParameterComponent\r\n\t */\r\n\tpublic parametersChanged(\r\n\t\tchanged: boolean): void\r\n\t{\r\n\t\tthis.valueChanged = changed;\r\n\t}\r\n}\r\n","
    \r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{item.props.label}}:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{getChipValue(item)}}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{differenceCount}}\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisEqual\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'app-display-component-parameter-header',\r\n\ttemplateUrl: './display-component-parameter-header.component.html',\r\n\tstyleUrls: [\r\n\t\t'./display-component-parameter-header.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the display component\r\n * parameter header component.\r\n *\r\n * @export\r\n * @class DisplayComponentParameterHeaderComponent\r\n */\r\nexport class DisplayComponentParameterHeaderComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of a display component parameter header.\r\n\t *\r\n\t * @param {SiteLayoutService} SiteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * should be displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public display: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the truthy defining if the edit option\r\n\t * should be displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displayEditOption: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * should display the parameter chips.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displayParameters: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * should include a parameter display action.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displayParameterOption: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * is currently displaying the secondary view.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displayingSecondary: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * should include a secondary display action.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displaySecondaryOption: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the value defining if this component\r\n\t * is currently displaying the settings view.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public displayingSettings: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout schema.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public parameterLayoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public parameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the parents parameter layout data.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public parentParameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the use click on display flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public useClickOnDisplay: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the flip card action.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Input() public flipCard: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the display edit click that will emit\r\n\t * to listening components a display edit action.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Output() public displayEditClick: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the display secondary view click that will emit\r\n\t * to listening components a display secondary view action.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Output() public displaySecondaryClick: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the display settings click that will emit\r\n\t * to listening components a display settings action.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\t@Output() public displaySettingsClick: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the alter data icon tooltip text.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic alterDataTooltip: string = 'Alter Data Inputs';\r\n\r\n\t/**\r\n\t * Gets or sets the alter data icon tooltip text.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic editDisplayTooltip: string = 'Edit';\r\n\r\n\t/**\r\n\t * Gets or sets the secondary display icon tooltip text.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic alternateDisplayTooltip: string = 'Switch Display';\r\n\r\n\t/**\r\n\t * Gets or sets the icon tooltip style class.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic iconStyleClass: string = 'icon-tooltip utility-menu-tooltip';\r\n\r\n\t/**\r\n\t * Gets or sets the icon tooltip position.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic iconTooltipPosition: string = 'left';\r\n\r\n\t/**\r\n\t * Gets the count of differences between the current parameter data\r\n\t * set compared and the parent's parameter data set.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic get differenceCount(): number\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.parentParameterLayoutData))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn this.getChildParameterDataDifferences();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the list of formly control types that use a dropdown\r\n\t * option/label dataset.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tprivate readonly dropdownTypes: string[] =\r\n\t\t[\r\n\t\t\t'select',\r\n\t\t\tFormlyConstants.customControls.customSelect\r\n\t\t];\r\n\r\n\t/**\r\n\t * Handles the click event sent from the display settings action\r\n\t * icon.\r\n\t *\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic displaySettingsClicked(): void\r\n\t{\r\n\t\tthis.displaySettingsClick.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click event sent from the display secondary view action\r\n\t * icon.\r\n\t *\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic displaySecondaryClicked(): void\r\n\t{\r\n\t\tthis.displaySecondaryClick.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click event sent from the display edit view action\r\n\t * icon.\r\n\t *\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic displayEditClicked(): void\r\n\t{\r\n\t\tthis.displayEditClick.emit();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates a display title for the associated set of parameters\r\n\t * to this component.\r\n\t *\r\n\t * @param {FormlyFieldConfig} fieldConfig\r\n\t * The field configuration to get a title for.\r\n\t * @returns {string}\r\n\t * A title ready for display in the parameter based chip set.\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic getChipTitle(\r\n\t\tfieldConfig: FormlyFieldConfig): string\r\n\t{\r\n\t\treturn `${fieldConfig.props.label}: `;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates a display value for the associated set of parameters\r\n\t * to this component.\r\n\t *\r\n\t * @param {FormlyFieldConfig} fieldConfig\r\n\t * The field configuration to get a value for.\r\n\t * @returns {string}\r\n\t * A value ready for display in the parameter based chip set.\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tpublic getChipValue(\r\n\t\tfieldConfig: FormlyFieldConfig): string\r\n\t{\r\n\t\tlet value: any =\r\n\t\t\tthis.parameterLayoutData.data[\r\n\t\t\t\tfieldConfig.key.\r\n\t\t\t\t\ttoString()\r\n\t\t\t\t\t.replace(\r\n\t\t\t\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\t\t\t\tAppConstants.empty)];\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(value)\r\n\t\t\t&& DateTime.fromISO(value).isValid)\r\n\t\t{\r\n\t\t\tvalue =\r\n\t\t\t\tDateTime.fromISO(\r\n\t\t\t\t\tvalue)\r\n\t\t\t\t\t.toFormat(\r\n\t\t\t\t\t\tDateHelper.presetFormats.shortDateFormat);\r\n\t\t}\r\n\r\n\t\tif (this.dropdownTypes.indexOf(fieldConfig.type.toString()) !== -1)\r\n\t\t{\r\n\t\t\t(fieldConfig.props.options)\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(selectOption: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (value === selectOption.value)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue = selectOption.label;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the differences in data values between this parameter\r\n\t * set and the parent parameter set.\r\n\t *\r\n\t * @returns {number}\r\n\t * A count of differences between the parameter data set\r\n\t * and parent parameter data set.\r\n\t * @memberof DisplayComponentParameterHeaderComponent\r\n\t */\r\n\tprivate getChildParameterDataDifferences(): number\r\n\t{\r\n\t\tlet parentChangeCount: number = 0;\r\n\r\n\t\tthis.parameterLayoutSchema\r\n\t\t\t.forEach((formlyFieldConfig: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tconst cleanedDataKey: string =\r\n\t\t\t\t\tStringHelper.clearNestedDataIdentifier(\r\n\t\t\t\t\t\tformlyFieldConfig.key\r\n\t\t\t\t\t\t\t.toString());\r\n\r\n\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\tthis.parentParameterLayoutData.data[\r\n\t\t\t\t\t\tcleanedDataKey])\r\n\t\t\t\t\t\t&& !isEqual(\r\n\t\t\t\t\t\t\tthis.parameterLayoutData.data[\r\n\t\t\t\t\t\t\t\tcleanedDataKey],\r\n\t\t\t\t\t\t\tthis.parentParameterLayoutData.data[\r\n\t\t\t\t\t\t\t\tcleanedDataKey]))\r\n\t\t\t\t{\r\n\t\t\t\t\tparentChangeCount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn parentChangeCount === 0\r\n\t\t\t? null\r\n\t\t\t: parentChangeCount;\r\n\t}\r\n}\r\n","\r\n\r\n\t
    0\">\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-generic-base-page',\r\n\ttemplateUrl: './generic-base-page.component.html',\r\n\tstyleUrls: [\r\n\t\t'./generic-base-page.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the generic base page.\r\n *\r\n * @export\r\n * @class GenericBasePageComponent\r\n * @extends {DisplayComponentParameterDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class GenericBasePageComponent\r\n\textends DisplayComponentParameterDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the GenericBasePageComponent.\r\n\t * This component is used to display a display component in a\r\n\t * generic base page.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The route used in this component.\r\n\t * @param {Router} router\r\n\t * The router used in this component.\r\n\t * @param {Location} location\r\n\t * The Angular common location service used for url interaction.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the user associated with this dashboard to make\r\n\t * this available in the page context source.\r\n\t *\r\n\t * @type {IUser}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic sessionUser: IUser;\r\n\r\n\t/**\r\n\t * Gets or sets the user type group to allow this to be available\r\n\t * in the page context source.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic sessionUserTypeGroup: string = AppConstants.typeGroups.users;\r\n\r\n\t/**\r\n\t * Gets or sets the display component name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic displayComponentName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the base page display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic basePageInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the name value of the dynamic component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic dynamicComponent: string;\r\n\r\n\t/**\r\n\t* Gets or sets the redraw value of the display component.\r\n\t*\r\n\t* @type {boolean}\r\n\t* @memberof GenericBasePageComponent\r\n\t*/\r\n\tpublic redrawing: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the changed value of the parameter data. This is\r\n\t * used to define if the apply button is available due to new data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic valueChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the valid value of the contained parameter form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the edit mode of the display component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic editMode: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the display component name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic pageTitle: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t* Gets or sets the page context operation group name. This will\r\n\t* be displayed as the second level of the context menu.\r\n\t*\r\n\t* @type {string}\r\n\t* @memberof GenericBasePageComponent\r\n\t*/\r\n\tpublic pageContextOperationGroupName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the utility menu operation group name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic utilityMenuOperationGroupName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the data associated with the layout schema and\r\n\t * displayed in the formly component.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic parameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the layout schema displayed in the formly section\r\n\t * of this component.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic parameterLayoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the class of the container for a use available\r\n\t * height content container. This container will have it's height\r\n\t * set as the available content height minus the header and padding\r\n\t * on load and site layout changes.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BasePageDirective\r\n\t */\r\n\tpublic fixedHeightContentClass: string = 'dynamic-component-container';\r\n\r\n\t/**\r\n\t * Gets the available route parameter identifiers.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tprotected routeData:\r\n\t{\r\n\t\tdata: object;\r\n\t} = {\r\n\t\t\tdata: {}\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the display component identifier for url parameter\r\n\t * lookups.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tprivate readonly displayComponentIdentifier: string = 'displayComponent';\r\n\r\n\t/**\r\n\t * Gets the identifier for the display component type that this will allow.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tprivate readonly basePageIdentifier: string = 'BasePage';\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set this component for route based\r\n\t * initialization.\r\n\t *\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tconst displayComponentParameterValue: string =\r\n\t\t\tthis.route.snapshot.paramMap.get(\r\n\t\t\t\tthis.displayComponentIdentifier) as unknown as string;\r\n\t\tthis.displayComponentName =\r\n\t\t\tStringHelper.toProperCase(\r\n\t\t\t\tdisplayComponentParameterValue);\r\n\r\n\t\tif (!this.displayComponentName.startsWith(\r\n\t\t\tthis.basePageIdentifier))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'The generic display requires a base page display component. '\r\n\t\t\t\t\t+ `'${this.displayComponentName}' was sent.`);\r\n\t\t}\r\n\r\n\t\tthis.editMode =\r\n\t\t\tthis.route.snapshot.url[1].path ===\r\n\t\t\t\tAppConstants.viewTypes.edit;\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe(\r\n\t\t\t\t(parameters: Params) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.routeData =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\t\tthis.pageContext =\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsource: this,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.initializeDynamicComponent();\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes a display component for display in this page.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic async initializeDynamicComponent(): Promise\r\n\t{\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.basePageInstance =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\tthis.displayComponentName,\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(this.basePageInstance))\r\n\t\t{\r\n\t\t\tthis.navigateToAccessDenied();\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst jsonDefinition: any =\r\n\t\t\tthis.basePageInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(jsonDefinition.pageGuardPromise))\r\n\t\t{\r\n\t\t\tconst pageGuardPromise: boolean =\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tjsonDefinition.pageGuardPromise,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\tif (pageGuardPromise === false)\r\n\t\t\t{\r\n\t\t\t\tconst pageGuardResources: string[] =\r\n\t\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\tjsonDefinition.pageGuardResources,\r\n\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\tthis.pageContext);\r\n\t\t\t\tconst pageGuardMessage: string =\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tjsonDefinition.pageGuardMessage)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tjsonDefinition.pageGuardMessage,\r\n\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\t\tthis.location.path(),\r\n\t\t\t\t\tpageGuardResources,\r\n\t\t\t\t\tpageGuardMessage);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.displayComponentInstance =\r\n\t\t\tawait this.displayComponentService\r\n\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\tthis.basePageInstance.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition.displayComponent,\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(this.displayComponentInstance))\r\n\t\t{\r\n\t\t\tthis.navigateToAccessDenied();\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst basePageData: any =\r\n\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\tthis.basePageInstance\r\n\t\t\t\t\t\t.jsonInitialParameters,\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tthis.routeData?.data);\r\n\t\tconst mergedData: any =\r\n\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\tthis.displayComponentInstance\r\n\t\t\t\t\t\t.jsonInitialParameters,\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tbasePageData);\r\n\t\tthis.pageContext.data = mergedData;\r\n\r\n\t\tthis.initializeBasePage();\r\n\t\tawait this.setupPrimaryDisplayComponent();\r\n\t}\r\n\r\n\t/**\r\n\t * The initial stand up of the page based on parameters sent in the\r\n\t * base page display component definition.\r\n\t *\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic initializeBasePage(): void\r\n\t{\r\n\t\tconst pageDefinition: any =\r\n\t\t\tthis.basePageInstance\r\n\t\t\t\t.displayComponentDefinition.jsonDefinition;\r\n\t\tthis.pageTitle = pageDefinition.loadingPageTitle;\r\n\r\n\t\tif (this.basePageInstance.visible === false\r\n\t\t\t|| this.displayComponentInstance.visible === false)\r\n\t\t{\r\n\t\t\tthis.navigateToAccessDenied();\r\n\t\t\tthis.loading = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.operationGroupName =\r\n\t\t\tpageDefinition.operationGroupName;\r\n\t\tthis.pageContextOperationGroupName =\r\n\t\t\tpageDefinition.pageContextOperationGroupName;\r\n\t\tthis.utilityMenuOperationGroupName =\r\n\t\t\tpageDefinition.utilityMenuOperationGroupName;\r\n\t\tthis.informationMenuDisplayComponentInstanceName =\r\n\t\t\tpageDefinition.informationMenuDisplayComponentName;\r\n\r\n\t\tthis.setupInformationMenuItems(this.pageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and initializes the interface for the primary display component\r\n\t * on this page.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic async setupPrimaryDisplayComponent(): Promise\r\n\t{\r\n\t\tif (this.basePageInstance.visible === false\r\n\t\t\t|| this.displayComponentInstance.visible === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.dynamicComponent =\r\n\t\t\tthis.displayComponentInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.componentName;\r\n\t\tthis.pageContext =\r\n\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t.getDynamicComponentContext(\r\n\t\t\t\t\tthis.displayComponentInstance,\r\n\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\tthis.editMode === false);\r\n\r\n\t\tconst title: string =\r\n\t\t\tStringHelper.interpolate(\r\n\t\t\t\tthis.basePageInstance\r\n\t\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t\t.jsonDefinition\r\n\t\t\t\t\t.pageTitleTemplate,\r\n\t\t\t\tthis.pageContext.data);\r\n\t\tthis.pageTitle =\r\n\t\t\tthis.editMode === false\r\n\t\t\t\t? title\r\n\t\t\t\t: `Edit ${title}`;\r\n\r\n\t\tthis.parameterLayoutData =\r\n\t\t\tthis.displayComponentFactory\r\n\t\t\t\t.getParameterData(\r\n\t\t\t\t\tthis.pageContext.data);\r\n\t\tthis.parameterLayoutSchema =\r\n\t\t\tthis.displayComponentFactory\r\n\t\t\t\t.getParameterLayoutSchema(\r\n\t\t\t\t\tthis.displayComponentInstance\r\n\t\t\t\t\t\t.jsonParameterDefinition,\r\n\t\t\t\t\tthis.displayComponentInstance\r\n\t\t\t\t\t\t.jsonParameterLayout,\r\n\t\t\t\t\tthis.pageContext);\r\n\t\tthis.displayParameterFilter =\r\n\t\t\t!AnyHelper.isNull(this.parameterLayoutSchema);\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click on the apply action found in this component. This will\r\n\t * update the applied parameter data.\r\n\t *\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic async applyParameters(): Promise\r\n\t{\r\n\t\tthis.redrawing = true;\r\n\t\tthis.pageContext =\r\n\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t.getDynamicComponentContext(\r\n\t\t\t\t\tthis.displayComponentInstance,\r\n\t\t\t\t\t>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsource: this.pageContext.source,\r\n\t\t\t\t\t\tdata: await this.displayComponentFactory\r\n\t\t\t\t\t\t\t.getMergedInitialParameterData(\r\n\t\t\t\t\t\t\t\tthis.displayComponentInstance\r\n\t\t\t\t\t\t\t\t\t.jsonInitialParameters,\r\n\t\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t\tthis.parameterLayoutData.data)\r\n\t\t\t\t\t},\r\n\t\t\t\t\tthis.editMode === false);\r\n\r\n\t\tthis.settingsActive = false;\r\n\t\tthis.valueChanged = false;\r\n\t\tthis.redrawing = false;\r\n\r\n\t\tthis.siteLayoutChanged();\r\n\t\tthis.updateRouteData();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed parameter set.\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic validParametersChanged(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.isValid = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the parameter changed event sent from the child dynamic\r\n\t * formly component. This will notify the component of changes to\r\n\t * data in the formly display.\r\n\t *\r\n\t * @param {boolean} changed\r\n\t * The changed truthy of the current displayed parameter set.\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic parametersChanged(\r\n\t\tchanged: boolean): void\r\n\t{\r\n\t\tthis.valueChanged = changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the current display component parameter set to the URL\r\n\t * when data changes are applied.\r\n\t *\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic updateRouteData(): void\r\n\t{\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trelativeTo: this.route,\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\tthis.parameterLayoutData)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and displays an access not allowed banner with details\r\n\t * associated with the currently loaded page.\r\n\t *\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tprivate navigateToAccessDenied(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.basePageInstance))\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\tthis.displayComponentName\r\n\t\t\t\t]);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(this.displayComponentInstance))\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\tthis.basePageInstance.displayComponentDefinition\r\n\t\t\t\t\t\t.jsonDefinition.displayComponent\r\n\t\t\t\t]);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\tthis.location.path(),\r\n\t\t\t[\r\n\t\t\t\tthis.displayComponentName,\r\n\t\t\t\tthis.basePageInstance.displayComponentDefinition\r\n\t\t\t\t\t.jsonDefinition.displayComponent\r\n\t\t\t]);\r\n\t}\r\n}","import * as i2 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, signal, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ViewChildren, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ChevronLeftIcon } from 'primeng/icons/chevronleft';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils } from 'primeng/utils';\n\n/**\n * TabMenu is a navigation component that displays items as tab headers.\n * @group Components\n */\nclass TabMenu {\n platformId;\n router;\n route;\n cd;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n this._focusableItems = (this._model || []).reduce((result, item) => {\n result.push(item);\n return result;\n }, []);\n }\n get model() {\n return this._model;\n }\n /**\n * Defines the default active menuitem\n * @group Props\n */\n activeItem;\n /**\n * When enabled displays buttons at each side of the tab headers to scroll the tab list.\n * @group Props\n */\n scrollable;\n /**\n * Defines if popup mode enabled.\n */\n popup;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabel;\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Event fired when a tab is selected.\n * @param {MenuItem} item - Menu item.\n * @group Emits\n */\n activeItemChange = new EventEmitter();\n content;\n navbar;\n inkbar;\n prevBtn;\n nextBtn;\n tabLink;\n tab;\n templates;\n itemTemplate;\n previousIconTemplate;\n nextIconTemplate;\n tabChanged;\n backwardIsDisabled = true;\n forwardIsDisabled = false;\n timerIdForInitialAutoScroll = null;\n _focusableItems;\n _model;\n focusedItemInfo = signal(null);\n get focusableItems() {\n if (!this._focusableItems || !this._focusableItems.length) {\n this._focusableItems = (this.model || []).reduce((result, item) => {\n result.push(item);\n return result;\n }, []);\n }\n return this._focusableItems;\n }\n constructor(platformId, router, route, cd) {\n this.platformId = platformId;\n this.router = router;\n this.route = route;\n this.cd = cd;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'nexticon':\n this.nextIconTemplate = item.template;\n break;\n case 'previousicon':\n this.previousIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.updateInkBar();\n this.initAutoScrollForActiveItem();\n this.initButtonState();\n }\n }\n ngAfterViewChecked() {\n if (this.tabChanged) {\n this.updateInkBar();\n this.tabChanged = false;\n }\n }\n ngOnDestroy() {\n this.clearAutoScrollHandler();\n }\n isActive(item) {\n if (item.routerLink) {\n const routerLink = Array.isArray(item.routerLink) ? item.routerLink : [item.routerLink];\n return this.router.isActive(this.router.createUrlTree(routerLink, { relativeTo: this.route }).toString(), item.routerLinkActiveOptions?.exact ?? item.routerLinkActiveOptions ?? false);\n }\n return item === this.activeItem;\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n visible(item) {\n return typeof item.visible === 'function' ? item.visible() : item.visible !== false;\n }\n disabled(item) {\n return typeof item.disabled === 'function' ? item.disabled() : item.disabled;\n }\n onMenuItemFocus(item) {\n this.focusedItemInfo.set(item);\n }\n itemClick(event, item) {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n if (!item.url && !item.routerLink) {\n event.preventDefault();\n }\n if (item.command) {\n item.command({\n originalEvent: event,\n item: item\n });\n }\n this.activeItem = item;\n this.activeItemChange.emit(item);\n this.tabChanged = true;\n this.cd.markForCheck();\n }\n onKeydownItem(event, index, item) {\n let i = index;\n let foundElement = {};\n const tabLinks = this.tabLink.toArray();\n const tabs = this.tab.toArray();\n switch (event.code) {\n case 'ArrowRight':\n foundElement = this.findNextItem(tabs, i);\n i = foundElement['i'];\n break;\n case 'ArrowLeft':\n foundElement = this.findPrevItem(tabs, i);\n i = foundElement['i'];\n break;\n case 'End':\n foundElement = this.findPrevItem(tabs, this.model.length);\n i = foundElement['i'];\n event.preventDefault();\n break;\n case 'Home':\n foundElement = this.findNextItem(tabs, -1);\n i = foundElement['i'];\n event.preventDefault();\n break;\n case 'Space':\n case 'Enter':\n this.itemClick(event, item);\n break;\n case 'Tab':\n this.onTabKeyDown(tabLinks);\n break;\n default:\n break;\n }\n if (tabLinks[i] && tabLinks[index]) {\n tabLinks[index].nativeElement.tabIndex = '-1';\n tabLinks[i].nativeElement.tabIndex = '0';\n tabLinks[i].nativeElement.focus();\n }\n this.cd.markForCheck();\n }\n onTabKeyDown(tabLinks) {\n tabLinks.forEach((item) => {\n item.nativeElement.tabIndex = DomHandler.getAttribute(item.nativeElement.parentElement, 'data-p-highlight') ? '0' : '-1';\n });\n }\n findNextItem(items, index) {\n let i = index + 1;\n if (i >= items.length) {\n return { nextItem: items[items.length], i: items.length };\n }\n let nextItem = items[i];\n if (nextItem)\n return DomHandler.getAttribute(nextItem.nativeElement, 'data-p-disabled') ? this.findNextItem(items, i) : { nextItem: nextItem.nativeElement, i };\n else\n return null;\n }\n findPrevItem(items, index) {\n let i = index - 1;\n if (i < 0) {\n return { prevItem: items[0], i: 0 };\n }\n let prevItem = items[i];\n if (prevItem)\n return DomHandler.getAttribute(prevItem.nativeElement, 'data-p-disabled') ? this.findPrevItem(items, i) : { prevItem: prevItem.nativeElement, i };\n else\n return null;\n }\n updateInkBar() {\n const tabHeader = DomHandler.findSingle(this.navbar?.nativeElement, 'li.p-highlight');\n if (tabHeader) {\n this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar?.nativeElement).left + 'px';\n }\n }\n getVisibleButtonWidths() {\n return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);\n }\n updateButtonState() {\n const content = this.content?.nativeElement;\n const { scrollLeft, scrollWidth } = content;\n const width = DomHandler.getWidth(content);\n this.backwardIsDisabled = scrollLeft === 0;\n this.forwardIsDisabled = parseInt(scrollLeft) === scrollWidth - width;\n }\n updateScrollBar(index) {\n const tabHeader = this.navbar?.nativeElement.children[index];\n if (!tabHeader) {\n return;\n }\n tabHeader.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n onScroll(event) {\n this.scrollable && this.updateButtonState();\n event.preventDefault();\n }\n navBackward() {\n const content = this.content?.nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n navForward() {\n const content = this.content?.nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n initAutoScrollForActiveItem() {\n if (!this.scrollable) {\n return;\n }\n this.clearAutoScrollHandler();\n // We have to wait for the rendering and then can scroll to element.\n this.timerIdForInitialAutoScroll = setTimeout(() => {\n const activeItem = this.model.findIndex((menuItem) => this.isActive(menuItem));\n if (activeItem !== -1) {\n this.updateScrollBar(activeItem);\n }\n });\n }\n clearAutoScrollHandler() {\n if (this.timerIdForInitialAutoScroll) {\n clearTimeout(this.timerIdForInitialAutoScroll);\n this.timerIdForInitialAutoScroll = null;\n }\n }\n initButtonState() {\n if (this.scrollable) {\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.updateButtonState();\n this.cd.markForCheck();\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenu, deps: [{ token: PLATFORM_ID }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TabMenu, selector: \"p-tabMenu\", inputs: { model: \"model\", activeItem: \"activeItem\", scrollable: \"scrollable\", popup: \"popup\", style: \"style\", styleClass: \"styleClass\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { activeItemChange: \"activeItemChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"navbar\", first: true, predicate: [\"navbar\"], descendants: true }, { propertyName: \"inkbar\", first: true, predicate: [\"inkbar\"], descendants: true }, { propertyName: \"prevBtn\", first: true, predicate: [\"prevBtn\"], descendants: true }, { propertyName: \"nextBtn\", first: true, predicate: [\"nextBtn\"], descendants: true }, { propertyName: \"tabLink\", predicate: [\"tabLink\"], descendants: true }, { propertyName: \"tab\", predicate: [\"tab\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n
    \n
      \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n
    • \n
    \n
    \n \n
    \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-tabmenu-nav-container{position:relative}.p-tabmenu-scrollable .p-tabmenu-nav-container{overflow:hidden}.p-tabmenu-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabmenu-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabmenu-nav-prev{left:0}.p-tabmenu-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1;white-space:nowrap}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu-nav-content::-webkit-scrollbar{display:none}.p-tabmenuitem:not(.p-hidden){display:flex}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => ChevronLeftIcon), selector: \"ChevronLeftIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-tabMenu', template: `\n
    \n
    \n \n
    \n
      \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n
    • \n
    \n
    \n \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-tabmenu-nav-container{position:relative}.p-tabmenu-scrollable .p-tabmenu-nav-container{overflow:hidden}.p-tabmenu-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabmenu-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabmenu-nav-prev{left:0}.p-tabmenu-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1;white-space:nowrap}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu-nav-content::-webkit-scrollbar{display:none}.p-tabmenuitem:not(.p-hidden){display:flex}}\\n\"] }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { model: [{\n type: Input\n }], activeItem: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], popup: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], activeItemChange: [{\n type: Output\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], navbar: [{\n type: ViewChild,\n args: ['navbar']\n }], inkbar: [{\n type: ViewChild,\n args: ['inkbar']\n }], prevBtn: [{\n type: ViewChild,\n args: ['prevBtn']\n }], nextBtn: [{\n type: ViewChild,\n args: ['nextBtn']\n }], tabLink: [{\n type: ViewChildren,\n args: ['tabLink']\n }], tab: [{\n type: ViewChildren,\n args: ['tab']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass TabMenuModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenuModule, imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon, RouterModule, SharedModule, TooltipModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule, ChevronLeftIcon, ChevronRightIcon],\n exports: [TabMenu, RouterModule, SharedModule, TooltipModule],\n declarations: [TabMenu]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TabMenu, TabMenuModule };\n","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, PLATFORM_ID, ChangeDetectionStrategy, ViewEncapsulation, Output, ViewChild, NgModule } from '@angular/core';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ChevronLeftIcon } from 'primeng/icons/chevronleft';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i2 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * TabPanel is a helper component for TabView component.\n * @group Components\n */\nclass TabPanel {\n el;\n viewContainer;\n cd;\n /**\n * Defines if tab can be removed.\n * @group Props\n */\n closable = false;\n /**\n * Inline style of the tab header.\n * @group Props\n */\n get headerStyle() {\n return this._headerStyle;\n }\n set headerStyle(headerStyle) {\n this._headerStyle = headerStyle;\n this.tabView.cd.markForCheck();\n }\n /**\n * Style class of the tab header.\n * @group Props\n */\n get headerStyleClass() {\n return this._headerStyleClass;\n }\n set headerStyleClass(headerStyleClass) {\n this._headerStyleClass = headerStyleClass;\n this.tabView.cd.markForCheck();\n }\n /**\n * Whether a lazy loaded panel should avoid getting loaded again on reselection.\n * @group Props\n */\n cache = true;\n /**\n * Advisory information to display in a tooltip on hover.\n * @group Props\n */\n tooltip;\n /**\n * Position of the tooltip.\n * @group Props\n */\n tooltipPosition = 'top';\n /**\n * Type of CSS position.\n * @group Props\n */\n tooltipPositionStyle = 'absolute';\n /**\n * Style class of the tooltip.\n * @group Props\n */\n tooltipStyleClass;\n /**\n * Defines if tab is active.\n * @defaultValue false\n * @group Props\n */\n get selected() {\n return !!this._selected;\n }\n set selected(val) {\n this._selected = val;\n if (!this.loaded) {\n this.cd.detectChanges();\n }\n if (val)\n this.loaded = true;\n }\n /**\n * When true, tab cannot be activated.\n * @defaultValue false\n * @group Props\n */\n get disabled() {\n return !!this._disabled;\n }\n set disabled(disabled) {\n this._disabled = disabled;\n this.tabView.cd.markForCheck();\n }\n /**\n * Title of the tabPanel.\n * @group Props\n */\n get header() {\n return this._header;\n }\n set header(header) {\n this._header = header;\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.tabView.updateInkBar();\n this.tabView.cd.markForCheck();\n });\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `lefticon` template instead.\n */\n get leftIcon() {\n return this._leftIcon;\n }\n set leftIcon(leftIcon) {\n this._leftIcon = leftIcon;\n this.tabView.cd.markForCheck();\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `righticon` template instead.\n */\n get rightIcon() {\n return this._rightIcon;\n }\n set rightIcon(rightIcon) {\n this._rightIcon = rightIcon;\n this.tabView.cd.markForCheck();\n }\n templates;\n closed = false;\n view = null;\n _headerStyle;\n _headerStyleClass;\n _selected;\n _disabled;\n _header;\n _leftIcon;\n _rightIcon = undefined;\n loaded = false;\n id;\n contentTemplate;\n headerTemplate;\n leftIconTemplate;\n rightIconTemplate;\n closeIconTemplate;\n tabView;\n constructor(tabView, el, viewContainer, cd) {\n this.el = el;\n this.viewContainer = viewContainer;\n this.cd = cd;\n this.tabView = tabView;\n this.id = UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'righticon':\n this.rightIconTemplate = item.template;\n break;\n case 'lefticon':\n this.leftIconTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n ngOnDestroy() {\n this.view = null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TabPanel, selector: \"p-tabPanel\", inputs: { closable: \"closable\", headerStyle: \"headerStyle\", headerStyleClass: \"headerStyleClass\", cache: \"cache\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", selected: \"selected\", disabled: \"disabled\", header: \"header\", leftIcon: \"leftIcon\", rightIcon: \"rightIcon\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabPanel, decorators: [{\n type: Component,\n args: [{\n selector: 'p-tabPanel',\n template: `\n \n \n \n \n \n \n `,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TabView, decorators: [{\n type: Inject,\n args: [forwardRef(() => TabView)]\n }] }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { closable: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], headerStyleClass: [{\n type: Input\n }], cache: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipPosition: [{\n type: Input\n }], tooltipPositionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], header: [{\n type: Input\n }], leftIcon: [{\n type: Input\n }], rightIcon: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\n/**\n * TabView is a container component to group content with tabs.\n * @group Components\n */\nclass TabView {\n platformId;\n el;\n cd;\n renderer;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Whether tab close is controlled at onClose event or not.\n * @defaultValue false\n * @group Props\n */\n controlClose;\n /**\n * When enabled displays buttons at each side of the tab headers to scroll the tab list.\n * @defaultValue false\n * @group Props\n */\n scrollable;\n /**\n * Index of the active tab to change selected tab programmatically.\n * @group Props\n */\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(val) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n this.findSelectedTab().selected = false;\n this.tabs[this._activeIndex].selected = true;\n this.tabChanged = true;\n this.updateScrollBar(val);\n }\n }\n /**\n * When enabled, the focused tab is activated.\n * @group Props\n */\n selectOnFocus = false;\n /**\n * Used to define a string aria label attribute the forward navigation button.\n * @group Props\n */\n nextButtonAriaLabel;\n /**\n * Used to define a string aria label attribute the backward navigation button.\n * @group Props\n */\n prevButtonAriaLabel;\n /**\n * When activated, navigation buttons will automatically hide or show based on the available space within the container.\n * @group Props\n */\n autoHideButtons = true;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n /**\n * Callback to invoke on tab change.\n * @param {TabViewChangeEvent} event - Custom tab change event\n * @group Emits\n */\n onChange = new EventEmitter();\n /**\n * Callback to invoke on tab close.\n * @param {TabViewCloseEvent} event - Custom tab close event\n * @group Emits\n */\n onClose = new EventEmitter();\n /**\n * Callback to invoke on the active tab change.\n * @param {number} index - New active index\n * @group Emits\n */\n activeIndexChange = new EventEmitter();\n content;\n navbar;\n prevBtn;\n nextBtn;\n inkbar;\n tabPanels;\n templates;\n initialized;\n tabs;\n _activeIndex;\n preventActiveIndexPropagation;\n tabChanged;\n backwardIsDisabled = true;\n forwardIsDisabled = false;\n tabChangesSubscription;\n nextIconTemplate;\n previousIconTemplate;\n resizeObserver;\n container;\n list;\n buttonVisible;\n elementToObserve;\n constructor(platformId, el, cd, renderer) {\n this.platformId = platformId;\n this.el = el;\n this.cd = cd;\n this.renderer = renderer;\n }\n ngAfterContentInit() {\n this.initTabs();\n this.tabChangesSubscription = this.tabPanels.changes.subscribe((_) => {\n this.initTabs();\n });\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'previousicon':\n this.previousIconTemplate = item.template;\n break;\n case 'nexticon':\n this.nextIconTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.autoHideButtons) {\n this.bindResizeObserver();\n }\n }\n }\n bindResizeObserver() {\n this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"navcontent\"]');\n this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"nav\"]');\n this.resizeObserver = new ResizeObserver(() => {\n if (this.list.offsetWidth > this.container.offsetWidth) {\n this.buttonVisible = true;\n }\n else {\n this.buttonVisible = false;\n }\n this.updateButtonState();\n this.cd.detectChanges();\n });\n this.resizeObserver.observe(this.container);\n }\n unbindResizeObserver() {\n this.resizeObserver.unobserve(this.elementToObserve.nativeElement);\n this.resizeObserver = null;\n }\n ngAfterViewChecked() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.tabChanged) {\n this.updateInkBar();\n this.tabChanged = false;\n }\n }\n }\n ngOnDestroy() {\n if (this.tabChangesSubscription) {\n this.tabChangesSubscription.unsubscribe();\n }\n if (this.resizeObserver) {\n this.unbindResizeObserver();\n }\n }\n getTabHeaderActionId(tabId) {\n return `${tabId}_header_action`;\n }\n getTabContentId(tabId) {\n return `${tabId}_content`;\n }\n initTabs() {\n this.tabs = this.tabPanels.toArray();\n let selectedTab = this.findSelectedTab();\n if (!selectedTab && this.tabs.length) {\n if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n this.tabs[this.activeIndex].selected = true;\n else\n this.tabs[0].selected = true;\n this.tabChanged = true;\n }\n this.cd.markForCheck();\n }\n onTabKeyDown(event, tab) {\n switch (event.code) {\n case 'ArrowLeft':\n this.onTabArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onTabArrowRightKey(event);\n break;\n case 'Home':\n this.onTabHomeKey(event);\n break;\n case 'End':\n this.onTabEndKey(event);\n break;\n case 'PageDown':\n this.onTabEndKey(event);\n break;\n case 'PageUp':\n this.onTabHomeKey(event);\n break;\n case 'Enter':\n case 'Space':\n this.open(event, tab);\n break;\n default:\n break;\n }\n }\n onTabArrowLeftKey(event) {\n const prevHeaderAction = this.findPrevHeaderAction(event.target.parentElement);\n const index = DomHandler.getAttribute(prevHeaderAction, 'data-pc-index');\n prevHeaderAction ? this.changeFocusedTab(event, prevHeaderAction, index) : this.onTabEndKey(event);\n event.preventDefault();\n }\n onTabArrowRightKey(event) {\n const nextHeaderAction = this.findNextHeaderAction(event.target.parentElement);\n const index = DomHandler.getAttribute(nextHeaderAction, 'data-pc-index');\n nextHeaderAction ? this.changeFocusedTab(event, nextHeaderAction, index) : this.onTabHomeKey(event);\n event.preventDefault();\n }\n onTabHomeKey(event) {\n const firstHeaderAction = this.findFirstHeaderAction();\n const index = DomHandler.getAttribute(firstHeaderAction, 'data-pc-index');\n this.changeFocusedTab(event, firstHeaderAction, index);\n event.preventDefault();\n }\n onTabEndKey(event) {\n const lastHeaderAction = this.findLastHeaderAction();\n const index = DomHandler.getAttribute(lastHeaderAction, 'data-pc-index');\n this.changeFocusedTab(event, lastHeaderAction, index);\n event.preventDefault();\n }\n changeFocusedTab(event, element, index) {\n if (element) {\n DomHandler.focus(element);\n element.scrollIntoView({ block: 'nearest' });\n if (this.selectOnFocus) {\n const tab = this.tabs[index];\n this.open(event, tab);\n }\n }\n }\n findNextHeaderAction(tabElement, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.nextElementSibling;\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-p-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findNextHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n findPrevHeaderAction(tabElement, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.previousElementSibling;\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-p-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findPrevHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n findFirstHeaderAction() {\n const firstEl = this.navbar.nativeElement.firstElementChild;\n return this.findNextHeaderAction(firstEl, true);\n }\n findLastHeaderAction() {\n const lastEl = this.navbar.nativeElement.lastElementChild;\n const lastHeaderAction = DomHandler.getAttribute(lastEl, 'data-pc-section') === 'inkbar' ? lastEl.previousElementSibling : lastEl;\n return this.findPrevHeaderAction(lastHeaderAction, true);\n }\n open(event, tab) {\n if (tab.disabled) {\n if (event) {\n event.preventDefault();\n }\n return;\n }\n if (!tab.selected) {\n let selectedTab = this.findSelectedTab();\n if (selectedTab) {\n selectedTab.selected = false;\n }\n this.tabChanged = true;\n tab.selected = true;\n let selectedTabIndex = this.findTabIndex(tab);\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(selectedTabIndex);\n this.onChange.emit({ originalEvent: event, index: selectedTabIndex });\n this.updateScrollBar(selectedTabIndex);\n }\n if (event) {\n event.preventDefault();\n }\n }\n close(event, tab) {\n if (this.controlClose) {\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab),\n close: () => {\n this.closeTab(tab);\n }\n });\n }\n else {\n this.closeTab(tab);\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab)\n });\n }\n }\n closeTab(tab) {\n if (tab.disabled) {\n return;\n }\n if (tab.selected) {\n this.tabChanged = true;\n tab.selected = false;\n for (let i = 0; i < this.tabs.length; i++) {\n let tabPanel = this.tabs[i];\n if (!tabPanel.closed && !tab.disabled) {\n tabPanel.selected = true;\n break;\n }\n }\n }\n tab.closed = true;\n }\n findSelectedTab() {\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].selected) {\n return this.tabs[i];\n }\n }\n return null;\n }\n findTabIndex(tab) {\n let index = -1;\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i] == tab) {\n index = i;\n break;\n }\n }\n return index;\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n updateInkBar() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.navbar) {\n const tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n if (!tabHeader) {\n return;\n }\n this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n }\n }\n }\n updateScrollBar(index) {\n let tabHeader = this.navbar.nativeElement.children[index];\n tabHeader.scrollIntoView({ block: 'nearest' });\n }\n updateButtonState() {\n const content = this.content.nativeElement;\n const { scrollLeft, scrollWidth } = content;\n const width = DomHandler.getWidth(content);\n this.backwardIsDisabled = scrollLeft === 0;\n this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n }\n onScroll(event) {\n this.scrollable && this.updateButtonState();\n event.preventDefault();\n }\n getVisibleButtonWidths() {\n return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);\n }\n navBackward() {\n const content = this.content.nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n navForward() {\n const content = this.content.nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabView, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TabView, selector: \"p-tabView\", inputs: { style: \"style\", styleClass: \"styleClass\", controlClose: \"controlClose\", scrollable: \"scrollable\", activeIndex: \"activeIndex\", selectOnFocus: \"selectOnFocus\", nextButtonAriaLabel: \"nextButtonAriaLabel\", prevButtonAriaLabel: \"prevButtonAriaLabel\", autoHideButtons: \"autoHideButtons\", tabindex: \"tabindex\" }, outputs: { onChange: \"onChange\", onClose: \"onClose\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabPanels\", predicate: TabPanel }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"navbar\", first: true, predicate: [\"navbar\"], descendants: true }, { propertyName: \"prevBtn\", first: true, predicate: [\"prevBtn\"], descendants: true }, { propertyName: \"nextBtn\", first: true, predicate: [\"nextBtn\"], descendants: true }, { propertyName: \"inkbar\", first: true, predicate: [\"inkbar\"], descendants: true }, { propertyName: \"elementToObserve\", first: true, predicate: [\"elementToObserve\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n \n \n \n
    \n
      \n \n
    • \n \n \n \n \n \n \n {{ tab.header }}\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 `, isInline: true, styles: [\"@layer primeng{.p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronLeftIcon), selector: \"ChevronLeftIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabView, decorators: [{\n type: Component,\n args: [{ selector: 'p-tabView', template: `\n
    \n
    \n \n \n \n \n
    \n
      \n \n
    • \n \n \n \n \n \n \n {{ tab.header }}\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 `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.p-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}}\\n\"] }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], controlClose: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], activeIndex: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], nextButtonAriaLabel: [{\n type: Input\n }], prevButtonAriaLabel: [{\n type: Input\n }], autoHideButtons: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onClose: [{\n type: Output\n }], activeIndexChange: [{\n type: Output\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], navbar: [{\n type: ViewChild,\n args: ['navbar']\n }], prevBtn: [{\n type: ViewChild,\n args: ['prevBtn']\n }], nextBtn: [{\n type: ViewChild,\n args: ['nextBtn']\n }], inkbar: [{\n type: ViewChild,\n args: ['inkbar']\n }], tabPanels: [{\n type: ContentChildren,\n args: [TabPanel]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], elementToObserve: [{\n type: ViewChild,\n args: ['elementToObserve']\n }] } });\nclass TabViewModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule, TimesIcon, ChevronLeftIcon, ChevronRightIcon], exports: [TabView, TabPanel, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabViewModule, imports: [CommonModule, SharedModule, TooltipModule, RippleModule, TimesIcon, ChevronLeftIcon, ChevronRightIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TabViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, TooltipModule, RippleModule, TimesIcon, ChevronLeftIcon, ChevronRightIcon],\n exports: [TabView, TabPanel, SharedModule],\n declarations: [TabView, TabPanel]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TabPanel, TabView, TabViewModule };\n","\r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{{sectionItem.label}}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{sectionItem.label}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'app-base-page-tab-menu',\r\n\ttemplateUrl: './base-page-tab-menu.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a base page tab menu.\r\n *\r\n * @export\r\n * @class BasePageTabMenuComponent\r\n */\r\nexport class BasePageTabMenuComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the tab items specifying different\r\n\t * data display tabs.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\t@Input() public tabItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the section items specifying different\r\n\t * data sections.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\t@Input() public sectionItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the current selected tab item.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\t@Input() public activeTabItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the current selected section item.\r\n\t *\r\n\t * @type {MenuItem}\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\t@Input() public activeSectionItem: MenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will emit that a tab has been\r\n\t * selected.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\t@Output() public tabSelectedEvent: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Handles the tab select observed event.\r\n\t * This event handler will emit the tab selected event to any listening\r\n\t * components.\r\n\t *\r\n\t * @param {any} event\r\n\t * The tab selected event sent from the observed action.\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\tpublic tabSelected(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tthis.tabSelectedEvent.emit(event);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a section menu item click event.\r\n\t * This will dispatch a site layout change to insure we check the active\r\n\t * tab item following a click regardless of a scroll event.\r\n\t *\r\n\t * @memberof BasePageTabMenuComponent\r\n\t */\r\n\tpublic sectionMenuItemClicked(): void\r\n\t{\r\n\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t}\r\n}","\r\n\r\n\t
    1),\r\n\t\t\t'navigation-entity-header':\r\n\t\t\t\t(displayNavigationDropdown === true)\r\n\t\t}\"\r\n\t\t#HeaderContextContent\r\n\t\theader-context-content\r\n\t\t*ngIf=\"!headerContextContent?.loading && headerContextContent?.sectionItems != null && headerContextContent?.sectionItems.length > 1\">\r\n\t\t
    1 && headerContextContent?.displayNavigationDropdown === false\">\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    twoColumnHeaderBreakpoint)\r\n\t\t\t\t\t}\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    twoColumnHeaderBreakpoint)\r\n\t\t\t\t\t}\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
    1)\r\n\t\t\t\t}\">\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tIDashboardParameterSet\r\n} from '@shared/interfaces/application-objects/dashboard-parameter-set';\r\nimport {\r\n\tIDashboardSection\r\n} from '@shared/interfaces/application-objects/dashboard-section.interface';\r\nimport {\r\n\tIDashboardWidget\r\n} from '@shared/interfaces/application-objects/dashboard-widget.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-generic-dashboard',\r\n\ttemplateUrl: './generic-dashboard.component.html',\r\n\tstyleUrls: [\r\n\t\t'./generic-dashboard.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the generic dashboard\r\n * component.\r\n *\r\n * @export\r\n * @class GenericDashboardComponent\r\n * @extends {DisplayComponentParameterDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class GenericDashboardComponent\r\n\textends DisplayComponentParameterDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the GenericDashboardComponent.\r\n\t * This component is used to display dynamic content based\r\n\t * dashboard content.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The route used in this component.\r\n\t * @param {Router} router\r\n\t * The router used in this component.\r\n\t * @param {Location} location\r\n\t * The Angular common location service used for url interaction.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used in this component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the number of authorized sections that this\r\n\t * dashboard is expected to display.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic authorizedSectionCount: number;\r\n\r\n\t/**\r\n\t * Gets or sets the value that signifies that all sections and\r\n\t * widgets have been displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic dashboardDisplayComplete: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance name for\r\n\t * this dashboard.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic dashboardDisplayComponentInstanceName: string;\r\n\r\n\t/**\r\n\t * Gets or sets number of currently loaded and displayed sections.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic displayedSectionCount: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the array of dashboard sections to display.\r\n\t *\r\n\t * @type {IDashboardSection[]}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic dashboardSections: IDashboardSection[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the display title for this dashboard.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic dashboardTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets the dashboard type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic dashboardType: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display component instance for this dashboard.\r\n\t *\r\n\t * @type {DisplayComponentInstance}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic displayComponentInstance: DisplayComponentInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout schema for this dashboard.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic parameterLayoutSchema: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the parameter layout data for this dashboard.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic parameterLayoutData: any;\r\n\r\n\t/**\r\n\t * Gets or sets the serialized route parameters for this dashboard.\r\n\t *\r\n\t * @type {IDashboardParameterSet}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic routeParameters: IDashboardParameterSet;\r\n\r\n\t/**\r\n\t * Gets or sets the user associated with this dashboard to make\r\n\t * this available in the page context source.\r\n\t *\r\n\t * @type {IUser}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic sessionUser: IUser;\r\n\r\n\t/**\r\n\t * Gets or sets the header context content.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic headerContextContent: any;\r\n\r\n\t/**\r\n\t * Gets the dashboard type identifier for url parameter\r\n\t * lookups.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tprivate readonly dashboardTypeIdentifier: string = 'dashboardType';\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set this component for route based\r\n\t * initialization.\r\n\t *\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.sessionUser = this.sessionService.user;\r\n\r\n\t\tconst dashboardParameterValue: string =\r\n\t\t\tthis.route.snapshot.paramMap.get(\r\n\t\t\t\tthis.dashboardTypeIdentifier) as unknown as string;\r\n\t\tthis.dashboardType =\r\n\t\t\tStringHelper.toProperCase(\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(dashboardParameterValue)\r\n\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t: dashboardParameterValue);\r\n\r\n\t\tthis.dashboardDisplayComponentInstanceName =\r\n\t\t\tthis.getDashboardDisplayName();\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe(\r\n\t\t\t\t(parameters: Params) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.routeParameters =\r\n\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\tparameters);\r\n\t\t\t\t}));\r\n\r\n\t\tthis.pageContext =\r\n\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tsource: this,\r\n\t\t\t\t\tdata: {}\r\n\t\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted display name for use when loading the dynamic\r\n\t * dashboard content. This will be the identifier for the\r\n\t * display content.\r\n\t *\r\n\t * @returns {string}\r\n\t * A formatted name matching the dynamic display key in the database.\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic getDashboardDisplayName(): string\r\n\t{\r\n\t\treturn this.moduleService.name\r\n\t\t\t+ this.dashboardType\r\n\t\t\t+ 'GenericDashboard';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted display title for this dashboard page.\r\n\t *\r\n\t * @returns {string}\r\n\t * A formatted page title.\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic getDashboardDisplayTitle(): string\r\n\t{\r\n\t\tlet dashboardDisplayTitle = this.moduleService.name;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.displayComponentInstance?.jsonInterpolationData.titleFunction))\r\n\t\t{\r\n\t\t\treturn StringHelper\r\n\t\t\t\t.transformToFunction(\r\n\t\t\t\t\tthis.displayComponentInstance.jsonInterpolationData\r\n\t\t\t\t\t\t.titleFunction,\r\n\t\t\t\t\tthis.pageContext)();\r\n\t\t}\r\n\t\telse if (!AnyHelper.isNullOrWhitespace(this.dashboardType))\r\n\t\t{\r\n\t\t\tdashboardDisplayTitle = this.dashboardType;\r\n\t\t}\r\n\r\n\t\treturn StringHelper.normalizeCamelcase(dashboardDisplayTitle)\r\n\t\t\t+ AppConstants.characters.space\r\n\t\t\t+ 'Dashboard';\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the header context content.\r\n\t *\r\n\t * @param {object} contextContent\r\n\t * The context content.\r\n\t *\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic setHeaderContextContent(\r\n\t\tcontextContent: object): void\r\n\t{\r\n\t\tthis.headerContextContent = contextContent;\r\n\t\tthis.displayComponentInstance =\r\n\t\t\tthis.headerContextContent.displayComponentInstance;\r\n\t\tthis.dashboardTitle = this.getDashboardDisplayTitle();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click from the dashboard parameter component.\r\n\t *\r\n\t * @override\r\n\t * @async\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic async applyParameters(): Promise\r\n\t{\r\n\t\tthis.handleChildParameterData(\r\n\t\t\tthis.headerContextContent.dashboardSections,\r\n\t\t\tthis.headerContextContent.parameterLayoutSchema,\r\n\t\t\tthis.headerContextContent.parameterLayoutData);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.updateRouteData();\r\n\t\t\t},\r\n\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the current dashboard parameter set to the URL when data changes\r\n\t * are applied.\r\n\t *\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic updateRouteData(): void\r\n\t{\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trelativeTo: this.route,\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\tthis.getRouteDataForUrlStorage())\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Maps and returns a serializable dashboard parameter set for\r\n\t * url storage.\r\n\t *\r\n\t * @returns {IDashboardParameterSet}\r\n\t * A mapped dashboard parameter set ready for url use.\r\n\t * @memberof GenericDashboardComponent\r\n\t */\r\n\tpublic getRouteDataForUrlStorage(): IDashboardParameterSet\r\n\t{\r\n\t\tconst dashboardParameterSet: IDashboardParameterSet =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tidentifier: this.headerContextContent.displayComponentInstance.name,\r\n\t\t\t\tdata: this.headerContextContent.parameterLayoutData.data,\r\n\t\t\t\tchildren: []\r\n\t\t\t};\r\n\r\n\t\tthis.headerContextContent.dashboardSections.forEach(\r\n\t\t\t(section: IDashboardSection) =>\r\n\t\t\t{\r\n\t\t\t\tconst sectionParameterSet: IDashboardParameterSet =\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tidentifier: section.displayComponentInstance.name,\r\n\t\t\t\t\t\tdata: section.parameterLayoutData.data,\r\n\t\t\t\t\t\tchildren: []\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsection.widgets.forEach(\r\n\t\t\t\t\t(widget: IDashboardWidget) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsectionParameterSet.children.push(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tidentifier: widget.displayComponentInstance.name,\r\n\t\t\t\t\t\t\t\tdata: widget.parameterLayoutData.data,\r\n\t\t\t\t\t\t\t\tchildren: []\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tdashboardParameterSet.children.push(sectionParameterSet);\r\n\t\t\t});\r\n\r\n\t\treturn dashboardParameterSet;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityTableDirective\r\n} from '@entity/directives/entity-table.directive';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\ttemplateUrl: './entity-search.component.html',\r\n\tstyleUrls: ['./entity-search.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing an instance of an entity search component.\r\n *\r\n * @export\r\n * @class EntitySearchComponent\r\n * @extends {EntityTableDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class EntitySearchComponent\r\n\textends EntityTableDirective\r\n\timplements OnInit, IOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntitySearchComponent. This component\r\n\t * will display a filtered list of entities for navigation.\r\n\t *\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router used for navigation and url query parameter storage.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used to store the current module.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used for data lookups.\r\n\t * @param {EntityTypeApiService} EntityTypeApiService\r\n\t * The entity type service used for filter lookups.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type api service used for layout lookups.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance service used to populate the entity list data.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition service used to populate the entity data.\r\n\t * @param {Location} location\r\n\t * The location service used to create and populate the url tree.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic router: Router,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic location: Location,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the entity search table definitions.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entitySearchTableDefinitions: ICommonTable = null;\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the category options.\r\n\t *\r\n\t * @type {object[]}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic categoryOptions: object[] = [];\r\n\r\n\t/**\r\n\t * Gets the available entity types.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic availableEntityTypes: IEntityType[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the loaded entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityTypeGroup: string = null;\r\n\r\n\t/**\r\n\t * Gets or sets the loaded entity definition.\r\n\t *\r\n\t * @type {IEntityDefinition}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityDefinition: IEntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the route url entity types parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityTypesParam: string;\r\n\r\n\t/**\r\n\t * Gets or sets the route url entity type parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityTypeParam: string;\r\n\r\n\t/**\r\n\t * Gets or sets the route url entity filter parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityFilterParam: string;\r\n\r\n\t/**\r\n\t * Gets or sets the route url entity order by parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityOrderByParam: string;\r\n\r\n\t/**\r\n\t * Gets or sets the display title.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic displayTitle: string;\r\n\r\n\t/**\r\n\t * Gets or sets the category label.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic selectedCategory: string;\r\n\r\n\t/**\r\n\t * Gets or sets the loading categories flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic loadingCategories: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the summary data path available columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic summaryDataPathColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the nested parent key.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic nestedParentKey: string;\r\n\r\n\t/**\r\n\t * Gets or sets the entity row count.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic entityRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tsource: this\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the loading entity type flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic get loadingEntityType(): boolean\r\n\t{\r\n\t\treturn this._loadingEntityType;\r\n\t}\r\n\r\n\t/**\r\n\t* Sets the loading entity type flag.\r\n\t*\r\n\t* @param {boolean} value\r\n\t* The value to set.\r\n\t* @memberof EntitySearchComponent\r\n\t*/\r\n\tpublic set loadingEntityType(\r\n\t\tvalue: boolean)\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis._loadingEntityType = value;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the the loading entity type flag property.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate _loadingEntityType: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the entity types string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate readonly entityTypes: string = 'entityTypes';\r\n\r\n\t/**\r\n\t * Gets the entity types string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate readonly entityType: string = 'entityType';\r\n\r\n\t/**\r\n\t * Gets the entity filter string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate readonly entityFilter: string = 'filter';\r\n\r\n\t/**\r\n\t * Gets the entity order by string value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate readonly entityOrderBy: string = 'orderBy';\r\n\r\n\t/**\r\n\t * Gets the order by group string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tprivate readonly orderByGroup: string = 'Group';\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Configures this components display based on the sent route\r\n\t * information.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.route.queryParams.subscribe(\r\n\t\t\tasync(parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.entityTypesParam =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(mappedRouteData[this.entityTypes])\r\n\t\t\t\t\t\t? mappedRouteData[this.entityTypes]\r\n\t\t\t\t\t\t: AppConstants.empty;\r\n\t\t\t\tthis.entityTypeParam =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(mappedRouteData[this.entityType])\r\n\t\t\t\t\t\t? mappedRouteData[this.entityType]\r\n\t\t\t\t\t\t: AppConstants.empty;\r\n\t\t\t\tthis.entityFilterParam =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(mappedRouteData[this.entityFilter])\r\n\t\t\t\t\t\t? mappedRouteData[this.entityFilter]\r\n\t\t\t\t\t\t: AppConstants.empty;\r\n\t\t\t\tthis.entityOrderByParam =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.entityOrderBy])\r\n\t\t\t\t\t\t? mappedRouteData[this.entityOrderBy]\r\n\t\t\t\t\t\t: `Id ${AppConstants.sortDirections.descending}`;\r\n\t\t\t});\r\n\r\n\t\tthis.setFilterKeywordString(this.entityFilterParam);\r\n\t\tawait this.setCategories();\r\n\t\tthis.setCategoryLabel(this.entityTypeGroup);\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.updateUrlQuery();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate page ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this page.\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tif (this.availableEntityTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst fullEntityLayoutType: IEntityLayoutType =\r\n\t\t\tawait this.entityLayoutTypeApiService.getSingleQueryResult(\r\n\t\t\t\tAppConstants.commonProperties.name\r\n\t\t\t\t\t+ ` eq '${AppConstants.layoutTypes.full}'`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(fullEntityLayoutType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tthis.availableEntityTypes.forEach(\r\n\t\t\t(entityType: IEntityType) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.entityService.verifyEntityTypeAccess(\r\n\t\t\t\t\t\tentityType,\r\n\t\t\t\t\t\tfullEntityLayoutType));\r\n\t\t\t});\r\n\r\n\t\tconst allowedEntities: boolean[] =\r\n\t\t\tawait Promise.all(initialPromiseArray);\r\n\r\n\t\treturn allowedEntities.some(\r\n\t\t\t(allowed: boolean) =>\r\n\t\t\t\tallowed === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the categories properties which defines\r\n\t * the category label and options to be displayed in\r\n\t * the search filter component.\r\n\t *\r\n\t * @async\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async setCategories(): Promise\r\n\t{\r\n\t\tconst originalTypeParameter: string =\r\n\t\t\tthis.entityTypesParam;\r\n\t\tthis.availableEntityTypes =\r\n\t\t\tthis.entityTypesParam === AppConstants.empty\r\n\t\t\t\t? await this.entityTypeApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tthis.orderByGroup,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t100)\r\n\t\t\t\t: await this.entityTypeApiService\r\n\t\t\t\t\t.query(\r\n\t\t\t\t\t\tApiFilterHelper.getWildcardFilter(\r\n\t\t\t\t\t\t\t'Group',\r\n\t\t\t\t\t\t\tthis.entityTypesParam),\r\n\t\t\t\t\t\tthis.orderByGroup,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t100);\r\n\r\n\t\tif (this.availableEntityTypes.length > 1)\r\n\t\t{\r\n\t\t\t// populate the category options with the existing operation groups.\r\n\t\t\tthis.availableEntityTypes.forEach(\r\n\t\t\t\t(entityType) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.categoryOptions.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: entityType.group,\r\n\t\t\t\t\t\t\tlabel: StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\t\tentityType.name,\r\n\t\t\t\t\t\t\t\t\tAppConstants.characters.period))\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t// Set group and name if it was previously loaded.\r\n\t\t\tif (!AnyHelper.isNullOrEmpty(this.entityTypeParam))\r\n\t\t\t{\r\n\t\t\t\tconst entityType =\r\n\t\t\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t`Name eq '${this.entityTypeParam}'`,\r\n\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\tthis.entityTypeGroup = entityType[0].group;\r\n\t\t\t\tthis.selectedCategory = entityType[0].group;\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tthis.selectedCategory;\r\n\t\t\t\tawait this.setDynamicColumns();\r\n\t\t\t\tthis.loadingEntityType = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.availableEntityTypes.length === 1)\r\n\t\t{\r\n\t\t\tthis.entityTypeGroup = this.entityTypesParam;\r\n\t\t\tthis.categoryOptions.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: this.availableEntityTypes[0].group,\r\n\t\t\t\t\tlabel: StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\tthis.availableEntityTypes[0].name,\r\n\t\t\t\t\t\t\tAppConstants.characters.period))\r\n\t\t\t\t});\r\n\t\t\tthis.entityTypeParam = this.availableEntityTypes[0].name;\r\n\t\t\tthis.selectedCategory = this.availableEntityTypes[0].group;\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.selectedCategory;\r\n\t\t\tawait this.setDynamicColumns();\r\n\t\t\tthis.loadingEntityType = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.entityTypeGroup = AppConstants.empty;\r\n\t\t\tthis.entityTypesParam = AppConstants.empty;\r\n\r\n\t\t\tthis.categoryOptions.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: AppConstants.empty,\r\n\t\t\t\t\tlabel: AppConstants.empty\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\t'Entity.Type',\r\n\t\t\t\t\t'Entity.Version',\r\n\t\t\t\t\t'Entity.Layout'\r\n\t\t\t\t],\r\n\t\t\t\t'Access is required to at least one entity type and version. '\r\n\t\t\t\t\t+ (AnyHelper.isNullOrWhitespace(originalTypeParameter)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: `The type selection of ${originalTypeParameter} `\r\n\t\t\t\t\t\t\t+ 'did not return any available entities.'));\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loadingCategories = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the definitions for the entity search common table\r\n\t *\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.entitySearchTableDefinitions =\r\n\t\t\t{\r\n\t\t\t\ttableTitle:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(this.entityTypeGroup)\r\n\t\t\t\t\t\t? 'Entities'\r\n\t\t\t\t\t\t: StringHelper.beforeCapitalSpaces(\r\n\t\t\t\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\t\t\t\t\tAppConstants.characters.period)),\r\n\t\t\t\thideTableTitle: true,\r\n\t\t\t\tfullPageReservedHeight:\r\n\t\t\t\t\tAppConstants.staticLayoutSizes.tableSearchHeight,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.entityFilterParam,\r\n\t\t\t\t\torderBy: this.entityOrderByParam,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: 30,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.entityRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\tthis.entityTypeGroup;\r\n\r\n\t\t\t\t\t\treturn this.entityInstanceApiService\r\n\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.summaryDataPathColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tconsiderFilteringResults: () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdocument.getElementById(\r\n\t\t\t\t\t\t\t\tAppConstants.commonTableActions.filterInput)\r\n\t\t\t\t\t\t\t\t.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\tawait this.getContextMenuModule() +\r\n\t\t\t\t\t\t\t\t\t\t\t\t'/entities',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem.id\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tqueryParams:\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayoutType:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.layoutTypes\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.full\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter criteria changed event sent from the filter controls.\r\n\t *\r\n\t * @param {string} filterCriteria\r\n\t * The filter criteria sent from the search filter.\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic filterCriteriaChanged(\r\n\t\tfilterCriteria: string): void\r\n\t{\r\n\t\t// Get the query string filter\r\n\t\tthis.entityFilterParam =\r\n\t\t\t(!AnyHelper.isNullOrEmpty(filterCriteria))\r\n\t\t\t\t? this.getQueryStringContainsFilter(filterCriteria)\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tthis.updateUrlQuery();\r\n\r\n\t\t// Return if null or empty\r\n\t\tif (AnyHelper.isNullOrEmpty(this.selectedCategory)\r\n\t\t\t|| this.selectedCategory === AppConstants.undefined)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tthis.entityFilterParam);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the context menu module.\r\n\t *\r\n\t * @async\r\n\t * @returns\r\n\t * The context menu module string name.\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async getContextMenuModule(): Promise\r\n\t{\r\n\t\treturn JSON.parse(\r\n\t\t\tthis.entityDefinition.jsonData).contextMenuModule;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the url query string upon entity type group\r\n\t * and the defined query parameters previously loaded\r\n\t * if existing.\r\n\t *\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic updateUrlQuery(): void\r\n\t{\r\n\t\tconst queryParameters =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.entityTypeGroup)\r\n\t\t\t\t? \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityTypes: this.entityTypesParam\r\n\t\t\t\t\t}\r\n\t\t\t\t: \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tentityTypes: this.entityTypesParam,\r\n\t\t\t\t\t\tentityType: this.entityTypeParam,\r\n\t\t\t\t\t\tfilter: this.entityFilterParam,\r\n\t\t\t\t\t\torderBy: this.entitySearchTableDefinitions\r\n\t\t\t\t\t\t\t.objectSearch.orderBy\r\n\t\t\t\t\t};\r\n\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(queryParameters)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the columns object array based on the available\r\n\t * data keys.\r\n\t *\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async setDynamicColumns(): Promise\r\n\t{\r\n\t\tconst entityType: IEntityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`Group eq '${this.entityTypeGroup}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tthis.entityDefinition =\r\n\t\t\tawait this.entityDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`TypeId eq ${entityType.id}`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.summaryDataPathColumns =\r\n\t\t\tawait this.entityService.getDynamicSummaryColumns(\r\n\t\t\t\tthis.entityTypeGroup,\r\n\t\t\t\tthis.entityDefinition);\r\n\r\n\t\t// Start with all columns selected and in column selection mode.\r\n\t\tthis.selectedColumns =\r\n\t\t\tthis.summaryDataPathColumns;\r\n\r\n\t\t// If we do not have any columns, display the keyword message.\r\n\t\tthis.displayKeywordMessage =\r\n\t\t\tthis.summaryDataPathColumns.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the category selection change. This will\r\n\t * update the view based on the selected type group.\r\n\t *\r\n\t * @async\r\n\t * @param {string} selectedCategory\r\n\t * The selected category string.\r\n\t * @memberof EntitySearchComponent\r\n\t */\r\n\tpublic async selectedCategoryChanged(\r\n\t\tselectedCategory: string): Promise\r\n\t{\r\n\t\tthis.selectedCategory = selectedCategory;\r\n\t\t// Restore the table definition loading state\r\n\t\tthis.loadingTableDefinitions = true;\r\n\t\tthis.loadingEntityType = true;\r\n\r\n\t\t// Set the Entity Group and Name based on the selected category\r\n\t\tthis.entityTypeGroup = selectedCategory;\r\n\t\tconst entityType =\r\n\t\t\tawait this.entityTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t`Group eq '${this.entityTypeGroup}'`,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.entityTypeParam = entityType.length > 0\r\n\t\t\t? entityType[0].name\r\n\t\t\t: AppConstants.empty;\r\n\r\n\t\tthis.entityOrderByParam =\r\n\t\t\t`Id ${AppConstants.sortDirections.descending}`;\r\n\r\n\t\tthis.setCategoryLabel(this.entityTypeGroup);\r\n\r\n\t\t// Reload the table definitions and query string\r\n\t\tif (AnyHelper.isNullOrEmpty(selectedCategory))\r\n\t\t{\r\n\t\t\tthis.loadingCategories = true;\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.entitySearchTableDefinitions = null;\r\n\t\t\t\tthis.filterValue = AppConstants.empty;\r\n\t\t\t\tthis.entityFilterParam = AppConstants.empty;\r\n\t\t\t\tthis.loadingCategories = false;\r\n\t\t\t\tthis.loadingTableDefinitions = false;\r\n\t\t\t\tthis.loadingEntityType = false;\r\n\t\t\t\tthis.updateUrlQuery();\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tthis.selectedCategory;\r\n\t\t\tawait this.setDynamicColumns();\r\n\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setupTableDefinitions();\r\n\t\t\t\t\tthis.loadingEntityType = false;\r\n\t\t\t\t\tthis.updateUrlQuery();\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.entitySearchTableDefinitions\r\n\t\t\t.objectSearch.filter = this.entityFilterParam;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-entity',\r\n\ttemplateUrl: './entity.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main\r\n * entity page.\r\n *\r\n * @export\r\n * @class EntityComponent\r\n */\r\nexport class EntityComponent\r\n{\r\n}\r\n","
    \r\n\t\r\n\t\r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRouteSnapshot,\r\n\tRouter,\r\n\tRouterStateSnapshot\r\n} from '@angular/router';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class containing logic for whether a route can be active based\r\n * on conditions.\r\n *\r\n * @export\r\n * @class AppAuthGuard\r\n * @implements {CanActivate}\r\n */\r\n@Injectable()\r\nexport class AppAuthGuard\r\n{\r\n\t/**\r\n\t * Creates an instance of AppAuthGuard.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * @param {Router} router\r\n\t * @memberof AppAuthGuard\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly loggerService: LoggerService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether a route can and should be active based on conditions.\r\n\t *\r\n\t * @param {ActivatedRouteSnapshot} _route\r\n\t * @param {RouterStateSnapshot} _state\r\n\t * @returns {boolean}\r\n\t * A value indicating whether the route should be active for the session.\r\n\t * @memberof AppAuthGuard\r\n\t */\r\n\tpublic canActivate(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\t_state: RouterStateSnapshot): boolean\r\n\t{\r\n\t\tif (!this.sessionService.isLoggedIn)\r\n\t\t{\r\n\t\t\t// Replace alert with a toast or other window notification.\r\n\t\t\t// Window.alert('You don\\'t have permission to view this page');\r\n\r\n\t\t\tconst messageText: string\r\n\t\t\t\t= `You must be logged in to access '${ route.url }'.`;\r\n\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t'Authorization Message',\r\n\t\t\t\tmessageText,\r\n\t\t\t\tAppConstants.activityStatus.info);\r\n\r\n\t\t\tthis.loggerService.logInformation(messageText);\r\n\r\n\t\t\t// Route to login page.\r\n\t\t\tthis.router.navigate([AppConstants.route.loginPage]);\r\n\r\n\t\t\t// Return that the user cannot activate the route.\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (route.data.roles)\r\n\t\t{\r\n\t\t\tconst user: IUser = this.sessionService.user;\r\n\t\t\tconst userSecurityGroups: string[] =\r\n\t\t\t\tuser.membershipSecurityGroups.map(\r\n\t\t\t\t\t(item: ISecurityGroup) => item.name);\r\n\r\n\t\t\tif ((route.data.roles)\r\n\t\t\t\t.filter((routeRole: string) =>\r\n\t\t\t\t\tuserSecurityGroups.includes(routeRole))\r\n\t\t\t\t.length === 0)\r\n\t\t\t{\r\n\t\t\t\tconst messageText: string\r\n\t\t\t\t\t= 'User does not have a required role to access '\r\n\t\t\t\t\t\t+ `'${ route.url }'.`;\r\n\r\n\t\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t\t'Authorization Message',\r\n\t\t\t\t\tmessageText,\r\n\t\t\t\t\tAppConstants.activityStatus.info);\r\n\r\n\t\t\t\tthis.loggerService.logInformation(messageText);\r\n\r\n\t\t\t\t// Route to dashboard page.\r\n\t\t\t\tthis.router.navigate([AppConstants.route.dashboardPage]);\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRouteSnapshot,\r\n\tRouter,\r\n\tRouterStateSnapshot\r\n} from '@angular/router';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing an instance of a module guard.\r\n * This is used to ensure that the module based route prefix\r\n * accurately points to a defined application module.\r\n *\r\n * @export\r\n * @class ModuleGuard\r\n * @implements {CanActivate}\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ModuleGuard\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ModuleGuard class.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for site navigation.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service used for this guard.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service used for this guard.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service for this guard.\r\n\t * @memberof ModuleGuard\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly moduleService: ModuleService,\r\n\t\tprivate readonly cacheService: CacheService,\r\n\t\tprivate readonly sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the can activate interface for this guard.\r\n\t * This will accurately define if the url entered first segment\r\n\t * for a module is defined in our system. If this is not found\r\n\t * a message will be displayed to the user that the url is impoperly\r\n\t * formed and route them to the dashboard.\r\n\t *\r\n\t * @param {ActivatedRouteSnapshot} next\r\n\t * The expected next value for the activated route.\r\n\t * @param {RouterStateSnapshot} _state\r\n\t * The expected current value for the activated route.\r\n\t * @returns {Promise}\r\n\t * A truthy defining if this guard will allow activation of the sent\r\n\t * url based navigation.\r\n\t * @memberof ModuleGuard\r\n\t */\r\n\tpublic async canActivate(\r\n\t\tnext: ActivatedRouteSnapshot,\r\n\t\t_state: RouterStateSnapshot): Promise\r\n\t{\r\n\t\tthis.cacheService.clearAllSubscriptions();\r\n\r\n\t\tif (AnyHelper.isNull(next.url[0]))\r\n\t\t{\r\n\t\t\tthis.router.navigate([AppConstants.route.dashboardPage]);\r\n\r\n\t\t\treturn Promise.resolve(false);\r\n\t\t}\r\n\r\n\t\tthis.moduleService.name =\r\n\t\t\tStringHelper.toProperCase(next.url[0].path);\r\n\r\n\t\tconst securityGroup: string =\r\n\t\t\t`${this.moduleService.name}_Module_Access`;\r\n\r\n\t\tconst lowerCaseModuleName: string =\r\n\t\t\tthis.moduleService.name.toLocaleLowerCase();\r\n\r\n\t\tif (lowerCaseModuleName === AppConstants.moduleNames.dashboard\r\n\t\t\t|| lowerCaseModuleName === AppConstants.moduleNames.account)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\tasync(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tconst user: User = new User(this.sessionService.user);\r\n\r\n\t\t\t\tconst hasMembership: boolean =\r\n\t\t\t\t\tuser.hasMembership([securityGroup]);\r\n\r\n\t\t\t\tif (!hasMembership)\r\n\t\t\t\t{\r\n\t\t\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t\t\t'Access Denied',\r\n\t\t\t\t\t\t`You don't have access to '${this.moduleService.name}'.`\r\n\t\t\t\t\t\t\t+ ' Redirecting to the dashboard.',\r\n\t\t\t\t\t\tAppConstants.activityStatus.error);\r\n\r\n\t\t\t\t\tthis.router.navigate([AppConstants.route.dashboardPage]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve(hasMembership);\r\n\t\t\t});\r\n\t}\r\n}","/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = \n/* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n *\n * `AnimationDriver` implentation for Noop animations\n */\nclass NoopAnimationDriver {\n /**\n * @returns Whether `prop` is a valid CSS property\n */\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n /**\n * @deprecated unused\n */\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n /**\n *\n * @returns Whether elm1 contains elm2.\n */\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n /**\n * @returns Rhe parent of the given element or `null` if the element is the `document`\n */\n getParentElement(element) {\n return getParentElement(element);\n }\n /**\n * @returns The result of the query selector on the element. The array will contain up to 1 item\n * if `multi` is `false`.\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @returns The `defaultValue` or empty string\n */\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n /**\n * @returns An `NoopAnimationPlayer`\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationDriver }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n /**\n * @deprecated Use the NoopAnimationDriver class.\n */\n static { this.NOOP = ( /* @__PURE__ */new NoopAnimationDriver()); }\n}\n\nclass AnimationStyleNormalizer {\n}\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n return;\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this.easing = null;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing'\n ]);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n this.afterFlush(() => { });\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.parentPlayer = null;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(doc, _driver, _normalizer) {\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(doc.body, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(doc.body, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [\n ...this._transitionEngine.players,\n ...this._timelineEngine.players,\n ];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n static { this.initialStylesByElement = ( /* @__PURE__ */new WeakMap()); }\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\nfunction createEngine(type, doc) {\n // TODO: find a way to make this tree shakable.\n if (type === 'noop') {\n return new AnimationEngine(doc, new NoopAnimationDriver(), new NoopAnimationStyleNormalizer());\n }\n return new AnimationEngine(doc, new WebAnimationsDriver(), new WebAnimationsStyleNormalizer());\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n // We need to explicitly type this property because of an api-extractor bug\n // See https://github.com/microsoft/rushstack/issues/4390\n this.ɵtype = 0 /* AnimationRendererType.Regular */;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type?.data?.['animation']) {\n const cache = this._rendererCache;\n let renderer = cache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => cache.delete(delegate);\n renderer =\n new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n cache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n const animationCallbacksBuffer = this._animationCallbacksBuffer;\n if (animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, NoopAnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, BaseAnimationRenderer as ɵBaseAnimationRenderer, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, camelCaseToDashCase as ɵcamelCaseToDashCase, containsElement as ɵcontainsElement, createEngine as ɵcreateEngine, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty, validateWebAnimatableStyleProperty as ɵvalidateWebAnimatableStyleProperty };\n","/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationRendererFactory, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, NoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer, appRef) {\n super(doc, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: InjectableAnimationEngine }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }] });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: NoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.7\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpClient\r\n} from '@angular/common/http';\r\nimport {\r\n\tInject,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tISecurityAccessPolicyMappingDto\r\n} from '@api/interfaces/security/security-access-policy-mapping.dto.interface';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\n\r\n/**\r\n * A class representing the logic and services of the security\r\n * access policy mapping controller.\r\n *\r\n * @export\r\n * @class SecurityAccessPolicyMappingApiService\r\n * @extends {BaseEntityApiService}\r\n */\r\n@Injectable()\r\nexport class SecurityAccessPolicyMappingApiService\r\n\textends BaseEntityApiService\r\n{\r\n\t/**\r\n\t * Creates an instance of a SecurityAccessPolicyMappingApiService.\r\n\t *\r\n\t * @param {HttpClient} HttpClient\r\n\t * The injected http client to use in the base api service.\r\n\t * @param {CacheService} cache\r\n\t * The injected cache service to use in the base api service.\r\n\t * @memberof SecurityAccessPolicyMappingApiService\r\n\t */\r\n\tpublic constructor(\r\n\t\t@Inject(HttpClient) http: HttpClient,\r\n\t\t@Inject(CacheService) cache: CacheService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.httpClient = http;\r\n\t\tthis.cacheService = cache;\r\n\t\tthis.endpoint =\r\n\t\t\tAppConstants.apiControllers.securityAccessPolicyMappings;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an ISecurityAccessPolicyMappingDto with the specified\r\n\t * identifier and information.\r\n\t * This method is not implemented in the API.\r\n\t *\r\n\t * @param {number} _id\r\n\t * The identifier of the type T to update.\r\n\t * @param {IBaseEntity} _entity\r\n\t * The entity of type T to update.\r\n\t * @returns {Promise}\r\n\t * An observable of the put no-content response.\r\n\t * @memberof SecurityAccessPolicyMappingApiService\r\n\t */\r\n\tpublic async update(\r\n\t\t_id: number,\r\n\t\t_entity: ISecurityAccessPolicyMappingDto): Promise\r\n\t{\r\n\t\tthrow new Error(\r\n\t\t\tthis.getNotImplementedMessage(\r\n\t\t\t\tAppConstants.apiMethods.update,\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.apiMethods.create,\r\n\t\t\t\t\tAppConstants.apiMethods.delete\r\n\t\t\t\t]));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tHttpClient,\r\n\tHttpClientModule\r\n} from '@angular/common/http';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tApiTokenLookup\r\n} from '@api/api-token.lookup';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceRuleViolationOverrideApiService\r\n} from '@api/services/entities/entity-instance-rule-violation-override.api.service';\r\nimport {\r\n\tEntityInstanceRuleViolationApiService\r\n} from '@api/services/entities/entity-instance-rule-violation.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityLayoutApiService\r\n} from '@api/services/entities/entity-layout.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tLogApiService\r\n} from '@api/services/logs/log.api.service';\r\nimport {\r\n\tOperationDefinitionParameterApiService\r\n} from '@api/services/operations/operation-definition-parameter.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tOperationGroupHierarchyApiService\r\n} from '@api/services/operations/operation-group-hierarchy.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tOperationTypeParameterApiService\r\n} from '@api/services/operations/operation-type-parameter.api.service';\r\nimport {\r\n\tOperationTypeApiService\r\n} from '@api/services/operations/operation-type.api.service';\r\nimport {\r\n\tRuleDefinitionApiService\r\n} from '@api/services/rules/rule-definition.api.service';\r\nimport {\r\n\tRulePresentationDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-definition.api.service';\r\nimport {\r\n\tRulePresentationLogicDefinitionApiService\r\n} from '@api/services/rules/rule-presentation-logic-definition.api.service';\r\nimport {\r\n\tRuleValidationDefinitionApiService\r\n} from '@api/services/rules/rule-validation-definition.api.service';\r\nimport {\r\n\tRuleValidatorDefinitionApiService\r\n} from '@api/services/rules/rule-validator-definition.api.service';\r\nimport {\r\n\tRuleViolationWorkflowActionDefinitionApiService\r\n} from '@api/services/rules/rule-violation-workflow-action-definition.api.service';\r\nimport {\r\n\tAuthenticateApiService\r\n} from '@api/services/security/authenticate.api.service';\r\nimport {\r\n\tSecurityAccessPolicyDefinitionApiService\r\n} from '@api/services/security/security-access-policy-definition.api.service';\r\nimport {\r\n\tSecurityAccessPolicyMappingApiService\r\n} from '@api/services/security/security-access-policy-mapping.api.service';\r\nimport {\r\n\tSecurityAccessPolicyApiService\r\n} from '@api/services/security/security-access-policy.api.service';\r\nimport {\r\n\tSecurityApplicationApiService\r\n} from '@api/services/security/security-application.api.service';\r\nimport {\r\n\tSecurityGroupRuleDefinitionViolationOverrideApiService\r\n} from '@api/services/security/security-group-rule-definition-violation-override.api.service';\r\nimport {\r\n\tSecurityGroupApiService\r\n} from '@api/services/security/security-group.api.service';\r\nimport {\r\n\tSecuritySessionApiService\r\n} from '@api/services/security/security-session.api.service';\r\nimport {\r\n\tWorkflowActionDefinitionsApiService\r\n} from '@api/services/workflow/workflow-action-definitions.api.service';\r\nimport {\r\n\tWorkflowActionInstancesApiService\r\n} from '@api/services/workflow/workflow-action-instances.api.service';\r\nimport {\r\n\tWorkflowActionRequisitesApiService\r\n} from '@api/services/workflow/workflow-action-requisites.api.service';\r\nimport {\r\n\tWorkflowFailureActionsApiService\r\n} from '@api/services/workflow/workflow-failure-actions.api.service';\r\nimport {\r\n\tWorkflowRequisiteTypesApiService\r\n} from '@api/services/workflow/workflow-requisite-types.api.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tHttpClientModule\r\n\t],\r\n\tproviders: [\r\n\t\tAuthenticateApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.AuthenticateApiService,\r\n\t\t\tuseClass: AuthenticateApiService\r\n\t\t},\r\n\t\tDisplayComponentDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.DisplayComponentDefinitionApiService,\r\n\t\t\tuseClass: DisplayComponentDefinitionApiService\r\n\t\t},\r\n\t\tDisplayComponentInstanceApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.DisplayComponentInstanceApiService,\r\n\t\t\tuseClass: DisplayComponentInstanceApiService\r\n\t\t},\r\n\t\tDisplayComponentTypeApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.DisplayComponentTypeApiService,\r\n\t\t\tuseClass: DisplayComponentTypeApiService\r\n\t\t},\r\n\t\tEntityDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityDefinitionApiService,\r\n\t\t\tuseClass: EntityDefinitionApiService\r\n\t\t},\r\n\t\tEntityInstanceApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityInstanceApiService,\r\n\t\t\tuseClass: EntityInstanceApiService\r\n\t\t},\r\n\t\tEntityInstanceRuleViolationApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.EntityInstanceRuleViolationApiService,\r\n\t\t\tuseClass: EntityInstanceRuleViolationApiService\r\n\t\t},\r\n\t\tEntityInstanceRuleViolationOverrideApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.EntityInstanceRuleViolationOverrideApiService,\r\n\t\t\tuseClass: EntityInstanceRuleViolationOverrideApiService\r\n\t\t},\r\n\t\tEntityLayoutApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityLayoutApiService,\r\n\t\t\tuseClass: EntityLayoutApiService\r\n\t\t},\r\n\t\tEntityLayoutTypeApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityLayoutTypeApiService,\r\n\t\t\tuseClass: EntityLayoutTypeApiService\r\n\t\t},\r\n\t\tEntityTypeApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityTypeApiService,\r\n\t\t\tuseClass: EntityTypeApiService\r\n\t\t},\r\n\t\tEntityVersionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.EntityVersionApiService,\r\n\t\t\tuseClass: EntityVersionApiService\r\n\t\t},\r\n\t\tHttpClient,\r\n\t\tLogApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.LogApiService,\r\n\t\t\tuseClass: LogApiService\r\n\t\t},\r\n\t\tOperationDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.OperationDefinitionApiService,\r\n\t\t\tuseClass: OperationDefinitionApiService\r\n\t\t},\r\n\t\tOperationDefinitionParameterApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.OperationDefinitionParameterApiService,\r\n\t\t\tuseClass: OperationDefinitionParameterApiService\r\n\t\t},\r\n\t\tOperationGroupApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.OperationGroupApiService,\r\n\t\t\tuseClass: OperationGroupApiService\r\n\t\t},\r\n\t\tOperationGroupHierarchyApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.OperationGroupHierarchyApiService,\r\n\t\t\tuseClass: OperationGroupHierarchyApiService\r\n\t\t},\r\n\t\tOperationTypeApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.OperationTypeApiService,\r\n\t\t\tuseClass: OperationTypeApiService\r\n\t\t},\r\n\t\tOperationTypeParameterApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.OperationTypeParameterApiService,\r\n\t\t\tuseClass: OperationTypeParameterApiService\r\n\t\t},\r\n\t\tRuleDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.RuleDefinitionApiService,\r\n\t\t\tuseClass: RuleDefinitionApiService\r\n\t\t},\r\n\t\tRulePresentationDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.RulePresentationDefinitionApiService,\r\n\t\t\tuseClass: RulePresentationDefinitionApiService\r\n\t\t},\r\n\t\tRulePresentationLogicDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.RulePresentationLogicDefinitionApiService,\r\n\t\t\tuseClass: RulePresentationLogicDefinitionApiService\r\n\t\t},\r\n\t\tRuleValidationDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.RuleValidationDefinitionApiService,\r\n\t\t\tuseClass: RuleValidationDefinitionApiService\r\n\t\t},\r\n\t\tRuleValidatorDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.RuleValidatorDefinitionApiService,\r\n\t\t\tuseClass: RuleValidatorDefinitionApiService\r\n\t\t},\r\n\t\tRuleViolationWorkflowActionDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.RuleViolationWorkflowActionDefinitionApiService,\r\n\t\t\tuseClass: RuleViolationWorkflowActionDefinitionApiService\r\n\t\t},\r\n\t\tSecurityApplicationApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.SecurityApplicationApiService,\r\n\t\t\tuseClass: SecurityApplicationApiService\r\n\t\t},\r\n\t\tSecurityAccessPolicyMappingApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.SecurityAccessPolicyMappingApiService,\r\n\t\t\tuseClass: SecurityAccessPolicyMappingApiService\r\n\t\t},\r\n\t\tSecurityAccessPolicyDefinitionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.SecurityAccessPolicyDefinitionApiService,\r\n\t\t\tuseClass: SecurityAccessPolicyDefinitionApiService\r\n\t\t},\r\n\t\tSecurityAccessPolicyApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.SecurityAccessPolicyApiService,\r\n\t\t\tuseClass: SecurityAccessPolicyApiService\r\n\t\t},\r\n\t\tSecurityGroupApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.SecurityGroupApiService,\r\n\t\t\tuseClass: SecurityGroupApiService\r\n\t\t},\r\n\t\tSecurityGroupRuleDefinitionViolationOverrideApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens\r\n\t\t\t\t.SecurityGroupRuleDefinitionViolationOverrideApiService,\r\n\t\t\tuseClass: SecurityGroupRuleDefinitionViolationOverrideApiService\r\n\t\t},\r\n\t\tSecuritySessionApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.SecuritySessionApiService,\r\n\t\t\tuseClass: SecuritySessionApiService\r\n\t\t},\r\n\t\tWorkflowActionDefinitionsApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.WorkflowActionDefinitionsApiService,\r\n\t\t\tuseClass: WorkflowActionDefinitionsApiService\r\n\t\t},\r\n\t\tWorkflowActionInstancesApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.WorkflowActionInstancesApiService,\r\n\t\t\tuseClass: WorkflowActionInstancesApiService\r\n\t\t},\r\n\t\tWorkflowActionRequisitesApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.WorkflowActionRequisitesApiService,\r\n\t\t\tuseClass: WorkflowActionRequisitesApiService\r\n\t\t},\r\n\t\tWorkflowFailureActionsApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.WorkflowFailureActionsApiService,\r\n\t\t\tuseClass: WorkflowFailureActionsApiService\r\n\t\t},\r\n\t\tWorkflowRequisiteTypesApiService,\r\n\t\t{\r\n\t\t\tprovide: ApiTokenLookup.tokens.WorkflowRequisiteTypesApiService,\r\n\t\t\tuseClass: WorkflowRequisiteTypesApiService\r\n\t\t}\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to defined available api methods.\r\n *\r\n * @export\r\n * @class ApiModule\r\n */\r\nexport class ApiModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tMessage\r\n} from 'primeng/api';\r\n\r\n/**\r\n * A class representing logic for login level messaging.\r\n *\r\n * @export\r\n * @class LoginMessageService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LoginMessageService\r\n{\r\n\t/**\r\n\t * Gets or sets a collection of {Message}.\r\n\t *\r\n\t * @type {Message[]}\r\n\t * @memberof LoginMessageService\r\n\t */\r\n\tpublic messages: Message[] = [];\r\n\r\n\t/**\r\n\t * Adds a message to the login messages.\r\n\t *\r\n\t * @param {(object | Message)} message\r\n\t * @memberof LoginMessageService\r\n\t */\r\n\tpublic add(message: object | Message): void\r\n\t{\r\n\t\tconst messageObject: Message = message;\r\n\r\n\t\tif (!messageObject.id)\r\n\t\t{\r\n\t\t\tthis.messages.push(message);\r\n\t\t}\r\n\r\n\t\tif (!this.messages.find(item => item.id === messageObject.id))\r\n\t\t{\r\n\t\t\tthis.messages.push(message);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all messages from the login level messages.\r\n\t *\r\n\t * @memberof LoginMessageService\r\n\t */\r\n\tpublic clear(): void\r\n\t{\r\n\t\tthis.messages = [];\r\n\t}\r\n}","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, HostListener, NgModule } from '@angular/core';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * AccordionTab is a helper component for Accordion.\n * @group Components\n */\nclass AccordionTab {\n el;\n changeDetector;\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Used to define the header of the tab.\n * @group Props\n */\n header;\n /**\n * Inline style of the tab header.\n * @group Props\n */\n headerStyle;\n /**\n * Inline style of the tab.\n * @group Props\n */\n tabStyle;\n /**\n * Inline style of the tab content.\n * @group Props\n */\n contentStyle;\n /**\n * Style class of the tab.\n * @group Props\n */\n tabStyleClass;\n /**\n * Style class of the tab header.\n * @group Props\n */\n headerStyleClass;\n /**\n * Style class of the tab content.\n * @group Props\n */\n contentStyleClass;\n /**\n * Whether the tab is disabled.\n * @group Props\n */\n disabled;\n /**\n * Whether a lazy loaded panel should avoid getting loaded again on reselection.\n * @group Props\n */\n cache = true;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n /**\n * Position of the icon.\n * @group Props\n */\n iconPos = 'start';\n /**\n * The value that returns the selection.\n * @group Props\n */\n get selected() {\n return this._selected;\n }\n set selected(val) {\n this._selected = val;\n if (!this.loaded) {\n if (this._selected && this.cache) {\n this.loaded = true;\n }\n this.changeDetector.detectChanges();\n }\n }\n /**\n * The aria-level that each accordion header will have. The default value is 2 as per W3C specifications\n * @group Props\n */\n headerAriaLevel = 2;\n /**\n * Event triggered by changing the choice.\n * @param {boolean} value - Boolean value indicates that the option is changed.\n * @group Emits\n */\n selectedChange = new EventEmitter();\n headerFacet;\n templates;\n _selected = false;\n get iconClass() {\n if (this.iconPos === 'end') {\n return 'p-accordion-toggle-icon-end';\n }\n else {\n return 'p-accordion-toggle-icon';\n }\n }\n contentTemplate;\n headerTemplate;\n iconTemplate;\n loaded = false;\n accordion;\n constructor(accordion, el, changeDetector) {\n this.el = el;\n this.changeDetector = changeDetector;\n this.accordion = accordion;\n this.id = UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'icon':\n this.iconTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n toggle(event) {\n if (this.disabled) {\n return false;\n }\n let index = this.findTabIndex();\n if (this.selected) {\n this.selected = false;\n this.accordion.onClose.emit({ originalEvent: event, index: index });\n }\n else {\n if (!this.accordion.multiple) {\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n if (this.accordion.tabs[i].selected) {\n this.accordion.tabs[i].selected = false;\n this.accordion.tabs[i].selectedChange.emit(false);\n this.accordion.tabs[i].changeDetector.markForCheck();\n }\n }\n }\n this.selected = true;\n this.loaded = true;\n this.accordion.onOpen.emit({ originalEvent: event, index: index });\n }\n this.selectedChange.emit(this.selected);\n this.accordion.updateActiveIndex();\n this.changeDetector.markForCheck();\n event?.preventDefault();\n }\n findTabIndex() {\n let index = -1;\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n if (this.accordion.tabs[i] == this) {\n index = i;\n break;\n }\n }\n return index;\n }\n get hasHeaderFacet() {\n return this.headerFacet && this.headerFacet.length > 0;\n }\n onKeydown(event) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.toggle(event);\n event.preventDefault(); // ???\n break;\n default:\n break;\n }\n }\n getTabHeaderActionId(tabId) {\n return `${tabId}_header_action`;\n }\n getTabContentId(tabId) {\n return `${tabId}_content`;\n }\n ngOnDestroy() {\n this.accordion.tabs.splice(this.findTabIndex(), 1);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: AccordionTab, selector: \"p-accordionTab\", inputs: { id: \"id\", header: \"header\", headerStyle: \"headerStyle\", tabStyle: \"tabStyle\", contentStyle: \"contentStyle\", tabStyleClass: \"tabStyleClass\", headerStyleClass: \"headerStyleClass\", contentStyleClass: \"contentStyleClass\", disabled: \"disabled\", cache: \"cache\", transitionOptions: \"transitionOptions\", iconPos: \"iconPos\", selected: \"selected\", headerAriaLevel: \"headerAriaLevel\" }, outputs: { selectedChange: \"selectedChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", predicate: Header }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ header }}\n \n \n \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n `, isInline: true, styles: [\"@layer primeng{.p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}.p-accordion .p-toggleable-content{overflow:hidden}.p-accordion .p-accordion-tab-active>.p-toggleable-content:not(.ng-animating){overflow:inherit}.p-accordion-toggle-icon-end{order:1;margin-left:auto}.p-accordion-toggle-icon{order:0}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }], animations: [\n trigger('tabContent', [\n state('hidden', style({\n height: '0',\n visibility: 'hidden'\n })),\n state('visible', style({\n height: '*',\n visibility: 'visible'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionTab, decorators: [{\n type: Component,\n args: [{ selector: 'p-accordionTab', template: `\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ header }}\n \n \n \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n `, animations: [\n trigger('tabContent', [\n state('hidden', style({\n height: '0',\n visibility: 'hidden'\n })),\n state('visible', style({\n height: '*',\n visibility: 'visible'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}.p-accordion .p-toggleable-content{overflow:hidden}.p-accordion .p-accordion-tab-active>.p-toggleable-content:not(.ng-animating){overflow:inherit}.p-accordion-toggle-icon-end{order:1;margin-left:auto}.p-accordion-toggle-icon{order:0}}\\n\"] }]\n }], ctorParameters: () => [{ type: Accordion, decorators: [{\n type: Inject,\n args: [forwardRef(() => Accordion)]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{\n type: Input\n }], header: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], tabStyle: [{\n type: Input\n }], contentStyle: [{\n type: Input\n }], tabStyleClass: [{\n type: Input\n }], headerStyleClass: [{\n type: Input\n }], contentStyleClass: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cache: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], selected: [{\n type: Input\n }], headerAriaLevel: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], headerFacet: [{\n type: ContentChildren,\n args: [Header]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\n/**\n * Accordion groups a collection of contents in tabs.\n * @group Components\n */\nclass Accordion {\n el;\n changeDetector;\n /**\n * When enabled, multiple tabs can be activated at the same time.\n * @group Props\n */\n multiple = false;\n /**\n * Inline style of the tab header and content.\n * @group Props\n */\n style;\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Icon of a collapsed tab.\n * @group Props\n */\n expandIcon;\n /**\n * Icon of an expanded tab.\n * @group Props\n */\n collapseIcon;\n /**\n * Index of the active tab or an array of indexes in multiple mode.\n * @group Props\n */\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(val) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n this.updateSelectionState();\n }\n /**\n * When enabled, the focused tab is activated.\n * @group Props\n */\n selectOnFocus = false;\n /**\n * The aria-level that each accordion header will have. The default value is 2 as per W3C specifications\n * @group Props\n */\n get headerAriaLevel() {\n return this._headerAriaLevel;\n }\n set headerAriaLevel(val) {\n if (typeof val === 'number' && val > 0) {\n this._headerAriaLevel = val;\n }\n else if (this._headerAriaLevel !== 2) {\n this._headerAriaLevel = 2;\n }\n }\n /**\n * Callback to invoke when an active tab is collapsed by clicking on the header.\n * @param {AccordionTabCloseEvent} event - Custom tab close event.\n * @group Emits\n */\n onClose = new EventEmitter();\n /**\n * Callback to invoke when a tab gets expanded.\n * @param {AccordionTabOpenEvent} event - Custom tab open event.\n * @group Emits\n */\n onOpen = new EventEmitter();\n /**\n * Returns the active index.\n * @param {number | number[]} value - New index.\n * @group Emits\n */\n activeIndexChange = new EventEmitter();\n tabList;\n tabListSubscription = null;\n _activeIndex;\n _headerAriaLevel = 2;\n preventActiveIndexPropagation = false;\n tabs = [];\n constructor(el, changeDetector) {\n this.el = el;\n this.changeDetector = changeDetector;\n }\n onKeydown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onTabArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onTabArrowUpKey(event);\n break;\n case 'Home':\n this.onTabHomeKey(event);\n break;\n case 'End':\n this.onTabEndKey(event);\n break;\n }\n }\n onTabArrowDownKey(event) {\n const nextHeaderAction = this.findNextHeaderAction(event.target.parentElement.parentElement.parentElement);\n nextHeaderAction ? this.changeFocusedTab(nextHeaderAction) : this.onTabHomeKey(event);\n event.preventDefault();\n }\n onTabArrowUpKey(event) {\n const prevHeaderAction = this.findPrevHeaderAction(event.target.parentElement.parentElement.parentElement);\n prevHeaderAction ? this.changeFocusedTab(prevHeaderAction) : this.onTabEndKey(event);\n event.preventDefault();\n }\n onTabHomeKey(event) {\n const firstHeaderAction = this.findFirstHeaderAction();\n this.changeFocusedTab(firstHeaderAction);\n event.preventDefault();\n }\n changeFocusedTab(element) {\n if (element) {\n DomHandler.focus(element);\n if (this.selectOnFocus) {\n this.tabs.forEach((tab, i) => {\n let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;\n if (this.multiple) {\n if (!this._activeIndex) {\n this._activeIndex = [];\n }\n if (tab.id == element.id) {\n tab.selected = !tab.selected;\n if (!this._activeIndex.includes(i)) {\n this._activeIndex.push(i);\n }\n else {\n this._activeIndex = this._activeIndex.filter((ind) => ind !== i);\n }\n }\n }\n else {\n if (tab.id == element.id) {\n tab.selected = !tab.selected;\n this._activeIndex = i;\n }\n else {\n tab.selected = false;\n }\n }\n tab.selectedChange.emit(selected);\n this.activeIndexChange.emit(this._activeIndex);\n tab.changeDetector.markForCheck();\n });\n }\n }\n }\n findNextHeaderAction(tabElement, selfCheck = false) {\n const nextTabElement = selfCheck ? tabElement : tabElement.nextElementSibling;\n const headerElement = DomHandler.findSingle(nextTabElement, '[data-pc-section=\"header\"]');\n return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findNextHeaderAction(headerElement.parentElement.parentElement) : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')) : null;\n }\n findPrevHeaderAction(tabElement, selfCheck = false) {\n const prevTabElement = selfCheck ? tabElement : tabElement.previousElementSibling;\n const headerElement = DomHandler.findSingle(prevTabElement, '[data-pc-section=\"header\"]');\n return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findPrevHeaderAction(headerElement.parentElement.parentElement) : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')) : null;\n }\n findFirstHeaderAction() {\n const firstEl = this.el.nativeElement.firstElementChild.childNodes[0];\n return this.findNextHeaderAction(firstEl, true);\n }\n findLastHeaderAction() {\n const childNodes = this.el.nativeElement.firstElementChild.childNodes;\n const lastEl = childNodes[childNodes.length - 1];\n return this.findPrevHeaderAction(lastEl, true);\n }\n onTabEndKey(event) {\n const lastHeaderAction = this.findLastHeaderAction();\n this.changeFocusedTab(lastHeaderAction);\n event.preventDefault();\n }\n ngAfterContentInit() {\n this.initTabs();\n this.tabListSubscription = this.tabList.changes.subscribe((_) => {\n this.initTabs();\n });\n }\n initTabs() {\n this.tabs = this.tabList.toArray();\n this.tabs.forEach((tab) => {\n tab.headerAriaLevel = this._headerAriaLevel;\n });\n this.updateSelectionState();\n this.changeDetector.markForCheck();\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n updateSelectionState() {\n if (this.tabs && this.tabs.length && this._activeIndex != null) {\n for (let i = 0; i < this.tabs.length; i++) {\n let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;\n let changed = selected !== this.tabs[i].selected;\n if (changed) {\n this.tabs[i].selected = selected;\n this.tabs[i].selectedChange.emit(selected);\n this.tabs[i].changeDetector.markForCheck();\n }\n }\n }\n }\n isTabActive(index) {\n return this.multiple ? this._activeIndex && this._activeIndex.includes(index) : this._activeIndex === index;\n }\n getTabProp(tab, name) {\n return tab.props ? tab.props[name] : undefined;\n }\n updateActiveIndex() {\n let index = this.multiple ? [] : null;\n this.tabs.forEach((tab, i) => {\n if (tab.selected) {\n if (this.multiple) {\n index.push(i);\n }\n else {\n index = i;\n return;\n }\n }\n });\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(index);\n }\n ngOnDestroy() {\n if (this.tabListSubscription) {\n this.tabListSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Accordion, selector: \"p-accordion\", inputs: { multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", activeIndex: \"activeIndex\", selectOnFocus: \"selectOnFocus\", headerAriaLevel: \"headerAriaLevel\" }, outputs: { onClose: \"onClose\", onOpen: \"onOpen\", activeIndexChange: \"activeIndexChange\" }, host: { listeners: { \"keydown\": \"onKeydown($event)\" }, classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabList\", predicate: AccordionTab, descendants: true }], ngImport: i0, template: `\n
    \n \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Accordion, decorators: [{\n type: Component,\n args: [{\n selector: 'p-accordion',\n template: `\n
    \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { multiple: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], activeIndex: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], headerAriaLevel: [{\n type: Input\n }], onClose: [{\n type: Output\n }], onOpen: [{\n type: Output\n }], activeIndexChange: [{\n type: Output\n }], tabList: [{\n type: ContentChildren,\n args: [AccordionTab, { descendants: true }]\n }], onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\nclass AccordionModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule, ChevronRightIcon, ChevronDownIcon], exports: [Accordion, AccordionTab, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionModule, imports: [CommonModule, ChevronRightIcon, ChevronDownIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AccordionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ChevronRightIcon, ChevronDownIcon],\n exports: [Accordion, AccordionTab, SharedModule],\n declarations: [Accordion, AccordionTab]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Accordion, AccordionModule, AccordionTab };\n","
    \r\n\t\r\n\t\t{{field.props.label}}\r\n\t\t\r\n\t\t\t({{getRepeaterItemCount()}})\r\n\t\t\r\n\t\t 0\">\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tAdd {{field.props.singular}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tFieldType,\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-section-title',\r\n\ttemplateUrl: './custom-section-title.component.html',\r\n\tstyleUrls: ['./custom-section-title.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Section Title.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomSectionTitleComponent\r\n * @extends {FieldType}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class CustomSectionTitleComponent\r\n\textends FieldType\r\n\timplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\t@ViewChild('Tooltip')\r\n\tpublic tooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Sets the event emitter action to communicate to\r\n\t * implementing components that the add button was\r\n\t * clicked.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\t@Output() public addAction: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the interval that is used to limit the number of times\r\n\t * an item can be added per second. This allows repeater displays and\r\n\t * defaults sufficient time to complete.\r\n\t *\r\n\t * @type {NodeJS.Timeout}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic addItemInterval: NodeJS.Timeout;\r\n\r\n\t/**\r\n\t * Gets or sets the thruthy to determine if the section title is\r\n\t * at a top position at the layout.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic topSectionTitle: boolean;\r\n\r\n\t/**\r\n\t * Cleans and reutrns the current section title label\r\n\t * value. This value is set as an id which is used\r\n\t * for functions such as scrollTo throughout the site.\r\n\t *\r\n\t * @returns {string}\r\n\t * The cleaned identifier to be used as an id for this\r\n\t * section title.\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic get cleanLabelIdentifier(): string\r\n\t{\r\n\t\treturn StringHelper.getCleanedValue(\r\n\t\t\tthis.field.props.label) + this.sectionIdentifier;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the array that represents the existence of an item to be\r\n\t * added.\r\n\t *\r\n\t * @type {number[]}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tprivate readonly addItemTasks: number[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the name added to section title ids for tab\r\n\t * interaction.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tprivate readonly sectionIdentifier: string = 'Section';\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Adds a delayed interval watcher for requests to add an item.\r\n\t *\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.topSectionTitle = this.isTopSectionTitle();\r\n\r\n\t\tif (AnyHelper.isNull(this.field.fieldGroup)\r\n\t\t\t|| this.field.props.disabled === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setAddItemInterval();\r\n\t}\r\n\r\n\t/**\r\n\t * On destroy event.\r\n\t * Clears the add item subscription and the interval.\r\n\t *\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tclearInterval(this.addItemInterval);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns the count of displayed items in this repeater.\r\n\t *\r\n\t * @returns {number}\r\n\t * The count of all items in a repeater section that have a display value\r\n\t * of true.\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\t public getRepeaterItemCount(): number\r\n\t {\r\n\t\t return this.field.fieldGroup.filter(\r\n\t\t\t (field: FormlyFieldConfig) =>\r\n\t\t\t\t field.props.display === true).length;\r\n\t }\r\n\r\n\t/**\r\n\t * Emits the add action event to all listening components.\r\n\t * This signifies that the add button has been clicked.\r\n\t *\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic addItemAction(): void\r\n\t{\r\n\t\tthis.addItemTasks.push(1);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the add item interval.\r\n\t *\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tpublic setAddItemInterval(): void\r\n\t{\r\n\t\tthis.addItemInterval =\r\n\t\t\tsetInterval(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.addItemTasks.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.addItemTasks.pop();\r\n\t\t\t\t\t\tthis.addAction.emit();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the top section title definition.\r\n\t *\r\n\t * @memberof CustomSectionTitleComponent\r\n\t */\r\n\tprivate isTopSectionTitle(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNull(this.field.props.attributes)\r\n\t\t\t&& this.field.props.attributes[\r\n\t\t\t\tFormlyConstants.attributeKeys.fieldIndex] === 0;\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\n\r\n@Component({\r\n\tselector: 'field-validation-message',\r\n\ttemplateUrl: './field-validation-message.component.html',\r\n\tstyleUrls: [\r\n\t\t'./field-validation-message.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a field validation message.\r\n *\r\n * @export\r\n * @class FieldValidationMessageComponent\r\n */\r\nexport class FieldValidationMessageComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the field that is being validated.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof FieldValidationMessageComponent\r\n\t */\r\n\t@Input() public field: FormlyFieldConfig;\r\n}","\r\n\r\n\r\n
    \r\n\r\n\t\r\n\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\r\n\t
    \r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormArray\r\n} from '@angular/forms';\r\nimport {\r\n\tFieldArrayType,\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyFieldConfigCache,\r\n\tFormlyValueChangeEvent\r\n} from '@ngx-formly/core/lib/models';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\teach,\r\n\tisArray,\r\n\tisObject,\r\n\tunset\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tSubject,\r\n\tconcatAll,\r\n\tdebounceTime,\r\n\tfrom,\r\n\tinterval,\r\n\tmap,\r\n\ttake\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'custom-repeater',\r\n\ttemplateUrl: './custom-repeater.component.html',\r\n\tstyleUrls: ['./custom-repeater.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Repeater.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomRepeaterComponent\r\n * @extends {FieldArrayType}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class CustomRepeaterComponent\r\n\textends FieldArrayType\r\n\timplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CustomRepeaterComponent. This\r\n\t * explicit constructor was requested during an upgrade process and\r\n\t * should be left as implemented.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the value used to define if the add\r\n\t * item is visible in the section title.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic addItemVisible: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the array change observer subject which is called when an\r\n\t * item is added or removed.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic arrayChangeObserver:\r\n\t\tSubject = new Subject();\r\n\r\n\t/**\r\n\t * Handles a shared repeater item event by ensuring that any shared\r\n\t * repeaters are updated to hold the same values as the altered repeater.\r\n\t *\r\n\t * @param {string} repeaterKey\r\n\t * The repeater's data location key.\r\n\t * @param {string} repeaterFilter\r\n\t * The repeaters data filter for shared repeaters.\r\n\t * @param {string} repeaterAction\r\n\t * The add or remove repeater action.\r\n\t * @param {number} itemIndex\r\n\t * The item index added/removed to/from the repeater.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.repeaterItemAlteredEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.repeaterKey,\r\n\t\t\tAppEventParameterConstants.repeaterFilter,\r\n\t\t\tAppEventParameterConstants.repeaterAction,\r\n\t\t\tAppEventParameterConstants.itemIndex\r\n\t\t])\r\n\tpublic repeaterItemAltered(\r\n\t\trepeaterKey: string,\r\n\t\trepeaterFilter: string,\r\n\t\trepeaterAction: string,\r\n\t\titemIndex: number = null): void\r\n\t{\r\n\t\tif (this.field.key !== repeaterKey)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (AnyHelper.isNull(this.field.props.filter)\r\n\t\t\t|| this.field.props.filter === repeaterFilter)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNull(itemIndex)\r\n\t\t\t\t&& !AnyHelper.isNull(this.model))\r\n\t\t\t{\r\n\t\t\t\t// Cleaning the field item from model.\r\n\t\t\t\tthis.cleanModelField(\r\n\t\t\t\t\tthis.model[itemIndex],\r\n\t\t\t\t\titemIndex,\r\n\t\t\t\t\t(this.field.fieldArray)?.fieldGroup);\r\n\t\t\t}\r\n\r\n\t\t\t// Cleaning existing field items from model.\r\n\t\t\tthis.cleanExistingModelFields(this.field);\r\n\r\n\t\t\tthis.InitializeFormControls();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (repeaterAction === FormlyConstants.repeaterActions.add)\r\n\t\t{\r\n\t\t\tthis.options.build(this.field.parent);\r\n\t\t\tthis.options.fieldChanges.next(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: this.field.parent,\r\n\t\t\t\t\tvalue: {...this.field.parent.formControl.value},\r\n\t\t\t\t\ttype: FormlyConstants.valueChangeTypes.valueChanges\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.removeFromArray(\r\n\t\t\t\titemIndex,\r\n\t\t\t\tfalse);\r\n\t\t}\r\n\r\n\t\tthis.updateNestedRepeaterContext(this.field);\r\n\t\tthis.validateControl();\r\n\r\n\t\t// Cleaning existing field items from model.\r\n\t\tthis.cleanExistingModelFields(this.field);\r\n\t}\r\n\r\n\t/**\r\n\t * This will sync up the model for all existing repeater fields.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.repeaterCleanModelEvent)\r\n\tpublic repeaterModelSync(): void\r\n\t{\r\n\t\tthis.cleanExistingModelFields(this.field);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will setup minimum and max length validations depending\r\n\t * on the sent template options.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tconst canCreate: boolean =\r\n\t\t\tthis.field\r\n\t\t\t\t.props\r\n\t\t\t\t?.securityAccessPolicy\r\n\t\t\t\t?.rights\r\n\t\t\t\t?.create\r\n\t\t\t\t?? false;\r\n\r\n\t\tthis.addItemVisible =\r\n\t\t\t!this.field.props.disabled\r\n\t\t\t\t&& canCreate;\r\n\r\n\t\tthis.field.props.removeAddItem =\r\n\t\t\tthis.removeAddItem.bind(this);\r\n\r\n\t\tthis.updateNestedRepeaterContext(\r\n\t\t\tthis.field);\r\n\r\n\t\t// Run an overall validation check after adds of multiple items.\r\n\t\tthis.arrayChangeObserver.pipe(\r\n\t\t\tdebounceTime(AppConstants.time.quarterSecond))\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.addItemVisible =\r\n\t\t\t\t\t\t!this.field.props.disabled\r\n\t\t\t\t\t\t\t&& canCreate;\r\n\r\n\t\t\t\t\tFormlyHelper.fireViewCheck(\r\n\t\t\t\t\t\tthis.field.fieldGroup);\r\n\r\n\t\t\t\t\tthis.fireChanges();\r\n\t\t\t\t});\r\n\r\n\t\tthis.field.fieldGroup.forEach(\r\n\t\t\t(fieldGroup: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tfieldGroup.props.display =\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tthis.field.props.filter)\r\n\t\t\t\t\t\t? StringHelper\r\n\t\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\t\tthis.field.props.filter,\r\n\t\t\t\t\t\t\t\tthis.field.props.context)(fieldGroup)\r\n\t\t\t\t\t\t: true;\r\n\t\t\t});\r\n\r\n\t\tthis.cleanExistingModelFields(this.field);\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.field.props.minimumNumber)\r\n\t\t\t|| !AnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.field.props.maximumNumber))\r\n\t\t{\r\n\t\t\tthis.validateControl();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!(this.field.props.minItems > 0\r\n\t\t\t|| this.field.props.maxItems > 0))\r\n\t\t{\r\n\t\t\tthis.validateControl();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setRepeaterCountValidity();\r\n\t\tthis.validateControl();\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the add item button from the section title.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic removeAddItem(): void\r\n\t{\r\n\t\tthis.addItemVisible = false;\r\n\t}\r\n\r\n\t/**\r\n\t * On destroy event.\r\n\t * This will complete and observables or subscriptions on this component.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.arrayChangeObserver.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Reaches into the field currently being displayed and sets the\r\n\t * context value for each nested fieldgroup.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The field value used to set nested repeater context values.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic updateNestedRepeaterContext(\r\n\t\tfield: FormlyFieldConfig): void\r\n\t{\r\n\t\t// Make sure new controls are not linked by name as we want\r\n\t\t// each field to validate standalone.\r\n\t\tif (!AnyHelper.isNull((field.formControl)?._fields))\r\n\t\t{\r\n\t\t\tdelete (field.formControl)._fields;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull((field.formControl)?._controls)\r\n\t\t\t&& isArray((field.formControl)?._controls))\r\n\t\t{\r\n\t\t\tfor (const nestedField of (field.formControl)?._controls)\r\n\t\t\t{\r\n\t\t\t\tif (!AnyHelper.isNull(nestedField.formControl?._fields))\r\n\t\t\t\t{\r\n\t\t\t\t\tdelete nestedField.formControl._fields;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfield.fieldGroup?.forEach(\r\n\t\t\t(fieldGroupItem: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tfieldGroupItem.props.context =\r\n\t\t\t\t\tthis.field.props.context;\r\n\r\n\t\t\t\tthis.updateNestedRepeaterContext(fieldGroupItem);\r\n\t\t\t});\r\n\r\n\t\t(field.fieldArray)?.fieldGroup.forEach(\r\n\t\t\t(fieldArrayItem: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tfieldArrayItem.props.context =\r\n\t\t\t\t\tthis.field.props.context;\r\n\r\n\t\t\t\tthis.updateNestedRepeaterContext(fieldArrayItem);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on tab expand event sent from the accordion component.\r\n\t * This will fire a view check on the expanded item to ensure the latest\r\n\t * business rules are applied.\r\n\t *\r\n\t * @param {number} itemIndex\r\n\t * The item index that received the expand event.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic onTabExpand(\r\n\t\titemIndex: number): void\r\n\t{\r\n\t\tthis.updateViewValidations(itemIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * A decoration method to the formly add function allowing\r\n\t * this component to mark the form as dirty on adding an\r\n\t * array data item.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic addItem(): void\r\n\t{\r\n\t\tthis.addToArray(\r\n\t\t\tnull,\r\n\t\t\tthis.field.props.initialItemValue);\r\n\r\n\t\tconst newItemIndex: number = this.field.fieldGroup.length - 1;\r\n\t\tthis.updateNestedRepeaterContext(this.field);\r\n\t\tthis.field.fieldGroup[newItemIndex]\r\n\t\t\t.props.display = true;\r\n\r\n\t\tthis.updateNestedRepeaterContext(\r\n\t\t\tthis.field.fieldGroup[newItemIndex]);\r\n\t\tthis.validateControl();\r\n\r\n\t\tthis.updateViewValidations(newItemIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * A decoration method to the formly add function allowing\r\n\t * this component to update all listening shared repeaters.\r\n\t *\r\n\t * @param {number} itemIndex\r\n\t * If sent this will add the item to the sent index, this value defaults\r\n\t * to the last item in the array.\r\n\t * @param {any} initialModel\r\n\t * If sent this will create the new item with this sent object as it's\r\n\t * data structure. This value will default to an empty object.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic addToArray(\r\n\t\titemIndex?: number,\r\n\t\tinitialModel?: any)\r\n\t{\r\n\t\tconst newItemIndex: number =\r\n\t\t\tAnyHelper.isNullOrEmpty(itemIndex)\r\n\t\t\t\t? this.field.fieldGroup.length\r\n\t\t\t\t: itemIndex;\r\n\r\n\t\tif (AnyHelper.isNull(this.model))\r\n\t\t{\r\n\t\t\tthis.field.formControl.setValue([]);\r\n\t\t}\r\n\r\n\t\tthis.model.splice(\r\n\t\t\tnewItemIndex,\r\n\t\t\t0,\r\n\t\t\tinitialModel\r\n\t\t\t\t? {...initialModel}\r\n\t\t\t\t: undefined);\r\n\r\n\t\tthis.options.build(this.field.parent);\r\n\t\tthis.options.fieldChanges.next(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tfield: this.field.parent,\r\n\t\t\t\tvalue: {...this.field.parent.formControl.value},\r\n\t\t\t\ttype: FormlyConstants.valueChangeTypes.valueChanges\r\n\t\t\t});\r\n\r\n\t\tthis.alignInitialItemValues(\r\n\t\t\tnewItemIndex,\r\n\t\t\tinitialModel);\r\n\r\n\t\tEventHelper.dispatchRepeaterItemAlteredEvent(\r\n\t\t\tthis.field.key.toString(),\r\n\t\t\tthis.field.props.filter,\r\n\t\t\tFormlyConstants.repeaterActions.add,\r\n\t\t\tnewItemIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * A decoration method to the formly delete function allowing\r\n\t * this component to mark the form as dirty on deleting an\r\n\t * array data item.\r\n\t *\r\n\t * @param {FormlyFieldConfig} fieldToRemove\r\n\t * The item being deleted.\r\n\t * @param {Event} event\r\n\t * The remove item event.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic removeItem(\r\n\t\tfieldToRemove: FormlyFieldConfig,\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tconst itemIndex: number =\r\n\t\t\tthis.field.fieldGroup.indexOf(fieldToRemove);\r\n\r\n\t\tthis.removeFromArray(itemIndex);\r\n\t\tthis.updateNestedRepeaterContext(this.field);\r\n\t\tthis.validateControl(event);\r\n\r\n\t\tEventHelper.dispatchRepeaterItemAlteredEvent(\r\n\t\t\tthis.field.key.toString(),\r\n\t\t\tthis.field.props.filter,\r\n\t\t\tFormlyConstants.repeaterActions.remove,\r\n\t\t\titemIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the validity of the current repeater if a maximum item\r\n\t * or minimum item property exists or true if not defined.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * The current validity of the repeater length.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic hasAValidRepeaterCount(\r\n\t\tcontrol: AbstractControl): boolean\r\n\t{\r\n\t\tconst minItems: number =\r\n\t\t\tthis.field.props.minItems;\r\n\t\tconst maxItems: number =\r\n\t\t\tthis.field.props.maxItems;\r\n\r\n\t\treturn (AnyHelper.isNull(minItems)\r\n\t\t\t? true\r\n\t\t\t: control.value.length >= minItems)\r\n\t\t\t&& (AnyHelper.isNull(maxItems)\r\n\t\t\t\t? true\r\n\t\t\t\t: control.value.length <= maxItems);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the disabled value of the current repeater item as true if all\r\n\t * fields in the item are disabled. This is used to hide or show the\r\n\t * delete action on the item.\r\n\t *\r\n\t * @param {FormlyFieldConfig} customField\r\n\t * The field configuration for the repeater item.\r\n\t * @returns {boolean}\r\n\t * The current disabled value of the repeater item.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic isDisabledItem(\r\n\t\tcustomField: FormlyFieldConfig): boolean\r\n\t{\r\n\t\treturn customField.fieldGroup.filter(\r\n\t\t\t(item: FormlyFieldConfig) =>\r\n\t\t\t\titem.key !== AppConstants.commonProperties.resourceIdentifier\r\n\t\t\t\t\t&& item.props.disabled !== true)\r\n\t\t\t.length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a custom title to be used for displaying this repeater item.\r\n\t * This can be customized via the props.titleFormat value in\r\n\t * the entity layout. This performs similar to string interpolation\r\n\t * except only if values exist for all requested properties will the\r\n\t * titleFormat result be returned.\r\n\t * @summary\r\n\t * A title format of '{city}, {state}' will find the controls in this\r\n\t * repeater item with these matching keys and replace the bracketed\r\n\t * property names with their value. This will then prepend the singular\r\n\t * item type as well as the item index as a word.\r\n\t * ie. Location One: Butte, MT.\r\n\t *\r\n\t * @param {number} itemIndex\r\n\t * The item index for which the header is being generated for.\r\n\t * @param {FormlyFieldConfig} currentField\r\n\t * The current field group for which the header is being generated for.\r\n\t * @returns {string}\r\n\t * The title with values parsed from the object matching the title\r\n\t * format of this repeater type.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tpublic getCustomTitle(\r\n\t\tcurrentField: FormlyFieldConfig): string\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.field))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst customFieldGroup: FormlyFieldConfig[] =\r\n\t\t\tthis.field.fieldGroup.filter(\r\n\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\tfield.props.display === true);\r\n\t\tconst itemIndex: number =\r\n\t\t\tcustomFieldGroup.indexOf(currentField);\r\n\r\n\t\tconst indexNumberAsWord: string =\r\n\t\t\tStringHelper.numberToWords(\r\n\t\t\t\t(itemIndex + 1).toString(),\r\n\t\t\t\ttrue);\r\n\t\tconst itemIdentifier: string =\r\n\t\t\tthis.field.props.singular\r\n\t\t\t\t+ ' '\r\n\t\t\t\t+ indexNumberAsWord;\r\n\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.field.props.titleFormat))\r\n\t\t{\r\n\t\t\treturn itemIdentifier;\r\n\t\t}\r\n\r\n\t\tconst words: IKeyValuePair[] =\r\n\t\t\tthis.getCurrentItemTitleValues(\r\n\t\t\t\tcurrentField,\r\n\t\t\t\tthis.field.props.titleFormat);\r\n\r\n\t\tconst isPartialTitleMatch: boolean =\r\n\t\t\twords.some((keyValuePair: IKeyValuePair) =>\r\n\t\t\t\t!AnyHelper.isNullOrWhitespace(keyValuePair.value));\r\n\r\n\t\tif (isPartialTitleMatch === false)\r\n\t\t{\r\n\t\t\treturn itemIdentifier;\r\n\t\t}\r\n\r\n\t\tlet formattedTitle: string =\r\n\t\t\tthis.field.props.titleFormat;\r\n\r\n\t\twords.forEach(\r\n\t\t\t(keyValuePair: IKeyValuePair) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(keyValuePair.value))\r\n\t\t\t\t{\r\n\t\t\t\t\tformattedTitle = formattedTitle.replace(\r\n\t\t\t\t\t\tkeyValuePair.key,\r\n\t\t\t\t\t\tAppConstants.empty);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tconst fieldKey: string =\r\n\t\t\t\t\t\tStringHelper\r\n\t\t\t\t\t\t\t.getCleanedValue(\r\n\t\t\t\t\t\t\t\tkeyValuePair.key,\r\n\t\t\t\t\t\t\t\t['{', '}']);\r\n\r\n\t\t\t\t\tconst formlyField: FormlyFieldConfig =\r\n\t\t\t\t\t\tcurrentField.get(fieldKey);\r\n\r\n\t\t\t\t\tif (formlyField\r\n\t\t\t\t\t\t&& formlyField.type\r\n\t\t\t\t\t\t\t=== FormlyConstants.customControls.customSelect)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst options: IDropdownOption[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tformlyField.props.options;\r\n\r\n\t\t\t\t\t\tconst option: IDropdownOption =\r\n\t\t\t\t\t\t\toptions.find((dropdownOption: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\tdropdownOption.value === keyValuePair.value);\r\n\r\n\t\t\t\t\t\tformattedTitle = formattedTitle.replace(\r\n\t\t\t\t\t\t\tkeyValuePair.key,\r\n\t\t\t\t\t\t\toption.label);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformattedTitle = formattedTitle.replace(\r\n\t\t\t\t\t\t\tkeyValuePair.key,\r\n\t\t\t\t\t\t\tkeyValuePair.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tformattedTitle =\r\n\t\t\tformattedTitle\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t/(^\\s-\\s|^\\s*|\\s-\\s+$|\\s+$)/g,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst customFormattedTitle: string =\r\n\t\t\tthis.field.props.hideSingularIdentifier === true\r\n\t\t\t\t? formattedTitle\r\n\t\t\t\t: `${itemIdentifier}: ${formattedTitle}`;\r\n\r\n\t\treturn customFormattedTitle;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a current item in the repeater set, this will return\r\n\t * the cleaned set of keys and values that match the title format.\r\n\t * @summary\r\n\t * A title format of '{city}, {state}' will find the controls in this\r\n\t * repeater item with these matching keys and return an array of\r\n\t * key value pairs with a key of {city}, and a value of the form controls\r\n\t * value in the UI. If the value is an empty string or null, null is\r\n\t * returned.\r\n\t *\r\n\t * @param {FormlyFieldConfig} currentItem\r\n\t * The current repeater item.\r\n\t * @param {string} titleFormat\r\n\t * The title format being used to return the set of associated key value\r\n\t * pairs of data for this item's custom title.\r\n\t * @returns {IKeyValuePair[]}\r\n\t * The set of key value pairs with the key word and value matching the title\r\n\t * format word tokens.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate getCurrentItemTitleValues(\r\n\t\tcurrentItem: FormlyFieldConfig,\r\n\t\ttitleFormat: string): IKeyValuePair[]\r\n\t{\r\n\t\tconst wordTokens: RegExpMatchArray =\r\n\t\t\ttitleFormat.match(/{[\\w.\\d]+}/g);\r\n\t\tconst words: IKeyValuePair[] = [];\r\n\r\n\t\twordTokens.forEach(\r\n\t\t\t(wordToken: string) =>\r\n\t\t\t{\r\n\t\t\t\tconst titleControl: FormlyFieldConfig[] =\r\n\t\t\t\t\tcurrentItem.fieldGroup\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(item: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tAnyHelper.isNullOrWhitespace(item.key)\r\n\t\t\t\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t\t\t\t: (item.key.toString())\r\n\t\t\t\t\t\t\t\t\t\t.indexOf(\r\n\t\t\t\t\t\t\t\t\t\t\tStringHelper\r\n\t\t\t\t\t\t\t\t\t\t\t\t.getCleanedValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twordToken,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t['{', '}'])) === 0);\r\n\r\n\t\t\t\tconst titleControlValue: string =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(titleControl)\r\n\t\t\t\t\t\t&& titleControl.length > 0\r\n\t\t\t\t\t\t? titleControl[0].formControl.value\r\n\t\t\t\t\t\t: null;\r\n\r\n\t\t\t\tlet wordValue: string = titleControlValue;\r\n\t\t\t\tif (DateTime.fromISO(titleControlValue).isValid === true\r\n\t\t\t\t\t&& titleControl[0].type ===\r\n\t\t\t\t\t\tFormlyConstants.customControls.customCalendar)\r\n\t\t\t\t{\r\n\t\t\t\t\twordValue =\r\n\t\t\t\t\t\tDateTime\r\n\t\t\t\t\t\t\t.fromISO(\r\n\t\t\t\t\t\t\t\ttitleControlValue)\r\n\t\t\t\t\t\t\t.toFormat(\r\n\t\t\t\t\t\t\t\tDateHelper.presetFormats.longDateFormat);\r\n\t\t\t\t}\r\n\t\t\t\telse if (!AnyHelper.isNullOrWhitespace(titleControlValue)\r\n\t\t\t\t\t&& titleControl[0].type ===\r\n\t\t\t\t\t\tFormlyConstants.customControls.customInputNumber\r\n\t\t\t\t\t&& titleControl[0].props.useCurrency === true)\r\n\t\t\t\t{\r\n\t\t\t\t\twordValue =\r\n\t\t\t\t\t\tStringHelper.format(\r\n\t\t\t\t\t\t\ttitleControlValue,\r\n\t\t\t\t\t\t\tAppConstants.formatTypes.currency);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twords.unshift(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: wordToken,\r\n\t\t\t\t\t\tvalue: !AnyHelper.isNullOrEmpty(wordValue)\r\n\t\t\t\t\t\t\t? wordValue\r\n\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn words;\r\n\t}\r\n\r\n\t/**\r\n\t * Attaches a minimum and maximum-length validator to the repeater control\r\n\t * based on the sent minItems and maxItems properties.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate setRepeaterCountValidity(): void\r\n\t{\r\n\t\tthis.field.validators = this.field.validators || {};\r\n\r\n\t\tconst minItems: number =\r\n\t\t\tthis.field.props.minItems;\r\n\t\tconst maxItems: number =\r\n\t\t\tthis.field.props.maxItems;\r\n\t\tconst minItemMessage: string = minItems > 1\r\n\t\t\t? 'items are'\r\n\t\t\t: 'item is';\r\n\t\tconst maxItemMessage: string = maxItems > 1\r\n\t\t\t? 'items are'\r\n\t\t\t: 'item is';\r\n\r\n\t\tthis.field.validators.arrayLength = {\r\n\t\t\texpression: (control: AbstractControl) =>\r\n\t\t\t\tthis.hasAValidRepeaterCount(control),\r\n\t\t\tmessage: AnyHelper.isNull(maxItems)\r\n\t\t\t\t? `At least ${minItems} ${minItemMessage} required.`\r\n\t\t\t\t: `Between ${minItems || 0} `\r\n\t\t\t\t\t+ `and ${maxItems} ${maxItemMessage} required.`\r\n\t\t};\r\n\r\n\t\tthis.validateControl();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the existing control with a set as touched and a call to update\r\n\t * value and validity.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The validate control item event.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate validateControl(event?: Event): void\r\n\t{\r\n\t\tthis.field.formControl.markAsDirty();\r\n\t\tthis.field.formControl.markAllAsTouched();\r\n\t\tthis.field.formControl.updateValueAndValidity();\r\n\t\tthis.fireChanges(event);\r\n\t}\r\n\r\n\t/**\r\n\t * Fires a change detection cycle allowing the form to broadcast changes\r\n\t * to the listening component.\r\n\t * @note This can likely be removed with an upgraded Formly as this is\r\n\t * a workaround to the view not aligning to the state of the formcontrol.\r\n\t * This was required starting with Formly v6.0.0-next.1.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The fire changes item event.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate fireChanges(event?: Event): void\r\n\t{\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tif (AnyHelper.isFunction(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Implements a limited set of the existing formly remove method that\r\n\t * ensures compatibility with our any of repeaters.\r\n\t *\r\n\t * @param {number} itemIndex\r\n\t * The array item index to be removed.\r\n\t * @param {boolean} removeFromModel\r\n\t * A value signifying whether or not this remove call should remove from\r\n\t * the component level model property.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate removeFromArray(\r\n\t\titemIndex: number,\r\n\t\tremoveFromModel: boolean = true): void\r\n\t{\r\n\t\tif (removeFromModel === true)\r\n\t\t{\r\n\t\t\tthis.model.splice(itemIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.unregisterControl(\r\n\t\t\tthis.field.fieldGroup[itemIndex],\r\n\t\t\ttrue);\r\n\r\n\t\tthis.field.fieldGroup.splice(\r\n\t\t\titemIndex,\r\n\t\t\t1);\r\n\r\n\t\tthis.field.fieldGroup.forEach(\r\n\t\t\t(field: FormlyFieldConfig,\r\n\t\t\t\tkey: string | number) =>\r\n\t\t\t\tfield.key = `${key}`);\r\n\t}\r\n\r\n\t/**\r\n\t * A shared set of logic that will un-register a control similar to the\r\n\t * unregister on the field array type this component extends.\r\n\t *\r\n\t * @param {FormlyFieldConfigCache} field\r\n\t * The formly field config that should be unregistered.\r\n\t * @param {boolean} emitEvent\r\n\t * A value signifying whether or not this event should be emitted when\r\n\t * complete.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate unregisterControl(\r\n\t\tfield: FormlyFieldConfigCache,\r\n\t\temitEvent: boolean = false): void\r\n\t{\r\n\t\tconst control: any = field.formControl;\r\n\t\tconst fieldIndex =\r\n\t\t\t(control)._fields\r\n\t\t\t\t? (control)._fields.indexOf(field)\r\n\t\t\t\t: -1;\r\n\t\tif (fieldIndex !== -1)\r\n\t\t{\r\n\t\t\t(control)._fields.splice(\r\n\t\t\t\tfieldIndex,\r\n\t\t\t\t1);\r\n\t\t}\r\n\r\n\t\tconst formArray =\r\n\t\t\tcontrol.parent as UntypedFormArray;\r\n\r\n\t\tif (AnyHelper.isNull(formArray)\r\n\t\t\t|| AnyHelper.isNull(formArray.controls.findIndex))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst key =\r\n\t\t\tformArray.controls.findIndex(\r\n\t\t\t\t(formControl: AbstractControl) =>\r\n\t\t\t\t\tformControl === control);\r\n\r\n\t\tif (key !== -1)\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNull(formArray.removeAt))\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tformArray.removeAt(\r\n\t\t\t\tkey,\r\n\t\t\t\t{ emitEvent });\r\n\t\t}\r\n\r\n\t\tcontrol.setParent(null);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will run a validation check on the sent item index in this\r\n\t * displayed repeater.\r\n\t *\r\n\t * @param {number} itemIndex\r\n\t * The item index that will need to run an explicit validation check.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate updateViewValidations(\r\n\t\titemIndex: number): void\r\n\t{\r\n\t\tfrom([0, .25])\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((intervalTime: number) =>\r\n\t\t\t\t\tinterval(intervalTime * 1000)\r\n\t\t\t\t\t\t.pipe(take(1))),\r\n\t\t\t\tconcatAll())\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (AnyHelper.isNull(this.field.fieldGroup[itemIndex])\r\n\t\t\t\t\t\t|| this.field.fieldGroup[itemIndex]\r\n\t\t\t\t\t\t\t.props.display === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.updateNestedRepeaterContext(\r\n\t\t\t\t\t\tthis.field.fieldGroup[itemIndex]);\r\n\r\n\t\t\t\t\tFormlyHelper.fireViewCheck(\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\tthis.field.fieldGroup[itemIndex]\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\tthis.fireChanges();\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This method will run the logic required to make sure that a newly added\r\n\t * item will hold the same properties as the sent initial model. This value\r\n\t * exists in the fields template options under the property name of\r\n\t * 'initialItemValue'.\r\n\t *\r\n\t * @param {number} newItemIndex\r\n\t * The new item index that needs to be aligned with the initial model.\r\n\t * @param {any} initialModel\r\n\t * The initial model value that we need to set.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate alignInitialItemValues(\r\n\t\tnewItemIndex: number,\r\n\t\tinitialModel: any): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.model[newItemIndex]))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.model[newItemIndex] =\r\n\t\t\t{\r\n\t\t\t\t...this.model[newItemIndex] || {},\r\n\t\t\t\t...initialModel\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if there are any existing repeater fields displayed\r\n\t * and clean performs a clean model action to each.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The repeater field to look for existing related repeater items to clean.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate cleanExistingModelFields(field: FormlyFieldConfig): void\r\n\t{\r\n\t\tconst existingFieldItems: FormlyFieldConfig[] =\r\n\t\t\tfield?.fieldGroup.filter((item) =>\r\n\t\t\t\titem.props.display === true);\r\n\r\n\t\tif (AnyHelper.isNull(existingFieldItems)\r\n\t\t\t|| existingFieldItems.length === 0\r\n\t\t\t|| AnyHelper.isNull(this.model))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\texistingFieldItems.forEach((existingFieldItem) =>\r\n\t\t{\r\n\t\t\tthis.cleanModelField(\r\n\t\t\t\tthis.model[existingFieldItem.key],\r\n\t\t\t\texistingFieldItem.key,\r\n\t\t\t\texistingFieldItem.fieldGroup);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a model clean for the repeater field based\r\n\t * on the existing formGroup schema properties by removing\r\n\t * from the model array those data items that do not match.\r\n\t *\r\n\t * @param {object} model\r\n\t * The given model to check.\r\n\t * @param {object} fieldIndexInModel\r\n\t * The index of the model that relates\r\n\t * with the field repeater item.\r\n\t * @param {FormlyFieldConfig[]} fieldGroup\r\n\t * The to check if any field matches the key path in the model.\r\n\t * This will unset/remove the build model item in case\r\n\t * the key path is found as part of the fieldFormGroup.\r\n\t * @param {string} parentKey\r\n\t * In case of nested object this will add the key predecesor.\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate cleanModelField(\r\n\t\tmodel: object,\r\n\t\tfieldIndexInModel: number,\r\n\t\tfieldGroup: FormlyFieldConfig[],\r\n\t\tparentKey: string = AppConstants.empty)\r\n\t{\r\n\t\tif (AnyHelper.isNull(model))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\teach(Object.keys(model),\r\n\t\t\t(item: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst nestedObjectKey: string =\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(parentKey)\r\n\t\t\t\t\t \t? `${parentKey}.${item}`\r\n\t\t\t\t\t\t: item;\r\n\r\n\t\t\t\tconst dataKey: string =\r\n\t\t\t\t\t!isNaN(parseInt(\r\n\t\t\t\t\t\titem,\r\n\t\t\t\t\t\tAppConstants.parseRadix))\r\n\t\t\t\t\t\t? `${parentKey}[${item}]`\r\n\t\t\t\t\t\t: nestedObjectKey;\r\n\r\n\t\t\t\tif (isObject(model[item]))\r\n\t\t\t\t{\r\n\t\t\t\t\tif (isArray(model[item]))\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tif (!fieldGroup.some((field) =>\r\n\t\t\t\t\t\t\tfield.key?.toString().indexOf(dataKey) >= 0))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tunset(\r\n\t\t\t\t\t\t\t\tthis.model[fieldIndexInModel],\r\n\t\t\t\t\t\t\t\tdataKey);\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.cleanModelField(\r\n\t\t\t\t\t\tmodel[item],\r\n\t\t\t\t\t\tfieldIndexInModel,\r\n\t\t\t\t\t\tfieldGroup,\r\n\t\t\t\t\t\tdataKey);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a form controls initialization for the repeater.\r\n\t * This makes sure that form controls are synch within the model.\r\n\t * This fixes an internal error when using the same model key value on a\r\n\t * repeater but also on plain formly layout controls.\r\n\t *\r\n\t * @memberof CustomRepeaterComponent\r\n\t */\r\n\tprivate InitializeFormControls(): void\r\n\t{\r\n\t\tif (this.field.formControl.controls != null)\r\n\t\t{\r\n\t\t\tthis.field.formControl.controls = [];\r\n\t\t}\r\n\t}\r\n}","import baseUnset from './_baseUnset.js';\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n}\n\nexport default unset;\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tDirective,\r\n\tElementRef,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\n\r\n@Directive({\r\n\tselector: '[ExtendedCustomControl]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a formly custom control.\r\n *\r\n * @export\r\n * @extends {FieldType}\r\n * @implements {OnInit}\r\n * @class ExtendedCustomControlDirective\r\n */\r\nexport class ExtendedCustomControlDirective\r\n\textends FieldType\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the ExtendedCustomControlDirective.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\t@ViewChild('Tooltip')\r\n\tpublic tooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the input style class value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic inputStyleClass: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to extend the update value and validity method\r\n\t * of this form control to include change detection.\r\n\t * @note If overriding this in an implementing component, super.ngOnInit()\r\n\t * should be called at the end of the on initialization override.\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tFormlyHelper.extendUpdateValueAndValidity(\r\n\t\t\tthis.field.formControl,\r\n\t\t\tthis.updateCustomDisplay.bind(this));\r\n\r\n\t\tif (!AnyHelper.isNull(this.field.props?.default)\r\n\t\t\t&& AnyHelper.isNull(this.field.formControl.value))\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\tthis.field.props.default);\r\n\r\n\t\t\t\t\tthis.validateControl();\r\n\r\n\t\t\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tthis.field.props.change))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.field.props.change(\r\n\t\t\t\t\t\t\tthis.field,\r\n\t\t\t\t\t\t\t{});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.validateControl();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the existing control with a set as touched and a call to update\r\n\t * value and validity.\r\n\t *\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic validateControl(): void\r\n\t{\r\n\t\tthis.field.formControl.markAsTouched();\r\n\t\tthis.field.formControl.updateValueAndValidity();\r\n\r\n\t\tthis.fireChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and sets the input style class to be used in this control for\r\n\t * invalid control decorations.\r\n\t *\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic updateCustomDisplay(): void\r\n\t{\r\n\t\tthis.inputStyleClass =\r\n\t\tthis.field.formControl.status ===\r\n\t\t\tFormlyConstants.controlStatus.invalid\r\n\t\t\t? AppConstants.cssClasses.invalid\r\n\t\t\t: AppConstants.empty;\r\n\t\tthis.fireChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Fires a change detection cycle allowing the form to broadcast changes\r\n\t * to the listening component.\r\n\t * @note This can likely be removed with an upgraded Formly as this is\r\n\t * a workaround to the view not aligning to the state of the formcontrol.\r\n\t * This was required starting with Formly v6.0.0-next.1.\r\n\t *\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic fireChanges(): void\r\n\t{\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the tap mobile only event on the tooltip icon\r\n\t * and toggle the display of the tooltip.\r\n\t *\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic mobileTooltipToggle(): void\r\n\t{\r\n\t\tthis.tooltip.nativeElement.dispatchEvent(\r\n\t\t\tnew Event(MouseEventConstants.mouseEnter));\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @memberof ExtendedCustomControlDirective\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n}","\r\n\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'custom-calendar',\r\n\ttemplateUrl: './custom-calendar.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-calendar.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Calendar.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomCalendarComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomCalendarComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the CustomCalendarComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the display date.\r\n\t *\r\n\t * @type {Date}\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic displayDate: Date;\r\n\r\n\t/**\r\n\t * Gets or sets the refesh calendar value. This is used to ensure a bug in\r\n\t * primeNg layout change closed calendars no longer reopen on next click.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic refreshCalendar: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\t// This timeout chain is used to redraw the calendar without flashing.\r\n\t\t// This method can be removed when PrimeNG corrects their calendar.\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.refreshCalendar = true;\r\n\t\t});\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.refreshCalendar = false;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this calendar when an associated menu is\r\n\t * opened via a non bubbled event, such as a sibling navigation menu.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\t_controlIdentifer: string): void\r\n\t{\r\n\t\tthis.siteLayoutChanged();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization interface.\r\n\t * This will capture the saved date and time, and translate\r\n\t * this into a date and locale time for use in this component.\r\n\t *\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.field.props.setDisplayDate =\r\n\t\t\tthis.setDisplayDate.bind(this);\r\n\r\n\t\tthis.setDisplayDate(\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.field.formControl.value)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tthis.field.props.default)\r\n\t\t\t\t? this.getDefaultDate()\r\n\t\t\t\t: this.field.formControl.value);\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.displayDate)\r\n\t\t\t&& this.field.props.required === true)\r\n\t\t{\r\n\t\t\tthis.field.props.disabled = false;\r\n\t\t}\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a new calendar display date.\r\n\t *\r\n\t * @param {string} displayDate\r\n\t * The date string on UTC ISO.\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic setDisplayDate(displayDate: string = null): void\r\n\t{\r\n\t\tif (DateHelper.fromSimulatedLocalDateToUtcSystemIso(\r\n\t\t\tDateTime.fromJSDate(this.displayDate)\r\n\t\t\t\t.toISO()) === displayDate)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayDate =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(displayDate)\r\n\t\t\t\t? DateHelper.fromUtcSystemIsoToSimulatedLocalDate(\r\n\t\t\t\t\tdisplayDate)\r\n\t\t\t\t: null;\r\n\r\n\t\tthis.dateChange(null);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the calendar input or select date event.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The event that sent this action.\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tpublic dateChange(\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tconst inputDate: string = (event?.target)?.value;\r\n\r\n\t\tif (this.field.props?.view === DateHelper.timeUnits.year\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(inputDate))\r\n\t\t{\r\n\t\t\tconst inputYear: number = parseInt(\r\n\t\t\t\tinputDate,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\t\tif (inputYear >= 1000 && inputYear <= 9999)\r\n\t\t\t{\r\n\t\t\t\tconst yearDateTime: DateTime =\r\n\t\t\t\t\tDateHelper.startOf(\r\n\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t`${inputYear}-06-01T00:00:00.000`),\r\n\t\t\t\t\t\tDateHelper.timeUnits.year);\r\n\r\n\t\t\t\tthis.displayDate = DateHelper\r\n\t\t\t\t\t.fromUtcSystemIsoToSimulatedLocalDate(\r\n\t\t\t\t\t\tyearDateTime.toISO());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst newDateIso: string =\r\n\t\t\t!AnyHelper.isNull(this.displayDate)\r\n\t\t\t\t? DateHelper.fromSimulatedLocalDateToUtcSystemIso(\r\n\t\t\t\t\tDateTime.fromJSDate(\r\n\t\t\t\t\t\tthis.displayDate)\r\n\t\t\t\t\t\t.toISO())\r\n\t\t\t\t: null;\r\n\r\n\t\tthis.field.formControl.setValue(newDateIso);\r\n\t\tthis.validateControl();\r\n\r\n\t\tif (!AnyHelper.isNull(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves the default date string.\r\n\t *\r\n\t * @memberof CustomCalendarComponent\r\n\t */\r\n\tprivate getDefaultDate(): string\r\n\t{\r\n\t\treturn this.field.props.useDefaultFunction === true\r\n\t\t\t? StringHelper.transformToFunction(\r\n\t\t\t\tthis.field.props.default,\r\n\t\t\t\tthis.field.props.context)()\r\n\t\t\t: this.field.props.default;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\n\r\n@Component({\r\n\tselector: 'custom-checkbox',\r\n\ttemplateUrl: './custom-checkbox.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-checkbox.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Checkbox.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomCheckboxComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n */\r\nexport class CustomCheckboxComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/** Initializes a new instance of the CustomCheckboxComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomCheckboxComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the checkbox text to be displayed.\r\n\t *\r\n\t * @type {String}\r\n\t * @memberof CustomCheckboxComponent\r\n\t */\r\n\t public checkboxText: string;\r\n}","
    \r\n\t\r\n\t\r\n\t\r\n
    \r\n\r\n\r\n","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\n@Component({\r\n\tselector: 'custom-dashboard',\r\n\ttemplateUrl: './custom-dashboard.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Text Display.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomDashboardComponent\r\n * @extends {FieldType}\r\n */\r\nexport class CustomDashboardComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CustomRepeaterComponent. This\r\n\t * explicit constructor was requested during an upgrade process and\r\n\t * should be left as implemented.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomDashboardComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the fireChanges on a set time out\r\n\t * to avoid any dashboard locked view on not detecting\r\n\t * the loading false state upon changes.\r\n\t *\r\n\t * @memberof CustomDashboardComponent\r\n\t */\r\n\tpublic customDashboardChanges()\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.fireChanges();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.oneSecond);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tDirective,\r\n\tElementRef,\r\n\tHostListener,\r\n\tViewChild,\r\n\tViewChildren\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubject,\r\n\tSubscription,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tfrom\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n\tselector: '[CustomActionMenu]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a formly custom control.\r\n *\r\n * @export\r\n * @extends {CustomActionMenuDirective}\r\n * @implements {AfterViewInit}\r\n * @class CustomActionMenuDirective\r\n */\r\nexport class CustomActionMenuDirective\r\n\textends ExtendedCustomControlDirective\r\n\timplements AfterViewInit\r\n{\r\n\t/** Initializes a new instance of the CustomActionMenuDirective.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets every action item element into an ElementRef array.\r\n\t *\r\n\t * @type {ElementRef[]}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\t@ViewChildren('ActionMenuItems')\r\n\tpublic actionMenuItemElements: ElementRef[];\r\n\r\n\t/**\r\n\t * Gets or sets the dropdown element.\r\n\t *\r\n\t * @type {TemplateRef}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\t@ViewChild('InputGroupContainer')\r\n\tpublic inputGroupContainer: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the dropdown width.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic calculatedFieldWidth: string;\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription class\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic actionMenuSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets loading action items state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic loadingActionItems: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the reset menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic resetEllipsisMenu: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the activeEllipsisMenu state of the ellipsis menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic activeEllipsisMenu: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets ellipsis menu action items.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic ellipsisActionItems: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the activeEllipsisMenuChanged Subject boolean.\r\n\t *\r\n\t * @type {new Subject()}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic activeEllipsisMenuChanged: Subject =\r\n\t\tnew Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis menu left position.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic ellipsisMenuOffsetLeft: string;\r\n\r\n\t/**\r\n\t * Gets or sets the ellipsis menu top position.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic ellipsisMenuOffsetTop: string;\r\n\r\n\t/**\r\n\t * Gets or sets the initial action menu items.\r\n\t *\r\n\t * @type {ElementRef[]}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic initialActionMenuItemElements: ElementRef[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the initial action menu items.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic calculatedActionMenuWidth: number;\r\n\r\n\t/**\r\n\t * Gets or sets the action menu confirguration data.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic actionMenuConfigurationData: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the initial action menu items.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic initialActionMenuItems: any[] = [];\r\n\r\n\t/**\r\n\t * Gets the ellipsis menu state debounce delay.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly debounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Gets the ellipsis menu width on large views.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly ellipsisMenuLargeWidth: number = 240;\r\n\r\n\t/**\r\n\t * Gets the ellipsis menu width on small views.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly ellipsisMenuSmallWidth: number = 175;\r\n\r\n\t/**\r\n\t * Gets the ellipsis item heigth.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly ellipsisItemHeigth: number = 42;\r\n\r\n\t/**\r\n\t * Gets the maximum allowed of ellipsis items.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly maxEllipsisItemsCount: number = 4;\r\n\r\n\t/**\r\n\t * Gets the ellipsis button width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly ellipsisActionItemWidth: number = 19.75;\r\n\r\n\t/**\r\n\t * Gets the width percentage allowed for the action menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly actionMenuWidthPercentage: number = 0.45;\r\n\r\n\t/**\r\n\t * Gets the additional offset width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic readonly additionalOffsetWidth: number = 1;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables\r\n\t * or loading has completed.\r\n\t * This will ensure the action menu view configuration on\r\n\t * page resize when action menu items exist in the template options.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.field.props.actionMenuItems)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(this.inputGroupContainer))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.activeEllipsisMenuChanged.next(false);\r\n\t\tthis.setActionMenuConfiguration();\r\n\t}\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * Will call the extended initialization event and in addition set the\r\n\t * initial action menu items and the update action menu method definition.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tsuper.ngOnInit();\r\n\t\tthis.initialActionMenuItems =\r\n\t\t\tcloneDeep(this.field.props.actionMenuItems);\r\n\t\tthis.field.props.updateActionMenu =\r\n\t\t\tthis.updateActionMenu.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * After component view initialization event.\r\n\t * This method sets the action menu view configuration\r\n\t * when action menu items exist in the template options.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic async ngAfterViewInit(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmptyArray(\r\n\t\t\tthis.field.props.actionMenuItems)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(this.inputGroupContainer))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.activeEllipsisMenuChanged.pipe(\r\n\t\t\tdebounceTime(this.debounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((newValue: boolean) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.activeEllipsisMenu === true\r\n\t\t\t\t\t&& newValue === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.resetEllipsisMenu = true;\r\n\r\n\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.resetEllipsisMenu = false;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tthis.debounceDelay);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.activeEllipsisMenu = newValue;\r\n\t\t\t\tthis.changeDetector.detectChanges();\r\n\t\t\t});\r\n\r\n\t\tthis.initialActionMenuItemElements =\r\n\t\t\tcloneDeep(this.actionMenuItemElements);\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tif (!AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\tthis.field.props.actionMenuItems))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.populateActionMenuConfiguration();\r\n\t\t\t\t\tawait this.setVisibleActionMenuItems();\r\n\t\t\t\t\tthis.setActionMenuConfiguration();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles any dynamic action menu change.\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic async updateActionMenu(): Promise\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tthis.activeEllipsisMenuChanged.next(false);\r\n\t\t\t\tthis.field.props.actionMenuItems =\r\n\t\t\t\t\tthis.initialActionMenuItems;\r\n\t\t\t\tawait this.setVisibleActionMenuItems();\r\n\t\t\t\tthis.setActionMenuConfiguration();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the visible action menu items\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic async setVisibleActionMenuItems(): Promise\r\n\t{\r\n\t\tfor (const actionMenuConfiguration of this.actionMenuConfigurationData)\r\n\t\t{\r\n\t\t\tconst visible: boolean =\r\n\t\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tactionMenuConfiguration.actionMenuItem.visible)\r\n\t\t\t\t\t|| typeof actionMenuConfiguration.actionMenuItem.visible\r\n\t\t\t\t\t\t=== AppConstants.propertyTypes.boolean\r\n\t\t\t\t\t? actionMenuConfiguration.actionMenuItem.visible\r\n\t\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\tactionMenuConfiguration.actionMenuItem.visible,\r\n\t\t\t\t\t\t\tthis.field),\r\n\t\t\t\t\t\tthis.field);\r\n\r\n\t\t\tactionMenuConfiguration.actionMenuItem.displayActionItem = visible;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the action menu configuration required to display the\r\n\t * needed amount of menu items allowed per display size and insert\r\n\t * the rest, if any, into an ellipsis menu.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic setActionMenuConfiguration(): Promise\r\n\t{\r\n\t\tthis.loadingActionItems = true;\r\n\t\tthis.ellipsisActionItems = [\r\n\t\t\t...[]\r\n\t\t];\r\n\r\n\t\tif (this.actionMenuSubscription != null)\r\n\t\t{\r\n\t\t\tthis.actionMenuSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.actionMenuSubscription =\r\n\t\t\t\t\tfrom(\r\n\t\t\t\t\t\tthis.calculateDropdownFieldWidth())\r\n\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.loadingActionItems = false;\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the action menu configuration\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic populateActionMenuConfiguration(): void\r\n\t{\r\n\t\tif (this.actionMenuConfigurationData.length === 0)\r\n\t\t{\r\n\t\t\tthis.initialActionMenuItemElements.forEach(\r\n\t\t\t\t(actionItemElement: ElementRef,\r\n\t\t\t\t\tactionItemIndex: number) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst actionItemwidth: number =\r\n\t\t\t\t\t\t(actionItemElement.nativeElement)\r\n\t\t\t\t\t\t\t.getBoundingClientRect()\r\n\t\t\t\t\t\t\t.width;\r\n\r\n\t\t\t\t\tconst offsetPadding = actionItemIndex > 0\r\n\t\t\t\t\t\t? AppConstants.staticLayoutSizes.tinyPadding\r\n\t\t\t\t\t\t: 0;\r\n\r\n\t\t\t\t\tthis.actionMenuConfigurationData.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tindex: actionItemIndex,\r\n\t\t\t\t\t\t\tactionMenuItem:\r\n\t\t\t\t\t\t\t\tthis.field.props\r\n\t\t\t\t\t\t\t\t\t.actionMenuItems[actionItemIndex],\r\n\t\t\t\t\t\t\twidth: actionItemwidth + offsetPadding\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the dropdown field width based on the given amount of\r\n\t * action menu items and the width of each item depending on the amount\r\n\t * of text. This will allow the set the exact allowed width for the\r\n\t * required items to display and an ellipsis menu action if the\r\n\t * amount of items exceeds the allowed width.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic async calculateDropdownFieldWidth(): Promise\r\n\t{\r\n\t\tthis.field.props.actionMenuItems = [];\r\n\r\n\t\tconst actionMenuAvailableWidth: number =\r\n\t\t\tthis.inputGroupContainer.nativeElement.offsetWidth\r\n\t\t\t\t* this.actionMenuWidthPercentage;\r\n\r\n\t\tconst ellipsisRequiredWidth: number =\r\n\t\t\tthis.ellipsisActionItemWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.tinyPadding;\r\n\r\n\t\tlet accumulatedWidth: number = 0;\r\n\t\tlet actionMenuWidth: number = 0;\r\n\r\n\t\tthis.actionMenuConfigurationData.forEach(\r\n\t\t\t(actionMenuConfiguration) =>\r\n\t\t\t{\r\n\t\t\t\tif (actionMenuConfiguration.actionMenuItem.displayActionItem\r\n\t\t\t\t\t=== false)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst ellipsisActionItemWidth: number =\r\n\t\t\t\t\tthis.ellipsisActionItems.length > 0\r\n\t\t\t\t\t\t|| (actionMenuConfiguration\r\n\t\t\t\t\t\t\t.accumulatedWidth + ellipsisRequiredWidth)\r\n\t\t\t\t\t\t\t\t> actionMenuAvailableWidth\r\n\t\t\t\t\t\t? ellipsisRequiredWidth\r\n\t\t\t\t\t\t: 0;\r\n\r\n\t\t\t\tconst actionMenuWidthLimit: number =\r\n\t\t\t\t\tactionMenuAvailableWidth - ellipsisActionItemWidth;\r\n\r\n\t\t\t\tactionMenuConfiguration.actionMenuItem = {\r\n\t\t\t\t\t...actionMenuConfiguration.actionMenuItem,\r\n\t\t\t\t\t...{\r\n\t\t\t\t\t\tmaxWidth:\r\n\t\t\t\t\t\t\t`calc(${actionMenuConfiguration.width}px)`,\r\n\t\t\t\t\t\tloading: false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\taccumulatedWidth += actionMenuConfiguration.width;\r\n\t\t\t\tif (accumulatedWidth <=\r\n\t\t\t\t\t\tactionMenuWidthLimit)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.field.props.actionMenuItems.push(\r\n\t\t\t\t\t\tactionMenuConfiguration.actionMenuItem);\r\n\r\n\t\t\t\t\tactionMenuWidth += actionMenuConfiguration.width;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.ellipsisActionItems.push(\r\n\t\t\t\t\t\tactionMenuConfiguration.actionMenuItem);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.calculatedActionMenuWidth =\r\n\t\t\tthis.field.props.actionMenuItems.length > 0\r\n\t\t\t\t? actionMenuWidth\r\n\t\t\t\t: 0;\r\n\r\n\t\tthis.addEllipsisMenuItem(ellipsisRequiredWidth);\r\n\r\n\t\tthis.calculatedFieldWidth =\r\n\t\t\t`calc(100% - ${this.calculatedActionMenuWidth}px)`;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the ellipsis menu item when there are more action items then\r\n\t * the available space.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic addEllipsisMenuItem(ellipsisRequiredWidth: number): void\r\n\t{\r\n\t\tif (this.ellipsisActionItems.length > 0\r\n\t\t\t&& !this.field.props.actionMenuItems\r\n\t\t\t\t.some((actionMenuItem: MenuItem) =>\r\n\t\t\t\t\tactionMenuItem.icon === AppConstants.cssIcons.ellipsis))\r\n\t\t{\r\n\t\t\tthis.field.props.actionMenuItems.push(\r\n\t\t\t\t{\r\n\t\t\t\t\ticon: AppConstants.cssIcons.ellipsis,\r\n\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.loadingActionItems = true;\r\n\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (this.activeEllipsisMenu === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tthis.calculateEllipsisMenuLocation();\r\n\t\t\t\t\t\t\t\tthis.activeEllipsisMenuChanged.next(\r\n\t\t\t\t\t\t\t\t\t!this.activeEllipsisMenu);\r\n\t\t\t\t\t\t\t\tthis.loadingActionItems = false;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tAppConstants.time.twentyFiveMilliseconds);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis.calculatedActionMenuWidth =\r\n\t\t\t\tthis.calculatedActionMenuWidth\r\n\t\t\t\t\t+ ellipsisRequiredWidth\r\n\t\t\t\t\t+ this.additionalOffsetWidth;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the ellipsis menu location.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic calculateEllipsisMenuLocation(): void\r\n\t{\r\n\t\tconst ellipsisActionItemButton: HTMLElement =\r\n\t\t\tthis.actionMenuItemElements.find(\r\n\t\t\t\t(actionItem) =>\r\n\t\t\t\t\tactionItem.nativeElement.innerHTML\r\n\t\t\t\t\t\t.includes(AppConstants.cssIcons.ellipsis))\r\n\t\t\t\t.nativeElement;\r\n\r\n\t\tconst ellipsisDomRect: DOMRect =\r\n\t\t\tellipsisActionItemButton.getBoundingClientRect();\r\n\r\n\t\tconst ellipsisMenuContainerWidth: number =\r\n\t\t\tthis.siteLayoutService.contentWidth <=\r\n\t\t\t\tAppConstants.layoutBreakpoints.phone\r\n\t\t\t\t? this.ellipsisMenuSmallWidth\r\n\t\t\t\t: this.ellipsisMenuLargeWidth;\r\n\r\n\t\tthis.ellipsisMenuOffsetLeft =\r\n\t\t\t`calc(${ellipsisActionItemButton.offsetLeft}px`\r\n\t\t\t\t+ ` - ${ellipsisMenuContainerWidth}px`\r\n\t\t\t\t+ ` + ${ellipsisDomRect.width}px)`;\r\n\r\n\t\tconst availableTopDisplay: number =\r\n\t\t\tellipsisDomRect.top\r\n\t\t\t\t- (this.siteLayoutService.displayTabletView === true\r\n\t\t\t\t\t? AppConstants.staticLayoutSizes.mobileHeaderHeight\r\n\t\t\t\t\t: 0);\r\n\r\n\t\tconst availableBottomDisplay: number =\r\n\t\t\tthis.siteLayoutService.windowHeight\r\n\t\t\t\t- ellipsisDomRect.bottom;\r\n\r\n\t\tconst useTopDisplay: boolean =\r\n\t\t\tavailableTopDisplay > availableBottomDisplay\r\n\t\t\t\t&& !ellipsisActionItemButton.offsetParent.className\r\n\t\t\t\t\t.includes(AppConstants.cssClasses.scrollPanelContent);\r\n\r\n\t\tif (useTopDisplay)\r\n\t\t{\r\n\t\t\tconst ellipsisMenuItemsCount: number =\r\n\t\t\t\tthis.ellipsisActionItems.length > this.maxEllipsisItemsCount\r\n\t\t\t\t\t? this.maxEllipsisItemsCount\r\n\t\t\t\t\t: this.ellipsisActionItems.length;\r\n\t\t\tconst additionalEllipsisMenuTop: number =\r\n\t\t\t\t ellipsisMenuItemsCount\r\n\t\t\t\t\t* this.ellipsisItemHeigth;\r\n\r\n\t\t\tthis.ellipsisMenuOffsetTop =\r\n\t\t\t\t`calc(${ellipsisActionItemButton.offsetTop}px - `\r\n\t\t\t\t\t+ `${additionalEllipsisMenuTop}px)`;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Executes the actionMenuItem command.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The click event.\r\n\t * @param {any} actionMenuItem\r\n\t * The the action menu item with the command to be executed.\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic executeActionMenuItemCommand(\r\n\t\tevent: Event,\r\n\t\tactionMenuItem: any): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(\r\n\t\t\tactionMenuItem?.command))\r\n\t\t{\r\n\t\t\tthrow new Error('Command is not defined.');\r\n\t\t}\r\n\r\n\t\tif (actionMenuItem?.icon === AppConstants.cssIcons.ellipsis)\r\n\t\t{\r\n\t\t\tactionMenuItem.command();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tactionMenuItem.loading = true;\r\n\r\n\t\tsetTimeout(\r\n\t\t\tasync () =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isFunction(\r\n\t\t\t\t\tactionMenuItem.command))\r\n\t\t\t\t{\r\n\t\t\t\t\tawait actionMenuItem.command();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tawait StringHelper.transformToLayoutPromise(\r\n\t\t\t\t\t\tactionMenuItem.command,\r\n\t\t\t\t\t\tthis.field,\r\n\t\t\t\t\t\tevent,\r\n\t\t\t\t\t\tthis.field.props.context);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.activeEllipsisMenuChanged.next(false);\r\n\t\t\t\tthis.setActionMenuConfiguration();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close overlay event sent from the operation menu\r\n\t * component. This is sent when an action item is clicked, any\r\n\t * site layout event is capture or click outside the ellipsis menu.\r\n\t *\r\n\t * @memberof CustomActionMenuDirective\r\n\t */\r\n\tpublic closeEllipsisMenu(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.activeEllipsisMenuChanged.next(false);\r\n\t\t\t},\r\n\t\t\tAppConstants.time.twentyFiveMilliseconds);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tDirective,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tCustomActionMenuDirective\r\n} from '@entity/directives/custom-action-menu.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectArrayHelper\r\n} from '@shared/helpers/object-array.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisArray\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n\tselector: '[ExtendedCustomControl]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a formly custom control.\r\n *\r\n * @export\r\n * @extends {CustomActionMenuDirective}\r\n * @class SelectCustomControlDirective\r\n */\r\nexport class SelectCustomControlDirective\r\n\textends CustomActionMenuDirective\r\n{\r\n\t/** Initializes a new instance of the SelectCustomControlDirective.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\t public constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(siteLayoutService,\r\n\t\t\tchangeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the overload that will allow data options to be sent in.\r\n\t * If this is not sent, the template options value will be used.\r\n\t *\r\n\t * @type {any[] | Observable}\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\t@Input() public dataOptions: any[] | Observable;\r\n\r\n\t/**\r\n\t * Gets or sets loading state of the field.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the initial load flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic initialLoad: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the initial property disable value prior to\r\n\t * in code alters. This value is reset on destroy.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic archivedDisable: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the initial property disable value prior to\r\n\t * in code alters. This value is reset on destroy.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic archivedPlaceHolder: string;\r\n\r\n\t/**\r\n\t * Updates the formly data options based on the most current from\r\n\t * field template options.\r\n\t *\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic updateDataOptions(): void\r\n\t{\r\n\t\tconst modifiedValueOptions: IDropdownOption[] =\r\n\t\t\t\r\n\t\t\tObjectArrayHelper.getObjectArrayDifferences(\r\n\t\t\t\tthis.dataOptions,\r\n\t\t\t\tthis.field.props.options,\r\n\t\t\t\t'value');\r\n\r\n\t\tconst modifiedLabelOptions: IDropdownOption[] =\r\n\t\t\t\r\n\t\t\tObjectArrayHelper.getObjectArrayDifferences(\r\n\t\t\t\tthis.dataOptions,\r\n\t\t\t\tthis.field.props.options,\r\n\t\t\t\t'label');\r\n\r\n\t\tif (modifiedValueOptions.length < 1\r\n\t\t\t&& modifiedLabelOptions.length < 1)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loading = true;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tlet updatedSelection: string[] | string = null;\r\n\r\n\t\t\t\tif (this.field.type ===\r\n\t\t\t\t\tFormlyConstants.customControls.customMultiSelect)\r\n\t\t\t\t{\r\n\t\t\t\t\tupdatedSelection = this.formControl.value\r\n\t\t\t\t\t\t?.filter((value: string) =>\r\n\t\t\t\t\t\t\t!modifiedValueOptions.find(\r\n\t\t\t\t\t\t\t\t(modifiedDataOption) =>\r\n\t\t\t\t\t\t\t\t\tmodifiedDataOption.value === value));\r\n\t\t\t\t}\r\n\t\t\t\telse if (modifiedValueOptions.some(\r\n\t\t\t\t\t(modifiedDataOption) => modifiedDataOption.value\r\n\t\t\t\t\t\t=== this.formControl.value) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tupdatedSelection = this.formControl.value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.initialLoad === false\r\n\t\t\t\t\t&& this.loading === true\r\n\t\t\t\t\t&& ((this.field.type ===\r\n\t\t\t\t\t\tFormlyConstants.customControls.customMultiSelect\r\n\t\t\t\t\t\t\t&& updatedSelection?.length\r\n\t\t\t\t\t\t\t\t!== this.formControl.value?.length)\r\n\t\t\t\t\t\t|| AnyHelper.isNull(updatedSelection)))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.formControl.setValue(updatedSelection);\r\n\t\t\t\t\tthis.formControl.markAsDirty();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dataOptions = this.field.props.options;\r\n\t\t\t\tsuper.ngOnInit();\r\n\t\t\t\tthis.disableSelectionLogic();\r\n\t\t\t\tthis.initialLoad = false;\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Disables or enables the select field based on\r\n\t * specific criteria.\r\n\t *\r\n\t * @memberof SelectCustomControlDirective\r\n\t */\r\n\tpublic disableSelectionLogic(): void\r\n\t{\r\n\t\tif (isArray(this.dataOptions) === true\r\n\t\t\t&& (this.dataOptions)?.length === 0\r\n\t\t\t|| ((this.dataOptions)?.length === 1\r\n\t\t\t\t&& this.field.type !==\r\n\t\t\t\tFormlyConstants.customControls.customMultiSelect)\r\n\t\t\t&& this.field.props?.disableAutoSetValue !== true)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.formControl\r\n\t\t\t\t\t\t.setValue((this.dataOptions).length > 0\r\n\t\t\t\t\t\t\t&& !AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\t\t\tthis.dataOptions[0].value)\r\n\t\t\t\t\t\t\t? this.dataOptions[0].value\r\n\t\t\t\t\t\t\t: null);\r\n\r\n\t\t\t\t\tif (AnyHelper.isFunction(this.field.props.change))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.field.props.change(this.field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.field.props.placeholder =\r\n\t\t\t\t\t\tAnyHelper.isNull(this.formControl.value)\r\n\t\t\t\t\t\t\t? AppConstants.placeholders.noAvailableOptions\r\n\t\t\t\t\t\t\t: this.archivedPlaceHolder;\r\n\r\n\t\t\t\t\tthis.field.props.disabled = true;\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.field.props.disabled = this.archivedDisable;\r\n\t\t\tthis.field.props.placeholder = this.archivedPlaceHolder;\r\n\t\t}\r\n\t}\r\n}","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ViewEncapsulation, Input, Output, signal, computed, effect, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i4 from 'primeng/overlay';\nimport { OverlayModule } from 'primeng/overlay';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i6 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport * as i5 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId } from 'primeng/utils';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { SearchIcon } from 'primeng/icons/search';\nimport { TimesCircleIcon } from 'primeng/icons/timescircle';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\n\nconst MULTISELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelect),\n multi: true\n};\nclass MultiSelectItem {\n id;\n option;\n selected;\n label;\n disabled;\n itemSize;\n focused;\n ariaPosInset;\n ariaSetSize;\n template;\n checkIconTemplate;\n onClick = new EventEmitter();\n onMouseEnter = new EventEmitter();\n onOptionClick(event) {\n this.onClick.emit({\n originalEvent: event,\n option: this.option,\n selected: this.selected\n });\n event.stopPropagation();\n }\n onOptionMouseEnter(event) {\n this.onMouseEnter.emit({\n originalEvent: event,\n option: this.option,\n selected: this.selected\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MultiSelectItem, selector: \"p-multiSelectItem\", inputs: { id: \"id\", option: \"option\", selected: \"selected\", label: \"label\", disabled: \"disabled\", itemSize: \"itemSize\", focused: \"focused\", ariaPosInset: \"ariaPosInset\", ariaSetSize: \"ariaSetSize\", template: \"template\", checkIconTemplate: \"checkIconTemplate\" }, outputs: { onClick: \"onClick\", onMouseEnter: \"onMouseEnter\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n {{ label ?? 'empty' }}\n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-multiSelectItem',\n template: `\n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n {{ label ?? 'empty' }}\n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], propDecorators: { id: [{\n type: Input\n }], option: [{\n type: Input\n }], selected: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], focused: [{\n type: Input\n }], ariaPosInset: [{\n type: Input\n }], ariaSetSize: [{\n type: Input\n }], template: [{\n type: Input\n }], checkIconTemplate: [{\n type: Input\n }], onClick: [{\n type: Output\n }], onMouseEnter: [{\n type: Output\n }] } });\n/**\n * MultiSelect is used to select multiple items from a collection.\n * @group Components\n */\nclass MultiSelect {\n el;\n renderer;\n cd;\n zone;\n filterService;\n config;\n overlayService;\n /**\n * Unique identifier of the component\n * @group Props\n */\n id;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Style class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the overlay panel.\n * @group Props\n */\n panelStyle;\n /**\n * Style class of the overlay panel element.\n * @group Props\n */\n panelStyleClass;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n inputId;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * When present, it specifies that the component cannot be edited.\n * @group Props\n */\n readonly;\n /**\n * Whether to display options as grouped when nested options are provided.\n * @group Props\n */\n group;\n /**\n * When specified, displays an input field to filter the items on keyup.\n * @group Props\n */\n filter = true;\n /**\n * Defines placeholder of the filter input.\n * @group Props\n */\n filterPlaceHolder;\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * Specifies the visibility of the options panel.\n * @group Props\n */\n overlayVisible;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * A property to uniquely identify a value in options.\n * @group Props\n */\n dataKey;\n /**\n * Name of the input element.\n * @group Props\n */\n name;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Whether to show labels of selected item labels or use default label.\n * @group Props\n * @defaultValue true\n */\n set displaySelectedLabel(val) {\n this._displaySelectedLabel = val;\n }\n get displaySelectedLabel() {\n return this._displaySelectedLabel;\n }\n /**\n * Decides how many selected item labels to show at most.\n * @group Props\n * @defaultValue 3\n */\n set maxSelectedLabels(val) {\n this._maxSelectedLabels = val;\n }\n get maxSelectedLabels() {\n return this._maxSelectedLabels;\n }\n /**\n * Decides how many selected item labels to show at most.\n * @group Props\n */\n selectionLimit;\n /**\n * Label to display after exceeding max selected labels e.g. ({0} items selected), defaults \"ellipsis\" keyword to indicate a text-overflow.\n * @group Props\n */\n selectedItemsLabel = '{0} items selected';\n /**\n * Whether to show the checkbox at header to toggle all items at once.\n * @group Props\n */\n showToggleAll = true;\n /**\n * Text to display when filtering does not return any results.\n * @group Props\n */\n emptyFilterMessage = '';\n /**\n * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n * @group Props\n */\n emptyMessage = '';\n /**\n * Clears the filter value when hiding the dropdown.\n * @group Props\n */\n resetFilterOnHide = false;\n /**\n * Icon class of the dropdown icon.\n * @group Props\n */\n dropdownIcon;\n /**\n * Name of the label field of an option.\n * @group Props\n */\n optionLabel;\n /**\n * Name of the value field of an option.\n * @group Props\n */\n optionValue;\n /**\n * Name of the disabled field of an option.\n * @group Props\n */\n optionDisabled;\n /**\n * Name of the label field of an option group.\n * @group Props\n */\n optionGroupLabel = 'label';\n /**\n * Name of the options field of an option group.\n * @group Props\n */\n optionGroupChildren = 'items';\n /**\n * Whether to show the header.\n * @group Props\n */\n showHeader = true;\n /**\n * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n * @group Props\n */\n filterBy;\n /**\n * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n * @group Props\n */\n scrollHeight = '200px';\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = false;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll;\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions;\n /**\n * Whether to use overlay API feature. The properties of overlay API can be used like an object in it.\n * @group Props\n */\n overlayOptions;\n /**\n * Defines a string that labels the filter input.\n * @group Props\n */\n ariaFilterLabel;\n /**\n * Defines how the items are filtered.\n * @group Props\n */\n filterMatchMode = 'contains';\n /**\n * Advisory information to display in a tooltip on hover.\n * @group Props\n */\n tooltip = '';\n /**\n * Position of the tooltip.\n * @group Props\n */\n tooltipPosition = 'right';\n /**\n * Type of CSS position.\n * @group Props\n */\n tooltipPositionStyle = 'absolute';\n /**\n * Style class of the tooltip.\n * @group Props\n */\n tooltipStyleClass;\n /**\n * Applies focus to the filter element when the overlay is shown.\n * @group Props\n */\n autofocusFilter = true;\n /**\n * Defines how the selected items are displayed.\n * @group Props\n */\n display = 'comma';\n /**\n * Defines the autocomplete is active.\n * @group Props\n */\n autocomplete = 'off';\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n showClear = false;\n /**\n * @deprecated since v14.2.0, use overlayOptions property instead.\n * Whether to automatically manage layering.\n * @group Props\n */\n get autoZIndex() {\n return this._autoZIndex;\n }\n set autoZIndex(val) {\n this._autoZIndex = val;\n console.warn('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n /**\n * @deprecated since v14.2.0, use overlayOptions property instead.\n * Base zIndex value to use in layering.\n * @group Props\n */\n get baseZIndex() {\n return this._baseZIndex;\n }\n set baseZIndex(val) {\n this._baseZIndex = val;\n console.warn('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n /**\n * Transition options of the show animation.\n * @group Props\n * @deprecated since v14.2.0, use overlayOptions property instead.\n */\n get showTransitionOptions() {\n return this._showTransitionOptions;\n }\n set showTransitionOptions(val) {\n this._showTransitionOptions = val;\n console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n /**\n * Transition options of the hide animation.\n * @group Props\n * @deprecated since v14.2.0, use overlayOptions property instead.\n */\n get hideTransitionOptions() {\n return this._hideTransitionOptions;\n }\n set hideTransitionOptions(val) {\n this._hideTransitionOptions = val;\n console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n }\n /**\n * Label to display when there are no selections.\n * @group Props\n * @deprecated Use placeholder instead.\n */\n set defaultLabel(val) {\n this._defaultLabel = val;\n console.warn('defaultLabel property is deprecated since 16.6.0, use placeholder instead');\n }\n get defaultLabel() {\n return this._defaultLabel;\n }\n /**\n * Label to display when there are no selections.\n * @group Props\n */\n set placeholder(val) {\n this._placeholder = val;\n }\n get placeholder() {\n return this._placeholder;\n }\n /**\n * An array of objects to display as the available options.\n * @group Props\n */\n get options() {\n const options = this._options();\n return options;\n }\n set options(val) {\n this._options.set(val);\n }\n /**\n * When specified, filter displays with this value.\n * @group Props\n */\n get filterValue() {\n return this._filterValue();\n }\n set filterValue(val) {\n this._filterValue.set(val);\n }\n /**\n * Item size of item to be virtual scrolled.\n * @group Props\n * @deprecated use virtualScrollItemSize property instead.\n */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(val) {\n this._itemSize = val;\n console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n }\n /**\n * Whether all data is selected.\n * @group Props\n */\n get selectAll() {\n return this._selectAll;\n }\n set selectAll(value) {\n this._selectAll = value;\n }\n /**\n * Fields used when filtering the options, defaults to optionLabel.\n * @group Props\n */\n focusOnHover = false;\n /**\n * Fields used when filtering the options, defaults to optionLabel.\n * @group Props\n */\n filterFields;\n /**\n * Determines if the option will be selected on focus.\n * @group Props\n */\n selectOnFocus = false;\n /**\n * Whether to focus on the first visible or selected element when the overlay panel is shown.\n * @group Props\n */\n autoOptionFocus = true;\n /**\n * Callback to invoke when value changes.\n * @param {MultiSelectChangeEvent} event - Custom change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n /**\n * Callback to invoke when data is filtered.\n * @param {MultiSelectFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = new EventEmitter();\n /**\n * Callback to invoke when multiselect receives focus.\n * @param {MultiSelectFocusEvent} event - Custom focus event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when multiselect loses focus.\n * @param {MultiSelectBlurEvent} event - Custom blur event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n /**\n * Callback to invoke when component is clicked.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onClick = new EventEmitter();\n /**\n * Callback to invoke when input field is cleared.\n * @group Emits\n */\n onClear = new EventEmitter();\n /**\n * Callback to invoke when overlay panel becomes visible.\n * @group Emits\n */\n onPanelShow = new EventEmitter();\n /**\n * Callback to invoke when overlay panel becomes hidden.\n * @group Emits\n */\n onPanelHide = new EventEmitter();\n /**\n * Callback to invoke in lazy mode to load new data.\n * @param {MultiSelectLazyLoadEvent} event - Lazy load event.\n * @group Emits\n */\n onLazyLoad = new EventEmitter();\n /**\n * Callback to invoke in lazy mode to load new data.\n * @param {MultiSelectRemoveEvent} event - Remove event.\n * @group Emits\n */\n onRemove = new EventEmitter();\n /**\n * Callback to invoke when all data is selected.\n * @param {MultiSelectSelectAllChangeEvent} event - Custom select event.\n * @group Emits\n */\n onSelectAllChange = new EventEmitter();\n containerViewChild;\n overlayViewChild;\n filterInputChild;\n focusInputViewChild;\n itemsViewChild;\n scroller;\n lastHiddenFocusableElementOnOverlay;\n firstHiddenFocusableElementOnOverlay;\n headerCheckboxViewChild;\n footerFacet;\n headerFacet;\n templates;\n searchValue;\n searchTimeout;\n _selectAll = null;\n _autoZIndex;\n _baseZIndex;\n _showTransitionOptions;\n _hideTransitionOptions;\n _defaultLabel;\n _placeholder;\n _itemSize;\n _selectionLimit;\n value;\n _filteredOptions;\n onModelChange = () => { };\n onModelTouched = () => { };\n valuesAsString;\n focus;\n filtered;\n itemTemplate;\n groupTemplate;\n loaderTemplate;\n headerTemplate;\n filterTemplate;\n footerTemplate;\n emptyFilterTemplate;\n emptyTemplate;\n selectedItemsTemplate;\n checkIconTemplate;\n filterIconTemplate;\n removeTokenIconTemplate;\n closeIconTemplate;\n clearIconTemplate;\n dropdownIconTemplate;\n headerCheckboxFocus;\n filterOptions;\n preventModelTouched;\n preventDocumentDefault;\n focused = false;\n itemsWrapper;\n _displaySelectedLabel = true;\n _maxSelectedLabels = 3;\n modelValue = signal(null);\n _filterValue = signal(null);\n _options = signal(null);\n startRangeIndex = signal(-1);\n focusedOptionIndex = signal(-1);\n selectedOptions;\n get containerClass() {\n return {\n 'p-multiselect p-component p-inputwrapper': true,\n 'p-disabled': this.disabled,\n 'p-multiselect-clearable': this.showClear && !this.disabled,\n 'p-multiselect-chip': this.display === 'chip',\n 'p-focus': this.focused\n };\n }\n get inputClass() {\n return {\n 'p-multiselect-label p-inputtext': true,\n 'p-placeholder': (this.placeholder || this.defaultLabel) && (this.label() === this.placeholder || this.label() === this.defaultLabel),\n 'p-multiselect-label-empty': !this.selectedItemsTemplate && (this.label() === 'p-emptylabel' || this.label().length === 0)\n };\n }\n get panelClass() {\n return {\n 'p-multiselect-panel p-component': true,\n 'p-input-filled': this.config.inputStyle === 'filled',\n 'p-ripple-disabled': this.config.ripple === false\n };\n }\n get labelClass() {\n return {\n 'p-multiselect-label': true,\n 'p-placeholder': this.label() === this.placeholder || this.label() === this.defaultLabel,\n 'p-multiselect-label-empty': !this.placeholder && !this.defaultLabel && (!this.modelValue() || this.modelValue().length === 0)\n };\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n get emptyFilterMessageLabel() {\n return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n }\n get filled() {\n if (typeof this.modelValue() === 'string')\n return !!this.modelValue();\n return ObjectUtils.isNotEmpty(this.modelValue());\n }\n get isVisibleClearIcon() {\n return this.modelValue() != null && this.modelValue() !== '' && ObjectUtils.isNotEmpty(this.modelValue()) && this.showClear && !this.disabled && this.filled;\n }\n get toggleAllAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;\n }\n get closeAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.close : undefined;\n }\n visibleOptions = computed(() => {\n const options = this.group ? this.flatOptions(this.options) : this.options || [];\n if (this._filterValue()) {\n const filteredOptions = this.filterService.filter(options, this.searchFields(), this._filterValue(), this.filterMatchMode, this.filterLocale);\n if (this.group) {\n const optionGroups = this.options || [];\n const filtered = [];\n optionGroups.forEach((group) => {\n const groupChildren = this.getOptionGroupChildren(group);\n const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));\n if (filteredItems.length > 0)\n filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });\n });\n return this.flatOptions(filtered);\n }\n return filteredOptions;\n }\n return options;\n });\n label = computed(() => {\n let label;\n const modelValue = this.modelValue();\n if (modelValue && modelValue.length && this.displaySelectedLabel) {\n if (ObjectUtils.isNotEmpty(this.maxSelectedLabels) && modelValue.length > this.maxSelectedLabels) {\n return this.getSelectedItemsLabel();\n }\n else {\n label = '';\n for (let i = 0; i < modelValue.length; i++) {\n if (i !== 0) {\n label += ', ';\n }\n label += this.getLabelByValue(modelValue[i]);\n }\n }\n }\n else {\n label = this.placeholder || this.defaultLabel || '';\n }\n return label;\n });\n chipSelectedItems = computed(() => {\n return ObjectUtils.isNotEmpty(this.maxSelectedLabels) && this.modelValue() && this.modelValue().length > this.maxSelectedLabels ? this.modelValue().slice(0, this.maxSelectedLabels) : this.modelValue();\n });\n constructor(el, renderer, cd, zone, filterService, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.filterService = filterService;\n this.config = config;\n this.overlayService = overlayService;\n effect(() => {\n const modelValue = this.modelValue();\n const visibleOptions = this.visibleOptions();\n if (visibleOptions && ObjectUtils.isNotEmpty(visibleOptions) && modelValue) {\n if (this.optionValue && this.optionLabel) {\n this.selectedOptions = visibleOptions.filter((option) => modelValue.includes(option[this.optionLabel]) || modelValue.includes(option[this.optionValue]));\n }\n else {\n this.selectedOptions = [...modelValue];\n }\n }\n });\n }\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n this.autoUpdateModel();\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilterInputChange(value),\n reset: () => this.resetFilter()\n };\n }\n }\n maxSelectionLimitReached() {\n return this.selectionLimit && this.modelValue() && this.modelValue().length === this.selectionLimit;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'selectedItems':\n this.selectedItemsTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n case 'checkicon':\n this.checkIconTemplate = item.template;\n break;\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n case 'removetokenicon':\n this.removeTokenIconTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n case 'clearicon':\n this.clearIconTemplate = item.template;\n break;\n case 'dropdownicon':\n this.dropdownIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (this.overlayVisible) {\n this.show();\n }\n }\n ngAfterViewChecked() {\n if (this.filtered) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.overlayViewChild?.alignOverlay();\n }, 1);\n });\n this.filtered = false;\n }\n }\n flatOptions(options) {\n return (options || []).reduce((result, option, index) => {\n result.push({ optionGroup: option, group: true, index });\n const optionGroupChildren = this.getOptionGroupChildren(option);\n optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n return result;\n }, []);\n }\n autoUpdateModel() {\n if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption()) {\n this.focusedOptionIndex.set(this.findFirstFocusedOptionIndex());\n const value = this.getOptionValue(this.visibleOptions()[this.focusedOptionIndex()]);\n this.onOptionSelect({ originalEvent: null, option: [value] });\n }\n }\n /**\n * Updates the model value.\n * @group Method\n */\n updateModel(value, event) {\n this.value = value;\n this.onModelChange(value);\n this.modelValue.set(value);\n }\n onInputClick(event) {\n event.stopPropagation();\n event.preventDefault();\n this.focusedOptionIndex.set(-1);\n }\n onOptionSelect(event, isFocus = false, index = -1) {\n const { originalEvent, option } = event;\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n let selected = this.isSelected(option);\n let value = null;\n if (selected) {\n value = this.modelValue().filter((val) => !ObjectUtils.equals(val, this.getOptionValue(option), this.equalityKey()));\n }\n else {\n value = [...(this.modelValue() || []), this.getOptionValue(option)];\n }\n this.updateModel(value, originalEvent);\n index !== -1 && this.focusedOptionIndex.set(index);\n isFocus && DomHandler.focus(this.focusInputViewChild?.nativeElement);\n this.onChange.emit({\n originalEvent: event,\n value: value,\n itemValue: option\n });\n }\n findSelectedOptionIndex() {\n return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n }\n onOptionSelectRange(event, start = -1, end = -1) {\n start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = this.visibleOptions()\n .slice(rangeStart, rangeEnd + 1)\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n }\n }\n searchFields() {\n return (this.filterBy || this.optionLabel || 'label').split(',');\n }\n findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n let matchedOptionIndex = -1;\n if (this.hasSelectedOption()) {\n if (firstCheckUp) {\n matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n }\n else {\n matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n }\n findPrevSelectedOptionIndex(index) {\n const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n }\n findFirstFocusedOptionIndex() {\n const selectedIndex = this.findFirstSelectedOptionIndex();\n return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n }\n findFirstOptionIndex() {\n return this.visibleOptions().findIndex((option) => this.isValidOption(option));\n }\n findFirstSelectedOptionIndex() {\n return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n }\n findNextSelectedOptionIndex(index) {\n const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1\n ? this.visibleOptions()\n .slice(index + 1)\n .findIndex((option) => this.isValidSelectedOption(option))\n : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n }\n equalityKey() {\n return this.optionValue ? null : this.dataKey;\n }\n hasSelectedOption() {\n return ObjectUtils.isNotEmpty(this.modelValue());\n }\n isValidSelectedOption(option) {\n return this.isValidOption(option) && this.isSelected(option);\n }\n isOptionGroup(option) {\n return (this.group || this.optionGroupLabel) && option.optionGroup && option.group;\n }\n isValidOption(option) {\n return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n }\n isOptionDisabled(option) {\n if (this.maxSelectionLimitReached() && !this.isSelected(option)) {\n return true;\n }\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : option && option.disabled !== undefined ? option.disabled : false;\n }\n isSelected(option) {\n const optionValue = this.getOptionValue(option);\n return (this.modelValue() || []).some((value) => ObjectUtils.equals(value, optionValue, this.equalityKey()));\n }\n isOptionMatched(option) {\n return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n }\n isEmpty() {\n return !this._options() || (this.visibleOptions() && this.visibleOptions().length === 0);\n }\n getOptionIndex(index, scrollerOptions) {\n return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n }\n getAriaPosInset(index) {\n return ((this.optionGroupLabel\n ? index -\n this.visibleOptions()\n .slice(0, index)\n .filter((option) => this.isOptionGroup(option)).length\n : index) + 1);\n }\n get ariaSetSize() {\n return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;\n }\n getLabelByValue(value) {\n const options = this.group ? this.flatOptions(this._options()) : this._options() || [];\n const matchedOption = options.find((option) => !this.isOptionGroup(option) && ObjectUtils.equals(this.getOptionValue(option), value, this.equalityKey()));\n return matchedOption ? this.getOptionLabel(matchedOption) : null;\n }\n getSelectedItemsLabel() {\n let pattern = /{(.*?)}/;\n if (pattern.test(this.selectedItemsLabel)) {\n return this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.modelValue().length + '');\n }\n return this.selectedItemsLabel;\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option && option.label != undefined ? option.label : option;\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n onKeyDown(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n case 'Enter':\n case 'Space':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey();\n break;\n default:\n if (event.code === 'KeyA' && metaKey) {\n const value = this.visibleOptions()\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n event.preventDefault();\n break;\n }\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n !this.overlayVisible && this.show();\n this.searchOptions(event, event.key);\n event.preventDefault();\n }\n break;\n }\n }\n onFilterKeyDown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event, true);\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n this.onArrowLeftKey(event, true);\n break;\n case 'Home':\n this.onHomeKey(event, true);\n break;\n case 'End':\n this.onEndKey(event, true);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event, true);\n break;\n default:\n break;\n }\n }\n onArrowLeftKey(event, pressedInInputText = false) {\n pressedInInputText && this.focusedOptionIndex.set(-1);\n }\n onArrowDownKey(event) {\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n if (event.shiftKey) {\n this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n !this.overlayVisible && this.show();\n event.preventDefault();\n event.stopPropagation();\n }\n onArrowUpKey(event, pressedInInputText = false) {\n if (event.altKey && !pressedInInputText) {\n if (this.focusedOptionIndex() !== -1) {\n this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n this.overlayVisible && this.hide();\n event.preventDefault();\n }\n else {\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n if (event.shiftKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n !this.overlayVisible && this.show();\n event.preventDefault();\n }\n event.stopPropagation();\n }\n onHomeKey(event, pressedInInputText = false) {\n const { currentTarget } = event;\n if (pressedInInputText) {\n const len = currentTarget.value.length;\n currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);\n this.focusedOptionIndex.set(-1);\n }\n else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findFirstOptionIndex();\n if (event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n !this.overlayVisible && this.show();\n }\n event.preventDefault();\n }\n onEndKey(event, pressedInInputText = false) {\n const { currentTarget } = event;\n if (pressedInInputText) {\n const len = currentTarget.value.length;\n currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);\n this.focusedOptionIndex.set(-1);\n }\n else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findLastFocusedOptionIndex();\n if (event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n !this.overlayVisible && this.show();\n }\n event.preventDefault();\n }\n onPageDownKey(event) {\n this.scrollInView(this.visibleOptions().length - 1);\n event.preventDefault();\n }\n onPageUpKey(event) {\n this.scrollInView(0);\n event.preventDefault();\n }\n onEnterKey(event) {\n if (!this.overlayVisible) {\n this.onArrowDownKey(event);\n }\n else {\n if (this.focusedOptionIndex() !== -1) {\n if (event.shiftKey) {\n this.onOptionSelectRange(event, this.focusedOptionIndex());\n }\n else {\n this.onOptionSelect({ originalEvent: event, option: this.visibleOptions()[this.focusedOptionIndex()] });\n }\n }\n }\n event.preventDefault();\n }\n onEscapeKey(event) {\n this.overlayVisible && this.hide(true);\n event.preventDefault();\n }\n onDeleteKey(event) {\n if (this.showClear) {\n this.clear(event);\n event.preventDefault();\n }\n }\n onTabKey(event, pressedInInputText = false) {\n if (!pressedInInputText) {\n if (this.overlayVisible && this.hasFocusableElements()) {\n DomHandler.focus(event.shiftKey ? this.lastHiddenFocusableElementOnOverlay.nativeElement : this.firstHiddenFocusableElementOnOverlay.nativeElement);\n event.preventDefault();\n }\n else {\n if (this.focusedOptionIndex() !== -1) {\n this.onOptionSelect({ originalEvent: event, option: this.visibleOptions()[this.focusedOptionIndex()] });\n }\n this.overlayVisible && this.hide(this.filter);\n }\n }\n }\n onShiftKey() {\n this.startRangeIndex.set(this.focusedOptionIndex());\n }\n onContainerClick(event) {\n if (this.disabled || this.readonly || event.target.isSameNode(this.focusInputViewChild?.nativeElement)) {\n return;\n }\n if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section=\"clearicon\"]')) {\n event.preventDefault();\n return;\n }\n else if (!this.overlayViewChild || !this.overlayViewChild.el.nativeElement.contains(event.target)) {\n this.overlayVisible ? this.hide(true) : this.show(true);\n }\n this.focusInputViewChild?.nativeElement.focus({ preventScroll: true });\n this.onClick.emit(event);\n this.cd.detectChanges();\n }\n onFirstHiddenFocus(event) {\n const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement\n ? DomHandler.getFirstFocusableElement(this.overlayViewChild?.overlayViewChild?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])')\n : this.focusInputViewChild?.nativeElement;\n DomHandler.focus(focusableEl);\n }\n onInputFocus(event) {\n this.focused = true;\n const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.overlayVisible && this.scrollInView(this.focusedOptionIndex());\n this.onFocus.emit({ originalEvent: event });\n }\n onInputBlur(event) {\n this.focused = false;\n this.onBlur.emit({ originalEvent: event });\n if (!this.preventModelTouched) {\n this.onModelTouched();\n }\n this.preventModelTouched = false;\n }\n onFilterInputChange(event) {\n let value = event.target.value?.trim();\n this._filterValue.set(value);\n this.focusedOptionIndex.set(-1);\n this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });\n !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);\n }\n onLastHiddenFocus(event) {\n const focusableEl = event.relatedTarget === this.focusInputViewChild?.nativeElement\n ? DomHandler.getLastFocusableElement(this.overlayViewChild?.overlayViewChild?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])')\n : this.focusInputViewChild?.nativeElement;\n DomHandler.focus(focusableEl);\n }\n onOptionMouseEnter(event, index) {\n if (this.focusOnHover) {\n this.changeFocusedOptionIndex(event, index);\n }\n }\n onHeaderCheckboxKeyDown(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n switch (event.code) {\n case 'Space':\n this.onToggleAll(event);\n break;\n case 'Enter':\n this.onToggleAll(event);\n break;\n default:\n break;\n }\n }\n onFilterBlur(event) {\n this.focusedOptionIndex.set(-1);\n }\n onHeaderCheckboxFocus() {\n this.headerCheckboxFocus = true;\n }\n onHeaderCheckboxBlur() {\n this.headerCheckboxFocus = false;\n }\n onToggleAll(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.selectAll != null) {\n this.onSelectAllChange.emit({\n originalEvent: event,\n checked: !this.allSelected()\n });\n }\n else {\n const value = this.allSelected()\n ? []\n : this.visibleOptions()\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n }\n DomHandler.focus(this.headerCheckboxViewChild.nativeElement);\n this.headerCheckboxFocus = true;\n event.preventDefault();\n event.stopPropagation();\n }\n changeFocusedOptionIndex(event, index) {\n if (this.focusedOptionIndex() !== index) {\n this.focusedOptionIndex.set(index);\n this.scrollInView();\n }\n }\n get virtualScrollerDisabled() {\n return !this.virtualScroll;\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n if (this.itemsViewChild && this.itemsViewChild.nativeElement) {\n const element = DomHandler.findSingle(this.itemsViewChild.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n else if (!this.virtualScrollerDisabled) {\n setTimeout(() => {\n this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n }, 0);\n }\n }\n }\n get focusedOptionId() {\n return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;\n }\n writeValue(value) {\n this.value = value;\n this.modelValue.set(this.value);\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n allSelected() {\n return this.selectAll !== null ? this.selectAll : ObjectUtils.isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n }\n /**\n * Displays the panel.\n * @group Method\n */\n show(isFocus) {\n this.overlayVisible = true;\n const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n if (isFocus) {\n DomHandler.focus(this.focusInputViewChild?.nativeElement);\n }\n this.cd.markForCheck();\n }\n /**\n * Hides the panel.\n * @group Method\n */\n hide(isFocus) {\n this.overlayVisible = false;\n this.focusedOptionIndex.set(-1);\n if (this.filter && this.resetFilterOnHide) {\n this.resetFilter();\n }\n isFocus && DomHandler.focus(this.focusInputViewChild?.nativeElement);\n this.onPanelHide.emit();\n this.cd.markForCheck();\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.itemsWrapper = DomHandler.findSingle(this.overlayViewChild?.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-multiselect-items-wrapper');\n this.virtualScroll && this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);\n if (this._options() && this._options().length) {\n if (this.virtualScroll) {\n const selectedIndex = ObjectUtils.isNotEmpty(this.modelValue()) ? this.focusedOptionIndex() : -1;\n if (selectedIndex !== -1) {\n this.scroller?.scrollToIndex(selectedIndex);\n }\n }\n else {\n let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-multiselect-item.p-highlight');\n if (selectedListItem) {\n selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n }\n }\n this.onPanelShow.emit();\n case 'void':\n this.itemsWrapper = null;\n this.onModelTouched();\n break;\n }\n }\n resetFilter() {\n if (this.filterInputChild && this.filterInputChild.nativeElement) {\n this.filterInputChild.nativeElement.value = '';\n }\n this._filterValue.set(null);\n this._filteredOptions = null;\n }\n close(event) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n }\n clear(event) {\n this.value = null;\n this.updateModel(null, event);\n this.selectedOptions = null;\n this.onClear.emit();\n event.stopPropagation();\n }\n removeOption(optionValue, event) {\n let value = this.modelValue().filter((val) => !ObjectUtils.equals(val, optionValue, this.equalityKey()));\n this.updateModel(value, event);\n this.onChange.emit({\n originalEvent: event,\n value: value,\n itemValue: optionValue\n });\n event && event.stopPropagation();\n }\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n if (nextItem)\n return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];\n else\n return null;\n }\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n if (prevItem)\n return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];\n else\n return null;\n }\n findNextOptionIndex(index) {\n const matchedOptionIndex = index < this.visibleOptions().length - 1\n ? this.visibleOptions()\n .slice(index + 1)\n .findIndex((option) => this.isValidOption(option))\n : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n }\n findPrevOptionIndex(index) {\n const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n }\n findLastSelectedOptionIndex() {\n return this.hasSelectedOption() ? ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;\n }\n findLastFocusedOptionIndex() {\n const selectedIndex = this.findLastSelectedOptionIndex();\n return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n }\n findLastOptionIndex() {\n return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));\n }\n searchOptions(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let optionIndex = -1;\n let matched = false;\n if (this.focusedOptionIndex() !== -1) {\n optionIndex = this.visibleOptions()\n .slice(this.focusedOptionIndex())\n .findIndex((option) => this.isOptionMatched(option));\n optionIndex =\n optionIndex === -1\n ? this.visibleOptions()\n .slice(0, this.focusedOptionIndex())\n .findIndex((option) => this.isOptionMatched(option))\n : optionIndex + this.focusedOptionIndex();\n }\n else {\n optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));\n }\n if (optionIndex !== -1) {\n matched = true;\n }\n if (optionIndex === -1 && this.focusedOptionIndex() === -1) {\n optionIndex = this.findFirstFocusedOptionIndex();\n }\n if (optionIndex !== -1) {\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n activateFilter() {\n if (this.hasFilter() && this._options) {\n if (this.group) {\n let filteredGroups = [];\n for (let optgroup of this.options) {\n let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), this.searchFields(), this.filterValue, this.filterMatchMode, this.filterLocale);\n if (filteredSubOptions && filteredSubOptions.length) {\n filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });\n }\n }\n this._filteredOptions = filteredGroups;\n }\n else {\n this._filteredOptions = this.filterService.filter(this.options, this.searchFields(), this.filterValue, this.filterMatchMode, this.filterLocale);\n }\n }\n else {\n this._filteredOptions = null;\n }\n }\n hasFocusableElements() {\n return DomHandler.getFocusableElements(this.overlayViewChild.overlayViewChild.nativeElement, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\n }\n hasFilter() {\n return this._filterValue() && this._filterValue().trim().length > 0;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelect, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MultiSelect, selector: \"p-multiSelect\", inputs: { id: \"id\", ariaLabel: \"ariaLabel\", style: \"style\", styleClass: \"styleClass\", panelStyle: \"panelStyle\", panelStyleClass: \"panelStyleClass\", inputId: \"inputId\", disabled: \"disabled\", readonly: \"readonly\", group: \"group\", filter: \"filter\", filterPlaceHolder: \"filterPlaceHolder\", filterLocale: \"filterLocale\", overlayVisible: \"overlayVisible\", tabindex: \"tabindex\", appendTo: \"appendTo\", dataKey: \"dataKey\", name: \"name\", ariaLabelledBy: \"ariaLabelledBy\", displaySelectedLabel: \"displaySelectedLabel\", maxSelectedLabels: \"maxSelectedLabels\", selectionLimit: \"selectionLimit\", selectedItemsLabel: \"selectedItemsLabel\", showToggleAll: \"showToggleAll\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", resetFilterOnHide: \"resetFilterOnHide\", dropdownIcon: \"dropdownIcon\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", optionGroupLabel: \"optionGroupLabel\", optionGroupChildren: \"optionGroupChildren\", showHeader: \"showHeader\", filterBy: \"filterBy\", scrollHeight: \"scrollHeight\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", overlayOptions: \"overlayOptions\", ariaFilterLabel: \"ariaFilterLabel\", filterMatchMode: \"filterMatchMode\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", autofocusFilter: \"autofocusFilter\", display: \"display\", autocomplete: \"autocomplete\", showClear: \"showClear\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", defaultLabel: \"defaultLabel\", placeholder: \"placeholder\", options: \"options\", filterValue: \"filterValue\", itemSize: \"itemSize\", selectAll: \"selectAll\", focusOnHover: \"focusOnHover\", filterFields: \"filterFields\", selectOnFocus: \"selectOnFocus\", autoOptionFocus: \"autoOptionFocus\" }, outputs: { onChange: \"onChange\", onFilter: \"onFilter\", onFocus: \"onFocus\", onBlur: \"onBlur\", onClick: \"onClick\", onClear: \"onClear\", onPanelShow: \"onPanelShow\", onPanelHide: \"onPanelHide\", onLazyLoad: \"onLazyLoad\", onRemove: \"onRemove\", onSelectAllChange: \"onSelectAllChange\" }, host: { properties: { \"class.p-inputwrapper-focus\": \"focused || overlayVisible\", \"class.p-inputwrapper-filled\": \"filled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [MULTISELECT_VALUE_ACCESSOR], queries: [{ propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"overlayViewChild\", first: true, predicate: [\"overlay\"], descendants: true }, { propertyName: \"filterInputChild\", first: true, predicate: [\"filterInput\"], descendants: true }, { propertyName: \"focusInputViewChild\", first: true, predicate: [\"focusInput\"], descendants: true }, { propertyName: \"itemsViewChild\", first: true, predicate: [\"items\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }, { propertyName: \"lastHiddenFocusableElementOnOverlay\", first: true, predicate: [\"lastHiddenFocusableEl\"], descendants: true }, { propertyName: \"firstHiddenFocusableElementOnOverlay\", first: true, predicate: [\"firstHiddenFocusableEl\"], descendants: true }, { propertyName: \"headerCheckboxViewChild\", first: true, predicate: [\"headerCheckbox\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n
    \n \n {{ label() || 'empty' }}\n \n
    \n {{ getLabelByValue(item) }}\n \n \n \n \n \n \n
    \n {{ placeholder || defaultLabel || 'empty' }}\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 \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 \n\n \n
      \n \n \n
    • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
    • \n
      \n \n \n \n
      \n\n
    • \n \n {{ emptyFilterMessageLabel }}\n \n \n
    • \n
    • \n \n {{ emptyMessageLabel }}\n \n \n
    • \n
    \n
    \n
    \n
    \n \n \n
    \n\n \n
    \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer;display:flex}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => i4.Overlay), selector: \"p-overlay\", inputs: [\"visible\", \"mode\", \"style\", \"styleClass\", \"contentStyle\", \"contentStyleClass\", \"target\", \"appendTo\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"listener\", \"responsive\", \"options\"], outputs: [\"visibleChange\", \"onBeforeShow\", \"onShow\", \"onBeforeHide\", \"onHide\", \"onAnimationStart\", \"onAnimationDone\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.PrimeTemplate), selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i5.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => i6.Scroller), selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SearchIcon), selector: \"SearchIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesCircleIcon), selector: \"TimesCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MultiSelectItem), selector: \"p-multiSelectItem\", inputs: [\"id\", \"option\", \"selected\", \"label\", \"disabled\", \"itemSize\", \"focused\", \"ariaPosInset\", \"ariaSetSize\", \"template\", \"checkIconTemplate\"], outputs: [\"onClick\", \"onMouseEnter\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelect, decorators: [{\n type: Component,\n args: [{ selector: 'p-multiSelect', template: `\n
    \n
    \n \n
    \n
    \n
    \n \n {{ label() || 'empty' }}\n \n
    \n {{ getLabelByValue(item) }}\n \n \n \n \n \n \n
    \n {{ placeholder || defaultLabel || 'empty' }}\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 \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 \n\n \n
      \n \n \n
    • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
    • \n
      \n \n \n \n
      \n\n
    • \n \n {{ emptyFilterMessageLabel }}\n \n \n
    • \n
    • \n \n {{ emptyMessageLabel }}\n \n \n
    • \n
    \n
    \n
    \n
    \n \n \n
    \n\n \n
    \n \n \n \n `, host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-focus]': 'focused || overlayVisible',\n '[class.p-inputwrapper-filled]': 'filled'\n }, providers: [MULTISELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\"@layer primeng{.p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer;display:flex}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }], propDecorators: { id: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], inputId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], group: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterPlaceHolder: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], overlayVisible: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], displaySelectedLabel: [{\n type: Input\n }], maxSelectedLabels: [{\n type: Input\n }], selectionLimit: [{\n type: Input\n }], selectedItemsLabel: [{\n type: Input\n }], showToggleAll: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], resetFilterOnHide: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], overlayOptions: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipPosition: [{\n type: Input\n }], tooltipPositionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], autofocusFilter: [{\n type: Input\n }], display: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], showClear: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], defaultLabel: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], selectAll: [{\n type: Input\n }], focusOnHover: [{\n type: Input\n }], filterFields: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], autoOptionFocus: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onPanelShow: [{\n type: Output\n }], onPanelHide: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onSelectAllChange: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], overlayViewChild: [{\n type: ViewChild,\n args: ['overlay']\n }], filterInputChild: [{\n type: ViewChild,\n args: ['filterInput']\n }], focusInputViewChild: [{\n type: ViewChild,\n args: ['focusInput']\n }], itemsViewChild: [{\n type: ViewChild,\n args: ['items']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], lastHiddenFocusableElementOnOverlay: [{\n type: ViewChild,\n args: ['lastHiddenFocusableEl']\n }], firstHiddenFocusableElementOnOverlay: [{\n type: ViewChild,\n args: ['firstHiddenFocusableEl']\n }], headerCheckboxViewChild: [{\n type: ViewChild,\n args: ['headerCheckbox']\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], headerFacet: [{\n type: ContentChild,\n args: [Header]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass MultiSelectModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon], exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectModule, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon, OverlayModule, SharedModule, ScrollerModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MultiSelectModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon],\n exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule],\n declarations: [MultiSelect, MultiSelectItem]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectItem, MultiSelectModule };\n","\r\n\r\n\t\r\n\t\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tSelectCustomControlDirective\r\n} from '@entity/directives/select-custom-control.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'custom-multi-select',\r\n\ttemplateUrl: './custom-multi-select.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-multi-select.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Multi-Select.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomMultiSelectComponent\r\n * @extends {SelectCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomMultiSelectComponent\r\n\textends SelectCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the CustomMultiSelectComponent.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomMultiSelectComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(siteLayoutService,\r\n\t\t\tchangeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the filter event that will be emitted when the filter\r\n\t * input is altered.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CustomMultiSelectComponent\r\n\t */\r\n\t@Output() public onfilterEvent: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set default values if these are defined\r\n\t * and a set value does not exist.\r\n\t *\r\n\t * @memberof CustomMultiSelectComponent\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.archivedDisable = this.field.props.disabled;\r\n\t\tthis.archivedPlaceHolder = this.field.props.placeholder;\r\n\r\n\t\tif (AnyHelper.isNull(this.dataOptions))\r\n\t\t{\r\n\t\t\tthis.dataOptions = this.field.props.options;\r\n\t\t}\r\n\r\n\t\tthis.field.props.updateDataOptions =\r\n\t\t\tthis.updateDataOptions.bind(this);\r\n\r\n\t\tif (!AnyHelper.isNull(this.field.props?.default)\r\n\t\t\t&& AnyHelper.isNull(this.field.formControl.value))\r\n\t\t{\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\tthis.field.props.default);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsuper.ngOnInit();\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler method is used to capture and send a filter event\r\n\t * from a filtered multiSelect.\r\n\t *\r\n\t * @param {any} event\r\n\t * The filter event that fired this handler.\r\n\t * @memberof CustomMultiSelectComponent\r\n\t */\r\n\tpublic onFilter(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tthis.onfilterEvent.emit(event.filter);\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler method is used to set the value of the form control\r\n\t * as an empty string if null or undefined. This will then call the existing\r\n\t * change function.\r\n\t *\r\n\t * @param {any} event\r\n\t * The change event that fired this handler.\r\n\t * @memberof CustomMultiSelectComponent\r\n\t */\r\n\t public change(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\r\n\t\tthis.validateControl();\r\n\t}\r\n}","\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tstate,\r\n\tstyle,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tSelectCustomControlDirective\r\n} from '@entity/directives/select-custom-control.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIGroupedDropdownOption\r\n} from '@shared/interfaces/application-objects/grouped-dropdown-option.interface';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisArray\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable,\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'custom-select',\r\n\ttemplateUrl: './custom-select.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-select.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\ttrigger('displayAnimation', [\r\n\t\t\tstate('hidden', style({\r\n\t\t\t\tvisibility: 'hidden'\r\n\t\t\t})),\r\n\t\t\tstate('visible', style({\r\n\t\t\t\tvisibility: 'visible'\r\n\t\t\t}))\r\n\t\t])\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Select.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomSelectComponent\r\n * @extends {SelectCustomControlDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {AfterViewInit}\r\n */\r\nexport class CustomSelectComponent\r\n\textends SelectCustomControlDirective\r\n\timplements OnInit, OnDestroy, AfterViewInit\r\n{\r\n\t/** Initializes a new instance of the CustomSelectComponent.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(siteLayoutService,\r\n\t\t\tchangeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the filter event that will be emitted when the filter\r\n\t * input is altered.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\t@Output() public onfilterEvent: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the initial property show clear value prior to\r\n\t * in code alters. This value is reset on destroy.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic archivedShowClear: boolean;\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set default values if these are defined\r\n\t * and a set value does not exist.\r\n\t *\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.archivedDisable = this.field.props.disabled;\r\n\t\tthis.archivedPlaceHolder = this.field.props.placeholder;\r\n\t\tthis.archivedShowClear = this.field.props.showClear;\r\n\t\tthis.field.props.updateDataOptions =\r\n\t\t\tthis.updateDataOptions.bind(this);\r\n\r\n\t\tif (AnyHelper.isNull(this.dataOptions))\r\n\t\t{\r\n\t\t\tthis.dataOptions = this.field.props.options;\r\n\t\t}\r\n\r\n\t\tconst isAnArray: boolean =\r\n\t\t\tisArray(this.dataOptions) === true;\r\n\t\tconst isGrouped: boolean =\r\n\t\t\tisAnArray === true\r\n\t\t\t\t&& (this.dataOptions).length > 0\r\n\t\t\t\t&& !AnyHelper.isNull((this.dataOptions)[0].items);\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.field.formControl.value))\r\n\t\t{\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tlet availableOptions: any[] | Observable =\r\n\t\t\t\t\tisGrouped\r\n\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t: this.dataOptions;\r\n\r\n\t\t\t\tif (isGrouped === true)\r\n\t\t\t\t{\r\n\t\t\t\t\t(this.dataOptions)\r\n\t\t\t\t\t\t.forEach((groupedDataOption: IGroupedDropdownOption) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tavailableOptions =\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...availableOptions,\r\n\t\t\t\t\t\t\t\t\t...groupedDataOption.items\r\n\t\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\tthis.field.props?.default))\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\tnull);\r\n\r\n\t\t\t\t\tavailableOptions.forEach(\r\n\t\t\t\t\t\t(option: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (option.value ===\r\n\t\t\t\t\t\t\t\tthis.field.props.default)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\t\t\t\tthis.field.props.default);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (isAnArray === true\r\n\t\t\t\t\t\t&& (availableOptions).length === 1\r\n\t\t\t\t\t\t&& this.field.props?.disableAutoSetValue !== true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\t\t(availableOptions)[0].value);\r\n\r\n\t\t\t\t\t\tthis.field.props.disabled = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\t\tnull);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.disableSelectionLogic();\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.field.formControl?.value))\r\n\t\t{\r\n\t\t\tthis.field.props.showClear = false;\r\n\t\t}\r\n\r\n\t\tsuper.ngOnInit();\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to reset the disabled value to the original template\r\n\t * option value as this is programatically altered in this component.\r\n\t *\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.field?.props))\r\n\t\t{\r\n\t\t\tthis.field.props.disabled =\r\n\t\t\t\tthis.archivedDisable;\r\n\r\n\t\t\tthis.field.props.showClear =\r\n\t\t\t\tthis.archivedShowClear;\r\n\r\n\t\t\tthis.field.props.placeholder =\r\n\t\t\t\tthis.archivedPlaceHolder;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler method is used to set the value of the form control\r\n\t * as an empty string if null or undefined. This will then call the existing\r\n\t * change function.\r\n\t *\r\n\t * @param {any} event\r\n\t * The change event that fired this handler.\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic change(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.field.formControl.value))\r\n\t\t{\r\n\t\t\tthis.field.formControl\r\n\t\t\t\t.setValue(null);\r\n\t\t\tthis.field.props.showClear = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.field.props.showClear = this.archivedShowClear;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\r\n\t\tthis.validateControl();\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler method is used to capture and send a filter event\r\n\t * from a filtered dropdown.\r\n\t *\r\n\t * @param {any} event\r\n\t * The filter event that fired this handler.\r\n\t * @memberof CustomSelectComponent\r\n\t */\r\n\tpublic onFilter(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tthis.onfilterEvent.emit(event.filter);\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIGroupedDropdownOption\r\n} from '@shared/interfaces/application-objects/grouped-dropdown-option.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\nimport {\r\n\tSubject,\r\n\tSubscription,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tof\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'custom-data-select',\r\n\ttemplateUrl: './custom-data-select.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-data-select.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Data Select.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomDataSelectComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomDataSelectComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of a custom data select component.\r\n\t *\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for data providers.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The base class used to detect tree changes.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this select.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading filtered options value of this select.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic filterApiLoading: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data options for this select.\r\n\t *\r\n\t * @type {IDropdownOption[] | IGroupedDropdownOption[]}\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic dataOptions: IDropdownOption[] | IGroupedDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the debounce subject to delay filter events until the user\r\n\t * has delayed typing.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tprivate filterChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription class\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tprivate dataSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets the debounce delay used for calling a new api promise\r\n\t * using the filter input and data promise.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tprivate readonly filterDebounceDelay: number =\r\n\t\tAppConstants.time.oneSecond;\r\n\r\n\t/**\r\n\t * Gets or sets the string that will be displayed if the property\r\n\t * is set to use an api filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tprivate readonly loadingFilterMessage: string =\r\n\t\t'Loading results';\r\n\r\n\t/**\r\n\t * Gets or sets the interpolatio value base identifier.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof OperationButtonMenuComponent\r\n\t */\r\n\tprivate readonly interpolationValueBaseIdentifier: string =\r\n\t\t'#{item}';\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to load the sent data promise values and map these\r\n\t * into an options array.\r\n\t *\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.field.props.initializeDataOptions =\r\n\t\t\tthis.initializeDataOptions.bind(this);\r\n\t\tthis.initializeDataOptions();\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the data promise for this select and maps these values into the\r\n\t * sent templates.\r\n\t *\r\n\t * @async\r\n\t * @param {boolean} forceRedraw\r\n\t * Forces the custom control to redraw on UI and load all definitions.\r\n\t * Defaults to true.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic async initializeDataOptions(\r\n\t\tforceRedraw: boolean = true): Promise\r\n\t{\r\n\t\tif (this.field.props.useApiFilter === true)\r\n\t\t{\r\n\t\t\tthis.field.props.emptyFilterMessage =\r\n\t\t\t\tthis.loadingFilterMessage;\r\n\t\t}\r\n\r\n\t\tthis.dataSubscription?.unsubscribe();\r\n\t\tthis.dataOptions = [];\r\n\t\tthis.loading = forceRedraw;\r\n\t\tthis.fireChanges();\r\n\r\n\t\tconst useLabelFunction: boolean =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.field.props.labelFunction);\r\n\t\tconst useObjectValue: boolean =\r\n\t\t\tthis.field.props.valueTemplate.indexOf(\r\n\t\t\t\tAppConstants.interpolationTypes.object) === 0;\r\n\t\tconst useGroupedDropdown: boolean =\r\n\t\t\t!AnyHelper.isNull(this.field.props.groupItemDataPromise);\r\n\r\n\t\tthis.dataSubscription =\r\n\t\t\tof(\r\n\t\t\t\tAnyHelper.isFunction(this.field.props.dataPromise)\r\n\t\t\t\t\t? await this.field.props.dataPromise\r\n\t\t\t\t\t: await this.loadDataPromise(\r\n\t\t\t\t\t\tthis.field.props.dataPromise,\r\n\t\t\t\t\t\tthis.field.props.context,\r\n\t\t\t\t\t\tthis.field))\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\tasync(data: any[]) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (useGroupedDropdown === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst existingOption: any =\r\n\t\t\t\t\t\t\t\t(this.field.props.options)?.find(\r\n\t\t\t\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\t\t\toption.value ===\r\n\t\t\t\t\t\t\t\t\t\t\tthis.field.formControl.value);\r\n\r\n\t\t\t\t\t\t\tconst dataOptions: IDropdownOption[] =\r\n\t\t\t\t\t\t\t\tthis.mapDropdownData(\r\n\t\t\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\t\t\tuseLabelFunction,\r\n\t\t\t\t\t\t\t\t\tuseObjectValue);\r\n\r\n\t\t\t\t\t\t\tconst loadedOption: any =\r\n\t\t\t\t\t\t\t\tdataOptions?.find(\r\n\t\t\t\t\t\t\t\t\t(option: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\t\t\toption.value ===\r\n\t\t\t\t\t\t\t\t\t\t\tthis.field.formControl.value);\r\n\r\n\t\t\t\t\t\t\tif (AnyHelper.isNull(loadedOption)\r\n\t\t\t\t\t\t\t\t&& !AnyHelper.isNull(existingOption))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tdataOptions.push(existingOption);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.dataOptions =\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...dataOptions\r\n\t\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\t\tthis.field.props.options =\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...this.dataOptions\r\n\t\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\t\tif (AnyHelper.isNull(loadedOption)\r\n\t\t\t\t\t\t\t\t&& !AnyHelper.isNull(existingOption))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\t\t\t\t\t\texistingOption.value);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst groupData: any[] =\r\n\t\t\t\t\t\t\t\tawait this.populateGroupData(data);\r\n\r\n\t\t\t\t\t\t\tconst groupedOptions: IGroupedDropdownOption[] = [];\r\n\t\t\t\t\t\t\tfor (const groupItem of groupData)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tgroupedOptions.push(\r\n\t\t\t\t\t\t\t\t\tthis.mapGroupItem(\r\n\t\t\t\t\t\t\t\t\t\tgroupItem,\r\n\t\t\t\t\t\t\t\t\t\tuseLabelFunction,\r\n\t\t\t\t\t\t\t\t\t\tuseObjectValue));\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.dataOptions =\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...groupedOptions\r\n\t\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\t\tthis.field.props.options =\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...this.dataOptions\r\n\t\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.initializeFilter();\r\n\r\n\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\tsuper.ngOnInit();\r\n\t\t\t\t\t\tthis.fireChanges();\r\n\t\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to complete any subscriptions or observables when\r\n\t * destroyed.\r\n\t *\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\t// Reset the filter value in the page context.\r\n\t\tif (!AnyHelper.isNull(this.field.props?.context))\r\n\t\t{\r\n\t\t\tthis.field.props\r\n\t\t\t\t.context.data.dataSelectOptions = null;\r\n\t\t}\r\n\r\n\t\tthis.filterChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler method is used to handle filter based changes if\r\n\t * this control is set to reload api data on filter.\r\n\t *\r\n\t * @param {any} filter\r\n\t * The filter string sent to this event handler.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic onFilter(\r\n\t\tfilter: string): void\r\n\t{\r\n\t\tif (this.field.props.useApiFilter !== true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.filterChanged.next(filter);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the data promise.\r\n\t *\r\n\t * @async\r\n\t * @param {string} promiseAsString\r\n\t * The promise value as a string as defined in template options.\r\n\t * @param {object} dataContext\r\n\t * The context to run this data promise against.\r\n\t * @param {any} field\r\n\t * The formly layout field.\r\n\t * @returns {object[]}\r\n\t * The set of loaded items as defined in the data promise.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic async loadDataPromise(\r\n\t\tpromiseAsString: string,\r\n\t\tdataContext: object,\r\n\t\tfield: any): Promise\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.transformToFieldDataPromise(\r\n\t\t\t\tpromiseAsString,\r\n\t\t\t\tdataContext,\r\n\t\t\t\tfield);\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the group level data promise if a group data promise\r\n\t * is sent.\r\n\t *\r\n\t * @async\r\n\t * @param {object} data\r\n\t * The result of the data promise call.\r\n\t * @returns {object[]}\r\n\t * The set of items sent in with populated grouped items as defined\r\n\t * in the group data promise.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic async populateGroupData(\r\n\t\tdata: object[]): Promise\r\n\t{\r\n\t\tthis.field.props.context =\r\n\t\t{\r\n\t\t\t...this.field.props.context,\r\n\t\t\tgroupData: data\r\n\t\t};\r\n\r\n\t\tfor (let index: number = 0;\r\n\t\t\tindex < data.length;\r\n\t\t\tindex++)\r\n\t\t{\r\n\t\t\tthis.field.props.context.groupItem = data[index];\r\n\t\t\tconst groupData: object[] =\r\n\t\t\t\tawait this.loadDataPromise(\r\n\t\t\t\t\tthis.field.props.groupItemDataPromise,\r\n\t\t\t\t\tthis.field.props.context,\r\n\t\t\t\t\tthis.field);\r\n\t\t\tdata[index] =\r\n\t\t\t\t{\r\n\t\t\t\t\t...data[index],\r\n\t\t\t\t\titems: groupData\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst groupedData: object[] =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t...data\r\n\t\t\t];\r\n\r\n\t\treturn groupedData;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps a dropdown option from a sent item.\r\n\t *\r\n\t * @param {object} item\r\n\t * The object to be mapped into a dropdown option.\r\n\t * @param {boolean} useLabelFunction\r\n\t * If true, this will create the dropdown option using the label function\r\n\t * as defined in template options.\r\n\t * If false, this will use the label template.\r\n\t * @param {boolean} useObjectValue\r\n\t * If true, this will assign the value of the dropdown option as the item.\r\n\t * If false, this will assign the value as the mapped value template.\r\n\t * @returns {IDropdownOption}\r\n\t * A mapped dropdown option ready for a client display.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic mapDropdownOption(\r\n\t\titem: object,\r\n\t\tuseLabelFunction: boolean,\r\n\t\tuseObjectValue: boolean): IDropdownOption\r\n\t{\r\n\t\tconst interpolationDataName: string =\r\n\t\t\tthis.field.props.valueTemplate\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t/\\#{item.(.*?)\\}/gm,\r\n\t\t\t\t\t'$1');\r\n\r\n\t\tconst itemValue: any =\r\n\t\t\tinterpolationDataName === this.interpolationValueBaseIdentifier\r\n\t\t\t\t? item\r\n\t\t\t\t: get(\r\n\t\t\t\t\titem,\r\n\t\t\t\t\tinterpolationDataName);\r\n\r\n\t\tconst dropdownOption: IDropdownOption =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tlabel: useLabelFunction === true\r\n\t\t\t\t\t? StringHelper.transformToFunction(\r\n\t\t\t\t\t\tthis.field.props.labelFunction,\r\n\t\t\t\t\t\tthis.field.props.context)(item)\r\n\t\t\t\t\t: StringHelper.interpolate(\r\n\t\t\t\t\t\tthis.field.props.labelTemplate,\r\n\t\t\t\t\t\titem),\r\n\t\t\t\tvalue: useObjectValue === true\r\n\t\t\t\t\t? itemValue\r\n\t\t\t\t\t: StringHelper.interpolate(\r\n\t\t\t\t\t\tthis.field.props.valueTemplate,\r\n\t\t\t\t\t\titem)\r\n\t\t\t};\r\n\r\n\t\tdropdownOption.disabled =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.field.props.disabledFunction)\r\n\t\t\t\t? false\r\n\t\t\t\t: StringHelper.transformToFunction(\r\n\t\t\t\t\tthis.field.props.disabledFunction,\r\n\t\t\t\t\tthis.field.props.context)(this.field, dropdownOption);\r\n\r\n\t\treturn dropdownOption;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps an object array into a consumable set of dropdown options and\r\n\t * returns these values as a label sorted array.\r\n\t *\r\n\t * @param {object[]} data\r\n\t * The object array to be mapped into a dropdown option set.\r\n\t * @param {boolean} useLabelFunction\r\n\t * If true, this will create the dropdown option set using the label\r\n\t * function as defined in template options. If false, this will use\r\n\t * the label template.\r\n\t * @param {boolean} useObjectValue\r\n\t * If true, this will assign the value of the dropdown option set as the\r\n\t * item. If false, this will assign the value as the mapped value template.\r\n\t * @returns {IDropdownOption[]}\r\n\t * A mapped dropdown option set ready for a client display.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic mapDropdownData(\r\n\t\tdata: object[],\r\n\t\tuseLabelFunction: boolean,\r\n\t\tuseObjectValue: boolean): IDropdownOption[]\r\n\t{\r\n\t\tconst options: IDropdownOption[] = [];\r\n\t\tfor (const item of data as any[])\r\n\t\t{\r\n\t\t\toptions.push(\r\n\t\t\t\tthis.mapDropdownOption(\r\n\t\t\t\t\titem,\r\n\t\t\t\t\tuseLabelFunction,\r\n\t\t\t\t\tuseObjectValue));\r\n\t\t}\r\n\r\n\t\tif (this.field.props.dataPromiseSort === true)\r\n\t\t{\r\n\t\t\treturn options;\r\n\t\t}\r\n\r\n\t\treturn options.sort((\r\n\t\t\tfirstItem: IDropdownOption,\r\n\t\t\tsecondItem: IDropdownOption) =>\r\n\t\t\tObjectHelper.sortByPropertyValue(\r\n\t\t\t\tfirstItem,\r\n\t\t\t\tsecondItem,\r\n\t\t\t\tAppConstants.commonProperties.label));\r\n\t}\r\n\r\n\t/**\r\n\t * Maps a group item into a dropdown option holding multiple child options.\r\n\t *\r\n\t * @param {any} data\r\n\t * The object to be mapped into a group item holding a dropdown option set.\r\n\t * @param {boolean} useLabelFunction\r\n\t * If true, this will create the dropdown option set using the label\r\n\t * function as defined in template options. If false, this will use\r\n\t * the label template.\r\n\t * @param {boolean} useObjectValue\r\n\t * If true, this will assign the value of the dropdown option set as the\r\n\t * item. If false, this will assign the value as the mapped value template.\r\n\t * @returns {IGroupedDropdownOption}\r\n\t * A mapped dropdown option holding grouped items ready for a client\r\n\t * display.\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic mapGroupItem(\r\n\t\tgroupItem: any,\r\n\t\tuseLabelFunction: boolean,\r\n\t\tuseObjectValue: boolean): IGroupedDropdownOption\r\n\t{\r\n\t\tgroupItem.items =\r\n\t\t\tthis.mapDropdownData(\r\n\t\t\t\tgroupItem.items,\r\n\t\t\t\tuseLabelFunction,\r\n\t\t\t\tuseObjectValue);\r\n\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\tlabel: StringHelper.interpolate(\r\n\t\t\t\t\tthis.field.props.groupLabelTemplate,\r\n\t\t\t\t\tgroupItem),\r\n\t\t\t\tvalue: groupItem.id,\r\n\t\t\t\titems: groupItem.items\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes filter handling for this data select.\r\n\t *\r\n\t * @memberof CustomDataSelectComponent\r\n\t */\r\n\tpublic initializeFilter(): void\r\n\t{\r\n\t\tthis.filterChanged.complete();\r\n\t\tthis.filterChanged = new Subject();\r\n\t\tthis.filterChanged.pipe(\r\n\t\t\tdebounceTime(this.filterDebounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe(\r\n\t\t\t\tasync (newValue: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.field.props\r\n\t\t\t\t\t\t.context.data.dataSelectOptions =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfilterValue: newValue\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\tthis.fireChanges();\r\n\r\n\t\t\t\t\tawait this.initializeDataOptions(false);\r\n\r\n\t\t\t\t\tthis.field.props.emptyFilterMessage = null;\r\n\t\t\t\t\tthis.fireChanges();\r\n\t\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\n\r\n@Component({\r\n\tselector: 'custom-icon-input',\r\n\ttemplateUrl: './custom-icon-input.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-icon-input.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Switch.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomIconInputComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomIconInputComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the CustomIconInputComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the html icon class name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic htmlIconClassName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the input value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic inputValue: string;\r\n\r\n\t/**\r\n\t * Gets or sets the data model.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic dataModel: object;\r\n\r\n\t/**\r\n\t * Gets or sets spinner icon class name.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tprivate readonly spinnerIconClassName: string =\r\n\t\t'fa fa-fw fa-spin fa-spinner';\r\n\r\n\t/**\r\n\t * Gets or sets spinner icon class name.\r\n\t *\r\n\t * @private\r\n\t * @type {number}\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tprivate readonly loadingIconDebounceTime: number = 400;\r\n\r\n\t/**\r\n\t * Handles the on initialization interface.\r\n\t * This will setup the icon class name if any existing.\r\n\t *\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setIconClassName();\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up html icon class name string\r\n\t *\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic setIconClassName(): void\r\n\t{\r\n\t\tthis.htmlIconClassName = `fa fa-${this.field.formControl.value}`;\r\n\t\tthis.fireChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the data on input change.\r\n\t *\r\n\t * @memberof CustomIconInputComponent\r\n\t */\r\n\tpublic inputChange(): void\r\n\t{\r\n\t\tthis.htmlIconClassName = this.spinnerIconClassName;\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setIconClassName();\r\n\t\t\t},\r\n\t\t\tthis.loadingIconDebounceTime);\r\n\r\n\t\tthis.validateControl();\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\t\r\n\r\n\r\n\r\n","import { style, animate, animation, useAnimation, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, ContentChildren, Output, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { ZIndexUtils } from 'primeng/utils';\n\nconst showAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{transition}}')]);\nconst hideAnimation = animation([animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))]);\n/**\n * Sidebar is a panel component displayed as an overlay at the edges of the screen.\n * @group Components\n */\nclass Sidebar {\n document;\n el;\n renderer;\n cd;\n config;\n /**\n * Target element to attach the dialog, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * Whether to block scrolling of the document when sidebar is active.\n * @group Props\n */\n blockScroll = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Aria label of the close icon.\n * @group Props\n */\n ariaCloseLabel;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Whether an overlay mask is displayed behind the sidebar.\n * @group Props\n */\n modal = true;\n /**\n * Whether to dismiss sidebar on click of the mask.\n * @group Props\n */\n dismissible = true;\n /**\n * Whether to display the close icon.\n * @group Props\n */\n showCloseIcon = true;\n /**\n * Specifies if pressing escape key should hide the sidebar.\n * @group Props\n */\n closeOnEscape = true;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Specifies the visibility of the dialog.\n * @group Props\n */\n get visible() {\n return this._visible;\n }\n set visible(val) {\n this._visible = val;\n }\n /**\n * Specifies the position of the sidebar, valid values are \"left\", \"right\", \"bottom\" and \"top\".\n * @group Props\n */\n get position() {\n return this._position;\n }\n set position(value) {\n this._position = value;\n switch (value) {\n case 'left':\n this.transformOptions = 'translate3d(-100%, 0px, 0px)';\n break;\n case 'right':\n this.transformOptions = 'translate3d(100%, 0px, 0px)';\n break;\n case 'bottom':\n this.transformOptions = 'translate3d(0px, 100%, 0px)';\n break;\n case 'top':\n this.transformOptions = 'translate3d(0px, -100%, 0px)';\n break;\n }\n }\n /**\n * Adds a close icon to the header to hide the dialog.\n * @group Props\n */\n get fullScreen() {\n return this._fullScreen;\n }\n set fullScreen(value) {\n this._fullScreen = value;\n if (value)\n this.transformOptions = 'none';\n }\n templates;\n /**\n * Callback to invoke when dialog is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke when dialog is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n /**\n * Callback to invoke when dialog visibility is changed.\n * @param {boolean} value - Visible value.\n * @group Emits\n */\n visibleChange = new EventEmitter();\n initialized;\n _visible;\n _position = 'left';\n _fullScreen = false;\n container;\n transformOptions = 'translate3d(-100%, 0px, 0px)';\n mask;\n maskClickListener;\n documentEscapeListener;\n animationEndListener;\n contentTemplate;\n headerTemplate;\n footerTemplate;\n closeIconTemplate;\n headlessTemplate;\n constructor(document, el, renderer, cd, config) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n }\n ngAfterViewInit() {\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n case 'headless':\n this.headlessTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n onKeyDown(event) {\n if (event.code === 'Escape') {\n this.hide(false);\n }\n }\n show() {\n if (this.autoZIndex) {\n ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);\n }\n if (this.modal) {\n this.enableModality();\n }\n this.onShow.emit({});\n this.visibleChange.emit(true);\n }\n hide(emit = true) {\n if (emit) {\n this.onHide.emit({});\n }\n if (this.modal) {\n this.disableModality();\n }\n }\n close(event) {\n this.hide(false);\n this.visibleChange.emit(false);\n event.preventDefault();\n }\n enableModality() {\n if (!this.mask) {\n this.mask = this.renderer.createElement('div');\n this.renderer.setStyle(this.mask, 'zIndex', String(parseInt(this.container.style.zIndex) - 1));\n DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');\n if (this.dismissible) {\n this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {\n if (this.dismissible) {\n this.close(event);\n }\n });\n }\n this.renderer.appendChild(this.document.body, this.mask);\n if (this.blockScroll) {\n DomHandler.blockBodyScroll();\n }\n }\n }\n disableModality() {\n if (this.mask) {\n DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n this.animationEndListener = this.renderer.listen(this.mask, 'animationend', this.destroyModal.bind(this));\n }\n }\n destroyModal() {\n this.unbindMaskClickListener();\n if (this.mask) {\n this.renderer.removeChild(this.document.body, this.mask);\n }\n if (this.blockScroll) {\n DomHandler.unblockBodyScroll();\n }\n this.unbindAnimationEndListener();\n this.mask = null;\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.appendContainer();\n this.show();\n if (this.closeOnEscape) {\n this.bindDocumentEscapeListener();\n }\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.hide();\n ZIndexUtils.clear(this.container);\n this.unbindGlobalListeners();\n break;\n }\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.container);\n else\n DomHandler.appendChild(this.container, this.appendTo);\n }\n }\n bindDocumentEscapeListener() {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;\n this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n if (event.which == 27) {\n if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container)) {\n this.close(event);\n }\n }\n });\n }\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n unbindGlobalListeners() {\n this.unbindMaskClickListener();\n this.unbindDocumentEscapeListener();\n }\n unbindAnimationEndListener() {\n if (this.animationEndListener && this.mask) {\n this.animationEndListener();\n this.animationEndListener = null;\n }\n }\n ngOnDestroy() {\n this.initialized = false;\n if (this.visible && this.modal) {\n this.destroyModal();\n }\n if (this.appendTo && this.container) {\n this.renderer.appendChild(this.el.nativeElement, this.container);\n }\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.container = null;\n this.unbindGlobalListeners();\n this.unbindAnimationEndListener();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Sidebar, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Sidebar, selector: \"p-sidebar\", inputs: { appendTo: \"appendTo\", blockScroll: \"blockScroll\", style: \"style\", styleClass: \"styleClass\", ariaCloseLabel: \"ariaCloseLabel\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", modal: \"modal\", dismissible: \"dismissible\", showCloseIcon: \"showCloseIcon\", closeOnEscape: \"closeOnEscape\", transitionOptions: \"transitionOptions\", visible: \"visible\", position: \"position\", fullScreen: \"fullScreen\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\", visibleChange: \"visibleChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\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 `, isInline: true, styles: [\"@layer primeng{.p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto;flex-grow:1}.p-sidebar-header{display:flex;align-items:center}.p-sidebar-footer{margin-top:auto}.p-sidebar-icon{display:flex;align-items:center;justify-content:center;margin-left:auto}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }], animations: [trigger('panelState', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Sidebar, decorators: [{\n type: Component,\n args: [{ selector: 'p-sidebar', template: `\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 `, animations: [trigger('panelState', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto;flex-grow:1}.p-sidebar-header{display:flex;align-items:center}.p-sidebar-footer{margin-top:auto}.p-sidebar-icon{display:flex;align-items:center;justify-content:center;margin-left:auto}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }], propDecorators: { appendTo: [{\n type: Input\n }], blockScroll: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaCloseLabel: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], modal: [{\n type: Input\n }], dismissible: [{\n type: Input\n }], showCloseIcon: [{\n type: Input\n }], closeOnEscape: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], visible: [{\n type: Input\n }], position: [{\n type: Input\n }], fullScreen: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }] } });\nclass SidebarModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: SidebarModule, declarations: [Sidebar], imports: [CommonModule, RippleModule, SharedModule, TimesIcon], exports: [Sidebar, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SidebarModule, imports: [CommonModule, RippleModule, SharedModule, TimesIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SidebarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule, SharedModule, TimesIcon],\n exports: [Sidebar, SharedModule],\n declarations: [Sidebar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Sidebar, SidebarModule };\n","
    \r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{field.props.label}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t 0\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{field.props.label}}\r\n\t\t\t\r\n\t\t\t 0\">\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{field.props.label}}\r\n\t\t\t\t\r\n\t\t\t\t 0\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer,\r\n\tSafeResourceUrl\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-iframe',\r\n\ttemplateUrl: './custom-iframe.component.html',\r\n\tstyleUrls: ['./custom-iframe.component.scss'],\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom iFrame.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomIframeComponent\r\n * @extends {FieldType}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomIframeComponent\r\n\textends FieldType\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an CustomIframeComponent.\r\n\t *\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The sanitizer that helps to avoid XSS bugs.\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly sanitizer: DomSanitizer)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets message data.\r\n\t *\r\n\t * @type {Object}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic hostMessage: Object =\r\n\t\t{\r\n\t\t\t'string': 'testIframeHostMessageName',\r\n\t\t\t'number': 1,\r\n\t\t\t'boolean': true\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets FullScreen action to true.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic isFullScreen: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the IFrame HTML collection of elements.\r\n\t *\r\n\t * @type {HTMLIFrameElement}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic iframes: HTMLCollectionOf;\r\n\r\n\t/**\r\n\t * Gets or sets the height string for the iFrame.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic iframeHeight: string;\r\n\r\n\t/**\r\n\t * Gets or sets the view port percentage to calculate the\r\n\t * height for the iFrame.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic iframeSize: string = 'small';\r\n\r\n\t/**\r\n\t * Gets or sets the URL for the iFrame.\r\n\t *\r\n\t * @type {SafeResourceUrl}\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic iframeTargetUrl: SafeResourceUrl;\r\n\r\n\t/**\r\n\t * An active event listener for any window message event.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.messageEvent,\r\n\t\t[AppEventParameterConstants.event])\r\n\tpublic onMessage(event: { origin: string; data: any }): void\r\n\t{\r\n\t\tthis.sendDataToIframe(event, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Displays to the developer what is allowed in a FieldType Component\r\n\t * above and beyond normal component interactions.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setIframeHeight();\r\n\t\tthis.lowerCaseIframeSize();\r\n\t\tthis.setIframeSource();\r\n\t}\r\n\r\n\t/**\r\n\t * A function that expands to full screen the iframe section.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic fullScreen(): void\r\n\t{\r\n\t\tthis.isFullScreen = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Locates the iframe HTML element within the Host Application\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic iframeLocator(): void\r\n\t{\r\n\t\tthis.iframes = document.getElementsByTagName('iframe');\r\n\t}\r\n\r\n\t/**\r\n\t * A Function that parses to lower case the size string that comes\r\n\t * from the dababase template options.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic lowerCaseIframeSize(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.field.props.size))\r\n\t\t{\r\n\t\t\tthis.iframeSize = this.field.props.size.toLowerCase();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sends data to the iframe contained within the application\r\n\t *\r\n\t * @param {any} event\r\n\t * The event passed from the Host Application\r\n\t * @param {number} iframeIndex\r\n\t * The HTML object index number of the desired iframe to send the data\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic sendDataToIframe(\r\n\t\tevent: any,\r\n\t\tiframeIndex: number): void\r\n\t{\r\n\t\tthis.iframeLocator();\r\n\t\tthis.iframes[iframeIndex].contentWindow\r\n\t\t\t.postMessage(this.hostMessage, event.origin);\r\n\r\n\t\tEventHelper\r\n\t\t\t.dispatchBannerEvent(\r\n\t\t\t\t'Completed',\r\n\t\t\t\t'Data sent to iframe ' + JSON.stringify(this.hostMessage),\r\n\t\t\t\tAppConstants.activityStatus.info);\r\n\t}\r\n\r\n\t/**\r\n\t * A Function that sets the size of the iframe to be displayed within\r\n\t * a layout based on the database property.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic setIframeHeight(): void\r\n\t{\r\n\t\tconst defaultHeightViewPort = 33;\r\n\t\tconst heightViewPort: number =\r\n\t\t\t!AnyHelper.isNullOrEmpty(this.field.props.customHeight)\r\n\t\t\t\t&& this.field.props.useCustomHeight\r\n\t\t\t\t? this.field.props.customHeight\r\n\t\t\t\t: defaultHeightViewPort;\r\n\r\n\t\tthis.iframeHeight = 'calc(' + heightViewPort + 'vh)';\r\n\t}\r\n\r\n\t/**\r\n\t * A function that dinamically sets the source attribute\r\n\t * for every existing iframe based on the database.\r\n\t *\r\n\t * @memberof CustomIframeComponent\r\n\t */\r\n\tpublic setIframeSource(): void\r\n\t{\r\n\t\tthis.iframeTargetUrl =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t\tthis.field.props.source);\r\n\t}\r\n}","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\n\nclass EyeIcon extends BaseIcon {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EyeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: EyeIcon, isStandalone: true, selector: \"EyeIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EyeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'EyeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { EyeIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass RefreshIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RefreshIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: RefreshIcon, isStandalone: true, selector: \"RefreshIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RefreshIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'RefreshIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RefreshIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass SearchMinusIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SearchMinusIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: SearchMinusIcon, isStandalone: true, selector: \"SearchMinusIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SearchMinusIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'SearchMinusIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SearchMinusIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass SearchPlusIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SearchPlusIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: SearchPlusIcon, isStandalone: true, selector: \"SearchPlusIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SearchPlusIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'SearchPlusIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SearchPlusIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass UndoIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UndoIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: UndoIcon, isStandalone: true, selector: \"UndoIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UndoIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'UndoIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { UndoIcon };\n","import { DomHandler } from 'primeng/dom';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, Input, HostListener, NgModule } from '@angular/core';\n\n/**\n * Focus Trap keeps focus within a certain DOM element while tabbing.\n * @group Components\n */\nclass FocusTrap {\n el;\n /**\n * When set as true, focus wouldn't be managed.\n * @group Props\n */\n pFocusTrapDisabled = false;\n constructor(el) {\n this.el = el;\n }\n onkeydown(e) {\n if (this.pFocusTrapDisabled !== true) {\n e.preventDefault();\n const focusableElement = DomHandler.getNextFocusableElement(this.el.nativeElement, e.shiftKey);\n if (focusableElement) {\n focusableElement.focus();\n focusableElement.select?.();\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrap, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: FocusTrap, selector: \"[pFocusTrap]\", inputs: { pFocusTrapDisabled: \"pFocusTrapDisabled\" }, host: { listeners: { \"keydown.tab\": \"onkeydown($event)\", \"keydown.shift.tab\": \"onkeydown($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrap, decorators: [{\n type: Directive,\n args: [{\n selector: '[pFocusTrap]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { pFocusTrapDisabled: [{\n type: Input\n }], onkeydown: [{\n type: HostListener,\n args: ['keydown.tab', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.shift.tab', ['$event']]\n }] } });\nclass FocusTrapModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrap], imports: [CommonModule], exports: [FocusTrap] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrapModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FocusTrapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [FocusTrap],\n declarations: [FocusTrap]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FocusTrap, FocusTrapModule };\n","import { style, animate, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, HostListener, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { EyeIcon } from 'primeng/icons/eye';\nimport { RefreshIcon } from 'primeng/icons/refresh';\nimport { SearchMinusIcon } from 'primeng/icons/searchminus';\nimport { SearchPlusIcon } from 'primeng/icons/searchplus';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { UndoIcon } from 'primeng/icons/undo';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i3 from 'primeng/focustrap';\nimport { FocusTrapModule } from 'primeng/focustrap';\n\n/**\n * Displays an image with preview and tranformation options. For multiple image, see Galleria.\n * @group Components\n */\nclass Image {\n document;\n config;\n cd;\n el;\n /**\n * Style class of the image element.\n * @group Props\n */\n imageClass;\n /**\n * Inline style of the image element.\n * @group Props\n */\n imageStyle;\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * The source path for the main image.\n * @group Props\n */\n src;\n /**\n * The srcset definition for the main image.\n * @group Props\n */\n srcSet;\n /**\n * The sizes definition for the main image.\n * @group Props\n */\n sizes;\n /**\n * The source path for the preview image.\n * @group Props\n */\n previewImageSrc;\n /**\n * The srcset definition for the preview image.\n * @group Props\n */\n previewImageSrcSet;\n /**\n * The sizes definition for the preview image.\n * @group Props\n */\n previewImageSizes;\n /**\n * Attribute of the preview image element.\n * @group Props\n */\n alt;\n /**\n * Attribute of the image element.\n * @group Props\n */\n width;\n /**\n * Attribute of the image element.\n * @group Props\n */\n height;\n /**\n * Attribute of the image element.\n * @group Props\n */\n loading;\n /**\n * Target element to attach the dialog, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * Controls the preview functionality.\n * @group Props\n */\n preview = false;\n /**\n * Transition options of the show animation\n * @group Props\n */\n showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation\n * @group Props\n */\n hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Triggered when the preview overlay is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Triggered when the preview overlay is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n /**\n * This event is triggered if an error occurs while loading an image file.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onImageError = new EventEmitter();\n mask;\n previewButton;\n closeButton;\n templates;\n indicatorTemplate;\n rotateRightIconTemplate;\n rotateLeftIconTemplate;\n zoomOutIconTemplate;\n zoomInIconTemplate;\n closeIconTemplate;\n maskVisible = false;\n previewVisible = false;\n rotate = 0;\n scale = 1;\n previewClick = false;\n container;\n wrapper;\n get isZoomOutDisabled() {\n return this.scale - this.zoomSettings.step <= this.zoomSettings.min;\n }\n get isZoomInDisabled() {\n return this.scale + this.zoomSettings.step >= this.zoomSettings.max;\n }\n zoomSettings = {\n default: 1,\n step: 0.1,\n max: 1.5,\n min: 0.5\n };\n constructor(document, config, cd, el) {\n this.document = document;\n this.config = config;\n this.cd = cd;\n this.el = el;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'indicator':\n this.indicatorTemplate = item.template;\n break;\n case 'rotaterighticon':\n this.rotateRightIconTemplate = item.template;\n break;\n case 'rotatelefticon':\n this.rotateLeftIconTemplate = item.template;\n break;\n case 'zoomouticon':\n this.zoomOutIconTemplate = item.template;\n break;\n case 'zoominicon':\n this.zoomInIconTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n default:\n this.indicatorTemplate = item.template;\n break;\n }\n });\n }\n onImageClick() {\n if (this.preview) {\n this.maskVisible = true;\n this.previewVisible = true;\n DomHandler.blockBodyScroll();\n }\n }\n onMaskClick() {\n if (!this.previewClick) {\n this.closePreview();\n }\n this.previewClick = false;\n }\n onMaskKeydown(event) {\n switch (event.code) {\n case 'Escape':\n this.onMaskClick();\n setTimeout(() => {\n DomHandler.focus(this.previewButton.nativeElement);\n }, 25);\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n onPreviewImageClick() {\n this.previewClick = true;\n }\n rotateRight() {\n this.rotate += 90;\n this.previewClick = true;\n }\n rotateLeft() {\n this.rotate -= 90;\n this.previewClick = true;\n }\n zoomIn() {\n this.scale = this.scale + this.zoomSettings.step;\n this.previewClick = true;\n }\n zoomOut() {\n this.scale = this.scale - this.zoomSettings.step;\n this.previewClick = true;\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = this.container?.parentElement;\n this.appendContainer();\n this.moveOnTop();\n setTimeout(() => {\n DomHandler.focus(this.closeButton.nativeElement);\n }, 25);\n break;\n case 'void':\n DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(this.wrapper);\n this.maskVisible = false;\n this.container = null;\n this.wrapper = null;\n this.cd.markForCheck();\n this.onHide.emit({});\n break;\n case 'visible':\n this.onShow.emit({});\n break;\n }\n }\n moveOnTop() {\n ZIndexUtils.set('modal', this.wrapper, this.config.zIndex.modal);\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.document.body.appendChild(this.wrapper);\n else\n DomHandler.appendChild(this.wrapper, this.appendTo);\n }\n }\n imagePreviewStyle() {\n return { transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')' };\n }\n get zoomImageAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.zoomImage : undefined;\n }\n containerClass() {\n return {\n 'p-image p-component': true,\n 'p-image-preview-container': this.preview\n };\n }\n handleToolbarClick(event) {\n event.stopPropagation();\n }\n closePreview() {\n this.previewVisible = false;\n this.rotate = 0;\n this.scale = this.zoomSettings.default;\n DomHandler.unblockBodyScroll();\n }\n imageError(event) {\n this.onImageError.emit(event);\n }\n rightAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.rotateRight : undefined;\n }\n leftAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.rotateLeft : undefined;\n }\n zoomInAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.zoomIn : undefined;\n }\n zoomOutAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.zoomOut : undefined;\n }\n closeAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.close : undefined;\n }\n onKeydownHandler(event) {\n if (this.previewVisible) {\n this.closePreview();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Image, deps: [{ token: DOCUMENT }, { token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Image, selector: \"p-image\", inputs: { imageClass: \"imageClass\", imageStyle: \"imageStyle\", styleClass: \"styleClass\", style: \"style\", src: \"src\", srcSet: \"srcSet\", sizes: \"sizes\", previewImageSrc: \"previewImageSrc\", previewImageSrcSet: \"previewImageSrcSet\", previewImageSizes: \"previewImageSizes\", alt: \"alt\", width: \"width\", height: \"height\", loading: \"loading\", appendTo: \"appendTo\", preview: \"preview\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\", onImageError: \"onImageError\" }, host: { listeners: { \"document:keydown.escape\": \"onKeydownHandler($event)\" }, classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"mask\", first: true, predicate: [\"mask\"], descendants: true }, { propertyName: \"previewButton\", first: true, predicate: [\"previewButton\"], descendants: true }, { propertyName: \"closeButton\", first: true, predicate: [\"closeButton\"], descendants: true }], ngImport: i0, template: `\n \n \n \n
    \n
    \n \n \n \n \n \n
    \n \n \n
    \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block;line-height:0}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon.pi{font-size:1.5rem}.p-image-preview-icon.p-icon{scale:1.5}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-action.p-link[disabled]{opacity:.5}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => RefreshIcon), selector: \"RefreshIcon\" }, { kind: \"component\", type: i0.forwardRef(() => EyeIcon), selector: \"EyeIcon\" }, { kind: \"component\", type: i0.forwardRef(() => UndoIcon), selector: \"UndoIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SearchMinusIcon), selector: \"SearchMinusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SearchPlusIcon), selector: \"SearchPlusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"directive\", type: i0.forwardRef(() => i3.FocusTrap), selector: \"[pFocusTrap]\", inputs: [\"pFocusTrapDisabled\"] }], animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Image, decorators: [{\n type: Component,\n args: [{ selector: 'p-image', template: `\n \n \n \n
    \n
    \n \n \n \n \n \n
    \n \n \n
    \n \n
    \n `, animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block;line-height:0}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon.pi{font-size:1.5rem}.p-image-preview-icon.p-icon{scale:1.5}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-action.p-link[disabled]{opacity:.5}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { imageClass: [{\n type: Input\n }], imageStyle: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], src: [{\n type: Input\n }], srcSet: [{\n type: Input\n }], sizes: [{\n type: Input\n }], previewImageSrc: [{\n type: Input\n }], previewImageSrcSet: [{\n type: Input\n }], previewImageSizes: [{\n type: Input\n }], alt: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], preview: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onImageError: [{\n type: Output\n }], mask: [{\n type: ViewChild,\n args: ['mask']\n }], previewButton: [{\n type: ViewChild,\n args: ['previewButton']\n }], closeButton: [{\n type: ViewChild,\n args: ['closeButton']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onKeydownHandler: [{\n type: HostListener,\n args: ['document:keydown.escape', ['$event']]\n }] } });\nclass ImageModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ImageModule, declarations: [Image], imports: [CommonModule, SharedModule, RefreshIcon, EyeIcon, UndoIcon, SearchMinusIcon, SearchPlusIcon, TimesIcon, FocusTrapModule], exports: [Image, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ImageModule, imports: [CommonModule, SharedModule, RefreshIcon, EyeIcon, UndoIcon, SearchMinusIcon, SearchPlusIcon, TimesIcon, FocusTrapModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ImageModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RefreshIcon, EyeIcon, UndoIcon, SearchMinusIcon, SearchPlusIcon, TimesIcon, FocusTrapModule],\n exports: [Image, SharedModule],\n declarations: [Image]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Image, ImageModule };\n","
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\tNo image/logo uploaded\r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tDrag the file here to upload\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer,\r\n\tSafeResourceUrl\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tFileUpload\r\n} from 'primeng/fileupload';\r\n\r\n@Component({\r\n\tselector: 'custom-image-input',\r\n\ttemplateUrl: './custom-image-input.component.html',\r\n\tstyleUrls: ['./custom-image-input.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Image Input.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomImageInputComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomImageInputComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of an CustomImageInputComponent.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for responsive layouts.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The sanitizer that helps to avoid XSS bugs.\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef,\r\n\t\tprivate readonly sanitizer: DomSanitizer)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets file upload control.\r\n\t *\r\n\t * @type {FileUpload}\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\t@ViewChild('fileUpload')\r\n\tpublic fileUploadRef: FileUpload;\r\n\r\n\t/**\r\n\t * Gets or sets the image for the lightbox.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic images: any[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the image url to upload.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic fileUrl: any;\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Displays to the developer what is allowed in a FieldType Component\r\n\t * above and beyond normal component interactions.\r\n\t *\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.getImageData();\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * A function that returns the Base64 image path as a Safe resource.\r\n\t *\r\n\t * @returns {SafeResourceUrl}\r\n\t * A Safe Resource Url for the Base64 image.\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic getImageData(): SafeResourceUrl\r\n\t{\r\n\t\tthis.images = [];\r\n\r\n\t\tconst imageData: SafeResourceUrl =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustResourceUrl(\r\n\t\t\t\t`data:image/jpeg;base64,${this.field.formControl.value}`);\r\n\r\n\t\tthis.images.push(\r\n\t\t\t{\r\n\t\t\t\tsource: imageData,\r\n\t\t\t\tthumbnail: imageData,\r\n\t\t\t\ttitle: this.field.props.description,\r\n\t\t\t\talt: this.field.props.altText\r\n\t\t\t});\r\n\r\n\t\treturn imageData;\r\n\t}\r\n\r\n\t/**\r\n\t * A function to know if there is an active image uploaded.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean that shows whether or not a logo exists.\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic logoExists(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNullOrEmpty(this.field.formControl.value);\r\n\t}\r\n\r\n\t/**\r\n\t * A custom upload handler for uploading images.\r\n\t *\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic imageCustomUploader(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (event.files.length !== 0)\r\n\t\t{\r\n\t\t\tthis.fileUrl = event.files[0]\r\n\t\t\t\t.objectURL\r\n\t\t\t\t.changingThisBreaksApplicationSecurity;\r\n\r\n\t\t\tconst xmlHttpRequest: XMLHttpRequest = new XMLHttpRequest();\r\n\t\t\tlet base64String: string;\r\n\r\n\t\t\txmlHttpRequest.onload =\r\n\t\t\t\tfunction ()\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbase64String = btoa(new Uint8Array(\r\n\t\t\t\t\t\t\txmlHttpRequest.response)\r\n\t\t\t\t\t\t\t.reduce((data, byte) =>\r\n\t\t\t\t\t\t\t\tdata + String.fromCharCode(byte), ''));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\t\t'There is a problem uploading the image.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.field.formControl.setValue(base64String);\r\n\t\t\t\t\tthis.getImageData();\r\n\t\t\t\t}.bind(this);\r\n\r\n\t\t\txmlHttpRequest.open(\r\n\t\t\t\tAppConstants.httpRequestTypes.get,\r\n\t\t\t\tthis.fileUrl);\r\n\t\t\txmlHttpRequest.responseType = 'arraybuffer';\r\n\t\t\txmlHttpRequest.send();\r\n\r\n\t\t\txmlHttpRequest.onloadend =\r\n\t\t\t\tfunction ()\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.field.props.alwaysDisplayUploader &&\r\n\t\t\t\t\t\txmlHttpRequest.status === 200)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.fileUploadRef.clear();\r\n\t\t\t\t\t}\r\n\t\t\t\t}.bind(this);\r\n\r\n\t\t\tthis.validateControl();\r\n\r\n\t\t\tif (AnyHelper.isFunction(this.field.props.change))\r\n\t\t\t{\r\n\t\t\t\tthis.field.props.change(\r\n\t\t\t\t\tthis.field,\r\n\t\t\t\t\tevent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A custom handler for clicking a button.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The remove button clicked event.\r\n\t * @memberof CustomImageInputComponent\r\n\t */\r\n\tpublic removeButtonClicked(event: Event): void\r\n\t{\r\n\t\tthis.field.formControl.setValue(null);\r\n\t\tthis.validateControl();\r\n\t\tif (AnyHelper.isFunction(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\t\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-input-number',\r\n\ttemplateUrl: './custom-input-number.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-input-number.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Number.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputNumberComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomInputNumberComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the CustomInputNumberComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/** Gets or sets the display value for the percent input control.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic percentDisplay: string = AppConstants.empty;\r\n\r\n\t/** Gets the default maximum percent value.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate readonly defaultMaximumPercent: number = 100;\r\n\r\n\t/** Gets the default maximum percent decimal precision.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate readonly defaultMaximumPercentDecimalPrecision: number = 2;\r\n\r\n\t/** Gets the decimal precision offset.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate readonly decimalPrecisionOffset: number = 2;\r\n\r\n\t/** Implements the OnInit interface.\r\n\t * This method Initializes the component for use percent based logic.\r\n\t *\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (this.field.props.usePercent !== true)\r\n\t\t{\r\n\t\t\tsuper.ngOnInit();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.field.props.maxPercent =\r\n\t\t\tthis.field.props.maxPercent ?? this.defaultMaximumPercent;\r\n\t\tthis.field.props.maxPercentDecimalPrecision =\r\n\t\t\tthis.field.props.maxPercentDecimalPrecision\r\n\t\t\t\t?? this.defaultMaximumPercentDecimalPrecision;\r\n\t\tthis.field.props.setPercentageValue =\r\n\t\t\tthis.setPercentageValue.bind(this);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.field.formControl.value))\r\n\t\t{\r\n\t\t\tthis.percentDisplay =\r\n\t\t\t\t(parseFloat(this.field.formControl.value) * 100)\r\n\t\t\t\t\t.toFixed(this.field.props.maxPercentDecimalPrecision)\r\n\t\t\t\t\t.toString();\r\n\t\t}\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/** Handles the keydown event sent from the input number control when\r\n\t * using the percent display.\r\n\t *\r\n\t * @param {KeyboardEvent} event\r\n\t * The event sent from the keydown handler.\r\n\t * @param {string} explicitValue\r\n\t * The explicit percentage value.\r\n\t * @returns {boolean}\r\n\t * If allowed to proceeed with percentage value update.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic onPercentKeyDown(\r\n\t\tevent: KeyboardEvent,\r\n\t\texplicitValue: string = null): boolean\r\n\t{\r\n\t\tconst inputElement: HTMLInputElement =\r\n\t\t\tevent.target as HTMLInputElement;\r\n\r\n\t\tif (AnyHelper.isNull(event.key)\r\n\t\t\t&& AnyHelper.isNull(explicitValue))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!this.confirmAllowedInputValue(\r\n\t\t\tevent.key ?? explicitValue))\r\n\t\t{\r\n\t\t\treturn this.cancelFieldUpdate(event);\r\n\t\t}\r\n\r\n\t\tconst newValue: string =\r\n\t\t\t!AnyHelper.isNullOrEmpty(event.key)\r\n\t\t\t\t? this.getKeyDownExpectedValue(\r\n\t\t\t\t\tinputElement,\r\n\t\t\t\t\tevent)\r\n\t\t\t\t: explicitValue;\r\n\t\tconst formattedValue: string =\r\n\t\t\tthis.filterDigitsAndFirstPeriod(\r\n\t\t\t\tnewValue);\r\n\t\tconst parsedNumber: number =\r\n\t\t\tparseFloat(\r\n\t\t\t\tformattedValue);\r\n\r\n\t\t// Only allow valid numbers and decimals.\r\n\t\tif (isNaN(parsedNumber))\r\n\t\t{\r\n\t\t\treturn this.cancelFieldUpdate(event);\r\n\t\t}\r\n\r\n\t\t// Only allow less than the max percent.\r\n\t\tif (parsedNumber > this.field.props.maxPercent)\r\n\t\t{\r\n\t\t\treturn this.cancelFieldUpdate(event);\r\n\t\t}\r\n\r\n\t\t// Only allow a fixed decimal precision.\r\n\t\tif(parseFloat(\r\n\t\t\tparsedNumber\r\n\t\t\t\t.toFixed(\r\n\t\t\t\t\tthis.field.props.maxPercentDecimalPrecision))\r\n\t\t\t.toString() !== parsedNumber.toString())\r\n\t\t{\r\n\t\t\treturn this.cancelFieldUpdate(event);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** Confirms the value being sent is an allowed\r\n\t * input for percent displays.\r\n\t *\r\n\t * @param {string} inputValue\r\n\t * The input value.\r\n\t * @returns {boolean}\r\n\t * Confirmation true or false if an allowed key press.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic confirmAllowedInputValue(\r\n\t\tinputValue: string): boolean\r\n\t{\r\n\t\tconst allowedKeys: string[] =\r\n\t\t\t[\r\n\t\t\t\t'Backspace',\r\n\t\t\t\t'ArrowLeft',\r\n\t\t\t\t'ArrowRight',\r\n\t\t\t\t'Tab',\r\n\t\t\t\t'Delete'\r\n\t\t\t];\r\n\t\tconst isDigit: boolean =\r\n\t\t\tinputValue >= '0' && inputValue <= '9';\r\n\t\tconst isValidPeriod: boolean =\r\n\t\t\tinputValue === AppConstants.characters.period\r\n\t\t\t\t&& !this.percentDisplay.includes(\r\n\t\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\treturn isDigit\r\n\t\t\t|| isValidPeriod\r\n\t\t\t|| allowedKeys.includes(inputValue);\r\n\t}\r\n\r\n\t/** Calculates what the keydown event will set for an expected value. This\r\n\t * is used to determine if the keydown event should be allowed.\r\n\t *\r\n\t * @param {HTMLInputElement} inputElement\r\n\t * The input element to get the expected value.\r\n\t * @param {KeyboardEvent} event\r\n\t * The event sent from the keydown handler.\r\n\t * @returns {string}\r\n\t * The expected value after the keydown event.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic getKeyDownExpectedValue(\r\n\t\tinputElement: HTMLInputElement,\r\n\t\tevent: KeyboardEvent): string\r\n\t{\r\n\t\tlet newValue: string;\r\n\r\n\t\t// Replace highlighted text.\r\n\t\tif (inputElement.selectionStart > 0 && inputElement.selectionEnd > 0)\r\n\t\t{\r\n\t\t\tconst start: number =\r\n\t\t\t\tinputElement.selectionStart;\r\n\t\t\tconst end: number =\r\n\t\t\t\tinputElement.selectionEnd;\r\n\t\t\tconst valueBefore: string =\r\n\t\t\t\tinputElement.value.substring(\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tstart);\r\n\t\t\tconst valueAfter: string =\r\n\t\t\t\tinputElement.value.substring(\r\n\t\t\t\t\tend);\r\n\t\t\tnewValue =\r\n\t\t\t\tvalueBefore\r\n\t\t\t\t\t+ event.key\r\n\t\t\t\t\t+ valueAfter;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Else concatenate the new character.\r\n\t\t\tnewValue =\r\n\t\t\t\tinputElement.value\r\n\t\t\t\t\t+ event.key;\r\n\t\t}\r\n\r\n\t\treturn newValue;\r\n\t}\r\n\r\n\t/** Handles the keyup event sent from the input number control when\r\n\t * using the percent display. This will be used to set the data\r\n\t * model value as a 0-1 based percent from the displayed whole number\r\n\t * percent values.\r\n\t *\r\n\t * @param {KeyboardEvent} event\r\n\t * The event sent from the keyup handler.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic setPercentDisplay(\r\n\t\tevent: KeyboardEvent): void\r\n\t{\r\n\t\tthis.field.formControl.setValue(\r\n\t\t\t!AnyHelper.isNullOrWhitespace(this.percentDisplay)\r\n\t\t\t\t? parseFloat((parseFloat(this.percentDisplay) / 100)\r\n\t\t\t\t\t.toFixed(this.field.props.maxPercentDecimalPrecision\r\n\t\t\t\t\t\t+ this.decimalPrecisionOffset))\r\n\t\t\t\t: null);\r\n\r\n\t\tthis.validateControl();\r\n\t\tif (!AnyHelper.isNull(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\r\n\t\tthis.updateCustomDisplay();\r\n\t}\r\n\r\n\t/** Handles the onInput event sent from the input number control.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event sent from the onInput handler.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic onChange(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (event.originalEvent?.code ===\r\n\t\t\tAppConstants.keyBoardKeyConstants.backspace\r\n\t\t\t\t&& event.value === 0)\r\n\t\t{\r\n\t\t\tthis.field.formControl.setValue(null);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.field.formControl.setValue(event.value);\r\n\t\t}\r\n\r\n\t\tthis.validateControl();\r\n\r\n\t\tif (!AnyHelper.isNull(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Handles the onBlur event when losing focus\r\n\t * from the input number control.\r\n\t *\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tpublic onBlur(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.field.props?.roundToNearest))\r\n\t\t{\r\n\t\t\tconst currentValue: number =\r\n\t\t\t\tthis.field.formControl.value;\r\n\r\n\t\t\tconst roundToNearest: number =\r\n\t\t\t\tthis.field.props.roundToNearest;\r\n\r\n\t\t\tconst roundedValue: number =\r\n\t\t\t\tMath.round(currentValue / roundToNearest) * roundToNearest;\r\n\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.field.formControl.setValue(roundedValue);\r\n\t\t\t\t\tthis.validateControl();\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.quarterSecond);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Filters the digits and the first period from the value.\r\n\t *\r\n\t * @param {string} value\r\n\t * The value to filter.\r\n\t * @returns {string}\r\n\t * The filtered value.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate filterDigitsAndFirstPeriod(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\t// Remove all non-digit characters.\r\n\t\tlet digitDecimalValue: string =\r\n\t\t\tvalue.replace(\r\n\t\t\t\t/[^\\d.]/g,\r\n\t\t\t\tAppConstants.empty);\r\n\t\t// Remove all periods except the first one.\r\n\t\tdigitDecimalValue =\r\n\t\t\tdigitDecimalValue.replace(\r\n\t\t\t\t/(?!^)(?<=\\..*)\\./g,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn digitDecimalValue;\r\n\t}\r\n\r\n\t/** Handles the explicit percentage value set.\r\n\t * This method will be called from external source\r\n\t * and not html input interaction.\r\n\t *\r\n\t * @param {string} value\r\n\t * The percentage value.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate setPercentageValue(\r\n\t\tvalue: string = null): void\r\n\t{\r\n\t\tif (!this.onPercentKeyDown(\r\n\t\t\t{},\r\n\t\t\tvalue))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.percentDisplay =\r\n\t\t\t!AnyHelper.isNull(value)\r\n\t\t\t\t? (parseFloat(value))\r\n\t\t\t\t\t.toFixed(this.field.props.maxPercentDecimalPrecision)\r\n\t\t\t\t\t.toString()\r\n\t\t\t\t: null;\r\n\r\n\t\tthis.setPercentDisplay(\r\n\t\t\t{});\r\n\t}\r\n\r\n\t/** Handles the field update cancellation by\r\n\t * preventing event propagation and returning false\r\n\t * for any explicit value set.\r\n\t *\r\n\t * @param {KeyboardEvent} event\r\n\t * The keyboard event.\r\n\t * @returns {boolean}\r\n\t * Cancels any field update.\r\n\t * @memberof CustomInputNumberComponent\r\n\t */\r\n\tprivate cancelFieldUpdate(\r\n\t\tevent: KeyboardEvent): boolean\r\n\t{\r\n\t\tif(!AnyHelper.isNull(event.preventDefault))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass EyeSlashIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EyeSlashIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: EyeSlashIcon, isStandalone: true, selector: \"EyeSlashIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EyeSlashIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'EyeSlashIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { EyeSlashIcon };\n","import { style, animate, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { PLATFORM_ID, Directive, Inject, Input, HostListener, Pipe, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { EyeIcon } from 'primeng/icons/eye';\nimport { EyeSlashIcon } from 'primeng/icons/eyeslash';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i3 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ZIndexUtils } from 'primeng/utils';\n\n/**\n * Password directive.\n * @group Components\n */\nclass PasswordDirective {\n document;\n platformId;\n renderer;\n el;\n zone;\n /**\n * Text to prompt password entry. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n promptLabel = 'Enter a password';\n /**\n * Text for a weak password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n weakLabel = 'Weak';\n /**\n * Text for a medium password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n mediumLabel = 'Medium';\n /**\n * Text for a strong password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n strongLabel = 'Strong';\n /**\n * Whether to show the strength indicator or not.\n * @group Props\n */\n feedback = true;\n /**\n * Sets the visibility of the password field.\n * @group Props\n */\n set showPassword(show) {\n this.el.nativeElement.type = show ? 'text' : 'password';\n }\n panel;\n meter;\n info;\n filled;\n scrollHandler;\n documentResizeListener;\n constructor(document, platformId, renderer, el, zone) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.el = el;\n this.zone = zone;\n }\n ngDoCheck() {\n this.updateFilledState();\n }\n onInput(e) {\n this.updateFilledState();\n }\n updateFilledState() {\n this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n }\n createPanel() {\n if (isPlatformBrowser(this.platformId)) {\n this.panel = this.renderer.createElement('div');\n this.renderer.addClass(this.panel, 'p-password-panel');\n this.renderer.addClass(this.panel, 'p-component');\n this.renderer.addClass(this.panel, 'p-password-panel-overlay');\n this.renderer.addClass(this.panel, 'p-connected-overlay');\n this.meter = this.renderer.createElement('div');\n this.renderer.addClass(this.meter, 'p-password-meter');\n this.renderer.appendChild(this.panel, this.meter);\n this.info = this.renderer.createElement('div');\n this.renderer.addClass(this.info, 'p-password-info');\n this.renderer.setProperty(this.info, 'textContent', this.promptLabel);\n this.renderer.appendChild(this.panel, this.info);\n this.renderer.setStyle(this.panel, 'minWidth', `${this.el.nativeElement.offsetWidth}px`);\n this.renderer.appendChild(document.body, this.panel);\n }\n }\n showOverlay() {\n if (this.feedback) {\n if (!this.panel) {\n this.createPanel();\n }\n this.renderer.setStyle(this.panel, 'zIndex', String(++DomHandler.zindex));\n this.renderer.setStyle(this.panel, 'display', 'block');\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n DomHandler.addClass(this.panel, 'p-connected-overlay-visible');\n this.bindScrollListener();\n this.bindDocumentResizeListener();\n }, 1);\n });\n DomHandler.absolutePosition(this.panel, this.el.nativeElement);\n }\n }\n hideOverlay() {\n if (this.feedback && this.panel) {\n DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');\n DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');\n this.unbindScrollListener();\n this.unbindDocumentResizeListener();\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.ngOnDestroy();\n }, 150);\n });\n }\n }\n onFocus() {\n this.showOverlay();\n }\n onBlur() {\n this.hideOverlay();\n }\n onKeyup(e) {\n if (this.feedback) {\n let value = e.target.value, label = null, meterPos = null;\n if (value.length === 0) {\n label = this.promptLabel;\n meterPos = '0px 0px';\n }\n else {\n var score = this.testStrength(value);\n if (score < 30) {\n label = this.weakLabel;\n meterPos = '0px -10px';\n }\n else if (score >= 30 && score < 80) {\n label = this.mediumLabel;\n meterPos = '0px -20px';\n }\n else if (score >= 80) {\n label = this.strongLabel;\n meterPos = '0px -30px';\n }\n }\n if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n this.showOverlay();\n }\n this.renderer.setStyle(this.meter, 'backgroundPosition', meterPos);\n this.info.textContent = label;\n }\n }\n testStrength(str) {\n let grade = 0;\n let val;\n val = str.match('[0-9]');\n grade += this.normalize(val ? val.length : 1 / 4, 1) * 25;\n val = str.match('[a-zA-Z]');\n grade += this.normalize(val ? val.length : 1 / 2, 3) * 10;\n val = str.match('[!@#$%^&*?_~.,;=]');\n grade += this.normalize(val ? val.length : 1 / 6, 1) * 35;\n val = str.match('[A-Z]');\n grade += this.normalize(val ? val.length : 1 / 6, 1) * 30;\n grade *= str.length / 8;\n return grade > 100 ? 100 : grade;\n }\n normalize(x, y) {\n let diff = x - y;\n if (diff <= 0)\n return x / y;\n else\n return 1 + 0.5 * (x / (x + y / 4));\n }\n get disabled() {\n return this.el.nativeElement.disabled;\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n this.hideOverlay();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n bindDocumentResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentResizeListener) {\n const window = this.document.defaultView;\n this.documentResizeListener = this.renderer.listen(window, 'resize', this.onWindowResize.bind(this));\n }\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n onWindowResize() {\n if (!DomHandler.isTouchDevice()) {\n this.hideOverlay();\n }\n }\n ngOnDestroy() {\n if (this.panel) {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n this.unbindDocumentResizeListener();\n this.renderer.removeChild(this.document.body, this.panel);\n this.panel = null;\n this.meter = null;\n this.info = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordDirective, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: PasswordDirective, selector: \"[pPassword]\", inputs: { promptLabel: \"promptLabel\", weakLabel: \"weakLabel\", mediumLabel: \"mediumLabel\", strongLabel: \"strongLabel\", feedback: \"feedback\", showPassword: \"showPassword\" }, host: { listeners: { \"input\": \"onInput($event)\", \"focus\": \"onFocus()\", \"blur\": \"onBlur()\", \"keyup\": \"onKeyup($event)\" }, properties: { \"class.p-filled\": \"filled\" }, classAttribute: \"p-inputtext p-component p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[pPassword]',\n host: {\n class: 'p-inputtext p-component p-element',\n '[class.p-filled]': 'filled'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { promptLabel: [{\n type: Input\n }], weakLabel: [{\n type: Input\n }], mediumLabel: [{\n type: Input\n }], strongLabel: [{\n type: Input\n }], feedback: [{\n type: Input\n }], showPassword: [{\n type: Input\n }], onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onKeyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\nclass MapperPipe {\n transform(value, mapper, ...args) {\n return mapper(value, ...args);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: MapperPipe, name: \"mapper\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MapperPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'mapper',\n pure: true\n }]\n }] });\nconst Password_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Password),\n multi: true\n};\n/**\n * Password displays strength indicator for password fields.\n * @group Components\n */\nclass Password {\n document;\n platformId;\n renderer;\n cd;\n config;\n el;\n overlayService;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Specifies one or more IDs in the DOM that labels the input field.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Label of the input for accessibility.\n * @group Props\n */\n label;\n /**\n * Indicates whether the component is disabled or not.\n * @group Props\n */\n disabled;\n /**\n * Text to prompt password entry. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n promptLabel;\n /**\n * Regex value for medium regex.\n * @group Props\n */\n mediumRegex = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\n /**\n * Regex value for strong regex.\n * @group Props\n */\n strongRegex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n /**\n * Text for a weak password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n weakLabel;\n /**\n * Text for a medium password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n mediumLabel;\n /**\n * specifies the maximum number of characters allowed in the input element.\n * @group Props\n */\n maxLength;\n /**\n * Text for a strong password. Defaults to PrimeNG I18N API configuration.\n * @group Props\n */\n strongLabel;\n /**\n * Identifier of the accessible input element.\n * @group Props\n */\n inputId;\n /**\n * Whether to show the strength indicator or not.\n * @group Props\n */\n feedback = true;\n /**\n * Id of the element or \"body\" for document where the overlay should be appended to.\n * @group Props\n */\n appendTo;\n /**\n * Whether to show an icon to display the password as plain text.\n * @group Props\n */\n toggleMask;\n /**\n * Style class of the input field.\n * @group Props\n */\n inputStyleClass;\n /**\n * Style class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Inline style of the input field.\n * @group Props\n */\n inputStyle;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '.1s linear';\n /**\n * Specify automated assistance in filling out password by browser.\n * @group Props\n */\n autocomplete;\n /**\n * Advisory information to display on input.\n * @group Props\n */\n placeholder;\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n showClear = false;\n /**\n * Callback to invoke when the component receives focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when the component loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n /**\n * Callback to invoke when clear button is clicked.\n * @group Emits\n */\n onClear = new EventEmitter();\n input;\n contentTemplate;\n footerTemplate;\n headerTemplate;\n clearIconTemplate;\n hideIconTemplate;\n showIconTemplate;\n templates;\n overlayVisible = false;\n meter;\n infoText;\n focused = false;\n unmasked = false;\n mediumCheckRegExp;\n strongCheckRegExp;\n resizeListener;\n scrollHandler;\n overlay;\n value = null;\n onModelChange = () => { };\n onModelTouched = () => { };\n translationSubscription;\n constructor(document, platformId, renderer, cd, config, el, overlayService) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.el = el;\n this.overlayService = overlayService;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'clearicon':\n this.clearIconTemplate = item.template;\n break;\n case 'hideicon':\n this.hideIconTemplate = item.template;\n break;\n case 'showicon':\n this.showIconTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n this.infoText = this.promptText();\n this.mediumCheckRegExp = new RegExp(this.mediumRegex);\n this.strongCheckRegExp = new RegExp(this.strongRegex);\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.updateUI(this.value || '');\n });\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n this.appendContainer();\n this.alignOverlay();\n this.bindScrollListener();\n this.bindResizeListener();\n break;\n case 'void':\n this.unbindScrollListener();\n this.unbindResizeListener();\n this.overlay = null;\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(event.element);\n break;\n }\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.overlay);\n else\n this.document.getElementById(this.appendTo).appendChild(this.overlay);\n }\n }\n alignOverlay() {\n if (this.appendTo) {\n this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';\n DomHandler.absolutePosition(this.overlay, this.input.nativeElement);\n }\n else {\n DomHandler.relativePosition(this.overlay, this.input.nativeElement);\n }\n }\n onInput(event) {\n this.value = event.target.value;\n this.onModelChange(this.value);\n }\n onInputFocus(event) {\n this.focused = true;\n if (this.feedback) {\n this.overlayVisible = true;\n }\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n if (this.feedback) {\n this.overlayVisible = false;\n }\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n onKeyUp(event) {\n if (this.feedback) {\n let value = event.target.value;\n this.updateUI(value);\n if (event.code === 'Escape') {\n this.overlayVisible && (this.overlayVisible = false);\n return;\n }\n if (!this.overlayVisible) {\n this.overlayVisible = true;\n }\n }\n }\n updateUI(value) {\n let label = null;\n let meter = null;\n switch (this.testStrength(value)) {\n case 1:\n label = this.weakText();\n meter = {\n strength: 'weak',\n width: '33.33%'\n };\n break;\n case 2:\n label = this.mediumText();\n meter = {\n strength: 'medium',\n width: '66.66%'\n };\n break;\n case 3:\n label = this.strongText();\n meter = {\n strength: 'strong',\n width: '100%'\n };\n break;\n default:\n label = this.promptText();\n meter = null;\n break;\n }\n this.meter = meter;\n this.infoText = label;\n }\n onMaskToggle() {\n this.unmasked = !this.unmasked;\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n testStrength(str) {\n let level = 0;\n if (this.strongCheckRegExp.test(str))\n level = 3;\n else if (this.mediumCheckRegExp.test(str))\n level = 2;\n else if (str.length)\n level = 1;\n return level;\n }\n writeValue(value) {\n if (value === undefined)\n this.value = null;\n else\n this.value = value;\n if (this.feedback)\n this.updateUI(this.value || '');\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n bindScrollListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.resizeListener) {\n const window = this.document.defaultView;\n this.resizeListener = this.renderer.listen(window, 'resize', () => {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.overlayVisible = false;\n }\n });\n }\n }\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n unbindResizeListener() {\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n containerClass(toggleMask) {\n return { 'p-password p-component p-inputwrapper': true, 'p-input-icon-right': toggleMask };\n }\n inputFieldClass(disabled) {\n return { 'p-password-input': true, 'p-disabled': disabled };\n }\n strengthClass(meter) {\n return `p-password-strength ${meter ? meter.strength : ''}`;\n }\n filled() {\n return this.value != null && this.value.toString().length > 0;\n }\n promptText() {\n return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);\n }\n weakText() {\n return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);\n }\n mediumText() {\n return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);\n }\n strongText() {\n return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);\n }\n restoreAppend() {\n if (this.overlay && this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.removeChild(this.document.body, this.overlay);\n else\n this.document.getElementById(this.appendTo).removeChild(this.overlay);\n }\n }\n inputType(unmasked) {\n return unmasked ? 'text' : 'password';\n }\n getTranslation(option) {\n return this.config.getTranslation(option);\n }\n clear() {\n this.value = null;\n this.onModelChange(this.value);\n this.writeValue(this.value);\n this.onClear.emit();\n }\n ngOnDestroy() {\n if (this.overlay) {\n ZIndexUtils.clear(this.overlay);\n this.overlay = null;\n }\n this.restoreAppend();\n this.unbindResizeListener();\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Password, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Password, selector: \"p-password\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", label: \"label\", disabled: \"disabled\", promptLabel: \"promptLabel\", mediumRegex: \"mediumRegex\", strongRegex: \"strongRegex\", weakLabel: \"weakLabel\", mediumLabel: \"mediumLabel\", maxLength: \"maxLength\", strongLabel: \"strongLabel\", inputId: \"inputId\", feedback: \"feedback\", appendTo: \"appendTo\", toggleMask: \"toggleMask\", inputStyleClass: \"inputStyleClass\", styleClass: \"styleClass\", style: \"style\", inputStyle: \"inputStyle\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", autocomplete: \"autocomplete\", placeholder: \"placeholder\", showClear: \"showClear\" }, outputs: { onFocus: \"onFocus\", onBlur: \"onBlur\", onClear: \"onClear\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled()\", \"class.p-inputwrapper-focus\": \"focused\", \"class.p-password-clearable\": \"showClear\", \"class.p-password-mask\": \"toggleMask\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [Password_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true }], ngImport: i0, template: `\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
    {{ infoText }}
    \n
    \n \n
    \n \n `, isInline: true, styles: [\"@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.InputText), selector: \"[pInputText]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => EyeSlashIcon), selector: \"EyeSlashIcon\" }, { kind: \"component\", type: i0.forwardRef(() => EyeIcon), selector: \"EyeIcon\" }, { kind: \"pipe\", type: i0.forwardRef(() => MapperPipe), name: \"mapper\" }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Password, decorators: [{\n type: Component,\n args: [{ selector: 'p-password', template: `\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
    {{ infoText }}
    \n
    \n \n
    \n \n `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled()',\n '[class.p-inputwrapper-focus]': 'focused',\n '[class.p-password-clearable]': 'showClear',\n '[class.p-password-mask]': 'toggleMask'\n }, providers: [Password_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\"@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i0.ElementRef }, { type: i1.OverlayService }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], promptLabel: [{\n type: Input\n }], mediumRegex: [{\n type: Input\n }], strongRegex: [{\n type: Input\n }], weakLabel: [{\n type: Input\n }], mediumLabel: [{\n type: Input\n }], maxLength: [{\n type: Input\n }], strongLabel: [{\n type: Input\n }], inputId: [{\n type: Input\n }], feedback: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], toggleMask: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], showClear: [{\n type: Input\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClear: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass PasswordModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordModule, declarations: [PasswordDirective, Password, MapperPipe], imports: [CommonModule, InputTextModule, TimesIcon, EyeSlashIcon, EyeIcon], exports: [PasswordDirective, Password, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordModule, imports: [CommonModule, InputTextModule, TimesIcon, EyeSlashIcon, EyeIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PasswordModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule, TimesIcon, EyeSlashIcon, EyeIcon],\n exports: [PasswordDirective, Password, SharedModule],\n declarations: [PasswordDirective, Password, MapperPipe]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MapperPipe, Password, PasswordDirective, PasswordModule, Password_VALUE_ACCESSOR };\n","\r\n\t\r\n\t\t
    Pick a password
    \r\n\t
    \r\n\t\r\n\t\t

    Suggestions

    \r\n\t\t
      \r\n\t\t\t
    • At least {{getSecurityRestrictions()?.lowercase}} lowercase
    • \r\n\t\t\t
    • At least {{getSecurityRestrictions()?.uppercase}} uppercase
    • \r\n\t\t\t
    • At least {{getSecurityRestrictions()?.number}} numeric
    • \r\n\t\t\t
    • At least{{getSecurityRestrictions()?.special}} special {{getPasswordSpecialCharacters()}}
    • \r\n\t\t\t
    • Minimum {{getSecurityRestrictions()?.minimumLength}} characters
    • \r\n\t\t\t
    • Maximum {{getSecurityRestrictions()?.maximumLength}} characters
    • \r\n\t\t\t
    • Allowed Password Reuse: {{getSecurityRestrictions()?.allowPasswordReuse}}
    • \r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\n\r\n@Component({\r\n\tselector: 'custom-input-password',\r\n\ttemplateUrl: './custom-input-password.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-input-password.component.scss'\r\n\t],\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Password.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputPasswordComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {AfterViewInit}\r\n */\r\nexport class CustomInputPasswordComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements AfterViewInit\r\n{\r\n\t/** Initializes a new instance of the CustomInputPasswordComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the enable or disable the mask toogle display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic enableMaskToogle: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the system security object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic systemSecurity: any;\r\n\r\n\t/**\r\n\t * Gets the system security restrictions to define a password.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic getSecurityRestrictions(): any\r\n\t{\r\n\t\treturn SecurityHelper.getSecurityRestrictions(\r\n\t\t\tthis.systemSecurity);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the allowed password special characters.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic getPasswordSpecialCharacters(): any\r\n\t{\r\n\t\treturn AppConstants.passwordSpecialCharacters;\r\n\t}\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t *\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.setSystemSecurity();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an event into the pasword input field to handle the\r\n\t * enable or disable the toogle mask display.\r\n\t *\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tconst element: HTMLInputElement =\r\n\t\t\tdocument.querySelector('.password-input');\r\n\t\tconst handleKeyUpEvent: EventListenerOrEventListenerObject =\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tconst passwordInput = element.value;\r\n\t\t\t\tthis.enableMaskToogle = !AnyHelper.isNullOrEmpty(passwordInput);\r\n\t\t\t\tthis.validateControl();\r\n\t\t\t};\r\n\r\n\t\telement.addEventListener(\r\n\t\t\tWindowEventConstants.keyup,\r\n\t\t\thandleKeyUpEvent);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the system security information.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof CustomInputPasswordComponent\r\n\t */\r\n\tpublic async setSystemSecurity(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.systemSecurity))\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\t\tconst systemEntityInstance: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.get(\r\n\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\t\tthis.systemSecurity =\r\n\t\t\t\tsystemEntityInstance.data.security;\r\n\t\t}\r\n\t}\r\n}","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, Injectable, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\n\nconst RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButton),\n multi: true\n};\nclass RadioControlRegistry {\n accessors = [];\n add(control, accessor) {\n this.accessors.push([control, accessor]);\n }\n remove(accessor) {\n this.accessors = this.accessors.filter((c) => {\n return c[1] !== accessor;\n });\n }\n select(accessor) {\n this.accessors.forEach((c) => {\n if (this.isSameGroup(c, accessor) && c[1] !== accessor) {\n c[1].writeValue(accessor.value);\n }\n });\n }\n isSameGroup(controlPair, accessor) {\n if (!controlPair[0].control) {\n return false;\n }\n return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioControlRegistry, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n/**\n * RadioButton is an extension to standard radio button element with theming.\n * @group Components\n */\nclass RadioButton {\n cd;\n injector;\n registry;\n /**\n * Value of the radiobutton.\n * @group Props\n */\n value;\n /**\n * The name of the form control.\n * @group Props\n */\n formControlName;\n /**\n * Name of the radiobutton group.\n * @group Props\n */\n name;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * Label of the radiobutton.\n * @group Props\n */\n label;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n inputId;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Used to define a string that labels the input element.\n * @group Props\n */\n ariaLabel;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Style class of the label.\n * @group Props\n */\n labelStyleClass;\n /**\n * Callback to invoke on radio button click.\n * @param {RadioButtonClickEvent} event - Custom click event.\n * @group Emits\n */\n onClick = new EventEmitter();\n /**\n * Callback to invoke when the receives focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when the loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n inputViewChild;\n onModelChange = () => { };\n onModelTouched = () => { };\n checked;\n focused;\n control;\n constructor(cd, injector, registry) {\n this.cd = cd;\n this.injector = injector;\n this.registry = registry;\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl);\n this.checkName();\n this.registry.add(this.control, this);\n }\n handleClick(event, radioButton, focus) {\n event.preventDefault();\n if (this.disabled) {\n return;\n }\n this.select(event);\n if (focus) {\n radioButton.focus();\n }\n }\n select(event) {\n if (!this.disabled) {\n this.inputViewChild.nativeElement.checked = true;\n this.checked = true;\n this.onModelChange(this.value);\n this.registry.select(this);\n this.onClick.emit({ originalEvent: event, value: this.value });\n }\n }\n writeValue(value) {\n this.checked = value == this.value;\n if (this.inputViewChild && this.inputViewChild.nativeElement) {\n this.inputViewChild.nativeElement.checked = this.checked;\n }\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n /**\n * Applies focus to input field.\n * @group Method\n */\n focus() {\n this.inputViewChild.nativeElement.focus();\n }\n ngOnDestroy() {\n this.registry.remove(this);\n }\n checkName() {\n if (this.name && this.formControlName && this.name !== this.formControlName) {\n this.throwNameError();\n }\n if (!this.name && this.formControlName) {\n this.name = this.formControlName;\n }\n }\n throwNameError() {\n throw new Error(`\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: \n `);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RadioControlRegistry }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: RadioButton, selector: \"p-radioButton\", inputs: { value: \"value\", formControlName: \"formControlName\", name: \"name\", disabled: \"disabled\", label: \"label\", tabindex: \"tabindex\", inputId: \"inputId\", ariaLabelledBy: \"ariaLabelledBy\", ariaLabel: \"ariaLabel\", style: \"style\", styleClass: \"styleClass\", labelStyleClass: \"labelStyleClass\" }, outputs: { onClick: \"onClick\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"inputViewChild\", first: true, predicate: [\"input\"], descendants: true }], ngImport: i0, template: `\n \n
    \n \n
    \n
    \n \n
    \n \n {{ label }}\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButton, decorators: [{\n type: Component,\n args: [{\n selector: 'p-radioButton',\n template: `\n \n
    \n \n
    \n
    \n \n
    \n \n {{ label }}\n `,\n providers: [RADIO_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: RadioControlRegistry }], propDecorators: { value: [{\n type: Input\n }], formControlName: [{\n type: Input\n }], name: [{\n type: Input\n }], disabled: [{\n type: Input\n }], label: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], inputId: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], labelStyleClass: [{\n type: Input\n }], onClick: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], inputViewChild: [{\n type: ViewChild,\n args: ['input']\n }] } });\nclass RadioButtonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButtonModule, declarations: [RadioButton], imports: [CommonModule], exports: [RadioButton] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButtonModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RadioButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [RadioButton],\n declarations: [RadioButton]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RADIO_VALUE_ACCESSOR, RadioButton, RadioButtonModule, RadioControlRegistry };\n","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{inputGroupItem.name}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl\r\n} from '@angular/forms';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tIInputGroupItem\r\n} from '@shared/interfaces/application-objects/input-group-item.interface';\r\n\r\n@Component({\r\n\tselector: 'custom-input-radio-button',\r\n\ttemplateUrl: './custom-input-radio-button.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-input-radio-button.component.scss'\r\n\t],\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Radio Button.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputRadioButtonComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n */\r\nexport class CustomInputRadioButtonComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/** Initializes a new instance of the CustomInputRadioButtonComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomInputRadioButtonComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the focused radio button action\r\n\t * to set the form control value.\r\n\t * @param {IInputGroupItem} inputGroupItem\r\n\t * The focused input group item.\r\n\t * @memberof CustomInputRadioButtonComponent\r\n\t */\r\n\tpublic focusedRadioButton(\r\n\t\tinputGroupItem: IInputGroupItem): void\r\n\t{\r\n\t\tthis.field.formControl\r\n\t\t\t.setValue(inputGroupItem.key);\r\n\r\n\t\tthis.validateControl();\r\n\r\n\t\tthis.setInput(inputGroupItem);\r\n\r\n\t\tthis.field.props.inputGroupItems.forEach(\r\n\t\t\t(inputItem: IInputGroupItem) =>\r\n\t\t\t{\r\n\t\t\t\tinputItem.disabledInput = true;\r\n\t\t\t});\r\n\r\n\t\tinputGroupItem.disabledInput = ! inputGroupItem.allowEntry;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the input value to the value key additional field.\r\n\t * @param {IInputGroupItem} inputGroupItem\r\n\t * The selected input group item.\r\n\t * @memberof CustomInputRadioButtonComponent\r\n\t */\r\n\tpublic setInput(\r\n\t\tinputGroupItem: IInputGroupItem): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.field.props.valueKey))\r\n\t\t{\r\n\t\t\tconst valueField: AbstractControl =\r\n\t\t\t\tthis.field.form.get(\r\n\t\t\t\t\tAppConstants.nestedDataIdentifier\r\n\t\t\t\t\t\t+ this.field.props.valueKey);\r\n\r\n\t\t\tif (!AnyHelper.isNull(valueField))\r\n\t\t\t{\r\n\t\t\t\tvalueField.setValue(inputGroupItem.optionValue);\r\n\r\n\t\t\t\tthis.validateControl();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n\t 0\">\r\n\t\t\r\n\t\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-custom-input-search',\r\n\ttemplateUrl: './custom-input-search.component.html',\r\n\tstyleUrls: ['./custom-input-search.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of the session component.\r\n *\r\n * @export\r\n * @class CustomInputSearchComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n */\r\nexport class CustomInputSearchComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the search filter component.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/** Handles the onClick event sent from the input search icon button.\r\n\t *\r\n\t * @param {any} event\r\n\t * The click event sent from the icon button.\r\n\t * @memberof CustomInputSearchComponent\r\n\t */\r\n\tpublic onClick(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.field.props.change)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.field.formControl.value))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Handles the onKeyPress event sent from the input search icon button.\r\n\t *\r\n\t * @param {any} event\r\n\t * The click event sent from the icon button.\r\n\t * @memberof CustomInputSearchComponent\r\n\t */\r\n\tpublic onKeyPress(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (event.key ===\r\n\t\t\tAppConstants.keyBoardKeyConstants.enter)\r\n\t\t{\r\n\t\t\tthis.onClick(event);\r\n\t\t}\r\n\t}\r\n}","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst INPUTSWITCH_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputSwitch),\n multi: true\n};\n/**\n * InputSwitch is used to select a boolean value.\n * @group Components\n */\nclass InputSwitch {\n cd;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * Identifier of the input element.\n * @group Props\n */\n inputId;\n /**\n * Name of the input element.\n * @group Props\n */\n name;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * When present, it specifies that the component cannot be edited.\n * @group Props\n */\n readonly;\n /**\n * Value in checked state.\n * @group Props\n */\n trueValue = true;\n /**\n * Value in unchecked state.\n * @group Props\n */\n falseValue = false;\n /**\n * Used to define a string that autocomplete attribute the current element.\n * @group Props\n */\n ariaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Callback to invoke when the on value change.\n * @param {InputSwitchChangeEvent} event - Custom change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n input;\n modelValue = false;\n focused = false;\n onModelChange = () => { };\n onModelTouched = () => { };\n constructor(cd) {\n this.cd = cd;\n }\n onClick(event) {\n if (!this.disabled && !this.readonly) {\n this.modelValue = this.checked() ? this.falseValue : this.trueValue;\n this.onModelChange(this.modelValue);\n this.onChange.emit({\n originalEvent: event,\n checked: this.modelValue\n });\n event.preventDefault();\n this.input.nativeElement.focus();\n }\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n this.onModelTouched();\n }\n writeValue(value) {\n this.modelValue = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n checked() {\n return this.modelValue === this.trueValue;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitch, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: InputSwitch, selector: \"p-inputSwitch\", inputs: { style: \"style\", styleClass: \"styleClass\", tabindex: \"tabindex\", inputId: \"inputId\", name: \"name\", disabled: \"disabled\", readonly: \"readonly\", trueValue: \"trueValue\", falseValue: \"falseValue\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [INPUTSWITCH_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true }], ngImport: i0, template: `\n \n
    \n \n
    \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;inset:0;border:1px solid transparent}.p-inputswitch-slider:before{position:absolute;content:\\\"\\\";top:50%}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitch, decorators: [{\n type: Component,\n args: [{ selector: 'p-inputSwitch', template: `\n \n
    \n \n
    \n \n \n `, providers: [INPUTSWITCH_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;inset:0;border:1px solid transparent}.p-inputswitch-slider:before{position:absolute;content:\\\"\\\";top:50%}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], trueValue: [{\n type: Input\n }], falseValue: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], onChange: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input']\n }] } });\nclass InputSwitchModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitchModule, declarations: [InputSwitch], imports: [CommonModule], exports: [InputSwitch] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitchModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputSwitchModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [InputSwitch],\n declarations: [InputSwitch]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INPUTSWITCH_VALUE_ACCESSOR, InputSwitch, InputSwitchModule };\n","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
    \r\n
    \r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{inputGroupItem.label}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-input-switch',\r\n\ttemplateUrl: './custom-input-switch.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-input-switch.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Switch.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputSwitchComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomInputSwitchComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements OnInit\r\n{\r\n\t/** Initializes a new instance of the CustomInputSwitchComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomInputSwitchComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets inputgroup items.\r\n\t *\r\n\t * @type {any[]}\r\n\t * @memberof CustomInputSwitchComponent\r\n\t */\r\n\tpublic inputGroupItems: any[];\r\n\r\n\t/**\r\n\t * Handles the on initialization interface.\r\n\t * This will capture the saved input switch boolean, and pass\r\n\t * it to the displayInput value. Also saves the model into a\r\n\t * separate data model constant.\r\n\t *\r\n\t * @memberof CustomInputSwitchComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(\r\n\t\t\tthis.field.props.inputGroupItems))\r\n\t\t{\r\n\t\t\tthis.inputGroupItems =\r\n\t\t\t\tthis.field.props.useInputGroupFunction\r\n\t\t\t\t\t!== true\r\n\t\t\t\t\t? this.field.props.inputGroupItems\r\n\t\t\t\t\t: StringHelper\r\n\t\t\t\t\t\t.transformToFunction(\r\n\t\t\t\t\t\t\tthis.field.props.inputGroupItems,\r\n\t\t\t\t\t\t\tthis.field.props.context)(this.model);\r\n\r\n\t\t\tif (AnyHelper.isNull(this.formControl.value))\r\n\t\t\t{\r\n\t\t\t\tthis.formControl.setValue([]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles standalone input switch changes by firing the change event.\r\n\t *\r\n\t * @param {any} event.\r\n\t * The change event.\r\n\t * @memberof CustomInputSwitchComponent\r\n\t */\r\n\tpublic handleInputChanges(\r\n\t\tevent: any): void\r\n\t{\r\n\t\tif (AnyHelper.isFunction(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props.change(\r\n\t\t\t\tthis.field,\r\n\t\t\t\tevent);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles input group input switch changes\r\n\t * by adding or removing values from the formControl\r\n\t *\r\n\t * @param {any} event.\r\n\t * The change event.\r\n\t * @param {any} changedValue\r\n\t * The changed value key.\r\n\t * @memberof CustomInputSwitchComponent\r\n\t */\r\n\tpublic handleInputGroupChanges(\r\n\t\tevent: any,\r\n\t\tchangedValue: any): void\r\n\t{\r\n\t\tconst inputGroupKey =\r\n\t\t\tthis.field.props.inputGroupKey;\r\n\r\n\t\tthis.formControl.setValue(\r\n\t\t\tevent.checked === true\r\n\t\t\t\t? [\r\n\t\t\t\t\t...this.formControl.value,\r\n\t\t\t\t\tchangedValue\r\n\t\t\t\t]\r\n\t\t\t\t: this.formControl.value\r\n\t\t\t\t\t.filter((currentValue: any) =>\r\n\t\t\t\t\t\tcurrentValue[inputGroupKey]\r\n\t\t\t\t\t\t\t!== changedValue[inputGroupKey]));\r\n\t}\r\n}","\r\n\t\r\n\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tstate,\r\n\tstyle,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tCustomActionMenuDirective\r\n} from '@entity/directives/custom-action-menu.directive';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'custom-input',\r\n\ttemplateUrl: './custom-input.component.html',\r\n\tanimations: [\r\n\t\ttrigger('displayAnimation', [\r\n\t\t\tstate('hidden', style({\r\n\t\t\t\tvisibility: 'hidden'\r\n\t\t\t})),\r\n\t\t\tstate('visible', style({\r\n\t\t\t\tvisibility: 'visible'\r\n\t\t\t}))\r\n\t\t])\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputComponent\r\n * @extends {CustomActionMenuDirective}\r\n */\r\nexport class CustomInputComponent\r\n\textends CustomActionMenuDirective\r\n{\r\n\t/** Initializes a new instance of the CustomInputComponent.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomInputComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(siteLayoutService,\r\n\t\t\tchangeDetector);\r\n\t}\r\n}","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i3 from 'primeng/autofocus';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport { DomHandler } from 'primeng/dom';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i2 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\n\n/*\n Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery\n https://github.com/digitalBush/jquery.maskedinput/\n\n Copyright (c) 2007-2014 Josh Bush (digitalbush.com)\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n*/\nconst INPUTMASK_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputMask),\n multi: true\n};\n/**\n * InputMask component is used to enter input in a certain format such as numeric, date, currency, email and phone.\n * @group Components\n */\nclass InputMask {\n document;\n platformId;\n el;\n cd;\n /**\n * HTML5 input type.\n * @group Props\n */\n type = 'text';\n /**\n * Placeholder character in mask, default is underscore.\n * @group Props\n */\n slotChar = '_';\n /**\n * Clears the incomplete value on blur.\n * @group Props\n */\n autoClear = true;\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n showClear = false;\n /**\n * Inline style of the input field.\n * @group Props\n */\n style;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n inputId;\n /**\n * Style class of the input field.\n * @group Props\n */\n styleClass;\n /**\n * Advisory information to display on input.\n * @group Props\n */\n placeholder;\n /**\n * Size of the input field.\n * @group Props\n */\n size;\n /**\n * Maximum number of character allows in the input field.\n * @group Props\n */\n maxlength;\n /**\n * Specifies tab order of the element.\n * @group Props\n */\n tabindex;\n /**\n * Title text of the input text.\n * @group Props\n */\n title;\n /**\n * Used to define a string that labels the input element.\n * @group Props\n */\n ariaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Used to indicate that user input is required on an element before a form can be submitted.\n * @group Props\n */\n ariaRequired;\n /**\n * When present, it specifies that the element value cannot be altered.\n * @group Props\n */\n disabled;\n /**\n * When present, it specifies that an input field is read-only.\n * @group Props\n */\n readonly;\n /**\n * Defines if ngModel sets the raw unmasked value to bound value or the formatted mask value.\n * @group Props\n */\n unmask;\n /**\n * Name of the input field.\n * @group Props\n */\n name;\n /**\n * When present, it specifies that an input field must be filled out before submitting the form.\n * @group Props\n */\n required;\n /**\n * Regex pattern for alpha characters\n * @group Props\n */\n characterPattern = '[A-Za-z]';\n /**\n * When present, the input gets a focus automatically on load.\n * @group Props\n */\n autoFocus;\n /**\n * Used to define a string that autocomplete attribute the current element.\n * @group Props\n */\n autocomplete;\n /**\n * When present, it specifies that whether to clean buffer value from model.\n * @group Props\n */\n keepBuffer = false;\n /**\n * Mask pattern.\n * @group Props\n */\n get mask() {\n return this._mask;\n }\n set mask(val) {\n this._mask = val;\n this.initMask();\n this.writeValue('');\n this.onModelChange(this.value);\n }\n /**\n * Callback to invoke when the mask is completed.\n * @group Emits\n */\n onComplete = new EventEmitter();\n /**\n * Callback to invoke when the component receives focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when the component loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n /**\n * Callback to invoke on input.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onInput = new EventEmitter();\n /**\n * Callback to invoke on input key press.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onKeydown = new EventEmitter();\n /**\n * Callback to invoke when input field is cleared.\n * @group Emits\n */\n onClear = new EventEmitter();\n inputViewChild;\n templates;\n clearIconTemplate;\n value;\n _mask;\n onModelChange = () => { };\n onModelTouched = () => { };\n input;\n filled;\n defs;\n tests;\n partialPosition;\n firstNonMaskPos;\n lastRequiredNonMaskPos;\n len;\n oldVal;\n buffer;\n defaultBuffer;\n focusText;\n caretTimeoutId;\n androidChrome = true;\n focused;\n constructor(document, platformId, el, cd) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.cd = cd;\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n let ua = navigator.userAgent;\n this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n }\n this.initMask();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'clearicon':\n this.clearIconTemplate = item.template;\n break;\n }\n });\n }\n initMask() {\n this.tests = [];\n this.partialPosition = this.mask.length;\n this.len = this.mask.length;\n this.firstNonMaskPos = null;\n this.defs = {\n '9': '[0-9]',\n a: this.characterPattern,\n '*': `${this.characterPattern}|[0-9]`\n };\n let maskTokens = this.mask.split('');\n for (let i = 0; i < maskTokens.length; i++) {\n let c = maskTokens[i];\n if (c == '?') {\n this.len--;\n this.partialPosition = i;\n }\n else if (this.defs[c]) {\n this.tests.push(new RegExp(this.defs[c]));\n if (this.firstNonMaskPos === null) {\n this.firstNonMaskPos = this.tests.length - 1;\n }\n if (i < this.partialPosition) {\n this.lastRequiredNonMaskPos = this.tests.length - 1;\n }\n }\n else {\n this.tests.push(null);\n }\n }\n this.buffer = [];\n for (let i = 0; i < maskTokens.length; i++) {\n let c = maskTokens[i];\n if (c != '?') {\n if (this.defs[c])\n this.buffer.push(this.getPlaceholder(i));\n else\n this.buffer.push(c);\n }\n }\n this.defaultBuffer = this.buffer.join('');\n }\n writeValue(value) {\n this.value = value;\n if (this.inputViewChild && this.inputViewChild.nativeElement) {\n if (this.value == undefined || this.value == null)\n this.inputViewChild.nativeElement.value = '';\n else\n this.inputViewChild.nativeElement.value = this.value;\n this.checkVal();\n this.focusText = this.inputViewChild.nativeElement.value;\n this.updateFilledState();\n }\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n caret(first, last) {\n let range, begin, end;\n if (!this.inputViewChild?.nativeElement.offsetParent || this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {\n return;\n }\n if (typeof first == 'number') {\n begin = first;\n end = typeof last === 'number' ? last : begin;\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n }\n else if (this.inputViewChild.nativeElement['createTextRange']) {\n range = this.inputViewChild.nativeElement['createTextRange']();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n }\n else {\n if (this.inputViewChild.nativeElement.setSelectionRange) {\n begin = this.inputViewChild.nativeElement.selectionStart;\n end = this.inputViewChild.nativeElement.selectionEnd;\n }\n else if (this.document && this.document['selection'].createRange) {\n range = this.document.createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n return { begin: begin, end: end };\n }\n }\n isCompleted() {\n let completed;\n for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n return false;\n }\n }\n return true;\n }\n getPlaceholder(i) {\n if (i < this.slotChar.length) {\n return this.slotChar.charAt(i);\n }\n return this.slotChar.charAt(0);\n }\n seekNext(pos) {\n while (++pos < this.len && !this.tests[pos])\n ;\n return pos;\n }\n seekPrev(pos) {\n while (--pos >= 0 && !this.tests[pos])\n ;\n return pos;\n }\n shiftL(begin, end) {\n let i, j;\n if (begin < 0) {\n return;\n }\n for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n if (this.tests[i]) {\n if (j < this.len && this.tests[i].test(this.buffer[j])) {\n this.buffer[i] = this.buffer[j];\n this.buffer[j] = this.getPlaceholder(j);\n }\n else {\n break;\n }\n j = this.seekNext(j);\n }\n }\n this.writeBuffer();\n this.caret(Math.max(this.firstNonMaskPos, begin));\n }\n shiftR(pos) {\n let i, c, j, t;\n for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n if (this.tests[i]) {\n j = this.seekNext(i);\n t = this.buffer[i];\n this.buffer[i] = c;\n if (j < this.len && this.tests[j].test(t)) {\n c = t;\n }\n else {\n break;\n }\n }\n }\n }\n handleAndroidInput(e) {\n var curVal = this.inputViewChild?.nativeElement.value;\n var pos = this.caret();\n if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {\n // a deletion or backspace happened\n this.checkVal(true);\n while (pos.begin > 0 && !this.tests[pos.begin - 1])\n pos.begin--;\n if (pos.begin === 0) {\n while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])\n pos.begin++;\n }\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n else {\n this.checkVal(true);\n while (pos.begin < this.len && !this.tests[pos.begin])\n pos.begin++;\n setTimeout(() => {\n this.caret(pos.begin, pos.begin);\n this.updateModel(e);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n }\n onInputBlur(e) {\n this.focused = false;\n this.onModelTouched();\n if (!this.keepBuffer) {\n this.checkVal();\n }\n this.updateFilledState();\n this.onBlur.emit(e);\n if (this.inputViewChild?.nativeElement.value != this.focusText || this.inputViewChild?.nativeElement.value != this.value) {\n this.updateModel(e);\n let event = this.document.createEvent('HTMLEvents');\n event.initEvent('change', true, false);\n this.inputViewChild?.nativeElement.dispatchEvent(event);\n }\n }\n onInputKeydown(e) {\n if (this.readonly) {\n return;\n }\n let k = e.which || e.keyCode, pos, begin, end;\n let iPhone;\n if (isPlatformBrowser(this.platformId)) {\n iPhone = /iphone/i.test(DomHandler.getUserAgent());\n }\n this.oldVal = this.inputViewChild?.nativeElement.value;\n this.onKeydown.emit(e);\n //backspace, delete, and escape get special treatment\n if (k === 8 || k === 46 || (iPhone && k === 127)) {\n pos = this.caret();\n begin = pos.begin;\n end = pos.end;\n if (end - begin === 0) {\n begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n end = k === 46 ? this.seekNext(end) : end;\n }\n this.clearBuffer(begin, end);\n if (this.keepBuffer) {\n this.shiftL(begin, end - 2);\n }\n else {\n this.shiftL(begin, end - 1);\n }\n this.updateModel(e);\n this.onInput.emit(e);\n e.preventDefault();\n }\n else if (k === 13) {\n // enter\n this.onInputBlur(e);\n this.updateModel(e);\n }\n else if (k === 27) {\n // escape\n this.inputViewChild.nativeElement.value = this.focusText;\n this.caret(0, this.checkVal());\n this.updateModel(e);\n e.preventDefault();\n }\n }\n onKeyPress(e) {\n if (this.readonly) {\n return;\n }\n var k = e.which || e.keyCode, pos = this.caret(), p, c, next, completed;\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {\n //Ignore\n return;\n }\n else if (k && k !== 13) {\n if (pos.end - pos.begin !== 0) {\n this.clearBuffer(pos.begin, pos.end);\n this.shiftL(pos.begin, pos.end - 1);\n }\n p = this.seekNext(pos.begin - 1);\n if (p < this.len) {\n c = String.fromCharCode(k);\n if (this.tests[p].test(c)) {\n this.shiftR(p);\n this.buffer[p] = c;\n this.writeBuffer();\n next = this.seekNext(p);\n if (DomHandler.isClient() && /android/i.test(DomHandler.getUserAgent())) {\n let proxy = () => {\n this.caret(next);\n };\n setTimeout(proxy, 0);\n }\n else {\n this.caret(next);\n }\n if (pos.begin <= this.lastRequiredNonMaskPos) {\n completed = this.isCompleted();\n }\n this.onInput.emit(e);\n }\n }\n e.preventDefault();\n }\n this.updateModel(e);\n this.updateFilledState();\n if (completed) {\n this.onComplete.emit();\n }\n }\n clearBuffer(start, end) {\n if (!this.keepBuffer) {\n let i;\n for (i = start; i < end && i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n }\n }\n }\n }\n writeBuffer() {\n this.inputViewChild.nativeElement.value = this.buffer.join('');\n }\n checkVal(allow) {\n //try to place characters where they belong\n let test = this.inputViewChild?.nativeElement.value, lastMatch = -1, i, c, pos;\n for (i = 0, pos = 0; i < this.len; i++) {\n if (this.tests[i]) {\n this.buffer[i] = this.getPlaceholder(i);\n while (pos++ < test.length) {\n c = test.charAt(pos - 1);\n if (this.tests[i].test(c)) {\n if (!this.keepBuffer) {\n this.buffer[i] = c;\n }\n lastMatch = i;\n break;\n }\n }\n if (pos > test.length) {\n this.clearBuffer(i + 1, this.len);\n break;\n }\n }\n else {\n if (this.buffer[i] === test.charAt(pos)) {\n pos++;\n }\n if (i < this.partialPosition) {\n lastMatch = i;\n }\n }\n }\n if (allow) {\n this.writeBuffer();\n }\n else if (lastMatch + 1 < this.partialPosition) {\n if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n // Invalid value. Remove it and replace it with the\n // mask, which is the default behavior.\n if (this.inputViewChild?.nativeElement.value)\n this.inputViewChild.nativeElement.value = '';\n this.clearBuffer(0, this.len);\n }\n else {\n // Invalid value, but we opt to show the value to the\n // user and allow them to correct their mistake.\n this.writeBuffer();\n }\n }\n else {\n this.writeBuffer();\n this.inputViewChild.nativeElement.value = this.inputViewChild?.nativeElement.value.substring(0, lastMatch + 1);\n }\n return (this.partialPosition ? i : this.firstNonMaskPos);\n }\n onInputFocus(event) {\n if (this.readonly) {\n return;\n }\n this.focused = true;\n clearTimeout(this.caretTimeoutId);\n let pos;\n this.focusText = this.inputViewChild?.nativeElement.value;\n pos = this.keepBuffer ? this.inputViewChild?.nativeElement.value.length : this.checkVal();\n this.caretTimeoutId = setTimeout(() => {\n if (this.inputViewChild?.nativeElement !== this.inputViewChild?.nativeElement.ownerDocument.activeElement) {\n return;\n }\n this.writeBuffer();\n if (pos == this.mask?.replace('?', '').length) {\n this.caret(0, pos);\n }\n else {\n this.caret(pos);\n }\n }, 10);\n this.onFocus.emit(event);\n }\n onInputChange(event) {\n if (this.androidChrome)\n this.handleAndroidInput(event);\n else\n this.handleInputChange(event);\n this.onInput.emit(event);\n }\n handleInputChange(event) {\n if (this.readonly) {\n return;\n }\n setTimeout(() => {\n var pos = this.checkVal(true);\n this.caret(pos);\n this.updateModel(event);\n if (this.isCompleted()) {\n this.onComplete.emit();\n }\n }, 0);\n }\n getUnmaskedValue() {\n let unmaskedBuffer = [];\n for (let i = 0; i < this.buffer.length; i++) {\n let c = this.buffer[i];\n if (this.tests[i] && c != this.getPlaceholder(i)) {\n unmaskedBuffer.push(c);\n }\n }\n return unmaskedBuffer.join('');\n }\n updateModel(e) {\n const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;\n if (updatedValue !== null || updatedValue !== undefined) {\n this.value = updatedValue;\n this.onModelChange(this.value);\n }\n }\n updateFilledState() {\n this.filled = this.inputViewChild?.nativeElement && this.inputViewChild.nativeElement.value != '';\n }\n focus() {\n this.inputViewChild?.nativeElement.focus();\n }\n clear() {\n this.inputViewChild.nativeElement.value = '';\n this.value = null;\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMask, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: InputMask, selector: \"p-inputMask\", inputs: { type: \"type\", slotChar: \"slotChar\", autoClear: \"autoClear\", showClear: \"showClear\", style: \"style\", inputId: \"inputId\", styleClass: \"styleClass\", placeholder: \"placeholder\", size: \"size\", maxlength: \"maxlength\", tabindex: \"tabindex\", title: \"title\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", ariaRequired: \"ariaRequired\", disabled: \"disabled\", readonly: \"readonly\", unmask: \"unmask\", name: \"name\", required: \"required\", characterPattern: \"characterPattern\", autoFocus: \"autoFocus\", autocomplete: \"autocomplete\", keepBuffer: \"keepBuffer\", mask: \"mask\" }, outputs: { onComplete: \"onComplete\", onFocus: \"onFocus\", onBlur: \"onBlur\", onInput: \"onInput\", onKeydown: \"onKeydown\", onClear: \"onClear\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focused\", \"class.p-inputmask-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element\" }, providers: [INPUTMASK_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"inputViewChild\", first: true, predicate: [\"input\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-inputmask-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputmask-clearable{position:relative}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.InputText), selector: \"[pInputText]\" }, { kind: \"directive\", type: i0.forwardRef(() => i3.AutoFocus), selector: \"[pAutoFocus]\", inputs: [\"autofocus\"] }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMask, decorators: [{\n type: Component,\n args: [{ selector: 'p-inputMask', template: `\n \n \n \n \n \n \n \n `, host: {\n class: 'p-element',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused',\n '[class.p-inputmask-clearable]': 'showClear && !disabled'\n }, providers: [INPUTMASK_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\"@layer primeng{.p-inputmask-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputmask-clearable{position:relative}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{\n type: Input\n }], slotChar: [{\n type: Input\n }], autoClear: [{\n type: Input\n }], showClear: [{\n type: Input\n }], style: [{\n type: Input\n }], inputId: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], size: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], title: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaRequired: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], unmask: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], characterPattern: [{\n type: Input\n }], autoFocus: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], keepBuffer: [{\n type: Input\n }], mask: [{\n type: Input\n }], onComplete: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onInput: [{\n type: Output\n }], onKeydown: [{\n type: Output\n }], onClear: [{\n type: Output\n }], inputViewChild: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass InputMaskModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMaskModule, declarations: [InputMask], imports: [CommonModule, InputTextModule, AutoFocusModule, TimesIcon], exports: [InputMask, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMaskModule, imports: [CommonModule, InputTextModule, AutoFocusModule, TimesIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: InputMaskModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule, AutoFocusModule, TimesIcon],\n exports: [InputMask, SharedModule],\n declarations: [InputMask]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INPUTMASK_VALUE_ACCESSOR, InputMask, InputMaskModule };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tInputMask\r\n} from 'primeng/inputmask';\r\n\r\n@Component({\r\n\tselector: 'custom-masked-input',\r\n\ttemplateUrl: './custom-masked-input.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Masked Input.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomMaskedInputComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class CustomMaskedInputComponent\r\n\textends ExtendedCustomControlDirective\r\n\timplements AfterViewInit\r\n{\r\n\t/** Initializes a new instance of the CustomMaskedInputComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomMaskedInputComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets masked input control.\r\n\t *\r\n\t * @type {InputMask}\r\n\t * @memberof CustomMaskedInputComponent\r\n\t */\r\n\t@ViewChild('maskedInput')\r\n\tpublic maskedInput: InputMask;\r\n\r\n\t/**\r\n\t * On after view initialization event.\r\n\t * Sets the hidden input value for this masked input to match the data\r\n\t * found on load. Once this is hooked in, all further form interactions\r\n\t * are the same as other inputs.\r\n\t *\r\n\t * @memberof CustomMaskedInputComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\t// Work around for not using NGModel for the masked input\r\n\t\t// and using the form control directly as formly requires.\r\n\t\tthis.maskedInput.inputViewChild.nativeElement.value =\r\n\t\t\tthis.maskedInput.value;\r\n\r\n\t\tconst existingValue: string = this.field.formControl.value;\r\n\t\tthis.field.formControl.reset();\r\n\t\tthis.field.formControl.setValue(existingValue);\r\n\t\tthis.validateControl();\r\n\t}\r\n}","\r\n\r\n\r\n\r\n\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\n\r\n@Component({\r\n\tselector: 'custom-message',\r\n\ttemplateUrl: './custom-message.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-message.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Message.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomMessageComponent\r\n * @extends {FieldType}\r\n */\r\nexport class CustomMessageComponent\r\n\textends FieldType\r\n{\r\n}","
    \r\n\t{{field.props.message}}\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationDefinitionDto\r\n} from '@api/interfaces/operations/operation-definition.dto.interface';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-operation-button',\r\n\ttemplateUrl: './custom-operation-button.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-operation-button.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Operation Button.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomOperationButtonComponent\r\n * @extends {FieldType}\r\n */\r\nexport class CustomOperationButtonComponent\r\n\textends FieldType\r\n{\r\n\t/** Initializes a new instance of the CustomOperationButtonComponent.\r\n\t *\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use when loading operation group data.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service to use when performing operation\r\n\t * commands.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionsApiService\r\n\t * The api service used to load operation definitions data.\r\n\t * @memberof CustomOperationButtonComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic operationDefinitionApiService: OperationDefinitionApiService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the operationName or operationPromise defined in the\r\n\t * props for a custom-operation-button component.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The event passed from the operation button click event.\r\n\t **/\r\n\tpublic async executeOperation(\r\n\t\tevent: Event): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.field.props.operationName))\r\n\t\t{\r\n\t\t\tconst promise: Promise =\r\n\t\t\t\tStringHelper.transformToLayoutPromise(\r\n\t\t\t\t\tthis.field.props.operationPromise,\r\n\t\t\t\t\tthis.field,\r\n\t\t\t\t\tevent,\r\n\t\t\t\t\tthis.field.props.context);\r\n\r\n\t\t\tawait promise;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst operationDefinition: IOperationDefinitionDto =\r\n\t\t\tawait this.operationDefinitionApiService\r\n\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t+ `'${this.field.props.operationName}'`,\r\n\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`);\r\n\r\n\t\tconst postOperationDefinition: IOperationDefinition =\r\n\t\t\tawait this.operationService\r\n\t\t\t\t.populateOperationDefinition(\r\n\t\t\t\t\toperationDefinition,\r\n\t\t\t\t\t{},\r\n\t\t\t\t\tthis.field.props.context);\r\n\r\n\t\tawait this.operationExecutionService\r\n\t\t\t.executeMappedOperation(\r\n\t\t\t\tpostOperationDefinition);\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tGuid\r\n} from 'guid-typescript';\r\n\r\n@Component({\r\n\tselector: 'custom-resource-identifier',\r\n\ttemplateUrl: './custom-resource-identifier.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Resource Identifier.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomResourceIdentifierComponent\r\n * @extends {FieldType}\r\n * @implements {OnInit}\r\n */\r\nexport class CustomResourceIdentifierComponent\r\n\textends FieldType\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to set a resource identifier value if it is currently\r\n\t * undefined in the model.\r\n\t *\r\n\t * @memberof CustomResourceIdentifierComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.field.formControl.value))\r\n\t\t{\r\n\t\t\tthis.field.formControl.setValue(\r\n\t\t\t\tGuid.raw());\r\n\t\t}\r\n\t}\r\n}","\r\n
    \r\n\t\r\n
    ","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-summary-card',\r\n\ttemplateUrl: './custom-summary-card.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-summary-card.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Summary Card.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomSummaryCardComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n */\r\nexport class CustomSummaryCardComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CustomSummaryCardComponent. This\r\n\t * explicit constructor was requested during an upgrade process and\r\n\t * should be left as implemented.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomSummaryCardComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the summary card configuration.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof CustomSummaryCardComponent\r\n\t */\r\n\tpublic summaryCardConfiguration: any;\r\n\r\n\t/**\r\n\t * Gets or sets the summary card\r\n\t * data promise.\r\n\t *\r\n\t * @type {Promise}\r\n\t * @memberof CustomSummaryCardComponent\r\n\t */\r\n\tpublic dataPromise: Promise;\r\n\r\n\t/**\r\n\t * Gets or sets the summary card\r\n\t * loading status thruthy.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomSummaryCardComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to transform the card data string\r\n\t * into a promise and to set the summary card configuration.\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomSummaryCardComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.dataPromise = StringHelper.transformToDataPromise(\r\n\t\t\tStringHelper.interpolate(\r\n\t\t\t\tthis.field.props.summaryCardConfiguration.dataPromise,\r\n\t\t\t\tthis.field.props.context),\r\n\t\t\tthis.field.props.context)\r\n\r\n\t\tthis.summaryCardConfiguration =\r\n\t\t\tthis.field.props.summaryCardConfiguration;\r\n\r\n\t\tsuper.ngOnInit();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\n\r\n@Component({\r\n\tselector: 'custom-table-display',\r\n\ttemplateUrl: './custom-table-display.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Table Display.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomTableDisplayComponent\r\n * @extends {ExtendedCustomControlDirective}\r\n */\r\nexport class CustomTableDisplayComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CustomTableDisplayComponent. This\r\n\t * explicit constructor was requested during an upgrade process and\r\n\t * should be left as implemented.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomTableDisplayComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n\r\n\t/**\r\n\t * On component initialization event.\r\n\t * This method is used to extend the update value and validity method\r\n\t * of this form control to include change detection and to match\r\n\t * the expected table interface.\r\n\t * @memberof CustomTableDisplayComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.field.props.tableDefinitions.selectedColumns =\r\n\t\t\tthis.field.props.tableDefinitions.availableColumns;\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the row select event promise\r\n\t * when clicking on a displayed table row\r\n\t * which has the selectable properties enabled.\r\n\t *\r\n\t * @param {string} capturedSelectedItemEventPromise\r\n\t * The captured selected row event promise from template options.\r\n\t * @memberof CustomTableDisplayComponent\r\n\t */\r\n\tpublic async itemSelected(\r\n\t\tcapturedSelectedItemEventPromise: string): Promise\r\n\t{\r\n\t\tthis.field.props.tableDefinitions.expandTitle =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\tthis.field.props.tableDefinitions.defaultExpandTitle)\r\n\t\t\t\t? TableHelper.getExpandTitle(\r\n\t\t\t\t\tthis.field.props.tableDefinitions.getCommonTableContext(),\r\n\t\t\t\t\tthis.field.props.tableDefinitions.defaultExpandTitle)\r\n\t\t\t\t: this.field.props.tableDefinitions.expandTitle;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tcapturedSelectedItemEventPromise))\r\n\t\t{\r\n\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\tcapturedSelectedItemEventPromise,\r\n\t\t\t\tthis.field.props.context);\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tExtendedCustomControlDirective\r\n} from '@entity/directives/extended-custom-control.directive';\r\n\r\n@Component({\r\n\tselector: 'custom-textarea',\r\n\ttemplateUrl: './custom-text-area.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-text-area.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Input Text Area.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomInputTextAreaComponent\r\n * @extends {FieldType\r\n */\r\nexport class CustomInputTextAreaComponent\r\n\textends ExtendedCustomControlDirective\r\n{\r\n\t/** Initializes a new instance of the CustomInputTextAreaComponent.\r\n\t *\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomInputTextAreaComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(changeDetector);\r\n\t}\r\n}","\r\n\r\n\r\n","\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t  Copied!\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t  Copied!\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t  Copied!\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t  Copied!\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\t{{field.props.title}}\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    \r\n\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tOnInit,\r\n\tSecurityContext\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tFieldType\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n@Component({\r\n\tselector: 'custom-text-display',\r\n\ttemplateUrl: './custom-text-display.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-text-display.component.scss'\r\n\t],\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Text Display.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomTextDisplayComponent\r\n * @extends {FieldType}\r\n */\r\nexport class CustomTextDisplayComponent\r\n\textends FieldType\r\n\timplements OnInit\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the ManageUserComponent class.\r\n\t *\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The sanitizer used to ensure safe inner html and inner text displays.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to handle data interactions and client\r\n\t * messaging.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector reference for this component.\r\n\t * @memberof ManageUserComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sanitizer: DomSanitizer,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the text content to display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic content: string;\r\n\r\n\t/**\r\n\t * Gets or sets if content has been copied to clipboard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic copiedToClipboard: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the loading state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets the display time for the copied message when copying content\r\n\t * to the clipboard.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tprivate readonly copyToClipboardDisplayTime: number = 3000;\r\n\r\n\t/**\r\n\t * Implements the on initialization interface.\r\n\t * This will set the content to display in this text\r\n\t * display component.\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setContent();\r\n\t\tthis.field.props.reloadTextDisplay =\r\n\t\t\tthis.onTextDisplayReload.bind(this);\r\n\t\tthis.loading = false;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the text display content.\r\n\t *\r\n\t* @async\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic async setContent(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.field.props.contentPromise))\r\n\t\t{\r\n\t\t\tthis.content =\r\n\t\t\t\tawait StringHelper.transformToFieldDataPromise(\r\n\t\t\t\t\tthis.field.props.contentPromise,\r\n\t\t\t\t\tthis.field.props.context,\r\n\t\t\t\t\tthis.field);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.content =\r\n\t\t\tthis.sanitizer.sanitize(\r\n\t\t\t\tSecurityContext.HTML,\r\n\t\t\t\tthis.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\t\tthis.field.props.useCodeBlock === true\r\n\t\t\t\t\t\t? this.getCodeBlock()\r\n\t\t\t\t\t\t: this.field.props.content));\r\n\t}\r\n\r\n\t/**\r\n\t * The text display reload handler.\r\n\t *\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic onTextDisplayReload(): void\r\n\t{\r\n\t\tthis.loading = true;\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setContent();\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t},\r\n\t\t\tAppConstants.time.twentyFiveMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the code block formatting.\r\n\t *\r\n\t * @returns {string}\r\n\t * The code block.\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic getCodeBlock(): string\r\n\t{\r\n\t\treturn `\\`\\`\\`${this.field.props.codeBlockType}\\n\\r`\r\n\t\t\t+ `${this.field.props.content}\\n\\r\\`\\`\\``;\r\n\t}\r\n\r\n\t/**\r\n\t * A Function that determines content returned from the\r\n\t * determined source (text/markdown) is null\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A truthy defining if the content view has content to display.\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic hasContent(): boolean\r\n\t{\r\n\t\treturn !AnyHelper.isNullOrWhitespace(this.content);\r\n\t}\r\n\r\n\t/**\r\n\t * Will copy the text content to clipboard.\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomTextDisplayComponent\r\n\t */\r\n\tpublic async copyToClipboard(text: string): Promise\r\n\t{\r\n\t\tawait StringHelper\r\n\t\t\t.copyToClipboard(\r\n\t\t\t\ttext);\r\n\t\tthis.copiedToClipboard = true;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.copiedToClipboard = false;\r\n\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t},\r\n\t\t\tthis.copyToClipboardDisplayTime);\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewChecked,\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tHostListener,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tEntityEventConstants\r\n} from '@entity/shared/entity-event.constants';\r\nimport {\r\n\tFieldWrapper\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\teach\r\n} from 'lodash-es';\r\nimport {\r\n\tSubscription,\r\n\tfrom\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'custom-field-wrapper',\r\n\ttemplateUrl: './custom-field-wrapper.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-field-wrapper.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Field Wrapper.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomFieldWrapperComponent\r\n * @extends {FieldWrapper}\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {AfterViewChecked}\r\n */\r\nexport class CustomFieldWrapperComponent\r\n\textends FieldWrapper\r\n\timplements OnInit, AfterViewInit, AfterViewChecked\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the CustomFieldWrapperComponent class.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this component.\r\n\t * @param {ChangeDetectorRef} changeDetector\r\n\t * The change detector reference for this component.\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic changeDetector: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/* @ViewChildren('InputLabel')\r\n\tpublic inputLabelChildren: ElementRef[]; */\r\n\r\n\t@ViewChild('FieldWrapper')\r\n\tpublic fieldWrapper: any;\r\n\r\n\t/**\r\n\t * Gets or sets a value defining whether or not the field is required based\r\n\t * on presentation rules.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic requiredViaRules: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription class\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic dataSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets the grid columns.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic gridColumns: string;\r\n\r\n\t/**\r\n\t * Gets or sets the label style width.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic labelStyleWidth: string = AppConstants.cssStyles.maxContent;\r\n\r\n\t/**\r\n\t * Gets or sets the data subscription class\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic dynamicGridSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables\r\n\t * or loading has completed.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.dynamicGridColumnPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Checks for the existence of a required rule validator on this field if\r\n\t * it is set via rules.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.field.validators))\r\n\t\t{\r\n\t\t\teach(\r\n\t\t\t\tObject.keys(this.field.validators),\r\n\t\t\t\t(key: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key.indexOf(\r\n\t\t\t\t\t\t'Required_') === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.requiredViaRules = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On after view initialization event.\r\n\t * Triggers any change events that exist in the field on the initial\r\n\t * display. This ensures that loaded values and client entered values\r\n\t * remain consistent with business rules.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.field.props.change))\r\n\t\t{\r\n\t\t\tthis.field.props\r\n\t\t\t\t.change(this.field);\r\n\t\t}\r\n\r\n\t\tthis.dynamicGridColumnPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * On after view checked event.\r\n\t * This will fire a change detector for validation events outside of the\r\n\t * main client thread.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic ngAfterViewChecked(): void\r\n\t{\r\n\t\tthis.changeDetector.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Dynamically propagates the grid columns to avoid layout breaks and\r\n\t * blank spaces when large labels overflow their container.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tpublic dynamicGridColumnPropagation(): Promise\r\n\t{\r\n\t\tif (this.dynamicGridSubscription != null)\r\n\t\t{\r\n\t\t\tthis.dynamicGridSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.dynamicGridSubscription =\r\n\t\t\t\t\tfrom(\r\n\t\t\t\t\t\tthis.handleDynamicGridColumnPropagation())\r\n\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.setGridColumns();\r\n\t\t\t\t\t\t\t\tthis.setLabelStyleWidth();\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the dynamic grid column propagation when applicable.\r\n\t * This will dynamically set the grid columns to 12 of a section\r\n\t * to the same when one or more field label overflows or to 6 when\r\n\t * there is available width.\r\n\t *\r\n\t * @async\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate async handleDynamicGridColumnPropagation(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.field.props.context)\r\n\t\t\t|| AnyHelper.isNullOrEmpty(this.field.props.attributes))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst fieldWrapperElement: any =\r\n\t\t\tthis.fieldWrapper.nativeElement;\r\n\t\tconst labelWidth: number =\r\n\t\t\tfieldWrapperElement.children[0]\r\n\t\t\t\t.getBoundingClientRect()\r\n\t\t\t\t.width;\r\n\t\tconst fieldWrapperWidth: number =\r\n\t\t\tfieldWrapperElement\r\n\t\t\t\t.getBoundingClientRect()\r\n\t\t\t\t.width;\r\n\r\n\t\tif (labelWidth > 0\r\n\t\t\t&& this.field.props.context.source.activeTabItemIndex\r\n\t\t\t\t=== this.field.props\r\n\t\t\t\t\t.attributes[FormlyConstants.attributeKeys.tabIndex])\r\n\t\t{\r\n\t\t\tconst dynamicGridSizeRelationship: number =\r\n\t\t\t\tthis.getDynamicGridSizeRelationship(\r\n\t\t\t\t\tthis.field.props.dynamicGridColumns);\r\n\r\n\t\t\tconst calculatedAvailableWidth: number =\r\n\t\t\t\t(fieldWrapperWidth / dynamicGridSizeRelationship) -\r\n\t\t\t\t\tAppConstants.staticLayoutSizes.standardContentPadding;\r\n\r\n\t\t\tconst allowedToPropagateDynamicGridColumns: boolean =\r\n\t\t\t\tthis.isAllowedToPropagateDynamicGridColumns(\r\n\t\t\t\t\tthis.field.props.dynamicGridColumns,\r\n\t\t\t\t\tlabelWidth,\r\n\t\t\t\t\tcalculatedAvailableWidth);\r\n\r\n\t\t\tif (allowedToPropagateDynamicGridColumns === false)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dynamicGridColumnsToPropagate: string =\r\n\t\t\t\tthis.getOppositeDynamicGridColumns(\r\n\t\t\t\t\tthis.field.props.dynamicGridColumns);\r\n\t\t\tconst labelOverflow: boolean =\r\n\t\t\t\tthis.isLabelOverflow(\r\n\t\t\t\t\tthis.field.props.dynamicGridColumns);\r\n\r\n\t\t\tthis.propagateDynamicGridColumns(\r\n\t\t\t\tdynamicGridColumnsToPropagate,\r\n\t\t\t\tlabelOverflow);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the relationship between the gridColumns and a full grid of 12.\r\n\t *\r\n\t * @param {string} gridColumns\r\n\t * The grid columns.\r\n\t * @returns {number}\r\n\t * The dynamic grid size relationship.\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate getDynamicGridSizeRelationship(gridColumns: string): number\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(gridColumns))\r\n\t\t{\r\n\t\t\treturn FormlyConstants.gridSizeRelationship.fullGrid;\r\n\t\t}\r\n\r\n\t\tconst numericFullGrid: number =\r\n\t\t\tparseInt(\r\n\t\t\t\tFormlyConstants.gridColumns.fullGrid,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\tconst numericDynamicGrid: number =\r\n\t\t\tparseInt(\r\n\t\t\t\tgridColumns,\r\n\t\t\t\tAppConstants.parseRadix);\r\n\r\n\t\treturn (numericFullGrid / numericDynamicGrid) ===\r\n\t\t\tFormlyConstants.gridSizeRelationship.fullGrid\r\n\t\t\t? FormlyConstants.gridSizeRelationship.halfGrid\r\n\t\t\t: FormlyConstants.gridSizeRelationship.fullGrid;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the thruthy if is allowed to propagate the\r\n\t * dynamic grid columns. This is output based on the existing\r\n\t * dynamic grid columns and a calculation between the label width\r\n\t * versus the calculated available width.\r\n\t *\r\n\t * @param {string} dynamicGridColumns\r\n\t * The dynamic grid columns.\r\n\t * @param {number} labelWidth\r\n\t * The label width.\r\n\t * @param {number} calculatedAvailableWidth\r\n\t * The calculated available width.\r\n\t * @returns {boolean}\r\n\t * If allowed to propagate dynamic grid columns.\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate isAllowedToPropagateDynamicGridColumns(\r\n\t\tdynamicGridColumns: string,\r\n\t\tlabelWidth: number,\r\n\t\tcalculatedAvailableWidth: number): boolean\r\n\t{\r\n\t\treturn dynamicGridColumns !== FormlyConstants.gridColumns.fullGrid\r\n\t\t\t&& labelWidth > calculatedAvailableWidth\r\n\t\t\t? true\r\n\t\t\t: this.field.props.labelOverflow === true\r\n\t\t\t\t&& dynamicGridColumns !== FormlyConstants.gridColumns.halfGrid\r\n\t\t\t\t&& labelWidth <= calculatedAvailableWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the opposite dynamic grid columns.\r\n\t * Based on a 12 vs 6 grid, will get the opposite from what is\r\n\t * being sent.\r\n\t *\r\n\t * @param {string} gridColumns\r\n\t * The grid columns.\r\n\t * @returns {string}\r\n\t * The opposite grid columns.\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate getOppositeDynamicGridColumns(gridColumns: string): string\r\n\t{\r\n\t\treturn gridColumns !== FormlyConstants.gridColumns.fullGrid\r\n\t\t\t? FormlyConstants.gridColumns.fullGrid\r\n\t\t\t: FormlyConstants.gridColumns.halfGrid;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the the field grid has been updated dynamically.\r\n\t *\r\n\t * @param {string} gridColumns\r\n\t * The grid columns.\r\n\t * @returns {boolean}\r\n\t * The dynamic grid field thruthy.\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate isLabelOverflow(gridColumns: string): boolean\r\n\t{\r\n\t\treturn gridColumns !== FormlyConstants.gridColumns.fullGrid;\r\n\t}\r\n\r\n\t/**\r\n\t * Propagates the dynamic grid columns.\r\n\t * This will set the field to the calculated needed grid columns and\r\n\t * propagate them to the fields in their common section.\r\n\t *\r\n\t * @param {string} dynamicGridColumns\r\n\t * The dynamic grid columns to propagate.\r\n\t * @param {boolean} labelOverflow\r\n\t * The thruthy when label overflow is found.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate propagateDynamicGridColumns(\r\n\t\tdynamicGridColumns: string,\r\n\t\tlabelOverflow: boolean): void\r\n\t{\r\n\t\tthis.field.props.dynamicGridColumns = dynamicGridColumns;\r\n\t\tthis.field.props.labelOverflow = labelOverflow;\r\n\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tEntityEventConstants.calculateEntityGrid,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tgridColumns: dynamicGridColumns,\r\n\t\t\t\t\t\tsectionIndex:\r\n\t\t\t\t\t\t\tthis.field.props.attributes[\r\n\t\t\t\t\t\t\t\tFormlyConstants.attributeKeys.sectionIndex]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the defined grid columns to be implementad by the ui.\r\n\t * Between the gridColumns and dynamicGridColumns from property,\r\n\t * if existing, the gridColumns will take priority over\r\n\t * the dynamicGridColumns.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate setGridColumns(): void\r\n\t{\r\n\t\tthis.gridColumns =\r\n\t\t\tAnyHelper.isNullOrEmpty(this.field.props.gridColumns)\r\n\t\t\t\t? this.field.props.dynamicGridColumns\r\n\t\t\t\t: this.field.props.gridColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the label style width.\r\n\t * This will update the label div style and wrap the label into its own\r\n\t * container when there is no more available width, or allowe it to\r\n\t * overflow to calculate the label width and the dynamic grid columns.\r\n\t *\r\n\t * @memberof CustomFieldWrapperComponent\r\n\t */\r\n\tprivate setLabelStyleWidth(): void\r\n\t{\r\n\t\tthis.labelStyleWidth =\r\n\t\t\tthis.gridColumns === FormlyConstants.gridColumns.fullGrid\r\n\t\t\t\t? AppConstants.cssStyles.fitContent\r\n\t\t\t\t: AppConstants.cssStyles.maxContent;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tCustomFieldWrapperComponent\r\n} from '@entity/components/custom-components/wrappers/custom-field-wrapper/custom-field-wrapper.component';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'custom-empty-wrapper',\r\n\ttemplateUrl: './custom-empty-wrapper.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-empty-wrapper.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Empty Wrapper.\r\n *\r\n * @export\r\n * @class CustomEmptyWrapperComponent\r\n * @extends {FieldWrapper}\r\n */\r\nexport class CustomEmptyWrapperComponent\r\n\textends CustomFieldWrapperComponent\r\n{\r\n}","
    \r\n\t
    \r\n\t\t\r\n\t
    \r\n\t
    \r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tFieldWrapper\r\n} from '@ngx-formly/core';\r\n\r\n@Component({\r\n\tselector: 'custom-tab-content',\r\n\ttemplateUrl: './custom-tab-content.component.html',\r\n\tstyleUrls: [\r\n\t\t'./custom-tab-content.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a Custom Tab Content Wrapper.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class CustomTabContentComponent\r\n * @extends {FieldWrapper}\r\n */\r\nexport class CustomTabContentComponent\r\n\textends FieldWrapper\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAbstractControl,\r\n\tValidationErrors,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tisArray\r\n} from 'lodash-es';\r\n\r\n/**\r\n * When the formly field config array is set into the\r\n * form, this code is called on each array entry and\r\n * allows for default options to be set on each.\r\n *\r\n * @param {FormlyFieldConfig} field\r\n * The formly field that will have default options set.\r\n */\r\nexport function applyDefaultOptions(\r\n\tfield: FormlyFieldConfig): void\r\n{\r\n\tif (field.key && !field.modelOptions)\r\n\t{\r\n\t\tfield.modelOptions = {\r\n\t\t\tdebounce: {\r\n\t\t\t\tdefault: 25\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid email format.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function emailValidator(\r\n\tcontrol: AbstractControl,\r\n\t_field: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn !AnyHelper.isNull(\r\n\t\tValidators.pattern(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/)(control))\r\n\t\t? {\r\n\t\t\temail: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when email format based regex validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function emailValidatorMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\treturn `${field.formControl.value} is not a valid email format.`;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid required value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function requiredValidator(\r\n\tcontrol: AbstractControl,\r\n\t_field: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn AnyHelper.isNull(\r\n\t\tValidators.required(control))\r\n\t\t? {\r\n\t\t\trequired: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid minimum length value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function minimumLengthValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn !AnyHelper.isNull(Validators.minLength(\r\n\t\tfield.props.minimumLength)(control))\r\n\t\t? {\r\n\t\t\tminimumLength: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when minimum string length validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function minimumStringLengthValidationMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\tconst minimumLength: number =\r\n\t\tfield.props.minLength || field.props.minimumLength;\r\n\r\n\treturn `This value should have at least ${minimumLength} characters.`;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid maximum length value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function maximumLengthValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn AnyHelper.isNull(\r\n\t\tValidators.maxLength(\r\n\t\t\tfield.props.maximumLength)(control))\r\n\t\t? {\r\n\t\t\tmaximumLength: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when maximum string length validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function maximumStringLengthValidationMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\tconst maximumLength: number =\r\n\t\tfield.props.maxLength || field.props.maximumLength;\r\n\r\n\treturn `This value should be less than ${maximumLength} characters.`;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid minimum number value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function minimumNumberValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\tlet currentLength: number;\r\n\tconst isArrayValue: boolean =\r\n\t\tisArray(control.value);\r\n\r\n\tif (isArrayValue)\r\n\t{\r\n\t\tcurrentLength =\r\n\t\t\tfield.type === FormlyConstants.customControls.customRepeater\r\n\t\t\t\t? field.fieldGroup.length\r\n\t\t\t\t: control.value.length;\r\n\t}\r\n\r\n\treturn (isArrayValue\r\n\t\t&& currentLength >= field.props.minimumNumber)\r\n\t\t|| (!isArrayValue\r\n\t\t\t&& AnyHelper.isNull(Validators.min(\r\n\t\t\t\tfield.props.minimumNumber)(control)))\r\n\t\t? {\r\n\t\t\tminimumNumber: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when the minimum number validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function minimumNumberValidationMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\tconst minimumNumber: number =\r\n\t\tfield.props.min || field.props.minimumNumber;\r\n\tconst maximumNumber: number =\r\n\t\tfield.props.max || field.props.maximumNumber;\r\n\tconst minItemMessage: string = minimumNumber > 1\r\n\t\t? 'items are'\r\n\t\t: 'item is';\r\n\tconst maxItemMessage: string = maximumNumber > 1\r\n\t\t? 'items are'\r\n\t\t: 'item is';\r\n\tconst repeaterStatement: string =\r\n\t\tAnyHelper.isNull(maximumNumber)\r\n\t\t\t? `At least ${minimumNumber} ${minItemMessage} required.`\r\n\t\t\t: `Between ${minimumNumber || 0} `\r\n\t\t\t\t+ `and ${maximumNumber} ${maxItemMessage} required.`;\r\n\r\n\treturn isArray(field.formControl.value)\r\n\t\t? repeaterStatement\r\n\t\t: 'This value should be greater than or equal to ' +\r\n\t\t\tminimumNumber.toLocaleString() + AppConstants.characters.period;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid maximum number value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function maximumNumberValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn (isArray(control.value)\r\n\t\t&& control.value.length <= field.props.maximumNumber)\r\n\t\t|| (!isArray(control.value)\r\n\t\t\t&& AnyHelper.isNull(Validators.max(\r\n\t\t\t\tfield.props.maximumNumber)(control)))\r\n\t\t? {\r\n\t\t\tmaximumNumber: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when the maximum number validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function maximumNumberValidationMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\tconst minimumNumber: number =\r\n\t\tfield.props.min || field.props.minimumNumber;\r\n\tconst maximumNumber: number =\r\n\t\tfield.props.max || field.props.maximumNumber;\r\n\tconst repeaterStatement: string =\r\n\t\tAnyHelper.isNull(minimumNumber)\r\n\t\t\t? `This repeater requires no more than ${maximumNumber} `\r\n\t\t\t\t+ 'item(s).'\r\n\t\t\t: `This repeater requires between ${minimumNumber} `\r\n\t\t\t\t+ `and ${maximumNumber} item(s).`;\r\n\r\n\treturn isArray(field.formControl.value)\r\n\t\t? repeaterStatement\r\n\t\t: 'This value should be less than or equal to ' +\r\n\t\t\tmaximumNumber.toLocaleString() + AppConstants.characters.period;\r\n}\r\n\r\n/**\r\n * Validates thats the control has a valid regular expression value.\r\n *\r\n * @param {AbstractControl} control\r\n * The formly control to validate this event.\r\n * @param {FormlyFieldConfig} _field\r\n * The formly field firing this validation event.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function regularExpressionValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\treturn AnyHelper.isNull(Validators.pattern(\r\n\t\tfield.props.regularExpression)(control))\r\n\t\t? {\r\n\t\t\tregularExpression: true\r\n\t\t}\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when a format based regex validation fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function invalidFormatValidationMessage(\r\n\t_error: any,\r\n\tfield: FormlyFieldConfig): string\r\n{\r\n\treturn `${field.formControl.value} is not a valid format.`;\r\n}\r\n\r\n/**\r\n * Validates thats the formly control has a valid password based on the system\r\n * password restrictions.\r\n *\r\n * @param {AbstractControl} control\r\n * The abstract control to be validated.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field control that contains the system security restrictions.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function passwordValidator(\r\n\tcontrol: AbstractControl,\r\n\tfield: FormlyFieldConfig): ValidationErrors\r\n{\r\n\tconst securityRestrictions: any =\r\n\t\tfield.props?.securityRestrictions;\r\n\r\n\treturn !SecurityHelper.isValidPassword(\r\n\t\tcontrol.value,\r\n\t\tsecurityRestrictions,\r\n\t\tfalse)\r\n\t\t? { 'invalidPassword': true }\r\n\t\t: null;\r\n}\r\n\r\n/**\r\n * Validates thats the reactive form control has a valid password based on the\r\n * system password restrictions.\r\n *\r\n * @param {any} securityRestrictions\r\n * The system password security restrictions.\r\n * @returns {ValidationErrors}\r\n * The validation result.\r\n */\r\nexport function passwordValidatorReactiveForms(\r\n\tsecurityRestrictions: any): ValidationErrors\r\n{\r\n\treturn (control: AbstractControl): { [key: string]: any } | null =>\r\n\t{\r\n\t\tconst password: string =\r\n\t\t\tcontrol.value;\r\n\r\n\t\tconst isValidPassword: boolean =\r\n\t\t\tSecurityHelper.isValidPassword(\r\n\t\t\t\tpassword,\r\n\t\t\t\tsecurityRestrictions);\r\n\r\n\t\treturn !isValidPassword\r\n\t\t\t? { 'invalidPassword': true }\r\n\t\t\t: null;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns the error message displayed on a formly field\r\n * when a passowrd definition fails.\r\n *\r\n * @param {any} _error\r\n * The validation error.\r\n * @param {FormlyFieldConfig} field\r\n * The formly field firing this validation event.\r\n * @returns {string}\r\n * The validation error message to be displayed.\r\n */\r\nexport function passwordValidatorMessage(\r\n\t_error: any,\r\n\t_field: FormlyFieldConfig): string\r\n{\r\n\treturn 'Password is invalid.';\r\n}","import * as i0 from '@angular/core';\nimport { Component, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@ngx-formly/core';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nclass FormlyWrapperFormField extends FieldWrapper {\n}\nFormlyWrapperFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyWrapperFormField, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyWrapperFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyWrapperFormField, selector: \"formly-wrapper-primeng-form-field\", usesInheritance: true, ngImport: i0, template: `\n
    \n \n \n\n \n \n \n
    \n `, isInline: true, components: [{ type: i1.ɵFormlyValidationMessage, selector: \"formly-validation-message\", inputs: [\"field\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyWrapperFormField, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-wrapper-primeng-form-field',\n template: `\n
    \n \n \n\n \n \n \n
    \n `,\n }]\n }] });\n\nclass FormlyFormFieldModule {\n}\nFormlyFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFormFieldModule, declarations: [FormlyWrapperFormField], imports: [CommonModule,\n ReactiveFormsModule, i1.FormlyModule] });\nFormlyFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFormFieldModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forChild({\n wrappers: [\n {\n name: 'form-field',\n component: FormlyWrapperFormField,\n },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyWrapperFormField],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forChild({\n wrappers: [\n {\n name: 'form-field',\n component: FormlyWrapperFormField,\n },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFormFieldModule };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4 from '@ngx-formly/core';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport * as i2 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport * as i3 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\n\nclass FormlyFieldInput extends FieldType {\n}\nFormlyFieldInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldInput, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyFieldInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyFieldInput, selector: \"formly-field-primeng-input\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i3.InputText, selector: \"[pInputText]\" }, { type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i2.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i4.ɵFormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }, { type: i2.NumberValueAccessor, selector: \"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldInput, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-input',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n\nclass FormlyInputModule {\n}\nFormlyInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyInputModule, declarations: [FormlyFieldInput], imports: [CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule, i4.FormlyModule] });\nFormlyInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyInputModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyFieldInput],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'input',\n component: FormlyFieldInput,\n wrappers: ['form-field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number',\n },\n },\n },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFieldInput, FormlyInputModule };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@ngx-formly/core';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport * as i1 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport * as i2 from 'primeng/inputtextarea';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\n\nclass FormlyFieldTextArea extends FieldType {\n}\nFormlyFieldTextArea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldTextArea, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyFieldTextArea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyFieldTextArea, selector: \"formly-field-primeng-textarea\", usesInheritance: true, ngImport: i0, template: ` `, isInline: true, directives: [{ type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i2.InputTextarea, selector: \"[pInputTextarea]\", inputs: [\"autoResize\"], outputs: [\"onResize\"] }, { type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i3.ɵFormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldTextArea, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-textarea',\n template: ` `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n\nclass FormlyTextAreaModule {\n}\nFormlyTextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyTextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyTextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyTextAreaModule, declarations: [FormlyFieldTextArea], imports: [CommonModule,\n ReactiveFormsModule,\n InputTextareaModule,\n FormlyFormFieldModule, i3.FormlyModule] });\nFormlyTextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyTextAreaModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n InputTextareaModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'textarea',\n component: FormlyFieldTextArea,\n wrappers: ['form-field'],\n },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyTextAreaModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyFieldTextArea],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextareaModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'textarea',\n component: FormlyFieldTextArea,\n wrappers: ['form-field'],\n },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFieldTextArea, FormlyTextAreaModule };\n","import * as i0 from '@angular/core';\nimport { Pipe, NgModule } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { map, filter, tap } from 'rxjs/operators';\n\nclass FormlySelectOptionsPipe {\n transform(options, field) {\n if (!(options instanceof Observable)) {\n options = this.observableOf(options, field);\n }\n else {\n this.dispose();\n }\n return options.pipe(map((value) => this.transformOptions(value, field)));\n }\n ngOnDestroy() {\n this.dispose();\n }\n transformOptions(options, field) {\n const to = this.transformSelectProps(field);\n const opts = [];\n const groups = {};\n options?.forEach((option) => {\n const o = this.transformOption(option, to);\n if (o.group) {\n const id = groups[o.label];\n if (id === undefined) {\n groups[o.label] = opts.push(o) - 1;\n }\n else {\n o.group.forEach((o) => opts[id].group.push(o));\n }\n }\n else {\n opts.push(o);\n }\n });\n return opts;\n }\n transformOption(option, props) {\n const group = props.groupProp(option);\n if (Array.isArray(group)) {\n return {\n label: props.labelProp(option),\n group: group.map((opt) => this.transformOption(opt, props)),\n };\n }\n option = {\n label: props.labelProp(option),\n value: props.valueProp(option),\n disabled: !!props.disabledProp(option),\n };\n if (group) {\n return { label: group, group: [option] };\n }\n return option;\n }\n transformSelectProps(field) {\n const props = field?.props || field?.templateOptions || {};\n const selectPropFn = (prop) => (typeof prop === 'function' ? prop : (o) => o[prop]);\n return {\n groupProp: selectPropFn(props.groupProp || 'group'),\n labelProp: selectPropFn(props.labelProp || 'label'),\n valueProp: selectPropFn(props.valueProp || 'value'),\n disabledProp: selectPropFn(props.disabledProp || 'disabled'),\n };\n }\n dispose() {\n if (this._options) {\n this._options.complete();\n this._options = null;\n }\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n observableOf(options, f) {\n this.dispose();\n if (f && f.options && f.options.fieldChanges) {\n this._subscription = f.options.fieldChanges\n .pipe(filter(({ property, type, field }) => {\n return (type === 'expressionChanges' &&\n (property.indexOf('templateOptions.options') === 0 || property.indexOf('props.options') === 0) &&\n field === f &&\n Array.isArray(field.props.options) &&\n !!this._options);\n }), tap(() => this._options.next(f.props.options)))\n .subscribe();\n }\n this._options = new BehaviorSubject(options);\n return this._options.asObservable();\n }\n}\nFormlySelectOptionsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nFormlySelectOptionsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectOptionsPipe, name: \"formlySelectOptions\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectOptionsPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'formlySelectOptions' }]\n }] });\n\nclass FormlySelectModule {\n}\nFormlySelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlySelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, declarations: [FormlySelectOptionsPipe], exports: [FormlySelectOptionsPipe] });\nFormlySelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlySelectOptionsPipe],\n exports: [FormlySelectOptionsPipe],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlySelectModule, FormlySelectOptionsPipe };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@ngx-formly/core';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport * as i3 from '@angular/forms';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport * as i4 from '@ngx-formly/core/select';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport * as i1 from 'primeng/radiobutton';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\n\nclass FormlyFieldRadio extends FieldType {\n get disabledControl() {\n return new FormControl({ value: this.formControl.value, disabled: true });\n }\n}\nFormlyFieldRadio.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldRadio, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyFieldRadio.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyFieldRadio, selector: \"formly-field-primeng-radio\", usesInheritance: true, ngImport: i0, template: `\n
    \n \n \n
    \n `, isInline: true, components: [{ type: i1.RadioButton, selector: \"p-radioButton\", inputs: [\"value\", \"formControlName\", \"name\", \"disabled\", \"label\", \"tabindex\", \"inputId\", \"ariaLabelledBy\", \"ariaLabel\", \"style\", \"styleClass\", \"labelStyleClass\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i3.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }], pipes: { \"async\": i2.AsyncPipe, \"formlySelectOptions\": i4.FormlySelectOptionsPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldRadio, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-radio',\n template: `\n
    \n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n\nclass FormlyRadioModule {\n}\nFormlyRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyRadioModule, declarations: [FormlyFieldRadio], imports: [CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n FormlyFormFieldModule,\n FormlySelectModule, i1$1.FormlyModule] });\nFormlyRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyRadioModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n FormlyFormFieldModule,\n FormlySelectModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'radio',\n component: FormlyFieldRadio,\n wrappers: ['form-field'],\n },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyRadioModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyFieldRadio],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n RadioButtonModule,\n FormlyFormFieldModule,\n FormlySelectModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'radio',\n component: FormlyFieldRadio,\n wrappers: ['form-field'],\n },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFieldRadio, FormlyRadioModule };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@ngx-formly/core';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport * as i2 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport * as i1 from 'primeng/checkbox';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\n\nclass FormlyFieldCheckbox extends FieldType {\n constructor() {\n super(...arguments);\n this.defaultOptions = {\n props: {\n hideLabel: true,\n },\n };\n }\n}\nFormlyFieldCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyFieldCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyFieldCheckbox, selector: \"formly-field-primeng-checkbox\", usesInheritance: true, ngImport: i0, template: `\n
    \n \n \n
    \n `, isInline: true, components: [{ type: i1.Checkbox, selector: \"p-checkbox\", inputs: [\"value\", \"name\", \"disabled\", \"binary\", \"label\", \"ariaLabelledBy\", \"ariaLabel\", \"tabindex\", \"inputId\", \"style\", \"styleClass\", \"labelStyleClass\", \"formControl\", \"checkboxIcon\", \"readonly\", \"required\", \"trueValue\", \"falseValue\"], outputs: [\"onChange\"] }], directives: [{ type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i2.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i3.ɵFormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-checkbox',\n template: `\n
    \n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n\nclass FormlyCheckboxModule {\n}\nFormlyCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyCheckboxModule, declarations: [FormlyFieldCheckbox], imports: [CommonModule,\n ReactiveFormsModule,\n CheckboxModule,\n FormlyFormFieldModule, i3.FormlyModule] });\nFormlyCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyCheckboxModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n CheckboxModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'checkbox',\n component: FormlyFieldCheckbox,\n wrappers: ['form-field'],\n },\n {\n name: 'boolean',\n extends: 'checkbox',\n },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyFieldCheckbox],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CheckboxModule,\n FormlyFormFieldModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'checkbox',\n component: FormlyFieldCheckbox,\n wrappers: ['form-field'],\n },\n {\n name: 'boolean',\n extends: 'checkbox',\n },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyCheckboxModule, FormlyFieldCheckbox };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i2 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport * as i3 from '@ngx-formly/core';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport * as i1 from 'primeng/dropdown';\nimport { DropdownModule } from 'primeng/dropdown';\nimport * as i5 from '@ngx-formly/core/select';\nimport { FormlySelectModule as FormlySelectModule$1 } from '@ngx-formly/core/select';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\n\nclass FormlyFieldSelect extends FieldType {\n}\nFormlyFieldSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldSelect, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFormlyFieldSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormlyFieldSelect, selector: \"formly-field-primeng-select\", usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i1.Dropdown, selector: \"p-dropdown\", inputs: [\"scrollHeight\", \"filter\", \"name\", \"style\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"required\", \"editable\", \"appendTo\", \"tabindex\", \"placeholder\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"selectId\", \"dataKey\", \"filterBy\", \"autofocus\", \"resetFilterOnHide\", \"dropdownIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"autoDisplayFirst\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"virtualScroll\", \"itemSize\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"maxlength\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"disabled\", \"options\", \"filterValue\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\"] }], directives: [{ type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i2.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i3.ɵFormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }], pipes: { \"async\": i4.AsyncPipe, \"formlySelectOptions\": i5.FormlySelectOptionsPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyFieldSelect, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-select',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n\nclass FormlySelectModule {\n}\nFormlySelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlySelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, declarations: [FormlyFieldSelect], imports: [CommonModule,\n ReactiveFormsModule,\n DropdownModule,\n FormlyFormFieldModule,\n FormlySelectModule$1, i3.FormlyModule] });\nFormlySelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, imports: [[\n CommonModule,\n ReactiveFormsModule,\n DropdownModule,\n FormlyFormFieldModule,\n FormlySelectModule$1,\n FormlyModule.forChild({\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlySelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormlyFieldSelect],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DropdownModule,\n FormlyFormFieldModule,\n FormlySelectModule$1,\n FormlyModule.forChild({\n types: [\n {\n name: 'select',\n component: FormlyFieldSelect,\n wrappers: ['form-field'],\n },\n { name: 'enum', extends: 'select' },\n ],\n }),\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyFieldSelect, FormlySelectModule };\n","import * as i0 from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { FormlyFormFieldModule } from '@ngx-formly/primeng/form-field';\nimport { FormlyInputModule } from '@ngx-formly/primeng/input';\nimport { FormlyTextAreaModule } from '@ngx-formly/primeng/textarea';\nimport { FormlyRadioModule } from '@ngx-formly/primeng/radio';\nimport { FormlyCheckboxModule } from '@ngx-formly/primeng/checkbox';\nimport { FormlySelectModule } from '@ngx-formly/primeng/select';\n\nclass FormlyPrimeNGModule {\n}\nFormlyPrimeNGModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyPrimeNGModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormlyPrimeNGModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyPrimeNGModule, imports: [FormlyFormFieldModule,\n FormlyInputModule,\n FormlyTextAreaModule,\n FormlyRadioModule,\n FormlyCheckboxModule,\n FormlySelectModule] });\nFormlyPrimeNGModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyPrimeNGModule, imports: [[\n FormlyFormFieldModule,\n FormlyInputModule,\n FormlyTextAreaModule,\n FormlyRadioModule,\n FormlyCheckboxModule,\n FormlySelectModule,\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormlyPrimeNGModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n FormlyFormFieldModule,\n FormlyInputModule,\n FormlyTextAreaModule,\n FormlyRadioModule,\n FormlyCheckboxModule,\n FormlySelectModule,\n ],\n }]\n }] });\n\n/*\n * Public API Surface of primeng\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FormlyPrimeNGModule };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tIOperationDefinitionDto\r\n} from '@api/interfaces/operations/operation-definition.dto.interface';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tIOperationAction\r\n} from '@operation/actions/interfaces/operation-action.interface';\r\nimport {\r\n\tIOperationDefinition\r\n} from '@operation/interfaces/operation-definition.interface';\r\nimport {\r\n\tIOperationGroupRelationship\r\n} from '@operation/interfaces/operation-group-relationship.interface';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tDeactivateGuardComponent\r\n} from '@shared/interfaces/guards/deactivate-guard-component.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the common code for\r\n * all operation actions.\r\n *\r\n * @export\r\n * @class BaseOperationAction\r\n * @implements {IOperationAction}\r\n */\r\n@Injectable()\r\nexport abstract class BaseOperationAction\r\nimplements IOperationAction\r\n{\r\n\t/**\r\n\t * Defines the constructor used for\r\n\t * of the BaseOperationAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the label for this operation action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic label: string = '';\r\n\r\n\t/**\r\n\t * Gets or sets the icon for this operation action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic icon: string = '';\r\n\r\n\t/**\r\n\t * Gets or sets the order of this operation in it's\r\n\t * respective level.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic order: number = 0;\r\n\r\n\t/**\r\n\t * Gets or sets the page context of the action.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the raw badge promise if this operation implements a badge\r\n\t * display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic badgePromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the raw visible promise if this operation holds the visible\r\n\t * parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic visible: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the raw enabled promise if this operation holds the enabled\r\n\t * parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic enabled: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the raw disabled message promise if this operation\r\n\t * holds the disabledMessagePromise parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic disabledMessagePromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the post operation action by name to perform when\r\n\t * an action is completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic postOperationAction: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the post operation promise sent as a string based\r\n\t * function to be performed when an action is completed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic postOperationPromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the allowed parameter entries\r\n\t * as a comma delimited string. If set these\r\n\t * can be tested with the validateParameters\r\n\t * method.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic allowedEntries: string[];\r\n\r\n\t/**\r\n\t * Gets or sets the prompt can deactivate guard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic promptCanDeactivateGuard: boolean | string = false;\r\n\r\n\t/**\r\n\t * Gets the array display delimiter for array based messages.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic readonly arrayDisplayDelimiter: string = '\\', \\'';\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic abstract operationName: string;\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when the operation\r\n\t * has been completed successfully. If this value is null,\r\n\t * no message will be displayed upon completion.\r\n\t * This property should be defined in the implemented class if\r\n\t * post operation messages are required.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic get operationSuccessMessage(): string\r\n\t{\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when the operation\r\n\t * has not completed successfully. If this value is null,\r\n\t * no message will be displayed upon completion.\r\n\t * This property should be defined in the implemented class if\r\n\t * post operation failure messages are required.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic get operationFailureMessage(): string\r\n\t{\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the can deactivate operation.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic get canDeactivateOperation(): boolean\r\n\t{\r\n\t\tthis.promptCanDeactivateGuard =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(this.promptCanDeactivateGuard)\r\n\t\t\t\t? JSON.parse(this.promptCanDeactivateGuard)\r\n\t\t\t\t: null;\r\n\r\n\t\tif (this.promptCanDeactivateGuard !== true\r\n\t\t\t|| AnyHelper.isNull(this.pageContext))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst pageSource: EntityInstanceComponent =\r\n\t\t\t\r\n\t\t\tthis.pageContext.source;\r\n\r\n\t\tif (AnyHelper.isNull(pageSource.entityFormComponent))\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst canDeactivate: boolean | Observable =\r\n\t\t\tthis.appCanDeactivateGuard\r\n\t\t\t\t.canDeactivate(\r\n\t\t\t\t\t\r\n\t\t\t\t\tpageSource.entityFormComponent);\r\n\r\n\t\treturn canDeactivate;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or Sets block interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic get blockInterface()\r\n\t{\r\n\t\treturn this._blockInterface;\r\n\t}\r\n\tpublic set blockInterface(block: boolean | string)\r\n\t{\r\n\t\tthis._blockInterface =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(block)\r\n\t\t\t\t? JSON.parse(block)\r\n\t\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the block interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tprivate _blockInterface: boolean = null;\r\n\r\n\t/**\r\n\t * Gets or Sets the unblock interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic get unblockInterface()\r\n\t{\r\n\t\treturn this._unblockInterface;\r\n\t}\r\n\tpublic set unblockInterface(unblock: boolean | string)\r\n\t{\r\n\t\tthis._unblockInterface =\r\n\t\t\t!AnyHelper.isNullOrWhitespace(unblock)\r\n\t\t\t\t? JSON.parse(unblock)\r\n\t\t\t\t: null;\r\n\t}\r\n\r\n\t /**\r\n\t * Gets or sets the unblock interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tprivate _unblockInterface: boolean = null;\r\n\r\n\t/**\r\n\t * Executes post operation actions. This method\r\n\t * can be defined in the implemented class if\r\n\t * post operation actions are required.\r\n\t *\r\n\t * @async\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic async executePostOperationActions(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.postOperationAction))\r\n\t\t{\r\n\t\t\tconst operationDefinition: IOperationDefinitionDto =\r\n\t\t\t\tawait this.operationDefinitionApiService\r\n\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t\t\t+ `'${this.postOperationAction}'`,\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`);\r\n\r\n\t\t\tconst postOperationDefinition: IOperationDefinition =\r\n\t\t\t\tawait this.operationService\r\n\t\t\t\t\t.populateOperationDefinition(\r\n\t\t\t\t\t\toperationDefinition,\r\n\t\t\t\t\t\t{},\r\n\t\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\tawait this.operationExecutionService\r\n\t\t\t\t.executeMappedOperation(\r\n\t\t\t\t\tpostOperationDefinition);\r\n\t\t}\r\n\t\telse if (!AnyHelper.isNullOrWhitespace(this.postOperationPromise))\r\n\t\t{\r\n\t\t\tawait this.createOperationPromise(\r\n\t\t\t\tthis.postOperationPromise);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a context based operation promise from a raw string input.\r\n\t *\r\n\t * @param {string} promiseAsString\r\n\t * The raw string value to be ran as an awaited promise.\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic createOperationPromise(\r\n\t\tpromiseAsString: string): Promise\r\n\t{\r\n\t\tconst interpolation: string =\r\n\t\t\tStringHelper.interpolate(\r\n\t\t\t\tpromiseAsString,\r\n\t\t\t\tthis.pageContext);\r\n\r\n\t\treturn StringHelper.transformToDataPromise(\r\n\t\t\tinterpolation,\r\n\t\t\tthis.pageContext);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes an operation action as defined in the\r\n\t * implemented class.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * This implementation can be overloaded to return a promise set of data.\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic abstract execute(): Promise;\r\n\r\n\t/**\r\n\t * Searches the allowed entries array to define\r\n\t * if a parameter sent is not in the allowed\r\n\t * collection. Throws an error if the input\r\n\t * is not acceptable.\r\n\t *\r\n\t * @param {string} validationInput\r\n\t * The input to be checked against the allowed entries.\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tprotected validateParameters(\r\n\t\tvalidationInput: string): void\r\n\t{\r\n\t\tif (this.allowedEntries != null\r\n\t\t\t&& this.allowedEntries.length > 0\r\n\t\t\t&& this.allowedEntries.indexOf(validationInput) === -1)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`'${validationInput}' is not an allowed parameter `\r\n\t\t\t\t+ `set for the action '${this.operationName}'. `\r\n\t\t\t\t+ 'The allowed parameter sets for this operation are ['\r\n\t\t\t\t+ `'${this.allowedEntries.join(this.arrayDisplayDelimiter)}'`\r\n\t\t\t\t+ ']');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the supplied input is not null or empty\r\n\t * and throws an error if the input is not acceptable.\r\n\t *\r\n\t * @param {string} input\r\n\t * The input to be checked for null or empty.\r\n\t * @param {string} operationName\r\n\t * The operation friendly name using this shared method.\r\n\t * @param {string} label\r\n\t * The label displayed for the null or empty property.\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tprotected validateNonEmptyParameter(\r\n\t\tinput: string,\r\n\t\toperationName: string,\r\n\t\tlabel: string): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(input))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`Unable to create the ${operationName} action with an empty `\r\n\t\t\t\t+ `${label}.`);\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the action to run a string based promise on the\r\n * context of the action component.\r\n *\r\n * @export\r\n * @class ExecuteOperationPromiseAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class ExecuteOperationPromiseAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of an ExecuteOperationPromiseAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof ExecuteOperationPromiseAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteOperationPromiseAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Execute Operation Promise';\r\n\r\n\t/**\r\n\t * Gets or sets the operation promise to be ran during execute.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteOperationPromiseAction\r\n\t */\r\n\tpublic operationPromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExecuteOperationPromiseAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\tthis.operationPromise,\r\n\t\t\tthis.pageContext);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the action to create a\r\n * context level drawer.\r\n *\r\n * @export\r\n * @class AddDrawerAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class AddDrawerAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of an add drawer action.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'AddDrawer';\r\n\r\n\t/**\r\n\t * Gets or sets the content component which will be\r\n\t * displayed inside this drawer.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic contentComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the target component which will identify\r\n\t * the target of this added drawer.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic targetComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the start open value of this component.\r\n\t * If true this will display the component immediately\r\n\t * on adding the drawer.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic startOpen: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the allowed entries for content components for this\r\n\t * action.\r\n\t*\r\n\t* @type {string}\r\n\t* @memberof AddDrawerAction\r\n\t*/\r\n\tpublic readonly allowedContentComponents: string[] =\r\n\t\t[\r\n\t\t\t'BIReportComponent',\r\n\t\t\t'CommissionsComponent',\r\n\t\t\t'CommissionsScheduleUpdateComponent',\r\n\t\t\t'FilesComponent',\r\n\t\t\t'HistoryComponent',\r\n\t\t\t'NotesComponent',\r\n\t\t\t'PaymentBatchComponent',\r\n\t\t\t'PolicyDetailsComponent',\r\n\t\t\t'ProductSettingsComponent',\r\n\t\t\t'RulesComponent',\r\n\t\t\t'WorkItemsComponent'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the allowed entries for target components for this\r\n\t * action.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic readonly allowedTargetComponents: string[] =\r\n\t\t[\r\n\t\t\t'UtilityMenuComponent'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the unblock interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic displayDrawerOverlay: boolean | string = false;\r\n\r\n\t/**\r\n\t * Gets or sets the unblock interface.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof BaseOperationAction\r\n\t */\r\n\tpublic overlayClassName: string = null;\r\n\r\n\t/**\r\n\t * Searches the allowed entry arrays against the sent parameters for\r\n\t * this operation. If not valid this will generate and display an\r\n\t * error.\r\n\t *\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic validateParameters(): void\r\n\t{\r\n\t\tif (this.allowedContentComponents\r\n\t\t\t.indexOf(this.contentComponent) === -1)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\tthis.getValidationErrorMessage(\r\n\t\t\t\t\tthis.contentComponent,\r\n\t\t\t\t\tthis.allowedContentComponents));\r\n\t\t}\r\n\r\n\t\tif (this.allowedTargetComponents\r\n\t\t\t.indexOf(this.targetComponent) === -1)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\tthis.getValidationErrorMessage(\r\n\t\t\t\t\tthis.targetComponent,\r\n\t\t\t\t\tthis.allowedTargetComponents));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the validation error message displayed when an invalid action\r\n\t * parameter is sent.\r\n\t *\r\n\t * @param {string} comparisonValue\r\n\t * The string value from the parameter to check against the target array\r\n\t * for possible valid entries.\r\n\t * @param {string[]} targetArray\r\n\t * The possible valid entries for the sent comparison value.\r\n\t * @returns {string}\r\n\t * The validation error message to display to the user.\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic getValidationErrorMessage(\r\n\t\tcomparisonValue: string,\r\n\t\ttargetArray: string[]): string\r\n\t{\r\n\t\treturn `'${comparisonValue}' is not an allowed parameter `\r\n\t\t\t+ `for the action '${this.operationName}'. `\r\n\t\t\t+ 'The allowed parameters for this operation are ['\r\n\t\t\t+ `'${targetArray.join(this.arrayDisplayDelimiter)}'`\r\n\t\t\t+ ']';\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof AddDrawerAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tthis.validateParameters();\r\n\r\n\t\tconst disabledMessage =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.disabledMessagePromise)\r\n\t\t\t\t? null\r\n\t\t\t\t: await StringHelper.transformToDataPromise(\r\n\t\t\t\t\tthis.disabledMessagePromise,\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\tthis.promptCanDeactivateGuard =\r\n\t\t\t\t!AnyHelper.isNullOrWhitespace(this.displayDrawerOverlay)\r\n\t\t\t\t\t? JSON.parse(this.displayDrawerOverlay)\r\n\t\t\t\t\t: false;\r\n\r\n\t\tEventHelper.dispatchAddDrawerEvent(\r\n\t\t\tthis.contentComponent,\r\n\t\t\tthis.targetComponent,\r\n\t\t\tthis.label,\r\n\t\t\tthis.icon,\r\n\t\t\tthis.order,\r\n\t\t\tthis.startOpen,\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.enabled)\r\n\t\t\t\t? false\r\n\t\t\t\t: !(await StringHelper.transformAndExecuteBooleanPromise(\r\n\t\t\t\t\tthis.enabled,\r\n\t\t\t\t\tthis.pageContext)),\r\n\t\t\tdisabledMessage,\r\n\t\t\tthis.promptCanDeactivateGuard,\r\n\t\t\tthis.overlayClassName);\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.badgePromise))\r\n\t\t{\r\n\t\t\tEventHelper.dispatchSetBadgePromiseEvent(\r\n\t\t\t\tthis.contentComponent,\r\n\t\t\t\tthis.targetComponent,\r\n\t\t\t\tthis.badgePromise);\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tApiTokenLookup\r\n} from '@api/api-token.lookup';\r\nimport {\r\n\tBaseEntityApiService\r\n} from '@api/services/base/base-entity.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tRelatedContextMenuConfiguration\r\n} from '@shared/interfaces/application-objects/related-context-menu-configuration';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A class representing the action to gather and label a\r\n * set of related object based context menu links.\r\n *\r\n * @export\r\n * @class AddRelatedContextMenuAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class AddRelatedContextMenuAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a AddRelatedContextMenuAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {Router} router\r\n\t * The router used for this action.\r\n\t * @param {Injector} injector\r\n\t * The injector for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic router: Router,\r\n\t\tpublic injector: Injector,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Add Related Context Menu';\r\n\r\n\t/**\r\n\t * Gets or sets the api service.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic apiService: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the end point.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic endPoint: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the filter value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic filter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the order by value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic orderBy: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the page context data name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic pageContextDataName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the associated entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic associatedEntityTypeGroup: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation api service.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationApiService: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation base navigation url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationBaseNavigationUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation label format.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationLabelFormat: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation label function.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationLabelFunction: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation fallback label.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationFallbackLabel: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the translation relationship key.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic translationRelationshipKey: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the route data to send on linked navigation actions.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic routeData: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the route data promise to run and calculate specific\r\n\t * navigation actions.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic routeDataPromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for this action to determine\r\n\t * the query method for related items.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic readonly getChildrenMethodIdentifier: string = 'GetChildren';\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for this action to determine\r\n\t * the query method for a related child item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic readonly getChildMethodIdentifier: string = 'GetChild';\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for this action to determine\r\n\t * the query method for related items.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic readonly getParentsMethodIdentifier: string = 'GetParents';\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for this action to determine\r\n\t * the query method for a related parent item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic readonly getParentMethodIdentifier: string = 'GetParent';\r\n\r\n\t/**\r\n\t * Gets or sets the identifier used for this action to determine\r\n\t * the query method for a related non-entity item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic readonly getSingleQueryResultMethodIdentifier: string =\r\n\t\t'getSingleQueryResult';\r\n\r\n\t/**\r\n\t * Gets or sets the set of allowed endpoints that will return a single\r\n\t * item result.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic singularEndpoints: string[] =\r\n\t\t\r\n\t\t[\r\n\t\t\tthis.getChildMethodIdentifier,\r\n\t\t\tthis.getParentMethodIdentifier,\r\n\t\t\tthis.getSingleQueryResultMethodIdentifier\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the identifier in the source component for the\r\n\t * entity type being displayed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate readonly entityTypeGroupPropertyIdentifier: string =\r\n\t\t'entityTypeGroup';\r\n\r\n\t/**\r\n\t * Gets the limit to call when querying for related context menu items.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate readonly relatedQueryLimit: number = 50;\r\n\r\n\t/**\r\n\t * Gets the limit to call when querying for a related context menu item.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate readonly relatedSingularQueryLimit: number = 1;\r\n\r\n\t/**\r\n\t * Gets the calculated query limit value to call based on a singular\r\n\t * or multiple value endpoint request.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate get queryLimit(): number\r\n\t{\r\n\t\treturn this.singularEndpoints.indexOf(this.endPoint) === -1\r\n\t\t\t? this.relatedQueryLimit\r\n\t\t\t: this.relatedSingularQueryLimit;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The menu item array of mapped related objects or entities.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tif (this.pageContext == null)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst configurationOrderBy: string =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.orderBy)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.orderBy;\r\n\t\tconst configurationAssociatedEntityTypeGroup: string =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.associatedEntityTypeGroup)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.associatedEntityTypeGroup;\r\n\t\tconst configurationTranslationLabelFormat: string =\r\n\t\t\tAnyHelper.isNull(\r\n\t\t\t\tthis.translationLabelFormat)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.translationLabelFormat;\r\n\r\n\t\tconst configuration: RelatedContextMenuConfiguration =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tapiService: this.apiService,\r\n\t\t\t\tendPoint: this.endPoint,\r\n\t\t\t\tfilter: this.filter,\r\n\t\t\t\torderBy: configurationOrderBy,\r\n\t\t\t\tpageContextDataName: this.pageContextDataName,\r\n\t\t\t\trouteData: this.routeData,\r\n\t\t\t\trouteDataPromise: this.routeDataPromise,\r\n\t\t\t\tassociatedEntityTypeGroup:\r\n\t\t\t\t\tconfigurationAssociatedEntityTypeGroup,\r\n\t\t\t\ttranslationService:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tapiService: this.translationApiService,\r\n\t\t\t\t\t\tbaseNavigationUrl: this.translationBaseNavigationUrl,\r\n\t\t\t\t\t\tfallbackLabel: this.translationFallbackLabel,\r\n\t\t\t\t\t\tlabelFormat: configurationTranslationLabelFormat,\r\n\t\t\t\t\t\tlabelFunction: this.translationLabelFunction,\r\n\t\t\t\t\t\trelationshipKey: this.translationRelationshipKey\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.endPoint = configuration.endPoint;\r\n\r\n\t\tconst apiService: BaseEntityApiService =\r\n\t\t\tthis.injector.get>(\r\n\t\t\t\tApiTokenLookup.tokens[configuration.apiService]);\r\n\r\n\t\tconst pageObject: any =\r\n\t\t\tthis.pageContext.data[configuration.pageContextDataName];\r\n\t\tconfiguration.filter = this.replacePlaceholderText(\r\n\t\t\tconfiguration.filter);\r\n\t\tconst formattedFilter: string =\r\n\t\t\tStringHelper.interpolate(\r\n\t\t\t\tconfiguration.filter,\r\n\t\t\t\tpageObject);\r\n\r\n\t\tlet matches: any[];\r\n\t\tlet useTranslationService: boolean = false;\r\n\t\tswitch (configuration.endPoint)\r\n\t\t{\r\n\t\t\tcase this.getChildrenMethodIdentifier:\r\n\t\t\tcase this.getParentsMethodIdentifier:\r\n\t\t\tcase this.getChildMethodIdentifier:\r\n\t\t\tcase this.getParentMethodIdentifier:\r\n\t\t\t{\r\n\t\t\t\tmatches = await this.getAllEntityFamilyMatches(\r\n\t\t\t\t\tpageObject,\r\n\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\tconfiguration,\r\n\t\t\t\t\tthis.pageContext.source[\r\n\t\t\t\t\t\tthis.entityTypeGroupPropertyIdentifier],\r\n\t\t\t\t\t(apiService),\r\n\t\t\t\t\t0);\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t{\r\n\t\t\t\tmatches = await this.getAllQueryMatches(\r\n\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\tconfiguration,\r\n\t\t\t\t\tapiService,\r\n\t\t\t\t\t0);\r\n\r\n\t\t\t\tuseTranslationService = true;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.getRelatedItems(\r\n\t\t\tmatches,\r\n\t\t\tconfiguration,\r\n\t\t\tuseTranslationService);\r\n\t}\r\n\r\n\t/**\r\n\t * Calls out to the get query of an api service and returns\r\n\t * the full matching matching set of items.\r\n\t *\r\n\t * @async\r\n\t * @param {string} formattedFilter\r\n\t * The filter value to query with.\r\n\t * @param {RelatedContextMenuConfiguration} configuration\r\n\t * The configuration value for this related context action.\r\n\t * @param {BaseEntityApiService} apiService\r\n\t * The api service holding a query endpoint.\r\n\t * @param {number} offset\r\n\t * The offset value to start gathering data from.\r\n\t * @returns {Promise}\r\n\t * The menu item array of related entities or objects.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic async getAllQueryMatches(\r\n\t\tformattedFilter: string,\r\n\t\tconfiguration: RelatedContextMenuConfiguration,\r\n\t\tapiService: BaseEntityApiService,\r\n\t\toffset: number): Promise\r\n\t{\r\n\t\tlet currentOffset: number = offset;\r\n\r\n\t\tlet matches: any[] =\r\n\t\t\tawait apiService.query(\r\n\t\t\t\tformattedFilter,\r\n\t\t\t\tconfiguration.orderBy,\r\n\t\t\t\tcurrentOffset,\r\n\t\t\t\tthis.queryLimit);\r\n\r\n\t\t// Continually query until we receive less than the requested limit\r\n\t\twhile (this.queryLimit !== this.relatedSingularQueryLimit\r\n\t\t\t&& matches.length === currentOffset + this.queryLimit)\r\n\t\t{\r\n\t\t\tmatches =\r\n\t\t\t\t[\r\n\t\t\t\t\t...matches,\r\n\t\t\t\t\t...await apiService.query(\r\n\t\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\t\tconfiguration.orderBy,\r\n\t\t\t\t\t\tcurrentOffset,\r\n\t\t\t\t\t\tcurrentOffset + this.queryLimit)\r\n\t\t\t\t];\r\n\r\n\t\t\tcurrentOffset = currentOffset + this.queryLimit;\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\t/**\r\n\t * Calls out to the get children or parents endpoint of an entity\r\n\t * instance api service and returns all of the family members with\r\n\t * the sent specified type group.\r\n\t *\r\n\t * @async\r\n\t * @param {any} pageObject\r\n\t * The page context object to use to find related items of.\r\n\t * @param {string} formattedFilter\r\n\t * The filter value to query with.\r\n\t * @param {RelatedContextMenuConfiguration} configuration\r\n\t * The configuration value for this related context action.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group of the desired family set.\r\n\t * @param {number} offset\r\n\t * The offset value to start gathering data from.\r\n\t * @param {EntityInstanceApiService} apiService\r\n\t * The entity api service holding a get family endpoint.\r\n\t * @returns {Promise}\r\n\t * The menu item array of related entities or objects.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic async getAllEntityFamilyMatches(\r\n\t\tpageObject: any,\r\n\t\tformattedFilter: string,\r\n\t\tconfiguration: RelatedContextMenuConfiguration,\r\n\t\tentityTypeGroup: string,\r\n\t\tapiService: EntityInstanceApiService,\r\n\t\toffset: number): Promise\r\n\t{\r\n\t\tlet currentOffset: number = offset;\r\n\r\n\t\tapiService.entityInstanceTypeGroup = entityTypeGroup;\r\n\t\tlet matches: any[] = [];\r\n\t\tswitch (this.endPoint)\r\n\t\t{\r\n\t\t\tcase this.getChildMethodIdentifier:\r\n\t\t\tcase this.getChildrenMethodIdentifier:\r\n\t\t\t{\r\n\t\t\t\tmatches = await apiService\r\n\t\t\t\t\t.getChildren(\r\n\t\t\t\t\t\tpageObject.id,\r\n\t\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\t\tconfiguration.orderBy,\r\n\t\t\t\t\t\tcurrentOffset,\r\n\t\t\t\t\t\tthis.queryLimit,\r\n\t\t\t\t\t\tconfiguration.associatedEntityTypeGroup);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase this.getParentMethodIdentifier:\r\n\t\t\tcase this.getParentsMethodIdentifier:\r\n\t\t\t{\r\n\t\t\t\tmatches = await apiService\r\n\t\t\t\t\t.getParents(\r\n\t\t\t\t\t\tpageObject.id,\r\n\t\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\t\tconfiguration.orderBy,\r\n\t\t\t\t\t\tcurrentOffset,\r\n\t\t\t\t\t\tthis.queryLimit,\r\n\t\t\t\t\t\tconfiguration.associatedEntityTypeGroup);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`Unsupported endpoint '${this.endPoint}' `\r\n\t\t\t\t\t\t+ 'for entity query.');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Continually query until we receive less than the requested limit\r\n\t\twhile (this.queryLimit !== this.relatedSingularQueryLimit\r\n\t\t\t&& matches.length === currentOffset + this.queryLimit)\r\n\t\t{\r\n\t\t\tmatches =\r\n\t\t\t\t[\r\n\t\t\t\t\t...matches,\r\n\t\t\t\t\t...await this.getAllEntityFamilyMatches(\r\n\t\t\t\t\t\tpageObject,\r\n\t\t\t\t\t\tformattedFilter,\r\n\t\t\t\t\t\tconfiguration,\r\n\t\t\t\t\t\tentityTypeGroup,\r\n\t\t\t\t\t\tapiService,\r\n\t\t\t\t\t\tcurrentOffset + this.queryLimit)\r\n\t\t\t\t];\r\n\r\n\t\t\tcurrentOffset = currentOffset + this.queryLimit;\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers related item data and returns a menu item array for related\r\n\t * items.\r\n\t *\r\n\t * @async\r\n\t * @param {any[]} matches\r\n\t * The set of related items to be mapped into menu items.\r\n\t * @param {RelatedContextMenuConfiguration} configuration\r\n\t * The configuration for this related context menu action.\r\n\t * @param {boolean} useTranslationApiService\r\n\t * If true, this will call out to the secondary api service to\r\n\t * gather additional values needed for menu item mapping.\r\n\t * @returns {Promise}\r\n\t * A menu item array holding the related items to the sent page context.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tpublic async getRelatedItems(\r\n\t\tmatches: any[],\r\n\t\tconfiguration: RelatedContextMenuConfiguration,\r\n\t\tuseTranslationApiService: boolean): Promise\r\n\t{\r\n\t\tconst relatedItems: MenuItem[] = [];\r\n\r\n\t\tlet translationApiService: BaseEntityApiService;\r\n\t\tif (useTranslationApiService === true)\r\n\t\t{\r\n\t\t\ttranslationApiService =\r\n\t\t\t\tthis.injector.get>(\r\n\t\t\t\t\tApiTokenLookup.tokens[\r\n\t\t\t\t\t\tconfiguration.translationService.apiService]);\r\n\t\t}\r\n\r\n\t\treturn new Promise(async(resolve) =>\r\n\t\t{\r\n\t\t\tfor (const match of matches)\r\n\t\t\t{\r\n\t\t\t\tconst relatedItem: any =\r\n\t\t\t\t\t(useTranslationApiService === true)\r\n\t\t\t\t\t\t? await translationApiService.get(\r\n\t\t\t\t\t\t\tmatch[configuration.translationService\r\n\t\t\t\t\t\t\t\t.relationshipKey])\r\n\t\t\t\t\t\t: match;\r\n\r\n\t\t\t\tlet label: string;\r\n\r\n\t\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tconfiguration.translationService.labelFunction))\r\n\t\t\t\t{\r\n\t\t\t\t\tconst labelFunction: Function =\r\n\t\t\t\t\t\tStringHelper.transformToFunction(\r\n\t\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tconfiguration.translationService.labelFunction,\r\n\t\t\t\t\t\t\t\trelatedItem),\r\n\t\t\t\t\t\t\t{... this.pageContext, relatedItem: relatedItem});\r\n\r\n\t\t\t\t\tlabel = labelFunction();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel = StringHelper.interpolate(\r\n\t\t\t\t\t\tconfiguration.translationService.labelFormat,\r\n\t\t\t\t\t\trelatedItem);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trelatedItems.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: (AnyHelper.isNullOrWhitespace(label)\r\n\t\t\t\t\t\t\t|| label.indexOf(AppConstants.undefined) !== -1)\r\n\t\t\t\t\t\t\t? StringHelper.interpolate(\r\n\t\t\t\t\t\t\t\tconfiguration.translationService.fallbackLabel,\r\n\t\t\t\t\t\t\t\trelatedItem)\r\n\t\t\t\t\t\t\t: label,\r\n\t\t\t\t\t\ticon: null,\r\n\t\t\t\t\t\tid: configuration.associatedEntityTypeGroup,\r\n\t\t\t\t\t\titems: null,\r\n\t\t\t\t\t\tcommand: async() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait this.routeDataCommand(\r\n\t\t\t\t\t\t\t\tconfiguration,\r\n\t\t\t\t\t\t\t\trelatedItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tresolve(relatedItems);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the route data command related to the context menu action.\r\n\t *\r\n\t * @async\r\n\t * @param {RelatedContextMenuConfiguration} configuration\r\n\t * The configuration for this related context menu action.\r\n\t * @param {any} relatedItem\r\n\t * The related context menu item.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate async routeDataCommand(\r\n\t\tconfiguration: RelatedContextMenuConfiguration,\r\n\t\trelatedItem: any): Promise\r\n\t{\r\n\t\thistory.pushState(\r\n\t\t\tnull,\r\n\t\t\tAppConstants.empty,\r\n\t\t\tthis.router.url\r\n\t\t);\r\n\r\n\t\tconst routeDataPromise =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tconfiguration.routeDataPromise)\r\n\t\t\t\t? null\r\n\t\t\t\t: await StringHelper\r\n\t\t\t\t\t.transformToDataPromise(\r\n\t\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\t\tconfiguration.routeDataPromise,\r\n\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\tthis.pageContext);\r\n\r\n\t\tconst routeData =\r\n\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\tconfiguration.routeData)\r\n\t\t\t\t? routeDataPromise\r\n\t\t\t\t: JSON.parse(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tconfiguration.routeData,\r\n\t\t\t\t\t\tthis.pageContext));\r\n\r\n\t\tconst queryParams: any =\r\n\t\t\tAnyHelper.isNull(routeData)\r\n\t\t\t\t? {}\r\n\t\t\t\t: {\r\n\t\t\t\t\trouteData: ObjectHelper\r\n\t\t\t\t\t\t.mapRouteData(\r\n\t\t\t\t\t\t\trouteData)\r\n\t\t\t\t};\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tconfiguration\r\n\t\t\t\t\t\t.translationService\r\n\t\t\t\t\t\t.baseNavigationUrl,\r\n\t\t\t\t\trelatedItem),\r\n\t\t\t\trelatedItem.id\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\treplaceUrl: true,\r\n\t\t\t\tqueryParams: queryParams\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles commonly used query filter formatting for local site variables.\r\n\t * These variables will be available in every related context menu filter\r\n\t * defined in data storage.\r\n\t *\r\n\t * @param {string} queryFilter\r\n\t * The filter from the configuration query used when replacing\r\n\t * known placeholders.\r\n\t * @returns {string}\r\n\t * A clean query filter string with populated site data for a filter\r\n\t * matching the db storage definition.\r\n\t * @memberof AddRelatedContextMenuAction\r\n\t */\r\n\tprivate replacePlaceholderText(\r\n\t\tqueryFilter: string): string\r\n\t{\r\n\t\tif (AnyHelper.isNull(queryFilter))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\t\tconst utcCurrentDate: string =\r\n\t\t\tDateTime.local().toISO();\r\n\r\n\t\tconst currentDatePlaceholder: RegExp =\r\n\t\t\t/[$]{currentDatePlaceholder}/g;\r\n\r\n\t\treturn queryFilter.replace(\r\n\t\t\tcurrentDatePlaceholder,\r\n\t\t\tutcCurrentDate);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/**\r\n * A class representing the change layout color\r\n * action.\r\n *\r\n * @export\r\n * @class ChangeLayoutColorAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class ChangeLayoutColorAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a ChangeLayoutColorAction.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for this action.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected siteLayoutService: SiteLayoutService,\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Change Layout Color';\r\n\r\n\t/**\r\n\t * Gets or sets the layout color.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic color: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the allowed parameter entries\r\n\t * as a comma delimited string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic allowedEntries: string[] =\r\n\t\t[\r\n\t\t\t'amber',\r\n\t\t\t'blue',\r\n\t\t\t'brown',\r\n\t\t\t'cyan',\r\n\t\t\t'darkgrey',\r\n\t\t\t'deeppurple',\r\n\t\t\t'green',\r\n\t\t\t'indigo',\r\n\t\t\t'lightblue',\r\n\t\t\t'lightgreen',\r\n\t\t\t'lime',\r\n\t\t\t'orange',\r\n\t\t\t'pink',\r\n\t\t\t'purple',\r\n\t\t\t'teal',\r\n\t\t\t'calm',\r\n\t\t\t'crimson',\r\n\t\t\t'firewatch',\r\n\t\t\t'influenza',\r\n\t\t\t'joomla',\r\n\t\t\t'littleleaf',\r\n\t\t\t'night',\r\n\t\t\t'skyline',\r\n\t\t\t'sunkist',\r\n\t\t\t'suzy'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has completed successfully.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic get operationSuccessMessage(): string\r\n\t{\r\n\t\treturn `Changed the layout color to '${this.color}'.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has failed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic get operationFailureMessage(): string\r\n\t{\r\n\t\treturn `Unable to change the layout color to '${this.color}'.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof ChangeLayoutColorAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tthis.validateParameters(this.color);\r\n\t\tthis.siteLayoutService.changeLayout(\r\n\t\t\tthis.color);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/**\r\n * A class representing the change theme\r\n * action.\r\n *\r\n * @export\r\n * @class ChangeThemeAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class ChangeThemeAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a ChangeThemeAction.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for this action.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected siteLayoutService: SiteLayoutService,\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Change Theme';\r\n\r\n\t/**\r\n\t * Gets or sets the theme.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\t public theme: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the allowed parameter entries\r\n\t * as a comma delimited string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic allowedEntries: string[] =\r\n\t\t[\r\n\t\t\t'amber',\r\n\t\t\t'blue',\r\n\t\t\t'brown',\r\n\t\t\t'cyan',\r\n\t\t\t'darkgrey',\r\n\t\t\t'deeppurple',\r\n\t\t\t'green',\r\n\t\t\t'indigo',\r\n\t\t\t'lightblue',\r\n\t\t\t'lightgreen',\r\n\t\t\t'lime',\r\n\t\t\t'orange',\r\n\t\t\t'pink',\r\n\t\t\t'purple',\r\n\t\t\t'teal'\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has completed successfully.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic get operationSuccessMessage(): string\r\n\t{\r\n\t\treturn `Changed the theme to '${this.theme}'.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has failed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic get operationFailureMessage(): string\r\n\t{\r\n\t\treturn `Unable to change the theme to '${this.theme}'.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof ChangeThemeAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tthis.validateParameters(this.theme);\r\n\t\tthis.siteLayoutService.changeTheme(this.theme);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing a generic context level operation.\r\n *\r\n * @export\r\n * @class ContextOperationAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class ContextOperationAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a ContextOperationAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation display name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic operationDisplayName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the context operation to execute as a raw string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic contextOperationPromise: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the success message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic successMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic get operationName(): string\r\n\t{\r\n\t\treturn this.operationDisplayName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has completed successfully.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic get operationSuccessMessage(): string\r\n\t{\r\n\t\treturn AnyHelper.isNullOrEmpty(this.successMessage)\r\n\t\t\t? `Operation Complete: ${this.operationName}.`\r\n\t\t\t: this.successMessage;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has failed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic get operationFailureMessage(): string\r\n\t{\r\n\t\treturn `Unable to perform the operation ${this.operationName}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof ContextOperationAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tawait this.createOperationPromise(\r\n\t\t\tthis.contextOperationPromise);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityFormComponent\r\n} from '@entity/components/entity-form/entity-form.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the action to delete an entity instance from the page\r\n * context.\r\n *\r\n * @export\r\n * @class DeleteEntityAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class DeleteEntityAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a DeleteEntityAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof DeleteEntityAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DeleteEntityAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Delete';\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof DeleteEntityAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tif (!(this.pageContext.source instanceof EntityInstanceComponent))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'This delete entity source has not been implemented.');\r\n\t\t}\r\n\r\n\t\tconst entityFormComponent: EntityFormComponent =\r\n\t\t\tthis.pageContext.source.entityFormComponent;\r\n\r\n\t\tentityFormComponent.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityFormComponent.entityType.group;\r\n\t\tawait entityFormComponent.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tentityFormComponent.entityInstanceApiService.delete(\r\n\t\t\t\t\tentityFormComponent.entityInstance.id),\r\n\t\t\t\t'Deleting '\r\n\t\t\t\t\t+ `${entityFormComponent.entityType.displayName}`,\r\n\t\t\t\t'Deleted '\r\n\t\t\t\t\t+ `${entityFormComponent.entityType.displayName}`,\r\n\t\t\t\t`${entityFormComponent.entityIdentifier} was deleted.`,\r\n\t\t\t\t`${entityFormComponent.entityIdentifier} was not deleted.`));\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.postOperationAction)\r\n\t\t\t&& AnyHelper.isNullOrWhitespace(this.postOperationPromise))\r\n\t\t{\r\n\t\t\tentityFormComponent.location.back();\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the action to emit an event\r\n * that all host listener components can consume.\r\n *\r\n * @export\r\n * @class EmitEventAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class EmitEventAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of an EmitEventAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Event Emitter';\r\n\r\n\t/**\r\n\t * Gets or sets the event to emit.\r\n\t * Available events are defined in OperationEventConstants.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic event: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the content component for this event.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic contentComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the target component of this event.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic targetComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof EmitEventAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tconst actionEvent: Event | CustomEvent =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.contentComponent)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(this.targetComponent)\r\n\t\t\t\t? new Event(\r\n\t\t\t\t\tthis.event)\r\n\t\t\t\t: new CustomEvent(\r\n\t\t\t\t\tthis.event,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\tcontentComponent: this.contentComponent,\r\n\t\t\t\t\t\t\ttargetComponent: this.targetComponent\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\twindow.dispatchEvent(actionEvent);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIActionResponse\r\n} from '@shared/interfaces/workflow/action-response.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\n\r\n/**\r\n * A class representing the execute workflow action.\r\n *\r\n * @export\r\n * @class ExecuteWorkflowAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class ExecuteWorkflowAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a ExecuteWorkflowAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service used for business rules based on executed actions.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used for business rules based on executed actions.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service used for business rules based on\r\n\t * executed actions.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected entityInstanceApiService: EntityInstanceApiService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected ruleService: RuleService,\r\n\t\tprotected entityService: EntityService,\r\n\t\tprotected displayComponentService: DisplayComponentService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the action names that perform business rules.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic businessRuleActions:\r\n\t{\r\n\t\tclearServerCache: string;\r\n\t} = {\r\n\t\t\tclearServerCache: 'ClearMemoryCaches'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the action name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic actionName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the body parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic bodyParameter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic id: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the query string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\t public queryString: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic typeGroup: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the success message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic successMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic get operationName(): string\r\n\t{\r\n\t\treturn StringHelper\r\n\t\t\t.normalizeCamelcase(this.actionName);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has completed successfully.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic get operationSuccessMessage(): string\r\n\t{\r\n\t\treturn AnyHelper.isNullOrEmpty(this.successMessage)\r\n\t\t\t? `Action Complete: ${this.operationName}.`\r\n\t\t\t: this.successMessage;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the message to be displayed when this operation\r\n\t * has failed.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic get operationFailureMessage(): string\r\n\t{\r\n\t\treturn `Unable to perform the action ${this.operationName}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tthis.validateWorkflowParameters();\r\n\r\n\t\tthis.typeGroup = !AnyHelper.isNullOrWhitespace(this.typeGroup)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.typeGroup,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.typeGroup;\r\n\r\n\t\tthis.id = !AnyHelper.isNullOrWhitespace(this.id)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.id,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.id;\r\n\r\n\t\tthis.bodyParameter = !AnyHelper.isNullOrWhitespace(this.bodyParameter)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.bodyParameter,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.bodyParameter;\r\n\r\n\t\tthis.queryString = !AnyHelper.isNullOrWhitespace(this.queryString)\r\n\t\t\t? await StringHelper.transformToDataPromise(\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tthis.queryString,\r\n\t\t\t\t\tthis.pageContext),\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.queryString;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.typeGroup;\r\n\r\n\t\tconst actionResponse: IActionResponse =\r\n\t\t\tawait this.entityInstanceApiService.executeAction(\r\n\t\t\t\tNumber(this.id),\r\n\t\t\t\tthis.actionName,\r\n\t\t\t\t(AnyHelper.isNullOrWhitespace(this.bodyParameter)\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: JSON.parse(this.bodyParameter)),\r\n\t\t\t\tthis.queryString);\r\n\r\n\t\tawait this.entityInstanceApiService\r\n\t\t\t.resetAssociatedCache(\r\n\t\t\t\t`${this.entityInstanceApiService.getBaseUrl()}/${this.id}`);\r\n\r\n\t\treturn actionResponse;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes post operation actions by handling all post actions and then\r\n\t * performing client side business rules.\r\n\t *\r\n\t * @async\r\n\t * @memberof IOperationAction\r\n\t */\r\n\tpublic async executePostOperationActions(): Promise\r\n\t{\r\n\t\tawait super.executePostOperationActions();\r\n\r\n\t\tthis.performClientSideBusinessRules();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs specific actions on the client side based on system level\r\n\t * actions.\r\n\t *\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tpublic performClientSideBusinessRules(): void\r\n\t{\r\n\t\tswitch (this.actionName)\r\n\t\t{\r\n\t\t\tcase this.businessRuleActions.clearServerCache:\r\n\t\t\t\tthis.displayComponentService.clearStoredVariables();\r\n\t\t\t\tthis.operationService.clearStoredVariables();\r\n\t\t\t\tthis.ruleService.clearStoredVariables();\r\n\t\t\t\tthis.entityService.clearStoredVariables();\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the supplied action parameters\r\n\t * were entered correctly.\r\n\t *\r\n\t * @memberof ExecuteWorkflowAction\r\n\t */\r\n\tprivate validateWorkflowParameters(): void\r\n\t{\r\n\t\tconst operationName: string = 'workflow';\r\n\r\n\t\tthis.validateNonEmptyParameter(\r\n\t\t\tthis.typeGroup,\r\n\t\t\toperationName,\r\n\t\t\t'entity type group'\r\n\t\t);\r\n\r\n\t\tthis.validateNonEmptyParameter(\r\n\t\t\tthis.id,\r\n\t\t\toperationName,\r\n\t\t\t'entity id'\r\n\t\t);\r\n\r\n\t\tthis.validateNonEmptyParameter(\r\n\t\t\tthis.actionName,\r\n\t\t\toperationName,\r\n\t\t\t'entity action name'\r\n\t\t);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpEventType\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tResponseType\r\n} from '@shared/constants/enums/response-type.enum';\r\nimport {\r\n\tStorageType\r\n} from '@shared/constants/enums/storage-type.enum';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing the action to generate a document with the sent\r\n * parameters.\r\n *\r\n * @export\r\n * @class GenerateDocumentAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class GenerateDocumentAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a generate document action.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {sessionService} SessionService\r\n\t * The session service used for this action.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The activity service used for this action.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service that is used to reset cached associations on generate.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic cacheService: CacheService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'GenerateDocument';\r\n\r\n\t/**\r\n\t * Gets or sets the attach value for the workflow action. This will\r\n\t * attach the document.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic attach: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the files entity type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic fileEntityType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the file name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic fileName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the file description.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic fileDescription: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the output type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic outputType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the storage type.\r\n\t *\r\n\t * @type {StorageType}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic storageType: StorageType = StorageType.Persisted;\r\n\r\n\t/**\r\n\t * Gets or sets the template name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic templateName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the template request parameters object.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic templateParameters: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the template type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic templateType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the view result of this generate action.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic view: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the query parameters string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic query: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tconst contextSource: EntityInstanceComponent =\r\n\t\t\tthis.pageContext.source as EntityInstanceComponent;\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tcontextSource.entityTypeGroup;\r\n\r\n\t\tawait this.setQueryParameters();\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tnew Promise(\r\n\t\t\t\t(resolve, reject) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst responseType: ResponseType = this.view\r\n\t\t\t\t\t\t? ResponseType.Blob\r\n\t\t\t\t\t\t: ResponseType.Json;\r\n\r\n\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t.executeActionAsObservable>(\r\n\t\t\t\t\t\t\tcontextSource.id,\r\n\t\t\t\t\t\t\t'GenerateDocument',\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.query,\r\n\t\t\t\t\t\t\tresponseType)\r\n\t\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (event.type === HttpEventType.Response)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (!event.ok)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treject();\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst body: any = event.body;\r\n\r\n\t\t\t\t\t\t\t\t\tif (body instanceof Blob)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tconst fileUrl = window.URL\r\n\t\t\t\t\t\t\t\t\t\t\t.createObjectURL(body);\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst anchor = document\r\n\t\t\t\t\t\t\t\t\t\t\t.createElement('a');\r\n\r\n\t\t\t\t\t\t\t\t\t\tdocument\r\n\t\t\t\t\t\t\t\t\t\t\t.body\r\n\t\t\t\t\t\t\t\t\t\t\t.appendChild(anchor);\r\n\r\n\t\t\t\t\t\t\t\t\t\tanchor\r\n\t\t\t\t\t\t\t\t\t\t\t.href = fileUrl;\r\n\r\n\t\t\t\t\t\t\t\t\t\twindow\r\n\t\t\t\t\t\t\t\t\t\t\t.open(\r\n\t\t\t\t\t\t\t\t\t\t\t\tfileUrl,\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.windowTargets.blank);\r\n\r\n\t\t\t\t\t\t\t\t\t\tdocument\r\n\t\t\t\t\t\t\t\t\t\t\t.body\r\n\t\t\t\t\t\t\t\t\t\t\t.removeChild(anchor);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror: (error: any) => reject(error),\r\n\t\t\t\t\t\t\tcomplete: async() => {\r\n\t\t\t\t\t\t\t\tif ((this.pageContext.source instanceof\r\n\t\t\t\t\t\t\t\t\tEntityInstanceComponent))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t\t.clearCachedEntityRelationships(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pageContext.source);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t`Generating New ${this.templateName}`,\r\n\t\t\t\t`Generated ${this.templateName}`,\r\n\t\t\t\t`New ${this.templateName} was successfully generated.`,\r\n\t\t\t\t`Error adding ${this.templateName}.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Clears entity id based relationship caches to allow this updated\r\n\t * document to load in the initial query post generate.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceComponent} entityInstanceComponent\r\n\t * The entity instance component that will have cleared relationships.\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tprivate async clearCachedEntityRelationships(\r\n\t\tentityInstanceComponent: EntityInstanceComponent): Promise\r\n\t{\r\n\t\tconst baseUrl: string =\r\n\t\t\tentityInstanceComponent.entityInstanceApiService.getBaseUrl();\r\n\t\tconst entityInstanceUrl: string =\r\n\t\t\t`${baseUrl}/${entityInstanceComponent.id}/children`;\r\n\r\n\t\tawait this.cacheService.clearExistingStartsWithResponses(\r\n\t\t\tentityInstanceUrl);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the query parameters from the template parameters property and the\r\n\t * sent page context.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\tprivate async setQueryParameters(): Promise\r\n\t{\r\n\t\tconst interpolatedTemplateParameters: string =\r\n\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tthis.templateParameters,\r\n\t\t\t\t\tthis.pageContext),\r\n\t\t\t\tthis.pageContext);\r\n\r\n\t\tthis.query = '?'\r\n\t\t\t+ interpolatedTemplateParameters\r\n\t\t\t+ `¤tUser.id=${this.sessionService.user.id}`\r\n\t\t\t+ `&view=${this.view}`\r\n\t\t\t+ `&attach=${this.attach}`\r\n\t\t\t+ `&fileEntityType=${this.fileEntityType}`\r\n\t\t\t+ `&outputType=${this.outputType}`\r\n\t\t\t+ `&templateType=${this.templateType}`\r\n\t\t\t+ `&templateName=${this.templateName}`\r\n\t\t\t+ `&fileDescription=${this.fileDescription}`;\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.fileName))\r\n\t\t{\r\n\t\t\tthis.query += `&fileName=${this.fileName}`;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpEventType\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tResponseType\r\n} from '@shared/constants/enums/response-type.enum';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing the action to generate files with the sent\r\n * parameters.\r\n *\r\n * @export\r\n * @class GenerateFilesAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class GenerateFilesAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a generate document action.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {sessionService} SessionService\r\n\t * The session service used for this action.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The activity service used for this action.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service that is used to reset cached associations on generate.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof GenerateDocumentAction\r\n\t */\r\n\t public constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic cacheService: CacheService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'GenerateFiles';\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic id: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\t public typeGroup: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the force generate parameter.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic forceGenerate: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the generator filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\t public generatorFilter: string = AppConstants.empty;\r\n\r\n\t /**\r\n\t * Gets or sets the generator filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\t public returnType: string = AppConstants.empty;\r\n\r\n\t /**\r\n\t * Gets or sets the generated file's parent id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\t public generatedFilesParent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the view result of this generate action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic view: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the query string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic queryString: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the success message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic successMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the window for opening a print dialogue.\r\n\t *\r\n\t * @type {Window}\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic printWindow: Window;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tconst contextSource: EntityInstanceComponent =\r\n\t\t\tthis.pageContext.source as EntityInstanceComponent;\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\tcontextSource.entityTypeGroup;\r\n\r\n\t\tawait this.setQueryParameters();\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tnew Promise(\r\n\t\t\t\t(resolve, reject) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t.executeActionAsObservable>(\r\n\t\t\t\t\t\t\tcontextSource.id,\r\n\t\t\t\t\t\t\t'GenerateFilesBlock',\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.queryString,\r\n\t\t\t\t\t\t\tResponseType.Blob)\r\n\t\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (event.type === HttpEventType.Response)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (!event.ok)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treject();\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst body: any = event.body;\r\n\r\n\t\t\t\t\t\t\t\t\tif (body instanceof Blob)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.HandleBlobResponse(body);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror: (error: any) => reject(error),\r\n\t\t\t\t\t\t\tcomplete: async() => {\r\n\t\t\t\t\t\t\t\tif ((this.pageContext.source instanceof\r\n\t\t\t\t\t\t\t\t\tEntityInstanceComponent))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t\t.clearCachedEntityRelationships(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pageContext.source);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tresolve();\r\n\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNull(this.printWindow))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.printWindow.print();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t'Generating New File.',\r\n\t\t\t\t'Generated New File.',\r\n\t\t\t\tthis.successMessage,\r\n\t\t\t\t'Error generating file.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a blob response.\r\n\t *\r\n\t * @param {Blob} blob\r\n\t * The entity instance component that will have cleared relationships.\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tprivate HandleBlobResponse(blob: Blob): void\r\n\t{\r\n\t\tconst fileUrl = window.URL\r\n\t\t\t.createObjectURL(blob);\r\n\r\n\t\tswitch (this.view)\r\n\t\t{\r\n\t\t\tcase 'view':\r\n\t\t\t\twindow.open(\r\n\t\t\t\t\tfileUrl,\r\n\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t.windowTargets.blank);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'open':\r\n\t\t\t\tconst anchor = document\r\n\t\t\t\t\t.createElement('a');\r\n\r\n\t\t\t\tdocument\r\n\t\t\t\t\t.body\r\n\t\t\t\t\t.appendChild(anchor);\r\n\r\n\t\t\t\tanchor.href = fileUrl;\r\n\t\t\t\tanchor.target = AppConstants\r\n\t\t\t\t\t.windowTargets.blank;\r\n\r\n\t\t\t\tanchor.click();\r\n\r\n\t\t\t\tdocument\r\n\t\t\t\t\t.body\r\n\t\t\t\t\t.removeChild(anchor);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'print':\r\n\r\n\t\t\t\tthis.printWindow = window.open(\r\n\t\t\t\t\tfileUrl,\r\n\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t.windowTargets.blank);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears entity id based relationship caches to allow this updated\r\n\t * document to load in the initial query post generate.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceComponent} entityInstanceComponent\r\n\t * The entity instance component that will have cleared relationships.\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tprivate async clearCachedEntityRelationships(\r\n\t\tentityInstanceComponent: EntityInstanceComponent): Promise\r\n\t{\r\n\t\tconst baseUrl: string\r\n\t\t\t= entityInstanceComponent\r\n\t\t\t\t.entityInstanceApiService\r\n\t\t\t\t.getBaseUrl();\r\n\r\n\t\tconst entityInstanceUrl: string\r\n\t\t\t= `${baseUrl}/${entityInstanceComponent.id}/children`;\r\n\r\n\t\tawait this.cacheService\r\n\t\t\t.clearExistingStartsWithResponses(entityInstanceUrl);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the query parameters from the template parameters property and the\r\n\t * sent page context.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenerateFilesAction\r\n\t */\r\n\tprivate async setQueryParameters(): Promise\r\n\t{\r\n\t\tthis.queryString = '?'\r\n\t\t\t + `generatorFilter=${this.generatorFilter}`\r\n\t\t\t + `&forceGenerate=${this.forceGenerate}`;\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.returnType))\r\n\t\t{\r\n\t\t\tthis.queryString\r\n\t\t\t\t+= `&returnType=${this.returnType}`;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.generatedFilesParent))\r\n\t\t{\r\n\t\t\tthis.generatedFilesParent\r\n\t\t\t\t= await StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tthis.generatedFilesParent,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\tthis.queryString\r\n\t\t\t\t+= `&generatedFilesParent=${this.generatedFilesParent}`;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing the action to log out of the\r\n * current application and reset the session.\r\n *\r\n * @export\r\n * @class LogOutAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class LogOutAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a LogOutAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof LogOutAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard,\r\n\t\tprivate readonly sessionService: SessionService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LogOutAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Logout';\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof LogOutAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tthis.sessionService.logOut();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the navigation action.\r\n *\r\n * @export\r\n * @class NavigationAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class NavigationAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a NavigationAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {Router} router\r\n\t * The router used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic router: Router,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Navigation';\r\n\r\n\t/**\r\n\t * Gets or sets the allowed parameter entries\r\n\t * as a comma delimited string.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic allowedNavigationTypes: string[] =\r\n\t\t[\r\n\t\t\tAppConstants.viewTypes.create,\r\n\t\t\tAppConstants.viewTypes.direct,\r\n\t\t\tAppConstants.viewTypes.view,\r\n\t\t\tAppConstants.viewTypes.edit,\r\n\t\t\tAppConstants.viewTypes.search\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets or sets the base url.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic baseUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the navigation type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic navigationType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic entityType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the report type.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic reportType: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the display component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic displayComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the identifier. This value is\r\n\t * only used when viewing an entity.\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic identifier: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the direct component\r\n\t * for a direct navigation action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic directComponent: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the full url. If sent this\r\n\t * value is used over all other mappings.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic fullUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the mapped url. This value\r\n\t * is populated via execute.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic mappedUrl: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the route data json value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic routeData: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.fullUrl))\r\n\t\t{\r\n\t\t\tthis.mappedUrl = this.fullUrl;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.populateMappedUrl();\r\n\t\t}\r\n\r\n\t\tthis.mappedUrl = StringHelper.interpolate(\r\n\t\t\tthis.mappedUrl,\r\n\t\t\tthis.pageContext);\r\n\r\n\t\tawait this.router.navigate(\r\n\t\t\t[this.mappedUrl],\r\n\t\t\tthis.getMappedParameters());\r\n\t}\r\n\r\n\t/**\r\n\t * Populates the mapped url property\r\n\t * based on the supplied action parameters.\r\n\t *\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tprivate populateMappedUrl(): void\r\n\t{\r\n\t\tthis.validateUrlParameters();\r\n\r\n\t\tlet url: string = '/' + this.baseUrl;\r\n\r\n\t\tswitch (this.navigationType)\r\n\t\t{\r\n\t\t\tcase AppConstants.viewTypes.search:\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.viewTypes.create:\r\n\t\t\t\turl += (`/${AppConstants.route.display}`\r\n\t\t\t\t\t+ (!AnyHelper.isNullOrWhitespace(this.displayComponent)\r\n\t\t\t\t\t\t? `/${this.displayComponent}`\r\n\t\t\t\t\t\t: `/${AppConstants.displayComponentTypes\r\n\t\t\t\t\t\t\t.basePageEntityCreate}`)\r\n\t\t\t\t\t+ `/${this.navigationType}`);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.viewTypes.view:\r\n\t\t\tcase AppConstants.viewTypes.edit:\r\n\t\t\t\turl = url\r\n\t\t\t\t\t+ (!AnyHelper.isNullOrWhitespace(this.entityType)\r\n\t\t\t\t\t\t? `/${this.entityType}`\r\n\t\t\t\t\t\t: AppConstants.empty)\r\n\t\t\t\t\t+ (!AnyHelper.isNullOrWhitespace(this.displayComponent)\r\n\t\t\t\t\t\t? `/${AppConstants.route.display}`\r\n\t\t\t\t\t\t\t+ `/${this.displayComponent}`\r\n\t\t\t\t\t\t: AppConstants.empty)\r\n\t\t\t\t\t+ `/${this.navigationType}`\r\n\t\t\t\t\t+ (!AnyHelper.isNullOrWhitespace(this.identifier)\r\n\t\t\t\t\t\t? `/${this.identifier}`\r\n\t\t\t\t\t\t: AppConstants.empty);\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.viewTypes.direct:\r\n\t\t\t\turl += (this.baseUrl.length === 0)\r\n\t\t\t\t\t? `${this.directComponent}`\r\n\t\t\t\t\t: `/${this.directComponent}`;\r\n\t\t\t\tthis.mappedUrl = url;\r\n\r\n\t\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.mappedUrl = url;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the supplied action parameters\r\n\t * were entered correctly.\r\n\t *\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tprivate getMappedParameters(): object\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.entityType)\r\n\t\t\t&& this.navigationType !== AppConstants.viewTypes.view\r\n\t\t\t&& this.navigationType !== AppConstants.viewTypes.edit)\r\n\t\t{\r\n\t\t\tconst entityTypes: object =\r\n\t\t\t\t{\r\n\t\t\t\t\tentityTypes: this.entityType\r\n\t\t\t\t};\r\n\r\n\t\t\treturn {\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\tthis.navigationType ===\r\n\t\t\t\t\t\t\t\tAppConstants.viewTypes.search\r\n\t\t\t\t\t\t\t\t? entityTypes\r\n\t\t\t\t\t\t\t\t: { data: entityTypes })\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.routeData)\r\n\t\t\t&& ((!AnyHelper.isNullOrWhitespace(this.entityType)\r\n\t\t\t\t|| this.navigationType === AppConstants.viewTypes.edit)\r\n\t\t\t|| !AnyHelper.isNullOrWhitespace(this.displayComponent)\r\n\t\t\t|| !AnyHelper.isNullOrWhitespace(this.directComponent)))\r\n\t\t{\r\n\t\t\tconst interpolatedRouteData =\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tthis.routeData,\r\n\t\t\t\t\tthis.pageContext);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tqueryParams: {\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\tJSON.parse(interpolatedRouteData))\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {};\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the supplied action parameters\r\n\t * were entered correctly.\r\n\t *\r\n\t * @memberof NavigationAction\r\n\t */\r\n\tprivate validateUrlParameters(): void\r\n\t{\r\n\t\tif (this.allowedNavigationTypes.indexOf(this.navigationType) === -1)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'Unable to create a navigation type for the entered type. '\r\n\t\t\t\t\t+ 'The allowed entries are '\r\n\t\t\t\t\t+ `['${this.allowedNavigationTypes\r\n\t\t\t\t\t\t.join(this.arrayDisplayDelimiter)}'].`);\r\n\t\t}\r\n\r\n\t\tif (this.navigationType === AppConstants.viewTypes.direct)\r\n\t\t{\r\n\t\t\tif (AnyHelper.isNullOrEmpty(this.directComponent))\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Unable to create a direct component for the '\r\n\t\t\t\t\t\t+ 'navigation type of \\'direct\\'. '\r\n\t\t\t\t\t\t+ 'The direct component must be defined.');\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ((this.navigationType === AppConstants.viewTypes.view\r\n\t\t\t|| this.navigationType === AppConstants.viewTypes.edit))\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(this.entityType)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(this.identifier))\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Unable to create an identifier for the navigation type of '\r\n\t\t\t\t\t\t+ `'${this.navigationType}'. The identifier of the `\r\n\t\t\t\t\t\t+ `item to ${this.navigationType} must be defined.`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(this.displayComponent)\r\n\t\t\t&& !AnyHelper.isNullOrWhitespace(this.routeData))\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tJSON.parse(this.routeData);\r\n\t\t\t}\r\n\t\t\tcatch (exception)\r\n\t\t\t{\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Unable to create a display for the navigation type of '\r\n\t\t\t\t\t\t+ `'${this.navigationType}'. The route data sent `\r\n\t\t\t\t\t\t+ 'to this component requires valid JSON.');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityFormComponent\r\n} from '@entity/components/entity-form/entity-form.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tDocumentHelper\r\n} from '@shared/helpers/document.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\n\r\n/**\r\n * A class representing the action to save an entity instance from the page\r\n * context.\r\n *\r\n * @export\r\n * @class SaveEntityAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class SaveEntityAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a SaveEntityAction.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof SaveEntityAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tprotected activityService: ActivityService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SaveEntityAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'Save';\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof SaveEntityAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tif (!(this.pageContext.source instanceof EntityInstanceComponent))\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'This save entity source has not been implemented.');\r\n\t\t}\r\n\r\n\t\tconst entityFormComponent: EntityFormComponent =\r\n\t\t\tthis.pageContext.source.entityFormComponent;\r\n\r\n\t\tif (entityFormComponent.saving === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tentityFormComponent.saving = true;\r\n\r\n\t\tDocumentHelper.setElementDisplay(\r\n\t\t\t`${AppConstants.cssClasses.pinnedDrawerOverlay}`\r\n\t\t\t\t+ `${AppConstants.cssClasses.productSettingsOverlay}`,\r\n\t\t\ttrue);\r\n\r\n\t\tentityFormComponent.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tentityFormComponent.entityType.group;\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait entityFormComponent.entityInstanceApiService\r\n\t\t\t\t\t\t\t.update(\r\n\t\t\t\t\t\t\t\tentityFormComponent.entityInstance.id,\r\n\t\t\t\t\t\t\t\tentityFormComponent.entityInstance);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t`Saving ${entityFormComponent.entityType\r\n\t\t\t\t\t.displayName}`,\r\n\t\t\t\t`Saved ${entityFormComponent.entityType\r\n\t\t\t\t\t.displayName}`,\r\n\t\t\t\t`${entityFormComponent.entityIdentifier} was saved.`,\r\n\t\t\t\t`${entityFormComponent.entityIdentifier} was not saved.`));\r\n\r\n\t\tentityFormComponent.saving = false;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpEventType\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tOperationDefinitionApiService\r\n} from '@api/services/operations/operation-definition.api.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tBaseOperationAction\r\n} from '@operation/actions/base/base-operation-action';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tResponseType\r\n} from '@shared/constants/enums/response-type.enum';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n/**\r\n * A class representing the action to print a file with the sent\r\n * parameters.\r\n *\r\n * @export\r\n * @class PrintFileAction\r\n * @extends {BaseOperationAction}\r\n */\r\n@Injectable()\r\nexport class PrintFileAction\r\n\textends BaseOperationAction\r\n{\r\n\t/**\r\n\t * Creates an instance of a generate document action.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used for this action.\r\n\t * @param {sessionService} SessionService\r\n\t * The session service used for this action.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The activity service used for this action.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service that is used to reset cached associations on print.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service used for this action.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service used for this action.\r\n\t * @param {OperationDefinitionApiService} operationDefinitionApiService\r\n\t * The operation definition api service used for this action.\r\n\t * @param {AppCanDeactivateGuard} appCanDeactivateGuard\r\n\t * The app can deactivate guard.\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic cacheService: CacheService,\r\n\t\tprotected operationExecutionService: OperationExecutionService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected operationDefinitionApiService: OperationDefinitionApiService,\r\n\t\tprotected appCanDeactivateGuard: AppCanDeactivateGuard)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tactivityService,\r\n\t\t\toperationExecutionService,\r\n\t\t\toperationService,\r\n\t\t\toperationDefinitionApiService,\r\n\t\t\tappCanDeactivateGuard);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the operation name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic operationName: string =\r\n\t\t'PrintFile';\r\n\r\n\t/**\r\n\t * Gets or sets the action name.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic actionName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the body parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic bodyParameter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic id: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the query string.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic queryString: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic typeGroup: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the success message.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic successMessage: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the view result of this generate action.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic view: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the window for opening a print dialogue.\r\n\t *\r\n\t * @type {Window}\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic printWindow: Window;\r\n\r\n\t/**\r\n\t * Executes the defined action.\r\n\t *\r\n\t * @async\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic async execute(): Promise\r\n\t{\r\n\t\tawait this.setParameters();\r\n\r\n\t\tconst contextSource: EntityInstanceComponent =\r\n\t\t\tthis.pageContext.source as EntityInstanceComponent;\r\n\r\n\t\tconst promise: Promise =\r\n\t\t\tnew Promise(\r\n\t\t\t\t(resolve, reject) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t.executeActionAsObservable>(\r\n\t\t\t\t\t\t\tcontextSource.id,\r\n\t\t\t\t\t\t\tthis.actionName,\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\tthis.queryString,\r\n\t\t\t\t\t\t\tResponseType.Blob)\r\n\t\t\t\t\t\t.subscribe({\r\n\t\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t\t(event: any) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (event.type === HttpEventType.Response)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (!event.ok)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\treject();\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst body: any = event.body;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (body instanceof Blob)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.HandleBlobResponse(body);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror: (error: any) => reject(error),\r\n\t\t\t\t\t\t\tcomplete: async () =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif ((this.pageContext.source instanceof\r\n\t\t\t\t\t\t\t\t\tEntityInstanceComponent))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tawait this\r\n\t\t\t\t\t\t\t\t\t\t.clearCachedEntityRelationships(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pageContext.source);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tresolve();\r\n\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNull(this.printWindow))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.printWindow.print();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tpromise,\r\n\t\t\t\t'Printing File..',\r\n\t\t\t\t'Printed File..',\r\n\t\t\t\tthis.successMessage,\r\n\t\t\t\t'Error generating file.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Clears entity id based relationship caches to allow this updated\r\n\t * document to load in the initial query post generate.\r\n\t *\r\n\t * @async\r\n\t * @param {EntityInstanceComponent} entityInstanceComponent\r\n\t * The entity instance component that will have cleared relationships.\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tpublic async clearCachedEntityRelationships(\r\n\t\tentityInstanceComponent: EntityInstanceComponent): Promise\r\n\t{\r\n\t\tconst baseUrl: string\r\n\t\t\t= entityInstanceComponent\r\n\t\t\t\t.entityInstanceApiService\r\n\t\t\t\t.getBaseUrl();\r\n\r\n\t\tconst entityInstanceUrl: string\r\n\t\t\t= `${baseUrl}/${entityInstanceComponent.id}/children`;\r\n\r\n\t\tawait this.cacheService\r\n\t\t\t.clearExistingStartsWithResponses(entityInstanceUrl);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the paramters for the action.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tprivate async setParameters(): Promise\r\n\t{\r\n\t\tconst contextSource: EntityInstanceComponent =\r\n\t\t\tthis.pageContext.source as EntityInstanceComponent;\r\n\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = contextSource.entityTypeGroup;\r\n\r\n\t\tthis.typeGroup = !AnyHelper.isNullOrWhitespace(this.typeGroup)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.typeGroup,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.typeGroup;\r\n\r\n\t\tthis.id = !AnyHelper.isNullOrWhitespace(this.id)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.id,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.id;\r\n\r\n\t\tthis.bodyParameter = !AnyHelper.isNullOrWhitespace(this.bodyParameter)\r\n\t\t\t? StringHelper.interpolate(\r\n\t\t\t\tthis.bodyParameter,\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.bodyParameter;\r\n\r\n\t\tthis.queryString = !AnyHelper.isNullOrWhitespace(this.queryString)\r\n\t\t\t? await StringHelper.transformToDataPromise(\r\n\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\tthis.queryString,\r\n\t\t\t\t\tthis.pageContext),\r\n\t\t\t\tthis.pageContext)\r\n\t\t\t: this.queryString;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a blob response.\r\n\t *\r\n\t * @param {Blob} blob\r\n\t * The entity instance component that will have cleared relationships.\r\n\t * @memberof PrintFileAction\r\n\t */\r\n\tprivate HandleBlobResponse(blob: Blob): void\r\n\t{\r\n\t\tconst fileUrl = window.URL\r\n\t\t\t.createObjectURL(blob);\r\n\r\n\t\tswitch (this.view)\r\n\t\t{\r\n\t\t\tcase 'view':\r\n\r\n\t\t\t\twindow.open(\r\n\t\t\t\t\tfileUrl,\r\n\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t.windowTargets.blank);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'open':\r\n\t\t\t\tconst anchor = document\r\n\t\t\t\t\t.createElement('a');\r\n\r\n\t\t\t\tdocument\r\n\t\t\t\t\t.body\r\n\t\t\t\t\t.appendChild(anchor);\r\n\r\n\t\t\t\tanchor.href = fileUrl;\r\n\t\t\t\tanchor.target = AppConstants\r\n\t\t\t\t\t.windowTargets.blank;\r\n\r\n\t\t\t\tanchor.click();\r\n\r\n\t\t\t\tdocument\r\n\t\t\t\t\t.body\r\n\t\t\t\t\t.removeChild(anchor);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'print':\r\n\r\n\t\t\t\tthis.printWindow = window.open(\r\n\t\t\t\t\tfileUrl,\r\n\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t.windowTargets.blank);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tExecuteOperationPromiseAction\r\n} from '@operation//actions/execute-operation-promise-action';\r\nimport {\r\n\tAddDrawerAction\r\n} from '@operation/actions/add-drawer-action';\r\nimport {\r\n\tAddRelatedContextMenuAction\r\n} from '@operation/actions/add-related-context-menu-action';\r\nimport {\r\n\tChangeLayoutColorAction\r\n} from '@operation/actions/change-layout-color-action';\r\nimport {\r\n\tChangeThemeAction\r\n} from '@operation/actions/change-theme-action';\r\nimport {\r\n\tContextOperationAction\r\n} from '@operation/actions/context-operation-action';\r\nimport {\r\n\tDeleteEntityAction\r\n} from '@operation/actions/delete-entity-action';\r\nimport {\r\n\tEmitEventAction\r\n} from '@operation/actions/emit-event-action';\r\nimport {\r\n\tExecuteWorkflowAction\r\n} from '@operation/actions/execute-workflow-action';\r\nimport {\r\n\tGenerateDocumentAction\r\n} from '@operation/actions/generate-document-action';\r\nimport {\r\n\tGenerateFilesAction\r\n} from '@operation/actions/generate-files-action';\r\nimport {\r\n\tLogOutAction\r\n} from '@operation/actions/logout-action';\r\nimport {\r\n\tNavigationAction\r\n} from '@operation/actions/navigation-action';\r\nimport {\r\n\tSaveEntityAction\r\n} from '@operation/actions/save-entity-action';\r\nimport {\r\n\tOperationButtonBarComponent\r\n} from '@operation/components/operation-button-bar/operation-button-bar.component';\r\nimport {\r\n\tOperationButtonMenuComponent\r\n} from '@operation/components/operation-button-menu/operation-button-menu.component';\r\nimport {\r\n\tOperationMenuSubGroupComponent\r\n} from '@operation/components/operation-menu/operation-menu-subgroup/operation-menu-subgroup.component';\r\nimport {\r\n\tOperationMenuComponent\r\n} from '@operation/components/operation-menu/operation-menu.component';\r\nimport {\r\n\tOperationFactory\r\n} from '@operation/factories/operation-factory';\r\nimport {\r\n\tOperationTokenLookup\r\n} from '@operation/operation-token.lookup';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tClickOutsideDirective\r\n} from '@shared/directives/click-outside.directive';\r\nimport {\r\n\tButtonModule\r\n} from 'primeng/button';\r\nimport {\r\n\tPanelModule\r\n} from 'primeng/panel';\r\nimport {\r\n\tScrollPanelModule\r\n} from 'primeng/scrollpanel';\r\nimport {\r\n\tSplitButtonModule\r\n} from 'primeng/splitbutton';\r\nimport {\r\n\tTooltipModule\r\n} from 'primeng/tooltip';\r\nimport {\r\n\tPrintFileAction\r\n} from './actions/print-file-action';\r\nimport {\r\n\tOperationIconBarComponent\r\n} from './components/operation-icon-bar/operation-icon-bar.component';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tButtonModule,\r\n\t\tCommonModule,\r\n\t\tPanelModule,\r\n\t\tRouterModule,\r\n\t\tScrollPanelModule,\r\n\t\tTooltipModule,\r\n\t\tSplitButtonModule\r\n\t],\r\n\texports: [\r\n\t\tClickOutsideDirective,\r\n\t\tOperationButtonBarComponent,\r\n\t\tOperationButtonMenuComponent,\r\n\t\tOperationIconBarComponent,\r\n\t\tOperationMenuComponent,\r\n\t\tOperationMenuSubGroupComponent\r\n\t],\r\n\tdeclarations: [\r\n\t\tClickOutsideDirective,\r\n\t\tOperationButtonBarComponent,\r\n\t\tOperationButtonMenuComponent,\r\n\t\tOperationIconBarComponent,\r\n\t\tOperationMenuComponent,\r\n\t\tOperationMenuSubGroupComponent\r\n\t],\r\n\tproviders: [\r\n\t\tOperationService,\r\n\t\tOperationExecutionService,\r\n\t\tOperationFactory,\r\n\t\tAddDrawerAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.AddDrawer,\r\n\t\t\tuseClass: AddDrawerAction\r\n\t\t},\r\n\t\tAddRelatedContextMenuAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.AddRelatedContextMenu,\r\n\t\t\tuseClass: AddRelatedContextMenuAction\r\n\t\t},\r\n\t\tChangeLayoutColorAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.ChangeLayoutColor,\r\n\t\t\tuseClass: ChangeLayoutColorAction\r\n\t\t},\r\n\t\tChangeThemeAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.ChangeTheme,\r\n\t\t\tuseClass: ChangeThemeAction\r\n\t\t},\r\n\t\tContextOperationAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.ContextOperation,\r\n\t\t\tuseClass: ContextOperationAction\r\n\t\t},\r\n\t\tDeleteEntityAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.DeleteEntity,\r\n\t\t\tuseClass: DeleteEntityAction\r\n\t\t},\r\n\t\tEmitEventAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.EmitEvent,\r\n\t\t\tuseClass: EmitEventAction\r\n\t\t},\r\n\t\tExecuteOperationPromiseAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.ExecuteOperationPromise,\r\n\t\t\tuseClass: ExecuteOperationPromiseAction\r\n\t\t},\r\n\t\tExecuteWorkflowAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.ExecuteWorkflow,\r\n\t\t\tuseClass: ExecuteWorkflowAction\r\n\t\t},\r\n\t\tGenerateDocumentAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.GenerateDocument,\r\n\t\t\tuseClass: GenerateDocumentAction\r\n\t\t},\r\n\t\tGenerateFilesAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.GenerateFiles,\r\n\t\t\tuseClass: GenerateFilesAction\r\n\t\t},\r\n\t\tLogOutAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.LogOut,\r\n\t\t\tuseClass: LogOutAction\r\n\t\t},\r\n\t\tNavigationAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.Navigation,\r\n\t\t\tuseClass: NavigationAction\r\n\t\t},\r\n\t\tPrintFileAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.PrintFile,\r\n\t\t\tuseClass: PrintFileAction\r\n\t\t},\r\n\t\tSaveEntityAction,\r\n\t\t{\r\n\t\t\tprovide: OperationTokenLookup.tokens.SaveEntity,\r\n\t\t\tuseClass: SaveEntityAction\r\n\t\t}\r\n\t]\r\n})\r\n\r\n/**\r\n * A module to be shared accross the application used\r\n * for operation based logic and actions.\r\n *\r\n * @export\r\n * @class OperationModule\r\n */\r\nexport class OperationModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tScrollingModule\r\n} from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tScrollingModule\r\n\t],\r\n\texports: [\r\n\t\tScrollingModule\r\n\t],\r\n\tproviders: [],\r\n\tdeclarations: []\r\n})\r\n\r\n/**\r\n * A module to be shared accross the application used\r\n * to hold all angular cdk modules for import.\r\n *\r\n * @export\r\n * @class AngularCdkModule\r\n */\r\nexport class AngularCdkModule\r\n{\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    = 3 && (secondaryDisplayActive === true ? widget.secondaryTopAlign !== true : widget.topAlign !== true))\r\n\t\t\t\t\t}\">\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t= 6\"\r\n\t\t\t\t\t\t\t\t[useOverlay]=\"useOverlay\"\r\n\t\t\t\t\t\t\t\t[settingsActive]=\"settingsActive\"\r\n\t\t\t\t\t\t\t\t(appliedParameters)=\"applyParameters()\"\r\n\t\t\t\t\t\t\t\t(cancelClicked)=\"cancelClicked()\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t= 6\"\r\n\t\t\t\t\t\t\t\t\t\t[useOverlay]=\"useOverlay\"\r\n\t\t\t\t\t\t\t\t\t\t[settingsActive]=\"settingsActive\"\r\n\t\t\t\t\t\t\t\t\t\t(appliedParameters)=\"applyParameters()\"\r\n\t\t\t\t\t\t\t\t\t\t(cancelClicked)=\"cancelClicked()\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    = 3 && (secondaryDisplayActive === true ? widget.secondaryTopAlign !== true : widget.topAlign !== true))\r\n\t\t\t\t\t\t\t}\">\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t= 6\"\r\n\t\t\t\t\t\t\t\t\t\t[useOverlay]=\"useOverlay\"\r\n\t\t\t\t\t\t\t\t\t\t[settingsActive]=\"settingsActive\"\r\n\t\t\t\t\t\t\t\t\t\t(appliedParameters)=\"applyParameters()\"\r\n\t\t\t\t\t\t\t\t\t\t(cancelClicked)=\"cancelClicked()\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t= 6\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[useOverlay]=\"useOverlay\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[settingsActive]=\"settingsActive\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(appliedParameters)=\"applyParameters()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(cancelClicked)=\"cancelClicked()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tanimate,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\nimport {\r\n\tAfterViewChecked,\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tPermissionConstants\r\n} from '@shared/constants/permission.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tUser\r\n} from '@shared/implementations/users/user';\r\nimport {\r\n\tIDashboardWidget\r\n} from '@shared/interfaces/application-objects/dashboard-widget.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-dashboard-widget',\r\n\ttemplateUrl: './dashboard-widget.component.html',\r\n\tstyleUrls: [\r\n\t\t'./dashboard-widget.component.scss',\r\n\t\t'./dashboard-widget-sizes.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation,\r\n\t\ttrigger('cardFlip', [\r\n\t\t\tstate(\r\n\t\t\t\t'default',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\ttransform: 'none'\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\tstate(\r\n\t\t\t\t'flipped',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\ttransform: 'rotateY(180deg)'\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\tstate(\r\n\t\t\t\t'matched',\r\n\t\t\t\tstyle({\r\n\t\t\t\t\tvisibility: 'false',\r\n\t\t\t\t\ttransform: 'scale(0.05)',\r\n\t\t\t\t\topacity: 0\r\n\t\t\t\t})\r\n\t\t\t),\r\n\t\t\ttransition('default => flipped', [animate('400ms')]),\r\n\t\t\ttransition('flipped => default', [animate('400ms')]),\r\n\t\t\ttransition('* => matched', [animate('400ms')])\r\n\t\t])\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a dashboard widget.\r\n *\r\n * @export\r\n * @class DashboardWidgetComponent\r\n * @extends {DisplayComponentParameterDirective}\r\n * @implements {AfterViewInit}\r\n * @implements {AfterViewChecked}\r\n */\r\nexport class DashboardWidgetComponent\r\n\textends DisplayComponentParameterDirective\r\n\timplements AfterViewInit, AfterViewChecked\r\n{\r\n\t/**\r\n\t * Creates an instance of a dashboard widget component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation to linked pages.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used in this directive.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The service used to load and gather display component data.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The factory used to generate display component interfaces.\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tdisplayComponentService,\r\n\t\t\tdisplayComponentFactory);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the input value sent from the dashboard\r\n\t * that all sections and widgets have been displayed.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@Input() public parameterDisplayReady: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the configuration for this dashboard widget.\r\n\t *\r\n\t * @type {IDashboardWidget}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@Input() public widget: IDashboardWidget;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will bubble up to listening\r\n\t * components the changed widget value.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@Output() public widgetChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will bubble up to listening\r\n\t * components that this widget has been displayed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@Output() public widgetDisplayed: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter that will bubble up to listening\r\n\t * components of an applied changed parameter set.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@Output() public widgetParametersApplied: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the primary display element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@ViewChild('PrimaryDisplay')\r\n\tpublic primaryDisplayElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the secondary overlay element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@ViewChild('SecondaryOverlay')\r\n\tpublic secondaryOverlayElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the flag that will signify if an edit option\r\n\t * should be displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic displayEditOption: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the active secondary display value, used to define\r\n\t * if a dashboard widget item is currently displaying\r\n\t * a secondary view display component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic secondaryDisplayActive: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the flip state.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic flipState: string = 'default';\r\n\r\n\t/**\r\n\t * Gets the value defining if an overlay display is currently\r\n\t * active and visible.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic get displayingOverlay(): boolean\r\n\t{\r\n\t\treturn this.useOverlay === true &&\r\n\t\t\t(this.settingsActive === true\r\n\t\t\t\t|| this.secondaryDisplayActive === true);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value defining if a secondary overlay display is\r\n\t * currently active and visible.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic get displayingSecondaryOverlay(): boolean\r\n\t{\r\n\t\treturn this.secondaryDisplayActive === true\r\n\t\t\t&& this.useOverlay === true;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value defining if the overlay displays should be used\r\n\t * on a parameter settings or secondary component display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic get useOverlay(): boolean\r\n\t{\r\n\t\treturn (this.secondaryDisplayActive === true\r\n\t\t\t&& !AnyHelper.isNull(this.widget.secondaryHeight)\r\n\t\t\t&& (this.widget.height < this.widget.secondaryHeight\r\n\t\t\t\t|| this.widget.width < this.widget.secondaryWidth))\r\n\t\t\t|| (this.secondaryDisplayActive === true\r\n\t\t\t\t&& this.widget.forceSecondaryOverlay === true)\r\n\t\t\t|| (this.secondaryDisplayActive === false\r\n\t\t\t\t&& !AnyHelper.isNull(this.widget.height)\r\n\t\t\t\t&& (this.widget.height < this.minimumParameterDisplaySize\r\n\t\t\t\t\t|| this.widget.width < this.minimumParameterDisplaySize));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value defining if the icon set is floating or if it\r\n\t * displays in a top panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic get useFixedIcon(): boolean\r\n\t{\r\n\t\treturn this.widget.floatingIcon === false\r\n\t\t\t|| (this.secondaryDisplayActive === true\r\n\t\t\t\t&& this.useOverlay === false\r\n\t\t\t\t&& this.widget.secondaryFloatingIcon === false);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value that signifies by what amount the width should be\r\n\t * multiplied if the widget definition holds this value. This value\r\n\t * will only alter widths on tablet sizes or less and allows 3's that\r\n\t * become 6's for example to instead show as 12 to avoid whitespace.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic get responsiveWidthMultiplier(): number\r\n\t{\r\n\t\treturn this.siteLayoutService.displayTabletView === true\r\n\t\t\t? this.widget.responsiveWidthMultiplier\r\n\t\t\t: 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the debounce value used to ensure clicking on the\r\n\t * secondary icon when overlaid will close the secondary overlay.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tprivate readonly clickOutsideDebounce: number = 50;\r\n\r\n\t/**\r\n\t * Gets the minimum display height or width to enforce displaying\r\n\t * parameter sets in an overlay.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tprivate readonly minimumParameterDisplaySize: number = 6;\r\n\r\n\t/**\r\n\t * Gets the flip default state.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tprivate readonly flipDefaultState: string = 'default';\r\n\r\n\t/**\r\n\t * Gets the flip flipped state.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tprivate readonly flipFlippedtate: string = 'flipped';\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.secondaryDisplayActive === true\r\n\t\t\t&& this.useOverlay === true)\r\n\t\t{\r\n\t\t\tthis.secondaryDisplayActive = false;\r\n\t\t}\r\n\r\n\t\tthis.decorateWidgetActions();\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * On component after view initialization event.\r\n\t * This method is used to emit to listening components that\r\n\t * it is fully loaded and displayed.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.decorateWidgetActions();\r\n\t\t\t\tthis.widgetDisplayed.emit();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * On after view checked event.\r\n\t * In cases where outside parameter changes have been applied from the\r\n\t * section or the dashboard level, this will capture that change and redraw.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic ngAfterViewChecked(): void\r\n\t{\r\n\t\tif (this.widget.dataChanged !== true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.applyParameters();\r\n\t\tthis.widget.dataChanged = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a widget click event if a settings display is defined.\r\n\t * This will switch between the primary view and the settings display.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic settingsDisplayClicked(): void\r\n\t{\r\n\t\tif (this.widget.parameterLayoutSchema === null)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.settingsClicked();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a widget click event if a secondary display is defined.\r\n\t * This will switch between the primary view and the secondary display.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic clickOnDisplay()\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(this.widget.secondaryDynamicComponent)\r\n\t\t\t|| this.widget.useClickOnDisplay !== true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.secondaryDisplayClicked();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click for the expand and collapse action of\r\n\t * parameter components.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic secondaryDisplayClicked(\r\n\t\tclickOutsideEvent: boolean = false): void\r\n\t{\r\n\t\tif (clickOutsideEvent === true\r\n\t\t\t&& this.secondaryDisplayActive === true\r\n\t\t\t&& this.useOverlay === true)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.secondaryDisplayActive = false;\r\n\t\t\t\t\tthis.changeDetectorReference.detectChanges();\r\n\t\t\t\t},\r\n\t\t\t\tthis.clickOutsideDebounce);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.widget.flipCard === true)\r\n\t\t{\r\n\t\t\tthis.flipCard();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst primaryContainer: DOMRect =\r\n\t\t\t\tthis.primaryDisplayElement.nativeElement\r\n\t\t\t\t\t.getBoundingClientRect();\r\n\t\t\tconst sectionContainer: DOMRect =\r\n\t\t\t\tthis.primaryDisplayElement.nativeElement\r\n\t\t\t\t\t.parentElement.parentElement\r\n\t\t\t\t\t.parentElement.parentElement\r\n\t\t\t\t\t.getBoundingClientRect();\r\n\r\n\t\t\tconst topOffset: number =\r\n\t\t\t\tprimaryContainer.bottom\r\n\t\t\t\t\t+ AppConstants.staticLayoutSizes.standardPadding\r\n\t\t\t\t\t- sectionContainer.top;\r\n\r\n\t\t\tthis.secondaryOverlayElement.nativeElement\r\n\t\t\t\t.setAttribute(\r\n\t\t\t\t\t'style',\r\n\t\t\t\t\t`top: ${Math.round(topOffset)}px !important;`);\r\n\t\t}\r\n\r\n\t\tthis.secondaryDisplayActive = !this.secondaryDisplayActive;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click event from the display edit view action.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic editDisplayClicked(): void\r\n\t{\r\n\t\t// Add this dashboard url to the history to keep back\r\n\t\t// functionality.\r\n\t\thistory.pushState(\r\n\t\t\tnull,\r\n\t\t\tAppConstants.empty,\r\n\t\t\tthis.router.url\r\n\t\t);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\tAppConstants.moduleNames.bi,\r\n\t\t\t\tAppConstants.moduleNames.profile,\r\n\t\t\t\tAppConstants.route.display,\r\n\t\t\t\t`${AppConstants.displayComponentTypes.basePage}.`\r\n\t\t\t\t\t+ this.widget.widgetDisplayComponentInstance.name,\r\n\t\t\t\tAppConstants.viewTypes.edit\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\treplaceUrl: true\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an apply click from the widget parameter component.\r\n\t *\r\n\t * @override\r\n\t * @async\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic async applyParameters(): Promise\r\n\t{\r\n\t\tthis.widget =\r\n\t\t\tawait this.displayComponentFactory.dashboardWidget(\r\n\t\t\t\tthis.widget.displayComponentInstance,\r\n\t\t\t\t>\r\n\t\t\t\t{\r\n\t\t\t\t\tsource: this.pageContext.source,\r\n\t\t\t\t\tdata: this.widget.parameterLayoutData.data\r\n\t\t\t\t});\r\n\r\n\t\tthis.widgetChange.emit(this.widget);\r\n\t\tthis.widgetParametersApplied.emit();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.settingsActive = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles logic that will decorate additional actions in the widget\r\n\t * header based on business rules.\r\n\t * Rules:\r\n\t * PowerBI Reports will have an edit action for Support and Admin users\r\n\t * if they are not in the standard workspace.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic decorateWidgetActions(): void\r\n\t{\r\n\t\tconst jsonDisplayComponentDefinition: any =\r\n\t\t\tthis.widget.widgetDisplayComponentInstance\r\n\t\t\t\t.displayComponentDefinition\r\n\t\t\t\t.jsonDefinition;\r\n\t\tconst reportType: string =\r\n\t\t\tjsonDisplayComponentDefinition.externalReportType;\r\n\r\n\t\tif (!AnyHelper.isNull(reportType))\r\n\t\t{\r\n\t\t\tswitch (reportType)\r\n\t\t\t{\r\n\t\t\t\tcase ReportConstants.externalReportTypes.powerBi:\r\n\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.displayEditOption =\r\n\t\t\t\t\t\t\tjsonDisplayComponentDefinition.workspaceType !==\r\n\t\t\t\t\t\t\tReportConstants.powerBiWorkspaceTypes.standard\r\n\t\t\t\t\t\t\t&& new User((\r\n\t\t\t\t\t\t\t\tthis.pageContext.source)\r\n\t\t\t\t\t\t\t\t.sessionService.user)\r\n\t\t\t\t\t\t\t\t.hasMembership(\r\n\t\t\t\t\t\t\t\t\tPermissionConstants\r\n\t\t\t\t\t\t\t\t\t\t.editPowerBiReportRoles);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles flip state changes of a card.\r\n\t *\r\n\t * @memberof DashboardWidgetComponent\r\n\t */\r\n\tpublic flipCard(): void\r\n\t{\r\n\t\tthis.flipState =\r\n\t\t\tthis.flipState === this.flipDefaultState\r\n\t\t\t\t? this.flipFlippedtate\r\n\t\t\t\t: this.flipDefaultState;\r\n\t}\r\n}","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, signal, computed, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils, UniqueComponentId } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { SearchIcon } from 'primeng/icons/search';\nimport { CheckIcon } from 'primeng/icons/check';\nimport * as i4 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\n\nconst LISTBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Listbox),\n multi: true\n};\n/**\n * ListBox is used to select one or more values from a list of items.\n * @group Components\n */\nclass Listbox {\n el;\n cd;\n filterService;\n config;\n renderer;\n /**\n * Unique identifier of the component.\n * @group Props\n */\n id;\n /**\n * Text to display when the search is active. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue '{0} results are available'\n */\n searchMessage;\n /**\n * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue 'No selected item'\n */\n emptySelectionMessage;\n /**\n * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue '{0} items selected'\n */\n selectionMessage;\n /**\n * Whether to focus on the first visible or selected element when the overlay panel is shown.\n * @group Props\n */\n autoOptionFocus = true;\n /**\n * When enabled, the focused option is selected.\n * @group Props\n */\n selectOnFocus;\n /**\n * Locale to use in searching. The default locale is the host environment's current locale.\n * @group Props\n */\n searchLocale;\n /**\n * When enabled, the hovered option will be focused.\n * @group Props\n */\n focusOnHover;\n /**\n * Text to display when filtering.\n * @group Props\n */\n filterMessage;\n /**\n * Fields used when filtering the options, defaults to optionLabel.\n * @group Props\n */\n filterFields;\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = false;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll;\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions;\n /**\n * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n * @group Props\n */\n scrollHeight = '200px';\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n /**\n * When specified, allows selecting multiple values.\n * @group Props\n */\n multiple;\n /**\n * Inline style of the container.\n * @group Props\n */\n style;\n /**\n * Style class of the container.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the list element.\n * @group Props\n */\n listStyle;\n /**\n * Style class of the list element.\n * @group Props\n */\n listStyleClass;\n /**\n * When present, it specifies that the element value cannot be changed.\n * @group Props\n */\n readonly;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * When specified, allows selecting items with checkboxes.\n * @group Props\n */\n checkbox = false;\n /**\n * When specified, displays a filter input at header.\n * @group Props\n */\n filter = false;\n /**\n * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n * @group Props\n */\n filterBy;\n /**\n * Defines how the items are filtered.\n * @group Props\n */\n filterMatchMode = 'contains';\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = true;\n /**\n * A property to uniquely identify a value in options.\n * @group Props\n */\n dataKey;\n /**\n * Whether header checkbox is shown in multiple mode.\n * @group Props\n */\n showToggleAll = true;\n /**\n * Name of the label field of an option.\n * @group Props\n */\n optionLabel;\n /**\n * Name of the value field of an option.\n * @group Props\n */\n optionValue;\n /**\n * Name of the options field of an option group.\n * @group Props\n */\n optionGroupChildren = 'items';\n /**\n * Name of the label field of an option group.\n * @group Props\n */\n optionGroupLabel = 'label';\n /**\n * Name of the disabled field of an option.\n * @group Props\n */\n optionDisabled;\n /**\n * Defines a string that labels the filter input.\n * @group Props\n */\n ariaFilterLabel;\n /**\n * Defines placeholder of the filter input.\n * @group Props\n */\n filterPlaceHolder;\n /**\n * Text to display when filtering does not return any results.\n * @group Props\n */\n emptyFilterMessage;\n /**\n * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n * @group Props\n */\n emptyMessage;\n /**\n * Whether to display options as grouped when nested options are provided.\n * @group Props\n */\n group;\n /**\n * An array of selectitems to display as the available options.\n * @group Props\n */\n get options() {\n return this._options();\n }\n set options(val) {\n this._options.set(val);\n }\n /**\n * When specified, filter displays with this value.\n * @group Props\n */\n get filterValue() {\n return this._filterValue();\n }\n set filterValue(val) {\n this._filterValue.set(val);\n }\n /**\n * Whether all data is selected.\n * @group Props\n */\n get selectAll() {\n return this._selectAll;\n }\n set selectAll(value) {\n this._selectAll = value;\n }\n /**\n * Callback to invoke on value change.\n * @param {ListboxChangeEvent} event - Custom change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n /**\n * Callback to invoke when option is clicked.\n * @param {ListboxClickEvent} event - Custom click event.\n * @group Emits\n */\n onClick = new EventEmitter();\n /**\n * Callback to invoke when option is double clicked.\n * @param {ListboxDoubleClickEvent} event - Custom double click event.\n * @group Emits\n */\n onDblClick = new EventEmitter();\n /**\n * Callback to invoke when data is filtered.\n * @param {ListboxFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = new EventEmitter();\n /**\n * Callback to invoke when component receives focus.\n * @param {FocusEvent} event - Focus event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when component loses focus.\n * @param {FocusEvent} event - Blur event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n /**\n * Callback to invoke when all data is selected.\n * @param {ListboxSelectAllChangeEvent} event - Custom select event.\n * @group Emits\n */\n onSelectAllChange = new EventEmitter();\n headerCheckboxViewChild;\n filterViewChild;\n lastHiddenFocusableElement;\n firstHiddenFocusableElement;\n scroller;\n listViewChild;\n headerFacet;\n footerFacet;\n templates;\n itemTemplate;\n groupTemplate;\n headerTemplate;\n filterTemplate;\n footerTemplate;\n emptyFilterTemplate;\n emptyTemplate;\n filterIconTemplate;\n checkIconTemplate;\n _filterValue = signal(null);\n _filteredOptions;\n filterOptions;\n filtered;\n value;\n onModelChange = () => { };\n onModelTouched = () => { };\n optionTouched;\n focus;\n headerCheckboxFocus;\n translationSubscription;\n focused;\n get containerClass() {\n return {\n 'p-listbox p-component': true,\n 'p-focus': this.focused,\n 'p-disabled': this.disabled\n };\n }\n get focusedOptionId() {\n return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;\n }\n get filterResultMessageText() {\n return ObjectUtils.isNotEmpty(this.visibleOptions()) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptyFilterMessageText;\n }\n get filterMessageText() {\n return this.filterMessage || this.config.translation.searchMessage || '';\n }\n get searchMessageText() {\n return this.searchMessage || this.config.translation.searchMessage || '';\n }\n get emptyFilterMessageText() {\n return this.emptyFilterMessage || this.config.translation.emptySearchMessage || this.config.translation.emptyFilterMessage || '';\n }\n get selectionMessageText() {\n return this.selectionMessage || this.config.translation.selectionMessage || '';\n }\n get emptySelectionMessageText() {\n return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';\n }\n get selectedMessageText() {\n return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;\n }\n get ariaSetSize() {\n return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;\n }\n get virtualScrollerDisabled() {\n return !this.virtualScroll;\n }\n get searchFields() {\n return this.filterFields || [this.optionLabel];\n }\n get toggleAllAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;\n }\n searchValue;\n searchTimeout;\n _selectAll = null;\n _options = signal(null);\n startRangeIndex = signal(-1);\n focusedOptionIndex = signal(-1);\n modelValue = signal(null);\n visibleOptions = computed(() => {\n const options = this.group ? this.flatOptions(this._options()) : this._options() || [];\n return this._filterValue() ? this.filterService.filter(options, this.searchFields, this._filterValue(), this.filterMatchMode, this.filterLocale) : options;\n });\n constructor(el, cd, filterService, config, renderer) {\n this.el = el;\n this.cd = cd;\n this.filterService = filterService;\n this.config = config;\n this.renderer = renderer;\n }\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n this.autoUpdateModel();\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilterChange(value),\n reset: () => this.resetFilter()\n };\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n case 'checkicon':\n this.checkIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n writeValue(value) {\n this.value = value;\n this.modelValue.set(this.value);\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n flatOptions(options) {\n return (options || []).reduce((result, option, index) => {\n result.push({ optionGroup: option, group: true, index });\n const optionGroupChildren = this.getOptionGroupChildren(option);\n optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n return result;\n }, []);\n }\n autoUpdateModel() {\n if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption() && !this.multiple) {\n const focusedOptionIndex = this.findFirstFocusedOptionIndex();\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n }\n /**\n * Updates the model value.\n * @group Method\n */\n updateModel(value, event) {\n this.value = value;\n this.modelValue.set(value);\n this.onModelChange(value);\n this.onChange.emit({ originalEvent: event, value: this.value });\n }\n removeOption(option) {\n return this.modelValue().filter((val) => !ObjectUtils.equals(val, this.getOptionValue(option), this.equalityKey()));\n }\n onOptionSelect(event, option, index = -1) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n event && this.onClick.emit({ originalEvent: event, option, value: this.value });\n this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);\n this.optionTouched = false;\n index !== -1 && this.focusedOptionIndex.set(index);\n }\n onOptionSelectMultiple(event, option) {\n let selected = this.isSelected(option);\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected) {\n value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];\n }\n else {\n value = metaKey ? this.modelValue() || [] : [];\n value = [...value, this.getOptionValue(option)];\n }\n }\n else {\n value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];\n }\n this.updateModel(value, event);\n }\n onOptionSelectSingle(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n }\n else {\n value = this.getOptionValue(option);\n valueChanged = true;\n }\n }\n else {\n value = selected ? null : this.getOptionValue(option);\n valueChanged = true;\n }\n if (valueChanged) {\n this.updateModel(value, event);\n }\n }\n onOptionSelectRange(event, start = -1, end = -1) {\n start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = this.visibleOptions()\n .slice(rangeStart, rangeEnd + 1)\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n }\n }\n onToggleAll(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n DomHandler.focus(this.headerCheckboxViewChild.nativeElement);\n if (this.selectAll !== null) {\n this.onSelectAllChange.emit({\n originalEvent: event,\n checked: !this.allSelected()\n });\n }\n else {\n const value = this.allSelected()\n ? []\n : this.visibleOptions()\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n this.onChange.emit({ originalEvent: event, value: this.value });\n }\n event.preventDefault();\n // event.stopPropagation();\n }\n allSelected() {\n return this.selectAll !== null ? this.selectAll : ObjectUtils.isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n }\n onOptionTouchEnd() {\n if (this.disabled) {\n return;\n }\n this.optionTouched = true;\n }\n onOptionMouseDown(event, index) {\n this.changeFocusedOptionIndex(event, index);\n }\n onOptionMouseEnter(event, index) {\n if (this.focusOnHover) {\n this.changeFocusedOptionIndex(event, index);\n }\n }\n onOptionDoubleClick(event, option) {\n if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n return;\n }\n this.onDblClick.emit({\n originalEvent: event,\n option: option,\n value: this.value\n });\n }\n onFirstHiddenFocus(event) {\n DomHandler.focus(this.listViewChild.nativeElement);\n const firstFocusableEl = DomHandler.getFirstFocusableElement(this.el.nativeElement, ':not([data-p-hidden-focusable=\"true\"])');\n this.lastHiddenFocusableElement.nativeElement.tabIndex = ObjectUtils.isEmpty(firstFocusableEl) ? '-1' : undefined;\n this.firstHiddenFocusableElement.nativeElement.tabIndex = -1;\n }\n onLastHiddenFocus(event) {\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === this.listViewChild.nativeElement) {\n const firstFocusableEl = DomHandler.getFirstFocusableElement(this.el.nativeElement, ':not(.p-hidden-focusable)');\n DomHandler.focus(firstFocusableEl);\n this.firstHiddenFocusableElement.nativeElement.tabIndex = undefined;\n }\n else {\n DomHandler.focus(this.firstHiddenFocusableElement.nativeElement);\n }\n this.lastHiddenFocusableElement.nativeElement.tabIndex = -1;\n }\n onFocusout(event) {\n if (!this.el.nativeElement.contains(event.relatedTarget) && this.lastHiddenFocusableElement && this.firstHiddenFocusableElement) {\n this.firstHiddenFocusableElement.nativeElement.tabIndex = this.lastHiddenFocusableElement.nativeElement.tabIndex = undefined;\n }\n }\n onListFocus(event) {\n this.focused = true;\n const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.onFocus.emit(event);\n }\n onListBlur(event) {\n this.focused = false;\n this.focusedOptionIndex.set(-1);\n this.startRangeIndex.set(-1);\n this.searchValue = '';\n }\n onHeaderCheckboxFocus(event) {\n this.headerCheckboxFocus = true;\n }\n onHeaderCheckboxBlur() {\n this.headerCheckboxFocus = false;\n }\n onHeaderCheckboxKeyDown(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n switch (event.code) {\n case 'Space':\n this.onToggleAll(event);\n break;\n case 'Enter':\n this.onToggleAll(event);\n break;\n case 'Tab':\n this.onHeaderCheckboxTabKeyDown(event);\n break;\n default:\n break;\n }\n }\n onHeaderCheckboxTabKeyDown(event) {\n DomHandler.focus(this.listViewChild.nativeElement);\n event.preventDefault();\n }\n onFilterChange(event) {\n let value = event.target.value?.trim();\n this._filterValue.set(value);\n this.focusedOptionIndex.set(-1);\n this.startRangeIndex.set(-1);\n this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });\n !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);\n }\n onFilterBlur(event) {\n this.focusedOptionIndex.set(-1);\n this.startRangeIndex.set(-1);\n }\n onListKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n case 'Enter':\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Tab':\n //NOOP\n break;\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey();\n break;\n default:\n if (this.multiple && event.code === 'KeyA' && metaKey) {\n const value = this.visibleOptions()\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n this.updateModel(value, event);\n event.preventDefault();\n break;\n }\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchOptions(event, event.key);\n event.preventDefault();\n }\n break;\n }\n }\n onFilterKeyDown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n this.onArrowLeftKey(event, true);\n break;\n case 'Home':\n this.onHomeKey(event, true);\n break;\n case 'End':\n this.onEndKey(event, true);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey();\n break;\n default:\n break;\n }\n }\n onArrowDownKey(event) {\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n }\n onArrowUpKey(event) {\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n }\n onArrowLeftKey(event, pressedInInputText = false) {\n pressedInInputText && this.focusedOptionIndex.set(-1);\n }\n onHomeKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n event.currentTarget.setSelectionRange(0, 0);\n this.focusedOptionIndex.set(-1);\n }\n else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findFirstOptionIndex();\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n event.preventDefault();\n }\n onEndKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n const target = event.currentTarget;\n const len = target.value.length;\n target.setSelectionRange(len, len);\n this.focusedOptionIndex.set(-1);\n }\n else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findLastOptionIndex();\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n }\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n event.preventDefault();\n }\n onPageDownKey(event) {\n this.scrollInView(0);\n event.preventDefault();\n }\n onPageUpKey(event) {\n this.scrollInView(this.visibleOptions().length - 1);\n event.preventDefault();\n }\n onEnterKey(event) {\n if (this.focusedOptionIndex() !== -1) {\n if (this.multiple && event.shiftKey)\n this.onOptionSelectRange(event, this.focusedOptionIndex());\n else\n this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n onShiftKey() {\n const focusedOptionIndex = this.focusedOptionIndex();\n this.startRangeIndex.set(focusedOptionIndex);\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n getOptionIndex(index, scrollerOptions) {\n return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;\n }\n getAriaPosInset(index) {\n return ((this.optionGroupLabel\n ? index -\n this.visibleOptions()\n .slice(0, index)\n .filter((option) => this.isOptionGroup(option)).length\n : index) + 1);\n }\n hasSelectedOption() {\n return ObjectUtils.isNotEmpty(this.modelValue());\n }\n isOptionGroup(option) {\n return this.optionGroupLabel && option.optionGroup && option.group;\n }\n changeFocusedOptionIndex(event, index) {\n if (this.focusedOptionIndex() !== index) {\n this.focusedOptionIndex.set(index);\n this.scrollInView();\n if (this.selectOnFocus && !this.multiple) {\n this.onOptionSelect(event, this.visibleOptions()[index]);\n }\n }\n }\n searchOptions(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let optionIndex = -1;\n let matched = false;\n if (this.focusedOptionIndex() !== -1) {\n optionIndex = this.visibleOptions()\n .slice(this.focusedOptionIndex())\n .findIndex((option) => this.isOptionMatched(option));\n optionIndex =\n optionIndex === -1\n ? this.visibleOptions()\n .slice(0, this.focusedOptionIndex())\n .findIndex((option) => this.isOptionMatched(option))\n : optionIndex + this.focusedOptionIndex();\n }\n else {\n optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));\n }\n if (optionIndex !== -1) {\n matched = true;\n }\n if (optionIndex === -1 && this.focusedOptionIndex() === -1) {\n optionIndex = this.findFirstFocusedOptionIndex();\n }\n if (optionIndex !== -1) {\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n isOptionMatched(option) {\n return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n const element = DomHandler.findSingle(this.listViewChild.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n else if (!this.virtualScrollerDisabled) {\n this.virtualScroll && this.scroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n }\n }\n findFirstOptionIndex() {\n return this.visibleOptions().findIndex((option) => this.isValidOption(option));\n }\n findLastOptionIndex() {\n return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));\n }\n findFirstFocusedOptionIndex() {\n const selectedIndex = this.findFirstSelectedOptionIndex();\n return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n }\n findLastFocusedOptionIndex() {\n const selectedIndex = this.findLastSelectedOptionIndex();\n return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n }\n findLastSelectedOptionIndex() {\n return this.hasSelectedOption() ? ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;\n }\n findNextOptionIndex(index) {\n const matchedOptionIndex = index < this.visibleOptions().length - 1\n ? this.visibleOptions()\n .slice(index + 1)\n .findIndex((option) => this.isValidOption(option))\n : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n }\n findNextSelectedOptionIndex(index) {\n const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1\n ? this.visibleOptions()\n .slice(index + 1)\n .findIndex((option) => this.isValidSelectedOption(option))\n : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n }\n findPrevSelectedOptionIndex(index) {\n const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n }\n findFirstSelectedOptionIndex() {\n return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n }\n findPrevOptionIndex(index) {\n const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n }\n findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n let matchedOptionIndex = -1;\n if (this.hasSelectedOption()) {\n if (firstCheckUp) {\n matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n }\n else {\n matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n }\n equalityKey() {\n return this.optionValue ? null : this.dataKey;\n }\n isValidSelectedOption(option) {\n return this.isValidOption(option) && this.isSelected(option);\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : false;\n }\n isSelected(option) {\n const optionValue = this.getOptionValue(option);\n if (this.multiple)\n return (this.modelValue() || []).some((value) => ObjectUtils.equals(value, optionValue, this.equalityKey()));\n else\n return ObjectUtils.equals(this.modelValue(), optionValue, this.equalityKey());\n }\n isValidOption(option) {\n return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n }\n isEmpty() {\n return !this._options() || (this._options() && this._options().length === 0);\n }\n hasFilter() {\n return this._filterValue() && this._filterValue().trim().length > 0;\n }\n resetFilter() {\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n this._filterValue.set(null);\n }\n ngOnDestroy() {\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Listbox, selector: \"p-listbox\", inputs: { id: \"id\", searchMessage: \"searchMessage\", emptySelectionMessage: \"emptySelectionMessage\", selectionMessage: \"selectionMessage\", autoOptionFocus: \"autoOptionFocus\", selectOnFocus: \"selectOnFocus\", searchLocale: \"searchLocale\", focusOnHover: \"focusOnHover\", filterMessage: \"filterMessage\", filterFields: \"filterFields\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", scrollHeight: \"scrollHeight\", tabindex: \"tabindex\", multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", listStyle: \"listStyle\", listStyleClass: \"listStyleClass\", readonly: \"readonly\", disabled: \"disabled\", checkbox: \"checkbox\", filter: \"filter\", filterBy: \"filterBy\", filterMatchMode: \"filterMatchMode\", filterLocale: \"filterLocale\", metaKeySelection: \"metaKeySelection\", dataKey: \"dataKey\", showToggleAll: \"showToggleAll\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionGroupChildren: \"optionGroupChildren\", optionGroupLabel: \"optionGroupLabel\", optionDisabled: \"optionDisabled\", ariaFilterLabel: \"ariaFilterLabel\", filterPlaceHolder: \"filterPlaceHolder\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", group: \"group\", options: \"options\", filterValue: \"filterValue\", selectAll: \"selectAll\" }, outputs: { onChange: \"onChange\", onClick: \"onClick\", onDblClick: \"onDblClick\", onFilter: \"onFilter\", onFocus: \"onFocus\", onBlur: \"onBlur\", onSelectAllChange: \"onSelectAllChange\" }, host: { classAttribute: \"p-element\" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"headerCheckboxViewChild\", first: true, predicate: [\"headerchkbox\"], descendants: true }, { propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }, { propertyName: \"lastHiddenFocusableElement\", first: true, predicate: [\"lastHiddenFocusableElement\"], descendants: true }, { propertyName: \"firstHiddenFocusableElement\", first: true, predicate: [\"firstHiddenFocusableElement\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }, { propertyName: \"listViewChild\", first: true, predicate: [\"list\"], descendants: true }], ngImport: i0, template: `\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 {{ filterResultMessageText }}\n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n
  • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
  • \n
    \n \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n {{ getOptionLabel(option) }}\n \n \n
    \n
    \n
  • \n \n {{ emptyFilterMessageText }}\n \n \n
  • \n
  • \n \n {{ emptyMessage }}\n \n \n
  • \n \n
    \n
    \n
    \n \n \n
    \n \n {{ emptyMessage }}\n \n \n {{ selectedMessageText }}\n \n \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.PrimeTemplate), selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => i4.Scroller), selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"component\", type: i0.forwardRef(() => SearchIcon), selector: \"SearchIcon\" }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Listbox, decorators: [{\n type: Component,\n args: [{ selector: 'p-listbox', template: `\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 {{ filterResultMessageText }}\n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n
  • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
  • \n
    \n \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n {{ getOptionLabel(option) }}\n \n \n
    \n
    \n
  • \n \n {{ emptyFilterMessageText }}\n \n \n
  • \n
  • \n \n {{ emptyMessage }}\n \n \n
  • \n \n
    \n
    \n
    \n \n \n
    \n \n {{ emptyMessage }}\n \n \n {{ selectedMessageText }}\n \n \n \n
    \n `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }, { type: i0.Renderer2 }], propDecorators: { id: [{\n type: Input\n }], searchMessage: [{\n type: Input\n }], emptySelectionMessage: [{\n type: Input\n }], selectionMessage: [{\n type: Input\n }], autoOptionFocus: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], searchLocale: [{\n type: Input\n }], focusOnHover: [{\n type: Input\n }], filterMessage: [{\n type: Input\n }], filterFields: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], multiple: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], listStyle: [{\n type: Input\n }], listStyleClass: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], checkbox: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], showToggleAll: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], filterPlaceHolder: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], group: [{\n type: Input\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], selectAll: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onDblClick: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onSelectAllChange: [{\n type: Output\n }], headerCheckboxViewChild: [{\n type: ViewChild,\n args: ['headerchkbox']\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], lastHiddenFocusableElement: [{\n type: ViewChild,\n args: ['lastHiddenFocusableElement']\n }], firstHiddenFocusableElement: [{\n type: ViewChild,\n args: ['firstHiddenFocusableElement']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], listViewChild: [{\n type: ViewChild,\n args: ['list']\n }], headerFacet: [{\n type: ContentChild,\n args: [Header]\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass ListboxModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon], exports: [Listbox, SharedModule, ScrollerModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ListboxModule, imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon, SharedModule, ScrollerModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ListboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon],\n exports: [Listbox, SharedModule, ScrollerModule],\n declarations: [Listbox]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LISTBOX_VALUE_ACCESSOR, Listbox, ListboxModule };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tDisplayAnimation,\r\n\tEaseAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tSelectItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'app-quick-filters',\r\n\ttemplateUrl: './quick-filters.component.html',\r\n\tstyleUrls: ['./quick-filters.component.scss'],\r\n\tanimations: [\r\n\t\tDisplayAnimation,\r\n\t\tEaseAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the quick filters component.\r\n *\r\n * @export\r\n * @class QuickFiltersComponent\r\n */\r\nexport class QuickFiltersComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the set of available quick filters for this object\r\n\t * list display.\r\n\t *\r\n\t * @type {SelectItem[]}\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@Input() public filters: SelectItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected quick filter value for this object list.\r\n\t *\r\n\t * @type {string | number | boolean}\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@Input() public selectedFilterValue: string | number | boolean = null;\r\n\r\n\t/**\r\n\t * Gets or sets the event to emit to listening components signifying\r\n\t * that a filter display has altered. This will send the value of the\r\n\t * displayed or hidden filter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@Output() public quickFilterDisplayedEvent:\r\n\t\tEventEmitter = new EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event to emit to listening components signifying\r\n\t * that a filter value was selected. This will send the value of the\r\n\t * selected filter.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@Output() public quickFilterSelectedEvent:\r\n\t\tEventEmitter = new EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the display value of the quick filter list.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\tpublic filterListActive: boolean = false;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables\r\n\t * or loading has completed.\r\n\t *\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.closeList();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this list when an associated menu is\r\n\t * opened.\r\n\t *\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\t_controlIdentifer: string): void\r\n\t{\r\n\t\tif (this.filterListActive === true)\r\n\t\t{\r\n\t\t\tthis.closeList();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter item selected event. This will call the event\r\n\t * emitter and output the selected filter value.\r\n\t *\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\tpublic quickFilterSelected(): void\r\n\t{\r\n\t\tthis.quickFilterSelectedEvent.emit(\r\n\t\t\tthis.selectedFilterValue);\r\n\t\tthis.filterListActive = false;\r\n\t\tthis.quickFilterDisplayedEvent.emit(this.filterListActive);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter list icon click, this will open or close the\r\n\t * filter list display and unselect any current selection to allow\r\n\t * the next selection event to propogate.\r\n\t *\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\tpublic toggleFilterListDisplay(): void\r\n\t{\r\n\t\tthis.filterListActive = !this.filterListActive;\r\n\t\tthis.quickFilterDisplayedEvent.emit(this.filterListActive);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click outside event. This is used to close this filter\r\n\t * list when clicking elsewhere on the page similar to an overlay.\r\n\t *\r\n\t * @memberof QuickFiltersComponent\r\n\t */\r\n\tpublic closeList(): void\r\n\t{\r\n\t\tthis.selectedFilterValue = null;\r\n\t\tthis.filterListActive = false;\r\n\t\tthis.quickFilterDisplayedEvent.emit(false);\r\n\t}\r\n}","
    \r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","import * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, signal, computed, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i7 from 'primeng/autofocus';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport * as i4 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler } from 'primeng/dom';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i3 from 'primeng/overlay';\nimport { OverlayModule } from 'primeng/overlay';\nimport * as i5 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i6 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport { ObjectUtils, UniqueComponentId } from 'primeng/utils';\nimport { TimesCircleIcon } from 'primeng/icons/timescircle';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\n\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoComplete),\n multi: true\n};\n/**\n * AutoComplete is an input component that provides real-time suggestions when being typed.\n * @group Components\n */\nclass AutoComplete {\n document;\n el;\n renderer;\n cd;\n config;\n overlayService;\n zone;\n /**\n * Minimum number of characters to initiate a search.\n * @group Props\n */\n minLength = 1;\n /**\n * Delay between keystrokes to wait before sending a query.\n * @group Props\n */\n delay = 300;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Inline style of the overlay panel element.\n * @group Props\n */\n panelStyle;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Style class of the overlay panel element.\n * @group Props\n */\n panelStyleClass;\n /**\n * Inline style of the input field.\n * @group Props\n */\n inputStyle;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n inputId;\n /**\n * Inline style of the input field.\n * @group Props\n */\n inputStyleClass;\n /**\n * Hint text for the input field.\n * @group Props\n */\n placeholder;\n /**\n * When present, it specifies that the input cannot be typed.\n * @group Props\n */\n readonly;\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n disabled;\n /**\n * Maximum height of the suggestions panel.\n * @group Props\n */\n scrollHeight = '200px';\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = false;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll;\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions;\n /**\n * Maximum number of character allows in the input field.\n * @group Props\n */\n maxlength;\n /**\n * Name of the input element.\n * @group Props\n */\n name;\n /**\n * When present, it specifies that an input field must be filled out before submitting the form.\n * @group Props\n */\n required;\n /**\n * Size of the input field.\n * @group Props\n */\n size;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * When enabled, highlights the first item in the list by default.\n * @group Props\n */\n autoHighlight;\n /**\n * When present, autocomplete clears the manual input if it does not match of the suggestions to force only accepting values from the suggestions.\n * @group Props\n */\n forceSelection;\n /**\n * Type of the input, defaults to \"text\".\n * @group Props\n */\n type = 'text';\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Defines a string that labels the dropdown button for accessibility.\n * @group Props\n */\n dropdownAriaLabel;\n /**\n * Specifies one or more IDs in the DOM that labels the input field.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Icon class of the dropdown icon.\n * @group Props\n */\n dropdownIcon;\n /**\n * Ensures uniqueness of selected items on multiple mode.\n * @group Props\n */\n unique = true;\n /**\n * Whether to display options as grouped when nested options are provided.\n * @group Props\n */\n group;\n /**\n * Whether to run a query when input receives focus.\n * @group Props\n */\n completeOnFocus = false;\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n showClear = false;\n /**\n * Field of a suggested object to resolve and display.\n * @group Props\n * @deprecated use optionLabel property instead\n */\n field;\n /**\n * Displays a button next to the input field when enabled.\n * @group Props\n */\n dropdown;\n /**\n * Whether to show the empty message or not.\n * @group Props\n */\n showEmptyMessage;\n /**\n * Specifies the behavior dropdown button. Default \"blank\" mode sends an empty string and \"current\" mode sends the input value.\n * @group Props\n */\n dropdownMode = 'blank';\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n multiple;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * A property to uniquely identify a value in options.\n * @group Props\n */\n dataKey;\n /**\n * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n * @group Props\n */\n emptyMessage;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '.1s linear';\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n autofocus;\n /**\n * Used to define a string that autocomplete attribute the current element.\n * @group Props\n */\n autocomplete = 'off';\n /**\n * Name of the options field of an option group.\n * @group Props\n */\n optionGroupChildren = 'items';\n /**\n * Name of the label field of an option group.\n * @group Props\n */\n optionGroupLabel = 'label';\n /**\n * Options for the overlay element.\n * @group Props\n */\n overlayOptions;\n /**\n * An array of suggestions to display.\n * @group Props\n */\n get suggestions() {\n return this._suggestions();\n }\n set suggestions(value) {\n this._suggestions.set(value);\n this.handleSuggestionsChange();\n }\n /**\n * Element dimensions of option for virtual scrolling.\n * @group Props\n * @deprecated use virtualScrollItemSize property instead.\n */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(val) {\n this._itemSize = val;\n console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n }\n /**\n * Property name or getter function to use as the label of an option.\n * @group Props\n */\n optionLabel;\n /**\n * Unique identifier of the component.\n * @group Props\n */\n id;\n /**\n * Text to display when the search is active. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue '{0} results are available'\n */\n searchMessage;\n /**\n * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue 'No selected item'\n */\n emptySelectionMessage;\n /**\n * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.\n * @group Props\n * @defaultValue '{0} items selected'\n */\n selectionMessage;\n /**\n * Whether to focus on the first visible or selected element when the overlay panel is shown.\n * @group Props\n */\n autoOptionFocus = true;\n /**\n * When enabled, the focused option is selected.\n * @group Props\n */\n selectOnFocus;\n /**\n * Locale to use in searching. The default locale is the host environment's current locale.\n * @group Props\n */\n searchLocale;\n /**\n * Property name or getter function to use as the disabled flag of an option, defaults to false when not defined.\n * @group Props\n */\n optionDisabled;\n /**\n * When enabled, the hovered option will be focused.\n * @group Props\n */\n focusOnHover;\n /**\n * Callback to invoke to search for suggestions.\n * @param {AutoCompleteCompleteEvent} event - Custom complete event.\n * @group Emits\n */\n completeMethod = new EventEmitter();\n /**\n * Callback to invoke when a suggestion is selected.\n * @param {AutoCompleteSelectEvent} event - custom select event.\n * @group Emits\n */\n onSelect = new EventEmitter();\n /**\n * Callback to invoke when a selected value is removed.\n * @param {AutoCompleteUnselectEvent} event - custom unselect event.\n * @group Emits\n */\n onUnselect = new EventEmitter();\n /**\n * Callback to invoke when the component receives focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when the component loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n /**\n * Callback to invoke to when dropdown button is clicked.\n * @param {AutoCompleteDropdownClickEvent} event - custom dropdown click event.\n * @group Emits\n */\n onDropdownClick = new EventEmitter();\n /**\n * Callback to invoke when clear button is clicked.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onClear = new EventEmitter();\n /**\n * Callback to invoke on input key up.\n * @param {KeyboardEvent} event - Keyboard event.\n * @group Emits\n */\n onKeyUp = new EventEmitter();\n /**\n * Callback to invoke on overlay is shown.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke on overlay is hidden.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onHide = new EventEmitter();\n /**\n * Callback to invoke on lazy load data.\n * @param {AutoCompleteLazyLoadEvent} event - Lazy load event.\n * @group Emits\n */\n onLazyLoad = new EventEmitter();\n containerEL;\n inputEL;\n multiInputEl;\n multiContainerEL;\n dropdownButton;\n itemsViewChild;\n scroller;\n overlayViewChild;\n templates;\n _itemSize;\n itemsWrapper;\n itemTemplate;\n emptyTemplate;\n headerTemplate;\n footerTemplate;\n selectedItemTemplate;\n groupTemplate;\n loaderTemplate;\n removeIconTemplate;\n loadingIconTemplate;\n clearIconTemplate;\n dropdownIconTemplate;\n value;\n _suggestions = signal(null);\n onModelChange = () => { };\n onModelTouched = () => { };\n timeout;\n overlayVisible;\n suggestionsUpdated;\n highlightOption;\n highlightOptionChanged;\n focused = false;\n _filled;\n get filled() {\n return this._filled;\n }\n set filled(value) {\n this._filled = value;\n }\n loading;\n scrollHandler;\n listId;\n searchTimeout;\n dirty = false;\n modelValue = signal(null);\n focusedMultipleOptionIndex = signal(-1);\n focusedOptionIndex = signal(-1);\n visibleOptions = computed(() => {\n return this.group ? this.flatOptions(this._suggestions()) : this._suggestions() || [];\n });\n inputValue = computed(() => {\n const modelValue = this.modelValue();\n if (modelValue) {\n if (typeof modelValue === 'object') {\n const label = this.getOptionLabel(modelValue);\n return label != null ? label : modelValue;\n }\n else {\n return modelValue;\n }\n }\n else {\n return '';\n }\n });\n get focusedMultipleOptionId() {\n return this.focusedMultipleOptionIndex() !== -1 ? `${this.id}_multiple_option_${this.focusedMultipleOptionIndex()}` : null;\n }\n get focusedOptionId() {\n return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;\n }\n get containerClass() {\n return {\n 'p-autocomplete p-component p-inputwrapper': true,\n 'p-disabled': this.disabled,\n 'p-focus': this.focused,\n 'p-autocomplete-dd': this.dropdown,\n 'p-autocomplete-multiple': this.multiple,\n 'p-inputwrapper-focus': this.focused,\n 'p-overlay-open': this.overlayVisible\n };\n }\n get multiContainerClass() {\n return 'p-autocomplete-multiple-container p-component p-inputtext';\n }\n get panelClass() {\n return {\n 'p-autocomplete-panel p-component': true,\n 'p-input-filled': this.config.inputStyle === 'filled',\n 'p-ripple-disabled': this.config.ripple === false\n };\n }\n get inputClass() {\n return {\n 'p-autocomplete-input p-inputtext p-component': !this.multiple,\n 'p-autocomplete-dd-input': this.dropdown\n };\n }\n get searchResultMessageText() {\n return ObjectUtils.isNotEmpty(this.visibleOptions()) && this.overlayVisible ? this.searchMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptySearchMessageText;\n }\n get searchMessageText() {\n return this.searchMessage || this.config.translation.searchMessage || '';\n }\n get emptySearchMessageText() {\n return this.emptyMessage || this.config.translation.emptySearchMessage || '';\n }\n get selectionMessageText() {\n return this.selectionMessage || this.config.translation.selectionMessage || '';\n }\n get emptySelectionMessageText() {\n return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';\n }\n get selectedMessageText() {\n return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;\n }\n get ariaSetSize() {\n return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;\n }\n get virtualScrollerDisabled() {\n return !this.virtualScroll;\n }\n constructor(document, el, renderer, cd, config, overlayService, zone) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.overlayService = overlayService;\n this.zone = zone;\n effect(() => {\n this.filled = ObjectUtils.isNotEmpty(this.modelValue());\n });\n }\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n this.cd.detectChanges();\n }\n ngAfterViewChecked() {\n //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n if (this.suggestionsUpdated && this.overlayViewChild) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.overlayViewChild) {\n this.overlayViewChild.alignOverlay();\n }\n }, 1);\n this.suggestionsUpdated = false;\n });\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n case 'removetokenicon':\n this.removeIconTemplate = item.template;\n break;\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n case 'clearicon':\n this.clearIconTemplate = item.template;\n break;\n case 'dropdownicon':\n this.dropdownIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n handleSuggestionsChange() {\n if (this.loading) {\n this._suggestions() ? this.show() : !!this.emptyTemplate ? this.show() : this.hide();\n const focusedOptionIndex = this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.suggestionsUpdated = true;\n this.loading = false;\n this.cd.markForCheck();\n }\n }\n flatOptions(options) {\n return (options || []).reduce((result, option, index) => {\n result.push({ optionGroup: option, group: true, index });\n const optionGroupChildren = this.getOptionGroupChildren(option);\n optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n return result;\n }, []);\n }\n isOptionGroup(option) {\n return this.optionGroupLabel && option.optionGroup && option.group;\n }\n findFirstOptionIndex() {\n return this.visibleOptions().findIndex((option) => this.isValidOption(option));\n }\n findLastOptionIndex() {\n return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));\n }\n findFirstFocusedOptionIndex() {\n const selectedIndex = this.findSelectedOptionIndex();\n return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n }\n findLastFocusedOptionIndex() {\n const selectedIndex = this.findSelectedOptionIndex();\n return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n }\n findSelectedOptionIndex() {\n return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n }\n findNextOptionIndex(index) {\n const matchedOptionIndex = index < this.visibleOptions().length - 1\n ? this.visibleOptions()\n .slice(index + 1)\n .findIndex((option) => this.isValidOption(option))\n : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n }\n findPrevOptionIndex(index) {\n const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n }\n isValidSelectedOption(option) {\n return this.isValidOption(option) && this.isSelected(option);\n }\n isValidOption(option) {\n return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : false;\n }\n isSelected(option) {\n return ObjectUtils.equals(this.modelValue(), this.getOptionValue(option), this.equalityKey());\n }\n isOptionMatched(option, value) {\n return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);\n }\n isInputClicked(event) {\n if (this.multiple)\n return event.target === this.multiContainerEL.nativeElement || this.multiContainerEL.nativeElement.contains(event.target);\n else\n return event.target === this.inputEL.nativeElement;\n }\n isDropdownClicked(event) {\n return this.dropdownButton?.nativeElement ? event.target === this.dropdownButton.nativeElement || this.dropdownButton.nativeElement.contains(event.target) : false;\n }\n equalityKey() {\n return this.dataKey; // TODO: The 'optionValue' properties can be added.\n }\n onContainerClick(event) {\n if (this.disabled || this.loading || this.isInputClicked(event) || this.isDropdownClicked(event)) {\n return;\n }\n if (!this.overlayViewChild || !this.overlayViewChild.overlayViewChild?.nativeElement.contains(event.target)) {\n DomHandler.focus(this.inputEL.nativeElement);\n }\n }\n handleDropdownClick(event) {\n let query = undefined;\n if (this.overlayVisible) {\n this.hide(true);\n }\n else {\n DomHandler.focus(this.inputEL.nativeElement);\n query = this.inputEL.nativeElement.value;\n if (this.dropdownMode === 'blank')\n this.search(event, '', 'dropdown');\n else if (this.dropdownMode === 'current')\n this.search(event, query, 'dropdown');\n }\n this.onDropdownClick.emit({ originalEvent: event, query });\n }\n onInput(event) {\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n let query = event.target.value;\n if (!this.multiple) {\n this.updateModel(query);\n }\n if (query.length === 0 && !this.multiple) {\n this.onClear.emit();\n setTimeout(() => {\n this.hide();\n }, this.delay / 2);\n }\n else {\n if (query.length >= this.minLength) {\n this.focusedOptionIndex.set(-1);\n this.searchTimeout = setTimeout(() => {\n this.search(event, query, 'input');\n }, this.delay);\n }\n else {\n this.hide();\n }\n }\n }\n onInputChange(event) {\n if (this.forceSelection) {\n let valid = false;\n if (this.visibleOptions()) {\n const matchedValue = this.visibleOptions().find((option) => this.isOptionMatched(option, this.inputEL.nativeElement.value || ''));\n if (matchedValue !== undefined) {\n valid = true;\n !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);\n }\n }\n if (!valid) {\n this.inputEL.nativeElement.value = '';\n !this.multiple && this.updateModel(null);\n }\n }\n }\n onInputFocus(event) {\n if (this.disabled) {\n // For ScreenReaders\n return;\n }\n if (!this.dirty && this.completeOnFocus) {\n this.search(event, event.target.value, 'focus');\n }\n this.dirty = true;\n this.focused = true;\n const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.overlayVisible && this.scrollInView(this.focusedOptionIndex());\n this.onFocus.emit(event);\n }\n onMultipleContainerFocus(event) {\n if (this.disabled) {\n // For ScreenReaders\n return;\n }\n this.focused = true;\n }\n onMultipleContainerBlur(event) {\n this.focusedMultipleOptionIndex.set(-1);\n this.focused = false;\n }\n onMultipleContainerKeyDown(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n switch (event.code) {\n case 'ArrowLeft':\n this.onArrowLeftKeyOnMultiple(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKeyOnMultiple(event);\n break;\n case 'Backspace':\n this.onBackspaceKeyOnMultiple(event);\n break;\n default:\n break;\n }\n }\n onInputBlur(event) {\n this.dirty = false;\n this.focused = false;\n this.focusedOptionIndex.set(-1);\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n onInputPaste(event) {\n this.onKeyDown(event);\n }\n onInputKeyUp(event) {\n this.onKeyUp.emit(event);\n }\n onKeyDown(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n case 'Enter':\n case 'NumpadEnter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'Backspace':\n this.onBackspaceKey(event);\n break;\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n break;\n }\n }\n onArrowDownKey(event) {\n if (!this.overlayVisible) {\n return;\n }\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n onArrowUpKey(event) {\n if (!this.overlayVisible) {\n return;\n }\n if (event.altKey) {\n if (this.focusedOptionIndex() !== -1) {\n this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n this.overlayVisible && this.hide();\n event.preventDefault();\n }\n else {\n const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n onArrowLeftKey(event) {\n const target = event.currentTarget;\n this.focusedOptionIndex.set(-1);\n if (this.multiple) {\n if (ObjectUtils.isEmpty(target.value) && this.hasSelectedOption()) {\n DomHandler.focus(this.multiContainerEL.nativeElement);\n this.focusedMultipleOptionIndex.set(this.modelValue().length);\n }\n else {\n event.stopPropagation(); // To prevent onArrowLeftKeyOnMultiple method\n }\n }\n }\n onArrowRightKey(event) {\n this.focusedOptionIndex.set(-1);\n this.multiple && event.stopPropagation(); // To prevent onArrowRightKeyOnMultiple method\n }\n onHomeKey(event) {\n const { currentTarget } = event;\n const len = currentTarget.value.length;\n currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);\n this.focusedOptionIndex.set(-1);\n event.preventDefault();\n }\n onEndKey(event) {\n const { currentTarget } = event;\n const len = currentTarget.value.length;\n currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);\n this.focusedOptionIndex.set(-1);\n event.preventDefault();\n }\n onPageDownKey(event) {\n this.scrollInView(this.visibleOptions().length - 1);\n event.preventDefault();\n }\n onPageUpKey(event) {\n this.scrollInView(0);\n event.preventDefault();\n }\n onEnterKey(event) {\n if (!this.overlayVisible) {\n this.onArrowDownKey(event);\n }\n else {\n if (this.focusedOptionIndex() !== -1) {\n this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n this.hide();\n }\n event.preventDefault();\n }\n onEscapeKey(event) {\n this.overlayVisible && this.hide(true);\n event.preventDefault();\n }\n onTabKey(event) {\n if (this.focusedOptionIndex() !== -1) {\n this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n }\n this.overlayVisible && this.hide();\n }\n onBackspaceKey(event) {\n if (this.multiple) {\n if (ObjectUtils.isNotEmpty(this.modelValue()) && !this.inputEL.nativeElement.value) {\n const removedValue = this.modelValue()[this.modelValue().length - 1];\n const newValue = this.modelValue().slice(0, -1);\n this.updateModel(newValue);\n this.onUnselect.emit({ originalEvent: event, value: removedValue });\n }\n event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method\n }\n }\n onArrowLeftKeyOnMultiple(event) {\n const optionIndex = this.focusedMultipleOptionIndex() < 1 ? 0 : this.focusedMultipleOptionIndex() - 1;\n this.focusedMultipleOptionIndex.set(optionIndex);\n }\n onArrowRightKeyOnMultiple(event) {\n let optionIndex = this.focusedMultipleOptionIndex();\n optionIndex++;\n this.focusedMultipleOptionIndex.set(optionIndex);\n if (optionIndex > this.modelValue().length - 1) {\n this.focusedMultipleOptionIndex.set(-1);\n DomHandler.focus(this.inputEL.nativeElement);\n }\n }\n onBackspaceKeyOnMultiple(event) {\n if (this.focusedMultipleOptionIndex() !== -1) {\n this.removeOption(event, this.focusedMultipleOptionIndex());\n }\n }\n onOptionSelect(event, option, isHide = true) {\n const value = this.getOptionValue(option);\n if (this.multiple) {\n this.inputEL.nativeElement.value = '';\n if (!this.isSelected(option)) {\n this.updateModel([...(this.modelValue() || []), value]);\n }\n }\n else {\n this.updateModel(value);\n }\n this.onSelect.emit({ originalEvent: event, value: option });\n isHide && this.hide(true);\n }\n onOptionMouseEnter(event, index) {\n if (this.focusOnHover) {\n this.changeFocusedOptionIndex(event, index);\n }\n }\n search(event, query, source) {\n //allow empty string but not undefined or null\n if (query === undefined || query === null) {\n return;\n }\n //do not search blank values on input change\n if (source === 'input' && query.trim().length === 0) {\n return;\n }\n this.loading = true;\n this.completeMethod.emit({ originalEvent: event, query });\n }\n removeOption(event, index) {\n event.stopPropagation();\n const removedOption = this.modelValue()[index];\n const value = this.modelValue()\n .filter((_, i) => i !== index)\n .map((option) => this.getOptionValue(option));\n this.updateModel(value);\n this.onUnselect.emit({ originalEvent: event, value: removedOption });\n DomHandler.focus(this.inputEL.nativeElement);\n }\n updateModel(value) {\n this.value = value;\n this.modelValue.set(value);\n this.onModelChange(value);\n this.updateInputValue();\n this.cd.markForCheck();\n }\n updateInputValue() {\n if (this.inputEL && this.inputEL.nativeElement) {\n if (!this.multiple) {\n this.inputEL.nativeElement.value = this.inputValue();\n }\n else {\n this.inputEL.nativeElement.value = '';\n }\n }\n }\n autoUpdateModel() {\n if ((this.selectOnFocus || this.autoHighlight) && this.autoOptionFocus && !this.hasSelectedOption()) {\n const focusedOptionIndex = this.findFirstFocusedOptionIndex();\n this.focusedOptionIndex.set(focusedOptionIndex);\n this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()], false);\n }\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n if (this.itemsViewChild && this.itemsViewChild.nativeElement) {\n const element = DomHandler.findSingle(this.itemsViewChild.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n else if (!this.virtualScrollerDisabled) {\n setTimeout(() => {\n this.virtualScroll && this.scroller?.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n }, 0);\n }\n }\n }\n changeFocusedOptionIndex(event, index) {\n if (this.focusedOptionIndex() !== index) {\n this.focusedOptionIndex.set(index);\n this.scrollInView();\n if (this.selectOnFocus || this.autoHighlight) {\n this.onOptionSelect(event, this.visibleOptions()[index], false);\n }\n }\n }\n show(isFocus = false) {\n this.dirty = true;\n this.overlayVisible = true;\n const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n this.focusedOptionIndex.set(focusedOptionIndex);\n isFocus && DomHandler.focus(this.inputEL.nativeElement);\n if (isFocus) {\n DomHandler.focus(this.inputEL.nativeElement);\n }\n this.onShow.emit();\n this.cd.markForCheck();\n }\n hide(isFocus = false) {\n const _hide = () => {\n this.dirty = isFocus;\n this.overlayVisible = false;\n this.focusedOptionIndex.set(-1);\n isFocus && DomHandler.focus(this.inputEL.nativeElement);\n this.onHide.emit();\n this.cd.markForCheck();\n };\n setTimeout(() => {\n _hide();\n }, 0); // For ScreenReaders\n }\n clear() {\n this.updateModel(null);\n this.inputEL.nativeElement.value = '';\n this.onClear.emit();\n }\n writeValue(value) {\n this.value = value;\n this.modelValue.set(value);\n this.updateInputValue();\n this.cd.markForCheck();\n }\n hasSelectedOption() {\n return ObjectUtils.isNotEmpty(this.modelValue());\n }\n getAriaPosInset(index) {\n return ((this.optionGroupLabel\n ? index -\n this.visibleOptions()\n .slice(0, index)\n .filter((option) => this.isOptionGroup(option)).length\n : index) + 1);\n }\n getOptionLabel(option) {\n return this.field || this.optionLabel ? ObjectUtils.resolveFieldData(option, this.field || this.optionLabel) : option && option.label != undefined ? option.label : option;\n }\n getOptionValue(option) {\n return option; // TODO: The 'optionValue' properties can be added.\n }\n getOptionIndex(index, scrollerOptions) {\n return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label != undefined ? optionGroup.label : optionGroup;\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onOverlayAnimationStart(event) {\n if (event.toState === 'visible') {\n this.itemsWrapper = DomHandler.findSingle(this.overlayViewChild.overlayViewChild?.nativeElement, this.virtualScroll ? '.p-scroller' : '.p-autocomplete-panel');\n if (this.virtualScroll) {\n this.scroller?.setContentEl(this.itemsViewChild?.nativeElement);\n this.scroller.viewInit();\n }\n if (this.visibleOptions() && this.visibleOptions().length) {\n if (this.virtualScroll) {\n const selectedIndex = this.modelValue() ? this.focusedOptionIndex() : -1;\n if (selectedIndex !== -1) {\n this.scroller?.scrollToIndex(selectedIndex);\n }\n }\n else {\n let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-autocomplete-item.p-highlight');\n if (selectedListItem) {\n selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n }\n }\n }\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoComplete, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: AutoComplete, selector: \"p-autoComplete\", inputs: { minLength: \"minLength\", delay: \"delay\", style: \"style\", panelStyle: \"panelStyle\", styleClass: \"styleClass\", panelStyleClass: \"panelStyleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", readonly: \"readonly\", disabled: \"disabled\", scrollHeight: \"scrollHeight\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", maxlength: \"maxlength\", name: \"name\", required: \"required\", size: \"size\", appendTo: \"appendTo\", autoHighlight: \"autoHighlight\", forceSelection: \"forceSelection\", type: \"type\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", ariaLabel: \"ariaLabel\", dropdownAriaLabel: \"dropdownAriaLabel\", ariaLabelledBy: \"ariaLabelledBy\", dropdownIcon: \"dropdownIcon\", unique: \"unique\", group: \"group\", completeOnFocus: \"completeOnFocus\", showClear: \"showClear\", field: \"field\", dropdown: \"dropdown\", showEmptyMessage: \"showEmptyMessage\", dropdownMode: \"dropdownMode\", multiple: \"multiple\", tabindex: \"tabindex\", dataKey: \"dataKey\", emptyMessage: \"emptyMessage\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", autofocus: \"autofocus\", autocomplete: \"autocomplete\", optionGroupChildren: \"optionGroupChildren\", optionGroupLabel: \"optionGroupLabel\", overlayOptions: \"overlayOptions\", suggestions: \"suggestions\", itemSize: \"itemSize\", optionLabel: \"optionLabel\", id: \"id\", searchMessage: \"searchMessage\", emptySelectionMessage: \"emptySelectionMessage\", selectionMessage: \"selectionMessage\", autoOptionFocus: \"autoOptionFocus\", selectOnFocus: \"selectOnFocus\", searchLocale: \"searchLocale\", optionDisabled: \"optionDisabled\", focusOnHover: \"focusOnHover\" }, outputs: { completeMethod: \"completeMethod\", onSelect: \"onSelect\", onUnselect: \"onUnselect\", onFocus: \"onFocus\", onBlur: \"onBlur\", onDropdownClick: \"onDropdownClick\", onClear: \"onClear\", onKeyUp: \"onKeyUp\", onShow: \"onShow\", onHide: \"onHide\", onLazyLoad: \"onLazyLoad\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"((focused && !disabled) || autofocus) || overlayVisible\", \"class.p-autocomplete-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerEL\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputEL\", first: true, predicate: [\"focusInput\"], descendants: true }, { propertyName: \"multiInputEl\", first: true, predicate: [\"multiIn\"], descendants: true }, { propertyName: \"multiContainerEL\", first: true, predicate: [\"multiContainer\"], descendants: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"ddBtn\"], descendants: true }, { propertyName: \"itemsViewChild\", first: true, predicate: [\"items\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }, { propertyName: \"overlayViewChild\", first: true, predicate: [\"overlay\"], descendants: true }], ngImport: i0, template: `\n
    \n \n \n \n \n \n \n \n\n \n \n \n {{ getOptionLabel(option) }}\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\n \n
      \n \n \n
    • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
    • \n
      \n \n \n {{ getOptionLabel(option) }}\n \n \n \n
      \n
    • \n \n {{ searchResultMessageText }}\n \n \n
    • \n
    \n \n \n {{ selectedMessageText }}\n \n
    \n
    \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete-panel{overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{width:-moz-fit-content;width:fit-content;cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{display:flex;cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => i3.Overlay), selector: \"p-overlay\", inputs: [\"visible\", \"mode\", \"style\", \"styleClass\", \"contentStyle\", \"contentStyleClass\", \"target\", \"appendTo\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"listener\", \"responsive\", \"options\"], outputs: [\"visibleChange\", \"onBeforeShow\", \"onShow\", \"onBeforeHide\", \"onHide\", \"onAnimationStart\", \"onAnimationDone\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.PrimeTemplate), selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.ButtonDirective), selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { kind: \"directive\", type: i0.forwardRef(() => i5.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => i6.Scroller), selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"directive\", type: i0.forwardRef(() => i7.AutoFocus), selector: \"[pAutoFocus]\", inputs: [\"autofocus\"] }, { kind: \"component\", type: i0.forwardRef(() => TimesCircleIcon), selector: \"TimesCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SpinnerIcon), selector: \"SpinnerIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoComplete, decorators: [{\n type: Component,\n args: [{ selector: 'p-autoComplete', template: `\n
    \n \n \n \n \n \n \n \n\n \n \n \n {{ getOptionLabel(option) }}\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\n \n
      \n \n \n
    • \n {{ getOptionGroupLabel(option.optionGroup) }}\n \n
    • \n
      \n \n \n {{ getOptionLabel(option) }}\n \n \n \n
      \n
    • \n \n {{ searchResultMessageText }}\n \n \n
    • \n
    \n \n \n {{ selectedMessageText }}\n \n
    \n
    \n \n
    \n `, host: {\n class: 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': '((focused && !disabled) || autofocus) || overlayVisible',\n '[class.p-autocomplete-clearable]': 'showClear && !disabled'\n }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\"@layer primeng{.p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete-panel{overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{width:-moz-fit-content;width:fit-content;cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{display:flex;cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }, { type: i0.NgZone }], propDecorators: { minLength: [{\n type: Input\n }], delay: [{\n type: Input\n }], style: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], size: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoHighlight: [{\n type: Input\n }], forceSelection: [{\n type: Input\n }], type: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], dropdownAriaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], unique: [{\n type: Input\n }], group: [{\n type: Input\n }], completeOnFocus: [{\n type: Input\n }], showClear: [{\n type: Input\n }], field: [{\n type: Input\n }], dropdown: [{\n type: Input\n }], showEmptyMessage: [{\n type: Input\n }], dropdownMode: [{\n type: Input\n }], multiple: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], autofocus: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], overlayOptions: [{\n type: Input\n }], suggestions: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], id: [{\n type: Input\n }], searchMessage: [{\n type: Input\n }], emptySelectionMessage: [{\n type: Input\n }], selectionMessage: [{\n type: Input\n }], autoOptionFocus: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], searchLocale: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], focusOnHover: [{\n type: Input\n }], completeMethod: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onUnselect: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onDropdownClick: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onKeyUp: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], containerEL: [{\n type: ViewChild,\n args: ['container']\n }], inputEL: [{\n type: ViewChild,\n args: ['focusInput']\n }], multiInputEl: [{\n type: ViewChild,\n args: ['multiIn']\n }], multiContainerEL: [{\n type: ViewChild,\n args: ['multiContainer']\n }], dropdownButton: [{\n type: ViewChild,\n args: ['ddBtn']\n }], itemsViewChild: [{\n type: ViewChild,\n args: ['items']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], overlayViewChild: [{\n type: ViewChild,\n args: ['overlay']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass AutoCompleteModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon], exports: [AutoComplete, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoCompleteModule, imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule, TimesCircleIcon, SpinnerIcon, TimesIcon, ChevronDownIcon],\n exports: [AutoComplete, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule],\n declarations: [AutoComplete]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };\n","import * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, Inject, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';\nimport { SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * Badge Directive is directive usage of badge component.\n * @group Components\n */\nclass BadgeDirective {\n document;\n el;\n renderer;\n /**\n * Icon position of the component.\n * @group Props\n */\n iconPos = 'left';\n /**\n * When specified, disables the component.\n * @group Props\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(val) {\n this._disabled = val;\n }\n /**\n * Size of the badge, valid options are \"large\" and \"xlarge\".\n * @group Props\n */\n get size() {\n return this._size;\n }\n set size(val) {\n this._size = val;\n if (this.initialized) {\n this.setSizeClasses();\n }\n }\n /**\n * Value to display inside the badge.\n * @group Props\n */\n get value() {\n return this._value;\n }\n set value(val) {\n if (val !== this._value) {\n this._value = val;\n if (this.initialized) {\n let badge = document.getElementById(this.id);\n if (this._value) {\n if (DomHandler.hasClass(badge, 'p-badge-dot'))\n DomHandler.removeClass(badge, 'p-badge-dot');\n if (String(this._value).length === 1) {\n DomHandler.addClass(badge, 'p-badge-no-gutter');\n }\n else {\n DomHandler.removeClass(badge, 'p-badge-no-gutter');\n }\n }\n else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {\n DomHandler.addClass(badge, 'p-badge-dot');\n }\n badge.innerHTML = '';\n this.renderer.appendChild(badge, document.createTextNode(this._value));\n }\n }\n }\n /**\n * Severity type of the badge.\n * @group Props\n */\n severity;\n _value;\n initialized = false;\n id;\n _disabled = false;\n _size;\n constructor(document, el, renderer) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n this.id = UniqueComponentId() + '_badge';\n let el = this.el.nativeElement.nodeName.indexOf('-') != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;\n if (this._disabled) {\n return null;\n }\n let badge = this.document.createElement('span');\n badge.id = this.id;\n badge.className = 'p-badge p-component';\n if (this.severity) {\n DomHandler.addClass(badge, 'p-badge-' + this.severity);\n }\n this.setSizeClasses(badge);\n if (this.value != null) {\n this.renderer.appendChild(badge, this.document.createTextNode(this.value));\n if (String(this.value).length === 1) {\n DomHandler.addClass(badge, 'p-badge-no-gutter');\n }\n }\n else {\n DomHandler.addClass(badge, 'p-badge-dot');\n }\n DomHandler.addClass(el, 'p-overlay-badge');\n this.renderer.appendChild(el, badge);\n this.initialized = true;\n }\n setSizeClasses(element) {\n const badge = element ?? this.document.getElementById(this.id);\n if (!badge) {\n return;\n }\n if (this._size) {\n if (this._size === 'large') {\n DomHandler.addClass(badge, 'p-badge-lg');\n DomHandler.removeClass(badge, 'p-badge-xl');\n }\n if (this._size === 'xlarge') {\n DomHandler.addClass(badge, 'p-badge-xl');\n DomHandler.removeClass(badge, 'p-badge-lg');\n }\n }\n else {\n DomHandler.removeClass(badge, 'p-badge-lg');\n DomHandler.removeClass(badge, 'p-badge-xl');\n }\n }\n ngOnDestroy() {\n this.initialized = false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: BadgeDirective, selector: \"[pBadge]\", inputs: { iconPos: \"iconPos\", disabled: [\"badgeDisabled\", \"disabled\"], size: \"size\", value: \"value\", severity: \"severity\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[pBadge]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { iconPos: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: ['badgeDisabled']\n }], size: [{\n type: Input\n }], value: [{\n type: Input\n }], severity: [{\n type: Input\n }] } });\n/**\n * Badge is a small status indicator for another element.\n * @group Components\n */\nclass Badge {\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Size of the badge, valid options are \"large\" and \"xlarge\".\n * @group Props\n */\n size;\n /**\n * Severity type of the badge.\n * @group Props\n */\n severity;\n /**\n * Value to display inside the badge.\n * @group Props\n */\n value;\n /**\n * When specified, disables the component.\n * @group Props\n */\n badgeDisabled = false;\n containerClass() {\n return {\n 'p-badge p-component': true,\n 'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,\n 'p-badge-lg': this.size === 'large',\n 'p-badge-xl': this.size === 'xlarge',\n 'p-badge-info': this.severity === 'info',\n 'p-badge-success': this.severity === 'success',\n 'p-badge-warning': this.severity === 'warning',\n 'p-badge-danger': this.severity === 'danger'\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Badge, selector: \"p-badge\", inputs: { styleClass: \"styleClass\", style: \"style\", size: \"size\", severity: \"severity\", value: \"value\", badgeDisabled: \"badgeDisabled\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: ` {{ value }} `, isInline: true, styles: [\"@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Badge, decorators: [{\n type: Component,\n args: [{ selector: 'p-badge', template: ` {{ value }} `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}\\n\"] }]\n }], propDecorators: { styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], size: [{\n type: Input\n }], severity: [{\n type: Input\n }], value: [{\n type: Input\n }], badgeDisabled: [{\n type: Input\n }] } });\nclass BadgeModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeModule, declarations: [Badge, BadgeDirective], imports: [CommonModule], exports: [Badge, BadgeDirective, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeModule, imports: [CommonModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BadgeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Badge, BadgeDirective, SharedModule],\n declarations: [Badge, BadgeDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Badge, BadgeDirective, BadgeModule };\n","import * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { HomeIcon } from 'primeng/icons/home';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\n\n/**\n * Breadcrumb provides contextual information about page hierarchy.\n * @group Components\n */\nclass Breadcrumb {\n router;\n /**\n * An array of menuitems.\n * @group Props\n */\n model;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * MenuItem configuration for the home icon.\n * @group Props\n */\n home;\n /**\n * Defines a string that labels the home icon for accessibility.\n * @group Props\n */\n homeAriaLabel;\n /**\n * Fired when an item is selected.\n * @param {BreadcrumbItemClickEvent} event - custom click event.\n * @group Emits\n */\n onItemClick = new EventEmitter();\n templates;\n separatorTemplate;\n itemTemplate;\n constructor(router) {\n this.router = router;\n }\n onClick(event, item) {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n if (!item.url && !item.routerLink) {\n event.preventDefault();\n }\n if (item.command) {\n item.command({\n originalEvent: event,\n item: item\n });\n }\n this.onItemClick.emit({\n originalEvent: event,\n item: item\n });\n }\n onHomeClick(event) {\n if (this.home) {\n this.onClick(event, this.home);\n }\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'separator':\n this.separatorTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n isCurrentUrl(item) {\n const { routerLink } = item;\n const lastPath = this.router ? this.router.url : '';\n return routerLink === lastPath ? 'page' : undefined;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Breadcrumb, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Breadcrumb, selector: \"p-breadcrumb\", inputs: { model: \"model\", style: \"style\", styleClass: \"styleClass\", home: \"home\", homeAriaLabel: \"homeAriaLabel\" }, outputs: { onItemClick: \"onItemClick\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n `, isInline: true, styles: [\"@layer primeng{.p-breadcrumb{overflow-x:auto}.p-breadcrumb .p-breadcrumb-list{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none;display:flex;align-items:center}.p-breadcrumb .p-menuitem-separator{display:flex;align-items:center}.p-breadcrumb::-webkit-scrollbar{display:none}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => HomeIcon), selector: \"HomeIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Breadcrumb, decorators: [{\n type: Component,\n args: [{ selector: 'p-breadcrumb', template: `\n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-breadcrumb{overflow-x:auto}.p-breadcrumb .p-breadcrumb-list{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none;display:flex;align-items:center}.p-breadcrumb .p-menuitem-separator{display:flex;align-items:center}.p-breadcrumb::-webkit-scrollbar{display:none}}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { model: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], home: [{\n type: Input\n }], homeAriaLabel: [{\n type: Input\n }], onItemClick: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass BreadcrumbModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: BreadcrumbModule, declarations: [Breadcrumb], imports: [CommonModule, RouterModule, TooltipModule, ChevronRightIcon, HomeIcon, SharedModule], exports: [Breadcrumb, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BreadcrumbModule, imports: [CommonModule, RouterModule, TooltipModule, ChevronRightIcon, HomeIcon, SharedModule, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BreadcrumbModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, TooltipModule, ChevronRightIcon, HomeIcon, SharedModule],\n exports: [Breadcrumb, RouterModule, TooltipModule, SharedModule],\n declarations: [Breadcrumb]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Breadcrumb, BreadcrumbModule };\n","import { style, animate, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nconst COLORPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPicker),\n multi: true\n};\n/**\n * ColorPicker groups a collection of contents in tabs.\n * @group Components\n */\nclass ColorPicker {\n document;\n platformId;\n el;\n renderer;\n cd;\n config;\n overlayService;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Whether to display as an overlay or not.\n * @group Props\n */\n inline;\n /**\n * Format to use in value binding.\n * @group Props\n */\n format = 'hex';\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n disabled;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * Identifier of the focus input to match a label defined for the dropdown.\n * @group Props\n */\n inputId;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '.1s linear';\n /**\n * Callback to invoke on value change.\n * @param {ColorPickerChangeEvent} event - Custom value change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n /**\n * Callback to invoke on panel is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke on panel is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n containerViewChild;\n inputViewChild;\n value = { h: 0, s: 100, b: 100 };\n inputBgColor;\n shown;\n overlayVisible;\n defaultColor = 'ff0000';\n onModelChange = () => { };\n onModelTouched = () => { };\n documentClickListener;\n documentResizeListener;\n documentMousemoveListener;\n documentMouseupListener;\n documentHueMoveListener;\n scrollHandler;\n selfClick;\n colorDragging;\n hueDragging;\n overlay;\n colorSelectorViewChild;\n colorHandleViewChild;\n hueViewChild;\n hueHandleViewChild;\n window;\n constructor(document, platformId, el, renderer, cd, config, overlayService) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.overlayService = overlayService;\n this.window = this.document.defaultView;\n }\n set colorSelector(element) {\n this.colorSelectorViewChild = element;\n }\n set colorHandle(element) {\n this.colorHandleViewChild = element;\n }\n set hue(element) {\n this.hueViewChild = element;\n }\n set hueHandle(element) {\n this.hueHandleViewChild = element;\n }\n onHueMousedown(event) {\n if (this.disabled) {\n return;\n }\n this.bindDocumentMousemoveListener();\n this.bindDocumentMouseupListener();\n this.hueDragging = true;\n this.pickHue(event);\n }\n onHueDragStart(event) {\n if (this.disabled) {\n return;\n }\n this.hueDragging = true;\n this.pickHue(event, event.changedTouches[0]);\n }\n onColorDragStart(event) {\n if (this.disabled) {\n return;\n }\n this.colorDragging = true;\n this.pickColor(event, event.changedTouches[0]);\n }\n pickHue(event, position) {\n let pageY = position ? position.pageY : event.pageY;\n let top = this.hueViewChild?.nativeElement.getBoundingClientRect().top + (this.document.defaultView.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop || 0);\n this.value = this.validateHSB({\n h: Math.floor((360 * (150 - Math.max(0, Math.min(150, pageY - top)))) / 150),\n s: this.value.s,\n b: this.value.b\n });\n this.updateColorSelector();\n this.updateUI();\n this.updateModel();\n this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });\n }\n onColorMousedown(event) {\n if (this.disabled) {\n return;\n }\n this.bindDocumentMousemoveListener();\n this.bindDocumentMouseupListener();\n this.colorDragging = true;\n this.pickColor(event);\n }\n onDrag(event) {\n if (this.colorDragging) {\n this.pickColor(event, event.changedTouches[0]);\n event.preventDefault();\n }\n if (this.hueDragging) {\n this.pickHue(event, event.changedTouches[0]);\n event.preventDefault();\n }\n }\n onDragEnd() {\n this.colorDragging = false;\n this.hueDragging = false;\n this.unbindDocumentMousemoveListener();\n this.unbindDocumentMouseupListener();\n }\n pickColor(event, position) {\n let pageX = position ? position.pageX : event.pageX;\n let pageY = position ? position.pageY : event.pageY;\n let rect = this.colorSelectorViewChild?.nativeElement.getBoundingClientRect();\n let top = rect.top + (this.document.defaultView.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop || 0);\n let left = rect.left + this.document.body.scrollLeft;\n let saturation = Math.floor((100 * Math.max(0, Math.min(150, pageX - left))) / 150);\n let brightness = Math.floor((100 * (150 - Math.max(0, Math.min(150, pageY - top)))) / 150);\n this.value = this.validateHSB({\n h: this.value.h,\n s: saturation,\n b: brightness\n });\n this.updateUI();\n this.updateModel();\n this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });\n }\n getValueToUpdate() {\n let val;\n switch (this.format) {\n case 'hex':\n val = '#' + this.HSBtoHEX(this.value);\n break;\n case 'rgb':\n val = this.HSBtoRGB(this.value);\n break;\n case 'hsb':\n val = this.value;\n break;\n }\n return val;\n }\n updateModel() {\n this.onModelChange(this.getValueToUpdate());\n }\n writeValue(value) {\n if (value) {\n switch (this.format) {\n case 'hex':\n this.value = this.HEXtoHSB(value);\n break;\n case 'rgb':\n this.value = this.RGBtoHSB(value);\n break;\n case 'hsb':\n this.value = value;\n break;\n }\n }\n else {\n this.value = this.HEXtoHSB(this.defaultColor);\n }\n this.updateColorSelector();\n this.updateUI();\n this.cd.markForCheck();\n }\n updateColorSelector() {\n if (this.colorSelectorViewChild) {\n const hsb = {};\n hsb.s = 100;\n hsb.b = 100;\n hsb.h = this.value.h;\n this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);\n }\n }\n updateUI() {\n if (this.colorHandleViewChild && this.hueHandleViewChild?.nativeElement) {\n this.colorHandleViewChild.nativeElement.style.left = Math.floor((150 * this.value.s) / 100) + 'px';\n this.colorHandleViewChild.nativeElement.style.top = Math.floor((150 * (100 - this.value.b)) / 100) + 'px';\n this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h) / 360) + 'px';\n }\n this.inputBgColor = '#' + this.HSBtoHEX(this.value);\n }\n onInputFocus() {\n this.onModelTouched();\n }\n show() {\n this.overlayVisible = true;\n this.cd.markForCheck();\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n if (!this.inline) {\n this.overlay = event.element;\n this.appendOverlay();\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n this.updateColorSelector();\n this.updateUI();\n }\n break;\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'visible':\n if (!this.inline) {\n this.onShow.emit({});\n }\n break;\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n this.onHide.emit({});\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n }\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.renderer.appendChild(this.el.nativeElement, this.overlay);\n }\n }\n alignOverlay() {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, this.inputViewChild?.nativeElement);\n else\n DomHandler.relativePosition(this.overlay, this.inputViewChild?.nativeElement);\n }\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n onInputClick() {\n this.selfClick = true;\n this.togglePanel();\n }\n togglePanel() {\n if (!this.overlayVisible)\n this.show();\n else\n this.hide();\n }\n onInputKeydown(event) {\n switch (event.code) {\n case 'Space':\n this.togglePanel();\n event.preventDefault();\n break;\n case 'Escape':\n case 'Tab':\n this.hide();\n break;\n default:\n //NoOp\n break;\n }\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n this.selfClick = true;\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n if (!this.selfClick) {\n this.overlayVisible = false;\n this.unbindDocumentClickListener();\n }\n this.selfClick = false;\n this.cd.markForCheck();\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentMousemoveListener() {\n if (!this.documentMousemoveListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n if (this.colorDragging) {\n this.pickColor(event);\n }\n if (this.hueDragging) {\n this.pickHue(event);\n }\n });\n }\n }\n unbindDocumentMousemoveListener() {\n if (this.documentMousemoveListener) {\n this.documentMousemoveListener();\n this.documentMousemoveListener = null;\n }\n }\n bindDocumentMouseupListener() {\n if (!this.documentMouseupListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {\n this.colorDragging = false;\n this.hueDragging = false;\n this.unbindDocumentMousemoveListener();\n this.unbindDocumentMouseupListener();\n });\n }\n }\n unbindDocumentMouseupListener() {\n if (this.documentMouseupListener) {\n this.documentMouseupListener();\n this.documentMouseupListener = null;\n }\n }\n bindDocumentResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', this.onWindowResize.bind(this));\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild?.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n validateHSB(hsb) {\n return {\n h: Math.min(360, Math.max(0, hsb.h)),\n s: Math.min(100, Math.max(0, hsb.s)),\n b: Math.min(100, Math.max(0, hsb.b))\n };\n }\n validateRGB(rgb) {\n return {\n r: Math.min(255, Math.max(0, rgb.r)),\n g: Math.min(255, Math.max(0, rgb.g)),\n b: Math.min(255, Math.max(0, rgb.b))\n };\n }\n validateHEX(hex) {\n var len = 6 - hex.length;\n if (len > 0) {\n var o = [];\n for (var i = 0; i < len; i++) {\n o.push('0');\n }\n o.push(hex);\n hex = o.join('');\n }\n return hex;\n }\n HEXtoRGB(hex) {\n let hexValue = parseInt(hex.indexOf('#') > -1 ? hex.substring(1) : hex, 16);\n return { r: hexValue >> 16, g: (hexValue & 0x00ff00) >> 8, b: hexValue & 0x0000ff };\n }\n HEXtoHSB(hex) {\n return this.RGBtoHSB(this.HEXtoRGB(hex));\n }\n RGBtoHSB(rgb) {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max != 0 ? (255 * delta) / max : 0;\n if (hsb.s != 0) {\n if (rgb.r == max) {\n hsb.h = (rgb.g - rgb.b) / delta;\n }\n else if (rgb.g == max) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n }\n else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n }\n else {\n hsb.h = -1;\n }\n hsb.h *= 60;\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n return hsb;\n }\n HSBtoRGB(hsb) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n let h = hsb.h;\n let s = (hsb.s * 255) / 100;\n let v = (hsb.b * 255) / 100;\n if (s == 0) {\n rgb = {\n r: v,\n g: v,\n b: v\n };\n }\n else {\n let t1 = v;\n let t2 = ((255 - s) * v) / 255;\n let t3 = ((t1 - t2) * (h % 60)) / 60;\n if (h == 360)\n h = 0;\n if (h < 60) {\n rgb.r = t1;\n rgb.b = t2;\n rgb.g = t2 + t3;\n }\n else if (h < 120) {\n rgb.g = t1;\n rgb.b = t2;\n rgb.r = t1 - t3;\n }\n else if (h < 180) {\n rgb.g = t1;\n rgb.r = t2;\n rgb.b = t2 + t3;\n }\n else if (h < 240) {\n rgb.b = t1;\n rgb.r = t2;\n rgb.g = t1 - t3;\n }\n else if (h < 300) {\n rgb.b = t1;\n rgb.g = t2;\n rgb.r = t2 + t3;\n }\n else if (h < 360) {\n rgb.r = t1;\n rgb.g = t2;\n rgb.b = t1 - t3;\n }\n else {\n rgb.r = 0;\n rgb.g = 0;\n rgb.b = 0;\n }\n }\n return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };\n }\n RGBtoHEX(rgb) {\n var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n for (var key in hex) {\n if (hex[key].length == 1) {\n hex[key] = '0' + hex[key];\n }\n }\n return hex.join('');\n }\n HSBtoHEX(hsb) {\n return this.RGBtoHEX(this.HSBtoRGB(hsb));\n }\n onOverlayHide() {\n this.unbindScrollListener();\n this.unbindDocumentResizeListener();\n this.unbindDocumentClickListener();\n this.overlay = null;\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.overlay && this.autoZIndex) {\n ZIndexUtils.clear(this.overlay);\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPicker, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ColorPicker, selector: \"p-colorPicker\", inputs: { style: \"style\", styleClass: \"styleClass\", inline: \"inline\", format: \"format\", appendTo: \"appendTo\", disabled: \"disabled\", tabindex: \"tabindex\", inputId: \"inputId\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onChange: \"onChange\", onShow: \"onShow\", onHide: \"onHide\" }, host: { classAttribute: \"p-element\" }, providers: [COLORPICKER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputViewChild\", first: true, predicate: [\"input\"], descendants: true }, { propertyName: \"colorSelector\", first: true, predicate: [\"colorSelector\"], descendants: true }, { propertyName: \"colorHandle\", first: true, predicate: [\"colorHandle\"], descendants: true }, { propertyName: \"hue\", first: true, predicate: [\"hue\"], descendants: true }, { propertyName: \"hueHandle\", first: true, predicate: [\"hueHandle\"], descendants: true }], ngImport: i0, template: `\n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPicker, decorators: [{\n type: Component,\n args: [{ selector: 'p-colorPicker', template: `\n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])], providers: [COLORPICKER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], inline: [{\n type: Input\n }], format: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], inputId: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], inputViewChild: [{\n type: ViewChild,\n args: ['input']\n }], colorSelector: [{\n type: ViewChild,\n args: ['colorSelector']\n }], colorHandle: [{\n type: ViewChild,\n args: ['colorHandle']\n }], hue: [{\n type: ViewChild,\n args: ['hue']\n }], hueHandle: [{\n type: ViewChild,\n args: ['hueHandle']\n }] } });\nclass ColorPickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPicker], imports: [CommonModule], exports: [ColorPicker] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPickerModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ColorPicker],\n declarations: [ColorPicker]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { COLORPICKER_VALUE_ACCESSOR, ColorPicker, ColorPickerModule };\n","import { style, animate, animation, useAnimation, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChild, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { ConfirmEventType, TranslationKeys, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler } from 'primeng/dom';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\n\nconst showAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{transition}}', style({ transform: 'none', opacity: 1 }))]);\nconst hideAnimation = animation([animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))]);\n/**\n * ConfirmDialog uses a Dialog UI that is integrated with the Confirmation API.\n * @group Components\n */\nclass ConfirmDialog {\n el;\n renderer;\n confirmationService;\n zone;\n cd;\n config;\n document;\n /**\n * Title text of the dialog.\n * @group Props\n */\n header;\n /**\n * Icon to display next to message.\n * @group Props\n */\n icon;\n /**\n * Message of the confirmation.\n * @group Props\n */\n message;\n /**\n * Inline style of the element.\n * @group Props\n */\n get style() {\n return this._style;\n }\n set style(value) {\n this._style = value;\n this.cd.markForCheck();\n }\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Specify the CSS class(es) for styling the mask element\n * @group Props\n */\n maskStyleClass;\n /**\n * Icon of the accept button.\n * @group Props\n */\n acceptIcon;\n /**\n * Label of the accept button.\n * @group Props\n */\n acceptLabel;\n /**\n * Defines a string that labels the close button for accessibility.\n * @group Props\n */\n closeAriaLabel;\n /**\n * Defines a string that labels the accept button for accessibility.\n * @group Props\n */\n acceptAriaLabel;\n /**\n * Visibility of the accept button.\n * @group Props\n */\n acceptVisible = true;\n /**\n * Icon of the reject button.\n * @group Props\n */\n rejectIcon;\n /**\n * Label of the reject button.\n * @group Props\n */\n rejectLabel;\n /**\n * Defines a string that labels the reject button for accessibility.\n * @group Props\n */\n rejectAriaLabel;\n /**\n * Visibility of the reject button.\n * @group Props\n */\n rejectVisible = true;\n /**\n * Style class of the accept button.\n * @group Props\n */\n acceptButtonStyleClass;\n /**\n * Style class of the reject button.\n * @group Props\n */\n rejectButtonStyleClass;\n /**\n * Specifies if pressing escape key should hide the dialog.\n * @group Props\n */\n closeOnEscape = true;\n /**\n * Specifies if clicking the modal background should hide the dialog.\n * @group Props\n */\n dismissableMask;\n /**\n * Determines whether scrolling behavior should be blocked within the component.\n * @group Props\n */\n blockScroll = true;\n /**\n * When enabled dialog is displayed in RTL direction.\n * @group Props\n */\n rtl = false;\n /**\n * Adds a close icon to the header to hide the dialog.\n * @group Props\n */\n closable = true;\n /**\n * Target element to attach the dialog, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * Optional key to match the key of confirm object, necessary to use when component tree has multiple confirm dialogs.\n * @group Props\n */\n key;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * When enabled, can only focus on elements inside the confirm dialog.\n * @group Props\n */\n focusTrap = true;\n /**\n * Element to receive the focus when the dialog gets visible.\n * @group Props\n */\n defaultFocus = 'accept';\n /**\n * Object literal to define widths per screen size.\n * @group Props\n */\n breakpoints;\n /**\n * Current visible state as a boolean.\n * @group Props\n */\n get visible() {\n return this._visible;\n }\n set visible(value) {\n this._visible = value;\n if (this._visible && !this.maskVisible) {\n this.maskVisible = true;\n }\n this.cd.markForCheck();\n }\n /**\n * Allows getting the position of the component.\n * @group Props\n */\n get position() {\n return this._position;\n }\n set position(value) {\n this._position = value;\n switch (value) {\n case 'top-left':\n case 'bottom-left':\n case 'left':\n this.transformOptions = 'translate3d(-100%, 0px, 0px)';\n break;\n case 'top-right':\n case 'bottom-right':\n case 'right':\n this.transformOptions = 'translate3d(100%, 0px, 0px)';\n break;\n case 'bottom':\n this.transformOptions = 'translate3d(0px, 100%, 0px)';\n break;\n case 'top':\n this.transformOptions = 'translate3d(0px, -100%, 0px)';\n break;\n default:\n this.transformOptions = 'scale(0.7)';\n break;\n }\n }\n /**\n * Callback to invoke when dialog is hidden.\n * @param {ConfirmEventType} enum - Custom confirm event.\n * @group Emits\n */\n onHide = new EventEmitter();\n footer;\n contentViewChild;\n templates;\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'message':\n this.messageTemplate = item.template;\n break;\n case 'icon':\n this.iconTemplate = item.template;\n break;\n case 'rejecticon':\n this.rejectIconTemplate = item.template;\n break;\n case 'accepticon':\n this.acceptIconTemplate = item.template;\n break;\n case 'headless':\n this.headlessTemplate = item.template;\n break;\n }\n });\n }\n headerTemplate;\n footerTemplate;\n rejectIconTemplate;\n acceptIconTemplate;\n messageTemplate;\n iconTemplate;\n headlessTemplate;\n confirmation;\n _visible;\n _style;\n maskVisible;\n documentEscapeListener;\n container;\n wrapper;\n contentContainer;\n subscription;\n maskClickListener;\n preWidth;\n _position = 'center';\n transformOptions = 'scale(0.7)';\n styleElement;\n id = UniqueComponentId();\n confirmationOptions;\n translationSubscription;\n constructor(el, renderer, confirmationService, zone, cd, config, document) {\n this.el = el;\n this.renderer = renderer;\n this.confirmationService = confirmationService;\n this.zone = zone;\n this.cd = cd;\n this.config = config;\n this.document = document;\n this.subscription = this.confirmationService.requireConfirmation$.subscribe((confirmation) => {\n if (!confirmation) {\n this.hide();\n return;\n }\n if (confirmation.key === this.key) {\n this.confirmation = confirmation;\n this.confirmationOptions = {\n message: this.confirmation.message || this.message,\n icon: this.confirmation.icon || this.icon,\n header: this.confirmation.header || this.header,\n rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,\n acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,\n acceptLabel: this.confirmation.acceptLabel || this.acceptLabel,\n rejectLabel: this.confirmation.rejectLabel || this.rejectLabel,\n acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,\n rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,\n acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,\n rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,\n defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,\n blockScroll: this.confirmation.blockScroll === false || this.confirmation.blockScroll === true ? this.confirmation.blockScroll : this.blockScroll,\n closeOnEscape: this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true ? this.confirmation.closeOnEscape : this.closeOnEscape,\n dismissableMask: this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true ? this.confirmation.dismissableMask : this.dismissableMask\n };\n if (this.confirmation.accept) {\n this.confirmation.acceptEvent = new EventEmitter();\n this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n }\n if (this.confirmation.reject) {\n this.confirmation.rejectEvent = new EventEmitter();\n this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n }\n this.visible = true;\n }\n });\n }\n ngOnInit() {\n if (this.breakpoints) {\n this.createStyle();\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n if (this.visible) {\n this.cd.markForCheck();\n }\n });\n }\n getAriaLabelledBy() {\n return this.header !== null ? UniqueComponentId() + '_header' : null;\n }\n option(name) {\n const source = this.confirmationOptions || this;\n if (source.hasOwnProperty(name)) {\n return source[name];\n }\n return undefined;\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = this.container?.parentElement;\n this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');\n this.container?.setAttribute(this.id, '');\n this.appendContainer();\n this.moveOnTop();\n this.bindGlobalListeners();\n this.enableModality();\n const element = this.getElementToFocus();\n if (element) {\n element.focus();\n }\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n getElementToFocus() {\n switch (this.option('defaultFocus')) {\n case 'accept':\n return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n case 'reject':\n return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');\n case 'close':\n return DomHandler.findSingle(this.container, '.p-dialog-header-close');\n case 'none':\n return null;\n //backward compatibility\n default:\n return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n }\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.document.body.appendChild(this.wrapper);\n else\n DomHandler.appendChild(this.wrapper, this.appendTo);\n }\n }\n restoreAppend() {\n if (this.wrapper && this.appendTo) {\n this.el.nativeElement.appendChild(this.wrapper);\n }\n }\n enableModality() {\n if (this.option('blockScroll')) {\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.option('dismissableMask')) {\n this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n this.close(event);\n }\n });\n }\n }\n disableModality() {\n this.maskVisible = false;\n if (this.option('blockScroll')) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.dismissableMask) {\n this.unbindMaskClickListener();\n }\n if (this.container && !this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n }\n createStyle() {\n if (!this.styleElement) {\n this.styleElement = this.document.createElement('style');\n this.styleElement.type = 'text/css';\n this.document.head.appendChild(this.styleElement);\n let innerHTML = '';\n for (let breakpoint in this.breakpoints) {\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n .p-dialog[${this.id}] {\n width: ${this.breakpoints[breakpoint]} !important;\n }\n }\n `;\n }\n this.styleElement.innerHTML = innerHTML;\n }\n }\n close(event) {\n if (this.confirmation?.rejectEvent) {\n this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);\n }\n this.hide(ConfirmEventType.CANCEL);\n event.preventDefault();\n }\n hide(type) {\n this.onHide.emit(type);\n this.visible = false;\n this.confirmation = null;\n this.confirmationOptions = null;\n }\n moveOnTop() {\n if (this.autoZIndex) {\n ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n }\n }\n getMaskClass() {\n let maskClass = { 'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll };\n maskClass[this.getPositionClass().toString()] = true;\n return maskClass;\n }\n getPositionClass() {\n const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];\n const pos = positions.find((item) => item === this.position);\n return pos ? `p-dialog-${pos}` : '';\n }\n bindGlobalListeners() {\n if ((this.option('closeOnEscape') && this.closable) || (this.focusTrap && !this.documentEscapeListener)) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n if (event.which == 27 && this.option('closeOnEscape') && this.closable) {\n if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {\n this.close(event);\n }\n }\n if (event.which === 9 && this.focusTrap) {\n event.preventDefault();\n let focusableElements = DomHandler.getFocusableElements(this.container);\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n }\n else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0)\n focusableElements[focusableElements.length - 1].focus();\n else\n focusableElements[focusedIndex - 1].focus();\n }\n else {\n if (focusedIndex == -1 || focusedIndex === focusableElements.length - 1)\n focusableElements[0].focus();\n else\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n });\n }\n }\n unbindGlobalListeners() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n onOverlayHide() {\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.disableModality();\n this.unbindGlobalListeners();\n this.container = null;\n }\n destroyStyle() {\n if (this.styleElement) {\n this.document.head.removeChild(this.styleElement);\n this.styleElement = null;\n }\n }\n ngOnDestroy() {\n this.restoreAppend();\n this.onOverlayHide();\n this.subscription.unsubscribe();\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n this.destroyStyle();\n }\n accept() {\n if (this.confirmation && this.confirmation.acceptEvent) {\n this.confirmation.acceptEvent.emit();\n }\n this.hide(ConfirmEventType.ACCEPT);\n }\n reject() {\n if (this.confirmation && this.confirmation.rejectEvent) {\n this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);\n }\n this.hide(ConfirmEventType.REJECT);\n }\n get acceptButtonLabel() {\n return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);\n }\n get rejectButtonLabel() {\n return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ConfirmationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ConfirmDialog, selector: \"p-confirmDialog\", inputs: { header: \"header\", icon: \"icon\", message: \"message\", style: \"style\", styleClass: \"styleClass\", maskStyleClass: \"maskStyleClass\", acceptIcon: \"acceptIcon\", acceptLabel: \"acceptLabel\", closeAriaLabel: \"closeAriaLabel\", acceptAriaLabel: \"acceptAriaLabel\", acceptVisible: \"acceptVisible\", rejectIcon: \"rejectIcon\", rejectLabel: \"rejectLabel\", rejectAriaLabel: \"rejectAriaLabel\", rejectVisible: \"rejectVisible\", acceptButtonStyleClass: \"acceptButtonStyleClass\", rejectButtonStyleClass: \"rejectButtonStyleClass\", closeOnEscape: \"closeOnEscape\", dismissableMask: \"dismissableMask\", blockScroll: \"blockScroll\", rtl: \"rtl\", closable: \"closable\", appendTo: \"appendTo\", key: \"key\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", transitionOptions: \"transitionOptions\", focusTrap: \"focusTrap\", defaultFocus: \"defaultFocus\", breakpoints: \"breakpoints\", visible: \"visible\", position: \"position\" }, outputs: { onHide: \"onHide\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"footer\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"contentViewChild\", first: true, predicate: [\"content\"], descendants: true }], ngImport: i0, template: `\n
    \n \n \n \n \n \n
    \n \n
    \n
    \n {{ option('header') }}\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 \n \n \n
    \n
    \n
    \n \n `, isInline: true, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.ButtonDirective), selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }], animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialog, decorators: [{\n type: Component,\n args: [{ selector: 'p-confirmDialog', template: `\n
    \n \n \n \n \n \n
    \n \n
    \n
    \n {{ option('header') }}\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 \n \n \n
    \n
    \n
    \n \n `, animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ConfirmationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { header: [{\n type: Input\n }], icon: [{\n type: Input\n }], message: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], maskStyleClass: [{\n type: Input\n }], acceptIcon: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], closeAriaLabel: [{\n type: Input\n }], acceptAriaLabel: [{\n type: Input\n }], acceptVisible: [{\n type: Input\n }], rejectIcon: [{\n type: Input\n }], rejectLabel: [{\n type: Input\n }], rejectAriaLabel: [{\n type: Input\n }], rejectVisible: [{\n type: Input\n }], acceptButtonStyleClass: [{\n type: Input\n }], rejectButtonStyleClass: [{\n type: Input\n }], closeOnEscape: [{\n type: Input\n }], dismissableMask: [{\n type: Input\n }], blockScroll: [{\n type: Input\n }], rtl: [{\n type: Input\n }], closable: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], key: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], focusTrap: [{\n type: Input\n }], defaultFocus: [{\n type: Input\n }], breakpoints: [{\n type: Input\n }], visible: [{\n type: Input\n }], position: [{\n type: Input\n }], onHide: [{\n type: Output\n }], footer: [{\n type: ContentChild,\n args: [Footer]\n }], contentViewChild: [{\n type: ViewChild,\n args: ['content']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass ConfirmDialogModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialogModule, declarations: [ConfirmDialog], imports: [CommonModule, ButtonModule, RippleModule, TimesIcon, CheckIcon], exports: [ConfirmDialog, ButtonModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialogModule, imports: [CommonModule, ButtonModule, RippleModule, TimesIcon, CheckIcon, ButtonModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ConfirmDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, RippleModule, TimesIcon, CheckIcon],\n exports: [ConfirmDialog, ButtonModule, SharedModule],\n declarations: [ConfirmDialog]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmDialog, ConfirmDialogModule };\n","import { style, transition, trigger, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, signal, effect, PLATFORM_ID, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport * as i5 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\n\nclass ContextMenuSub {\n document;\n el;\n renderer;\n cd;\n contextMenu;\n ref;\n visible = false;\n items;\n itemTemplate;\n root = false;\n autoZIndex = true;\n baseZIndex = 0;\n popup;\n menuId;\n ariaLabel;\n ariaLabelledBy;\n level = 0;\n focusedItemId;\n activeItemPath;\n tabindex = 0;\n itemClick = new EventEmitter();\n itemMouseEnter = new EventEmitter();\n menuFocus = new EventEmitter();\n menuBlur = new EventEmitter();\n menuKeydown = new EventEmitter();\n sublistViewChild;\n constructor(document, el, renderer, cd, contextMenu, ref) {\n this.document = document;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.contextMenu = contextMenu;\n this.ref = ref;\n }\n getItemProp(processedItem, name, params = null) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;\n }\n getItemId(processedItem) {\n return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;\n }\n getItemKey(processedItem) {\n return this.getItemId(processedItem);\n }\n getItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem': true,\n 'p-highlight': this.isItemActive(processedItem),\n 'p-menuitem-active': this.isItemActive(processedItem),\n 'p-focus': this.isItemFocused(processedItem),\n 'p-disabled': this.isItemDisabled(processedItem)\n };\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n getSeparatorItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem-separator': true\n };\n }\n getAriaSetSize() {\n return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n }\n getAriaPosInset(index) {\n return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemActive(processedItem) {\n if (this.activeItemPath) {\n return this.activeItemPath.some((path) => path.key === processedItem.key);\n }\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemFocused(processedItem) {\n return this.focusedItemId === this.getItemId(processedItem);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n onItemMouseEnter(param) {\n const { event, processedItem } = param;\n this.itemMouseEnter.emit({ originalEvent: event, processedItem });\n }\n onItemClick(event, processedItem) {\n this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });\n }\n onEnter(event, sublist) {\n if (event.fromState === 'void' && event.toState) {\n const sublist = event.element;\n this.position(sublist);\n }\n }\n position(sublist) {\n const parentItem = sublist.parentElement.parentElement;\n const containerOffset = DomHandler.getOffset(sublist.parentElement.parentElement);\n const viewport = DomHandler.getViewport();\n const sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);\n const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);\n sublist.style.top = '0px';\n if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {\n sublist.style.left = -1 * sublistWidth + 'px';\n }\n else {\n sublist.style.left = itemOuterWidth + 'px';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuSub, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => ContextMenu) }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ContextMenuSub, selector: \"p-contextMenuSub\", inputs: { visible: \"visible\", items: \"items\", itemTemplate: \"itemTemplate\", root: \"root\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", popup: \"popup\", menuId: \"menuId\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", level: \"level\", focusedItemId: \"focusedItemId\", activeItemPath: \"activeItemPath\", tabindex: \"tabindex\" }, outputs: { itemClick: \"itemClick\", itemMouseEnter: \"itemMouseEnter\", menuFocus: \"menuFocus\", menuBlur: \"menuBlur\", menuKeydown: \"menuKeydown\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"sublistViewChild\", first: true, predicate: [\"sublist\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n
    \n\n \n \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleRightIcon), selector: \"AngleRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ContextMenuSub), selector: \"p-contextMenuSub\", inputs: [\"visible\", \"items\", \"itemTemplate\", \"root\", \"autoZIndex\", \"baseZIndex\", \"popup\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\", \"tabindex\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-contextMenuSub',\n template: `\n \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n
    \n\n \n \n
    \n \n `,\n animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 })]), transition(':leave', [style({ opacity: 0 })])])],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: ContextMenu, decorators: [{\n type: Inject,\n args: [forwardRef(() => ContextMenu)]\n }] }, { type: i0.ViewContainerRef }], propDecorators: { visible: [{\n type: Input\n }], items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], root: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], popup: [{\n type: Input\n }], menuId: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], level: [{\n type: Input\n }], focusedItemId: [{\n type: Input\n }], activeItemPath: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], itemMouseEnter: [{\n type: Output\n }], menuFocus: [{\n type: Output\n }], menuBlur: [{\n type: Output\n }], menuKeydown: [{\n type: Output\n }], sublistViewChild: [{\n type: ViewChild,\n args: ['sublist']\n }] } });\n/**\n * ContextMenu displays an overlay menu on right click of its target. Note that components like Table has special integration with ContextMenu.\n * @group Components\n */\nclass ContextMenu {\n document;\n platformId;\n el;\n renderer;\n cd;\n config;\n overlayService;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n this._processedItems = this.createProcessedItems(this._model || []);\n }\n get model() {\n return this._model;\n }\n /**\n * Event for which the menu must be displayed.\n * @group Props\n */\n triggerEvent = 'contextmenu';\n /**\n * Local template variable name of the element to attach the context menu.\n * @group Props\n */\n target;\n /**\n * Attaches the menu to document instead of a particular item.\n * @group Props\n */\n global;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element.\n * @group Props\n */\n appendTo;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabel;\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Callback to invoke when overlay menu is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke when overlay menu is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n templates;\n rootmenu;\n containerViewChild;\n submenuIconTemplate;\n itemTemplate;\n container;\n outsideClickListener;\n resizeListener;\n triggerEventListener;\n documentClickListener;\n documentTriggerListener;\n pageX;\n pageY;\n visible = signal(false);\n relativeAlign;\n window;\n focused = false;\n activeItemPath = signal([]);\n focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });\n submenuVisible = signal(false);\n searchValue = '';\n searchTimeout;\n _processedItems;\n _model;\n get visibleItems() {\n const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);\n return processedItem ? processedItem.items : this.processedItems;\n }\n get processedItems() {\n if (!this._processedItems || !this._processedItems.length) {\n this._processedItems = this.createProcessedItems(this.model || []);\n }\n return this._processedItems;\n }\n get focusedItemId() {\n const focusedItem = this.focusedItemInfo();\n return focusedItem.item && focusedItem.item?.id ? focusedItem.item.id : focusedItem.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(focusedItem.parentKey) ? '_' + focusedItem.parentKey : ''}_${focusedItem.index}` : null;\n }\n constructor(document, platformId, el, renderer, cd, config, overlayService) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.overlayService = overlayService;\n this.window = this.document.defaultView;\n effect(() => {\n const path = this.activeItemPath();\n if (ObjectUtils.isNotEmpty(path)) {\n this.bindGlobalListeners();\n }\n else if (!this.visible()) {\n this.unbindGlobalListeners();\n }\n });\n }\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n this.bindTriggerEventListener();\n }\n bindTriggerEventListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.triggerEventListener) {\n if (this.global) {\n this.triggerEventListener = this.renderer.listen(this.document, this.triggerEvent, (event) => {\n this.show(event);\n });\n }\n else if (this.target) {\n this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {\n this.show(event);\n });\n }\n }\n }\n }\n bindGlobalListeners() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2 && this.triggerEvent !== 'click') {\n this.hide();\n }\n });\n this.documentTriggerListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {\n if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event)) {\n this.hide();\n }\n });\n }\n if (!this.resizeListener) {\n this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {\n this.hide();\n });\n }\n }\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'submenuicon':\n this.submenuIconTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n const processedItems = [];\n items &&\n items.forEach((item, index) => {\n const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n const newItem = {\n item,\n index,\n level,\n key,\n parent,\n parentKey\n };\n newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n processedItems.push(newItem);\n });\n return processedItems;\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n getProccessedItemLabel(processedItem) {\n return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n }\n getItemLabel(item) {\n return this.getItemProp(item, 'label');\n }\n isProcessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n isSelected(processedItem) {\n return this.activeItemPath().some((p) => p.key === processedItem.key);\n }\n isValidSelectedItem(processedItem) {\n return this.isValidItem(processedItem) && this.isSelected(processedItem);\n }\n isValidItem(processedItem) {\n return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);\n }\n isItemDisabled(item) {\n return this.getItemProp(item, 'disabled');\n }\n isItemSeparator(item) {\n return this.getItemProp(item, 'separator');\n }\n isItemMatched(processedItem) {\n return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n }\n isProccessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n onItemClick(event) {\n const { processedItem } = event;\n const grouped = this.isProcessedItemGroup(processedItem);\n const selected = this.isSelected(processedItem);\n if (selected) {\n const { index, key, level, parentKey, item } = processedItem;\n this.activeItemPath.set(this.activeItemPath().filter((p) => key !== p.key && key.startsWith(p.key)));\n this.focusedItemInfo.set({ index, level, parentKey, item });\n DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n }\n else {\n grouped ? this.onItemChange(event) : this.hide();\n }\n }\n onItemMouseEnter(event) {\n this.onItemChange(event);\n }\n onKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchItems(event, event.key);\n }\n break;\n }\n }\n onArrowDownKey(event) {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n onArrowRightKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });\n this.searchValue = '';\n this.onArrowDownKey(event);\n }\n event.preventDefault();\n }\n onArrowUpKey(event) {\n if (event.altKey) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.onItemChange({ originalEvent: event, processedItem });\n }\n this.hide();\n event.preventDefault();\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n }\n onArrowLeftKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);\n const root = ObjectUtils.isEmpty(processedItem.parent);\n if (!root) {\n this.focusedItemInfo.set({ index: -1, parentKey: parentItem ? parentItem.parentKey : '', item: processedItem.item });\n this.searchValue = '';\n this.onArrowDownKey(event);\n }\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);\n this.activeItemPath.set(activeItemPath);\n event.preventDefault();\n }\n onHomeKey(event) {\n this.changeFocusedItemIndex(event, this.findFirstItemIndex());\n event.preventDefault();\n }\n onEndKey(event) {\n this.changeFocusedItemIndex(event, this.findLastItemIndex());\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n onEscapeKey(event) {\n this.hide();\n const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({ ...focusedItemInfo, index: this.findFirstFocusedItemIndex(), item: processedItem.item });\n event.preventDefault();\n }\n onTabKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.onItemChange({ originalEvent: event, processedItem });\n }\n this.hide();\n }\n onEnterKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section=\"action\"]');\n anchorElement ? anchorElement.click() : element && element.click();\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n if (!grouped) {\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({ ...focusedItemInfo, index: this.findFirstFocusedItemIndex() });\n }\n }\n event.preventDefault();\n }\n onItemChange(event) {\n const { processedItem, isFocus } = event;\n if (ObjectUtils.isEmpty(processedItem))\n return;\n const { index, key, level, parentKey, items } = processedItem;\n const grouped = ObjectUtils.isNotEmpty(items);\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n if (grouped) {\n activeItemPath.push(processedItem);\n this.submenuVisible.set(true);\n }\n this.focusedItemInfo.set({ index, level, parentKey, item: processedItem.item });\n this.activeItemPath.set(activeItemPath);\n isFocus && DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n }\n onMenuFocus(event) {\n this.focused = true;\n const focusedItemInfo = this.focusedItemInfo().index !== -1 ? this.focusedItemInfo() : { index: -1, level: 0, parentKey: '', item: null };\n this.focusedItemInfo.set(focusedItemInfo);\n }\n onMenuBlur(event) {\n this.focused = false;\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n this.searchValue = '';\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.position();\n this.moveOnTop();\n this.appendOverlay();\n this.bindGlobalListeners();\n this.onShow.emit();\n DomHandler.focus(this.rootmenu.sublistViewChild.nativeElement);\n break;\n }\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.containerViewChild.nativeElement);\n else\n DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n }\n }\n moveOnTop() {\n if (this.autoZIndex && this.containerViewChild) {\n ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n }\n }\n onOverlayHide() {\n this.unbindGlobalListeners();\n if (!this.cd.destroyed) {\n this.target = null;\n }\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.container = null;\n this.onHide.emit();\n }\n hide() {\n this.visible.set(false);\n this.activeItemPath.set([]);\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n }\n toggle(event) {\n this.visible() ? this.hide() : this.show(event);\n }\n show(event) {\n this.activeItemPath.set([]);\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n this.pageX = event.pageX;\n this.pageY = event.pageY;\n this.visible() ? this.position() : this.visible.set(true);\n event.stopPropagation();\n event.preventDefault();\n }\n position() {\n let left = this.pageX + 1;\n let top = this.pageY + 1;\n let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);\n let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);\n let viewport = DomHandler.getViewport();\n //flip\n if (left + width - this.document.scrollingElement.scrollLeft > viewport.width) {\n left -= width;\n }\n //flip\n if (top + height - this.document.scrollingElement.scrollTop > viewport.height) {\n top -= height;\n }\n //fit\n if (left < this.document.scrollingElement.scrollLeft) {\n left = this.document.scrollingElement.scrollLeft;\n }\n //fit\n if (top < this.document.scrollingElement.scrollTop) {\n top = this.document.scrollingElement.scrollTop;\n }\n this.containerViewChild.nativeElement.style.left = left + 'px';\n this.containerViewChild.nativeElement.style.top = top + 'px';\n }\n searchItems(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let itemIndex = -1;\n let matched = false;\n if (this.focusedItemInfo().index !== -1) {\n itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));\n itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;\n }\n else {\n itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n }\n if (itemIndex !== -1) {\n matched = true;\n }\n if (itemIndex === -1 && this.focusedItemInfo().index === -1) {\n itemIndex = this.findFirstFocusedItemIndex();\n }\n if (itemIndex !== -1) {\n this.changeFocusedItemIndex(event, itemIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n findVisibleItem(index) {\n return ObjectUtils.isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;\n }\n findLastFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n }\n findLastItemIndex() {\n return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n }\n findPrevItemIndex(index) {\n const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex : index;\n }\n findNextItemIndex(index) {\n const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n }\n findFirstFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n }\n findFirstItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n }\n findSelectedItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n }\n changeFocusedItemIndex(event, index) {\n const processedItem = this.findVisibleItem(index);\n const focusedItemInfo = this.focusedItemInfo();\n if (focusedItemInfo.index !== index) {\n this.focusedItemInfo.set({ ...focusedItemInfo, index, item: processedItem.item });\n this.scrollInView();\n }\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.resizeListener) {\n this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {\n this.hide();\n });\n }\n }\n }\n isOutsideClicked(event) {\n return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));\n }\n unbindResizeListener() {\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n unbindGlobalListeners() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n if (this.documentTriggerListener) {\n this.documentTriggerListener();\n this.documentTriggerListener = null;\n }\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n unbindTriggerEventListener() {\n if (this.triggerEventListener) {\n this.triggerEventListener();\n this.triggerEventListener = null;\n }\n }\n removeAppendedElements() {\n if (this.appendTo) {\n if (this.appendTo === 'body') {\n if (this.containerViewChild) {\n this.renderer.removeChild(this.document.body, this.containerViewChild.nativeElement);\n }\n }\n else {\n DomHandler.removeChild(this.containerViewChild.nativeElement, this.appendTo);\n }\n }\n }\n ngOnDestroy() {\n this.unbindGlobalListeners();\n this.unbindTriggerEventListener();\n this.removeAppendedElements();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ContextMenu, selector: \"p-contextMenu\", inputs: { model: \"model\", triggerEvent: \"triggerEvent\", target: \"target\", global: \"global\", style: \"style\", styleClass: \"styleClass\", appendTo: \"appendTo\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", id: \"id\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"rootmenu\", first: true, predicate: [\"rootmenu\"], descendants: true }, { propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: ContextMenuSub, selector: \"p-contextMenuSub\", inputs: [\"visible\", \"items\", \"itemTemplate\", \"root\", \"autoZIndex\", \"baseZIndex\", \"popup\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\", \"tabindex\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-contextMenu', template: `\n \n \n \n `, animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-contextmenu{position:absolute}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-contextmenu .p-menuitem-link .p-icon-wrapper{margin-left:auto}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: i5.OverlayService }], propDecorators: { model: [{\n type: Input\n }], triggerEvent: [{\n type: Input\n }], target: [{\n type: Input\n }], global: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], id: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], rootmenu: [{\n type: ViewChild,\n args: ['rootmenu']\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }] } });\nclass ContextMenuModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule], exports: [ContextMenu, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuModule, imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ContextMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, RippleModule, TooltipModule, AngleRightIcon, SharedModule],\n exports: [ContextMenu, RouterModule, TooltipModule, SharedModule],\n declarations: [ContextMenu, ContextMenuSub]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ContextMenu, ContextMenuModule, ContextMenuSub };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass ThLargeIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ThLargeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ThLargeIcon, isStandalone: true, selector: \"ThLargeIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ThLargeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'ThLargeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ThLargeIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\n\nclass BarsIcon extends BaseIcon {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BarsIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: BarsIcon, isStandalone: true, selector: \"BarsIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BarsIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'BarsIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BarsIcon };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { ObjectUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i3 from 'primeng/paginator';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport { ThLargeIcon } from 'primeng/icons/thlarge';\nimport { BarsIcon } from 'primeng/icons/bars';\n\n/**\n * DataView displays data in grid or list layout with pagination and sorting features.\n * @group Components\n */\nclass DataView {\n el;\n cd;\n filterService;\n config;\n /**\n * When specified as true, enables the pagination.\n * @group Props\n */\n paginator;\n /**\n * Number of rows to display per page.\n * @group Props\n */\n rows;\n /**\n * Number of total records, defaults to length of value when not defined.\n * @group Props\n */\n totalRecords;\n /**\n * Number of page links to display in paginator.\n * @group Props\n */\n pageLinks = 5;\n /**\n * Array of integer/object values to display inside rows per page dropdown of paginator\n * @group Props\n */\n rowsPerPageOptions;\n /**\n * Position of the paginator.\n * @group Props\n */\n paginatorPosition = 'bottom';\n /**\n * Custom style class for paginator\n * @group Props\n */\n paginatorStyleClass;\n /**\n * Whether to show it even there is only one page.\n * @group Props\n */\n alwaysShowPaginator = true;\n /**\n * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n paginatorDropdownAppendTo;\n /**\n * Paginator dropdown height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n * @group Props\n */\n paginatorDropdownScrollHeight = '200px';\n /**\n * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n * @group Props\n */\n currentPageReportTemplate = '{currentPage} of {totalPages}';\n /**\n * Whether to display current page report.\n * @group Props\n */\n showCurrentPageReport;\n /**\n * Whether to display a dropdown to navigate to any page.\n * @group Props\n */\n showJumpToPageDropdown;\n /**\n * When enabled, icons are displayed on paginator to go first and last page.\n * @group Props\n */\n showFirstLastIcon = true;\n /**\n * Whether to show page links.\n * @group Props\n */\n showPageLinks = true;\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy;\n /**\n * Whether to call lazy loading on initialization.\n * @group Props\n */\n lazyLoadOnInit = true;\n /**\n * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n * @group Props\n */\n emptyMessage = '';\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Style class of the grid.\n * @group Props\n */\n gridStyleClass = '';\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n trackBy = (index, item) => item;\n /**\n * Comma separated list of fields in the object graph to search against.\n * @group Props\n */\n filterBy;\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading;\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon;\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n first = 0;\n /**\n * Property name of data to use in sorting by default.\n * @group Props\n */\n sortField;\n /**\n * Order to sort the data by default.\n * @group Props\n */\n sortOrder;\n /**\n * An array of objects to display.\n * @group Props\n */\n value;\n /**\n * Defines the layout mode.\n * @group Props\n */\n get layout() {\n return this._layout;\n }\n set layout(layout) {\n this._layout = layout;\n if (this.initialized) {\n this.changeLayout(layout);\n }\n }\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {DataViewLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = new EventEmitter();\n /**\n * Callback to invoke when pagination occurs.\n * @param {DataViewPageEvent} event - Custom page event.\n * @group Emits\n */\n onPage = new EventEmitter();\n /**\n * Callback to invoke when sorting occurs.\n * @param {DataViewSortEvent} event - Custom sort event.\n * @group Emits\n */\n onSort = new EventEmitter();\n /**\n * Callback to invoke when changing layout.\n * @param {DataViewLayoutChangeEvent} event - Custom layout change event.\n * @group Emits\n */\n onChangeLayout = new EventEmitter();\n header;\n footer;\n templates;\n _value;\n listTemplate;\n gridTemplate;\n itemTemplate;\n headerTemplate;\n emptyMessageTemplate;\n footerTemplate;\n paginatorLeftTemplate;\n paginatorRightTemplate;\n paginatorDropdownItemTemplate;\n loadingIconTemplate;\n listIconTemplate;\n gridIconTemplate;\n filteredValue;\n filterValue;\n initialized;\n _layout = 'list';\n translationSubscription;\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n constructor(el, cd, filterService, config) {\n this.el = el;\n this.cd = cd;\n this.filterService = filterService;\n this.config = config;\n }\n ngOnInit() {\n if (this.lazy && this.lazyLoadOnInit) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n this.initialized = true;\n }\n ngOnChanges(simpleChanges) {\n if (simpleChanges.value) {\n this._value = simpleChanges.value.currentValue;\n this.updateTotalRecords();\n if (!this.lazy && this.hasFilter()) {\n this.filter(this.filterValue);\n }\n }\n if (simpleChanges.sortField || simpleChanges.sortOrder) {\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n this.sort();\n }\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'listItem':\n case 'list':\n this.listTemplate = item.template;\n break;\n case 'gridItem':\n case 'grid':\n this.gridTemplate = item.template;\n break;\n case 'paginatorleft':\n this.paginatorLeftTemplate = item.template;\n break;\n case 'paginatorright':\n this.paginatorRightTemplate = item.template;\n break;\n case 'paginatordropdownitem':\n this.paginatorDropdownItemTemplate = item.template;\n break;\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n case 'listicon':\n this.listIconTemplate = item.template;\n break;\n case 'gridicon':\n this.gridIconTemplate = item.template;\n break;\n }\n });\n this.updateItemTemplate();\n }\n updateItemTemplate() {\n switch (this.layout) {\n case 'list':\n this.itemTemplate = this.listTemplate;\n break;\n case 'grid':\n this.itemTemplate = this.gridTemplate;\n break;\n }\n }\n changeLayout(layout) {\n this._layout = layout;\n this.onChangeLayout.emit({\n layout: this.layout\n });\n this.updateItemTemplate();\n this.cd.markForCheck();\n }\n updateTotalRecords() {\n this.totalRecords = this.lazy ? this.totalRecords : this._value ? this._value.length : 0;\n }\n paginate(event) {\n this.first = event.first;\n this.rows = event.rows;\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n this.onPage.emit({\n first: this.first,\n rows: this.rows\n });\n }\n sort() {\n this.first = 0;\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n this.value.sort((data1, data2) => {\n let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);\n let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2);\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return this.sortOrder * result;\n });\n if (this.hasFilter()) {\n this.filter(this.filterValue);\n }\n }\n this.onSort.emit({\n sortField: this.sortField,\n sortOrder: this.sortOrder\n });\n }\n isEmpty() {\n let data = this.filteredValue || this.value;\n return data == null || data.length == 0;\n }\n createLazyLoadMetadata() {\n return {\n first: this.first,\n rows: this.rows,\n sortField: this.sortField,\n sortOrder: this.sortOrder\n };\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n filter(filter, filterMatchMode = 'contains') {\n this.filterValue = filter;\n if (this.value && this.value.length) {\n let searchFields = this.filterBy.split(',');\n this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);\n if (this.filteredValue.length === this.value.length) {\n this.filteredValue = null;\n }\n if (this.paginator) {\n this.first = 0;\n this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n }\n this.cd.markForCheck();\n }\n }\n hasFilter() {\n return this.filterValue && this.filterValue.trim().length > 0;\n }\n ngOnDestroy() {\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: DataView, selector: \"p-dataView\", inputs: { paginator: \"paginator\", rows: \"rows\", totalRecords: \"totalRecords\", pageLinks: \"pageLinks\", rowsPerPageOptions: \"rowsPerPageOptions\", paginatorPosition: \"paginatorPosition\", paginatorStyleClass: \"paginatorStyleClass\", alwaysShowPaginator: \"alwaysShowPaginator\", paginatorDropdownAppendTo: \"paginatorDropdownAppendTo\", paginatorDropdownScrollHeight: \"paginatorDropdownScrollHeight\", currentPageReportTemplate: \"currentPageReportTemplate\", showCurrentPageReport: \"showCurrentPageReport\", showJumpToPageDropdown: \"showJumpToPageDropdown\", showFirstLastIcon: \"showFirstLastIcon\", showPageLinks: \"showPageLinks\", lazy: \"lazy\", lazyLoadOnInit: \"lazyLoadOnInit\", emptyMessage: \"emptyMessage\", style: \"style\", styleClass: \"styleClass\", gridStyleClass: \"gridStyleClass\", trackBy: \"trackBy\", filterBy: \"filterBy\", filterLocale: \"filterLocale\", loading: \"loading\", loadingIcon: \"loadingIcon\", first: \"first\", sortField: \"sortField\", sortOrder: \"sortOrder\", value: \"value\", layout: \"layout\" }, outputs: { onLazyLoad: \"onLazyLoad\", onPage: \"onPage\", onSort: \"onSort\", onChangeLayout: \"onChangeLayout\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"header\", first: true, predicate: Header, descendants: true }, { propertyName: \"footer\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n \n \n
    \n \n\n
    \n \n\n
    \n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => i3.Paginator), selector: \"p-paginator\", inputs: [\"pageLinkSize\", \"style\", \"styleClass\", \"alwaysShow\", \"dropdownAppendTo\", \"templateLeft\", \"templateRight\", \"appendTo\", \"dropdownScrollHeight\", \"currentPageReportTemplate\", \"showCurrentPageReport\", \"showFirstLastIcon\", \"totalRecords\", \"rows\", \"rowsPerPageOptions\", \"showJumpToPageDropdown\", \"showJumpToPageInput\", \"showPageLinks\", \"locale\", \"dropdownItemTemplate\", \"first\"], outputs: [\"onPageChange\"] }, { kind: \"component\", type: i0.forwardRef(() => SpinnerIcon), selector: \"SpinnerIcon\" }, { kind: \"pipe\", type: i0.forwardRef(() => i2.SlicePipe), name: \"slice\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataView, decorators: [{\n type: Component,\n args: [{ selector: 'p-dataView', template: `\n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n \n \n
    \n \n\n
    \n \n\n
    \n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }], propDecorators: { paginator: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], pageLinks: [{\n type: Input\n }], rowsPerPageOptions: [{\n type: Input\n }], paginatorPosition: [{\n type: Input\n }], paginatorStyleClass: [{\n type: Input\n }], alwaysShowPaginator: [{\n type: Input\n }], paginatorDropdownAppendTo: [{\n type: Input\n }], paginatorDropdownScrollHeight: [{\n type: Input\n }], currentPageReportTemplate: [{\n type: Input\n }], showCurrentPageReport: [{\n type: Input\n }], showJumpToPageDropdown: [{\n type: Input\n }], showFirstLastIcon: [{\n type: Input\n }], showPageLinks: [{\n type: Input\n }], lazy: [{\n type: Input\n }], lazyLoadOnInit: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], gridStyleClass: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], first: [{\n type: Input\n }], sortField: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }], value: [{\n type: Input\n }], layout: [{\n type: Input\n }], onLazyLoad: [{\n type: Output\n }], onPage: [{\n type: Output\n }], onSort: [{\n type: Output\n }], onChangeLayout: [{\n type: Output\n }], header: [{\n type: ContentChild,\n args: [Header]\n }], footer: [{\n type: ContentChild,\n args: [Footer]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass DataViewLayoutOptions {\n dv;\n style;\n styleClass;\n constructor(dv) {\n this.dv = dv;\n }\n changeLayout(event, layout) {\n this.dv.changeLayout(layout);\n event.preventDefault();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewLayoutOptions, deps: [{ token: DataView }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: DataViewLayoutOptions, selector: \"p-dataViewLayoutOptions\", inputs: { style: \"style\", styleClass: \"styleClass\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => BarsIcon), selector: \"BarsIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ThLargeIcon), selector: \"ThLargeIcon\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewLayoutOptions, decorators: [{\n type: Component,\n args: [{\n selector: 'p-dataViewLayoutOptions',\n template: `\n
    \n \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: DataView }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }] } });\nclass DataViewModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewModule, declarations: [DataView, DataViewLayoutOptions], imports: [CommonModule, SharedModule, PaginatorModule, SpinnerIcon, BarsIcon, ThLargeIcon], exports: [DataView, SharedModule, DataViewLayoutOptions] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewModule, imports: [CommonModule, SharedModule, PaginatorModule, SpinnerIcon, BarsIcon, ThLargeIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DataViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, PaginatorModule, SpinnerIcon, BarsIcon, ThLargeIcon],\n exports: [DataView, SharedModule, DataViewLayoutOptions],\n declarations: [DataView, DataViewLayoutOptions]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DataView, DataViewLayoutOptions, DataViewModule };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass WindowMaximizeIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: WindowMaximizeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: WindowMaximizeIcon, isStandalone: true, selector: \"WindowMaximizeIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: WindowMaximizeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'WindowMaximizeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WindowMaximizeIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass WindowMinimizeIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: WindowMinimizeIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: WindowMinimizeIcon, isStandalone: true, selector: \"WindowMinimizeIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: WindowMinimizeIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'WindowMinimizeIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WindowMinimizeIcon };\n","import { style, animate, animation, useAnimation, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChild, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/focustrap';\nimport { FocusTrapModule } from 'primeng/focustrap';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { WindowMaximizeIcon } from 'primeng/icons/windowmaximize';\nimport { WindowMinimizeIcon } from 'primeng/icons/windowminimize';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\n\nconst showAnimation = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{transition}}')]);\nconst hideAnimation = animation([animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))]);\n/**\n * Dialog is a container to display content in an overlay window.\n * @group Components\n */\nclass Dialog {\n document;\n platformId;\n el;\n renderer;\n zone;\n cd;\n config;\n /**\n * Title text of the dialog.\n * @group Props\n */\n header;\n /**\n * Enables dragging to change the position using header.\n * @group Props\n */\n draggable = true;\n /**\n * Enables resizing of the content.\n * @group Props\n */\n resizable = true;\n /**\n * Defines the left offset of dialog.\n * @group Props\n * @deprecated positionLeft property is deprecated.\n */\n get positionLeft() {\n return 0;\n }\n set positionLeft(_positionLeft) {\n console.log('positionLeft property is deprecated.');\n }\n /**\n * Defines the top offset of dialog.\n * @group Props\n * @deprecated positionTop property is deprecated.\n */\n get positionTop() {\n return 0;\n }\n set positionTop(_positionTop) {\n console.log('positionTop property is deprecated.');\n }\n /**\n * Style of the content section.\n * @group Props\n */\n contentStyle;\n /**\n * Style class of the content.\n * @group Props\n */\n contentStyleClass;\n /**\n * Defines if background should be blocked when dialog is displayed.\n * @group Props\n */\n modal = false;\n /**\n * Specifies if pressing escape key should hide the dialog.\n * @group Props\n */\n closeOnEscape = true;\n /**\n * Specifies if clicking the modal background should hide the dialog.\n * @group Props\n */\n dismissableMask = false;\n /**\n * When enabled dialog is displayed in RTL direction.\n * @group Props\n */\n rtl = false;\n /**\n * Adds a close icon to the header to hide the dialog.\n * @group Props\n */\n closable = true;\n /**\n * Defines if the component is responsive.\n * @group Props\n * @deprecated Responsive property is deprecated.\n */\n get responsive() {\n return false;\n }\n set responsive(_responsive) {\n console.log('Responsive property is deprecated.');\n }\n /**\n * Target element to attach the dialog, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo;\n /**\n * Object literal to define widths per screen size.\n * @group Props\n */\n breakpoints;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Style class of the mask.\n * @group Props\n */\n maskStyleClass;\n /**\n * Style of the mask.\n * @group Props\n */\n maskStyle;\n /**\n * Whether to show the header or not.\n * @group Props\n */\n showHeader = true;\n /**\n * Defines the breakpoint of the component responsive.\n * @group Props\n * @deprecated Breakpoint property is not utilized and deprecated. Use breakpoints or CSS media queries instead.\n */\n get breakpoint() {\n return 649;\n }\n set breakpoint(_breakpoint) {\n console.log('Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.');\n }\n /**\n * Whether background scroll should be blocked when dialog is visible.\n * @group Props\n */\n blockScroll = false;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Minimum value for the left coordinate of dialog in dragging.\n * @group Props\n */\n minX = 0;\n /**\n * Minimum value for the top coordinate of dialog in dragging.\n * @group Props\n */\n minY = 0;\n /**\n * When enabled, first button receives focus on show.\n * @group Props\n */\n focusOnShow = true;\n /**\n * Whether the dialog can be displayed full screen.\n * @group Props\n */\n maximizable = false;\n /**\n * Keeps dialog in the viewport.\n * @group Props\n */\n keepInViewport = true;\n /**\n * When enabled, can only focus on elements inside the dialog.\n * @group Props\n */\n focusTrap = true;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Name of the close icon.\n * @group Props\n */\n closeIcon;\n /**\n * Defines a string that labels the close button for accessibility.\n * @group Props\n */\n closeAriaLabel;\n /**\n * Index of the close button in tabbing order.\n * @group Props\n */\n closeTabindex = '-1';\n /**\n * Name of the minimize icon.\n * @group Props\n */\n minimizeIcon;\n /**\n * Name of the maximize icon.\n * @group Props\n */\n maximizeIcon;\n /**\n * Specifies the visibility of the dialog.\n * @group Props\n */\n get visible() {\n return this._visible;\n }\n set visible(value) {\n this._visible = value;\n if (this._visible && !this.maskVisible) {\n this.maskVisible = true;\n }\n }\n /**\n * Inline style of the component.\n * @group Props\n */\n get style() {\n return this._style;\n }\n set style(value) {\n if (value) {\n this._style = { ...value };\n this.originalStyle = value;\n }\n }\n /**\n * Position of the dialog.\n * @group Props\n */\n get position() {\n return this._position;\n }\n set position(value) {\n this._position = value;\n switch (value) {\n case 'topleft':\n case 'bottomleft':\n case 'left':\n this.transformOptions = 'translate3d(-100%, 0px, 0px)';\n break;\n case 'topright':\n case 'bottomright':\n case 'right':\n this.transformOptions = 'translate3d(100%, 0px, 0px)';\n break;\n case 'bottom':\n this.transformOptions = 'translate3d(0px, 100%, 0px)';\n break;\n case 'top':\n this.transformOptions = 'translate3d(0px, -100%, 0px)';\n break;\n default:\n this.transformOptions = 'scale(0.7)';\n break;\n }\n }\n /**\n * Callback to invoke when dialog is shown.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke when dialog is hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n /**\n * This EventEmitter is used to notify changes in the visibility state of a component.\n * @param {boolean} value - New value.\n * @group Emits\n */\n visibleChange = new EventEmitter();\n /**\n * Callback to invoke when dialog resizing is initiated.\n * @param {MouseEvent} event - Mouse event.\n * @group Emits\n */\n onResizeInit = new EventEmitter();\n /**\n * Callback to invoke when dialog resizing is completed.\n * @param {MouseEvent} event - Mouse event.\n * @group Emits\n */\n onResizeEnd = new EventEmitter();\n /**\n * Callback to invoke when dialog dragging is completed.\n * @param {DragEvent} event - Drag event.\n * @group Emits\n */\n onDragEnd = new EventEmitter();\n /**\n * Callback to invoke when dialog maximized or unmaximized.\n * @group Emits\n */\n onMaximize = new EventEmitter();\n headerFacet;\n footerFacet;\n templates;\n headerViewChild;\n contentViewChild;\n footerViewChild;\n headerTemplate;\n contentTemplate;\n footerTemplate;\n maximizeIconTemplate;\n closeIconTemplate;\n minimizeIconTemplate;\n headlessTemplate;\n _visible = false;\n maskVisible;\n container;\n wrapper;\n dragging;\n ariaLabelledBy;\n documentDragListener;\n documentDragEndListener;\n resizing;\n documentResizeListener;\n documentResizeEndListener;\n documentEscapeListener;\n maskClickListener;\n lastPageX;\n lastPageY;\n preventVisibleChangePropagation;\n maximized;\n preMaximizeContentHeight;\n preMaximizeContainerWidth;\n preMaximizeContainerHeight;\n preMaximizePageX;\n preMaximizePageY;\n id = UniqueComponentId();\n _style = {};\n _position = 'center';\n originalStyle;\n transformOptions = 'scale(0.7)';\n styleElement;\n window;\n constructor(document, platformId, el, renderer, zone, cd, config) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.zone = zone;\n this.cd = cd;\n this.config = config;\n this.window = this.document.defaultView;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n case 'maximizeicon':\n this.maximizeIconTemplate = item.template;\n break;\n case 'minimizeicon':\n this.minimizeIconTemplate = item.template;\n break;\n case 'headless':\n this.headlessTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n if (this.breakpoints) {\n this.createStyle();\n }\n }\n getAriaLabelledBy() {\n return this.header !== null ? UniqueComponentId() + '_header' : null;\n }\n focus() {\n let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n close(event) {\n this.visibleChange.emit(false);\n event.preventDefault();\n }\n enableModality() {\n if (this.closable && this.dismissableMask) {\n this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n this.close(event);\n }\n });\n }\n if (this.modal) {\n DomHandler.blockBodyScroll();\n }\n }\n disableModality() {\n if (this.wrapper) {\n if (this.dismissableMask) {\n this.unbindMaskClickListener();\n }\n if (this.modal) {\n DomHandler.unblockBodyScroll();\n }\n if (!this.cd.destroyed) {\n this.cd.detectChanges();\n }\n }\n }\n maximize() {\n this.maximized = !this.maximized;\n if (!this.modal && !this.blockScroll) {\n if (this.maximized) {\n DomHandler.blockBodyScroll();\n }\n else {\n DomHandler.unblockBodyScroll();\n }\n }\n this.onMaximize.emit({ maximized: this.maximized });\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n moveOnTop() {\n if (this.autoZIndex) {\n ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n }\n }\n createStyle() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.styleElement) {\n this.styleElement = this.renderer.createElement('style');\n this.styleElement.type = 'text/css';\n this.renderer.appendChild(this.document.head, this.styleElement);\n let innerHTML = '';\n for (let breakpoint in this.breakpoints) {\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n .p-dialog[${this.id}]:not(.p-dialog-maximized) {\n width: ${this.breakpoints[breakpoint]} !important;\n }\n }\n `;\n }\n this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);\n }\n }\n }\n initDrag(event) {\n if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass(event.target.parentElement, 'p-dialog-header-icon')) {\n return;\n }\n if (this.draggable) {\n this.dragging = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n this.container.style.margin = '0';\n DomHandler.addClass(this.document.body, 'p-unselectable-text');\n }\n }\n onKeydown(event) {\n if (this.focusTrap) {\n if (event.which === 9) {\n event.preventDefault();\n let focusableElements = DomHandler.getFocusableElements(this.container);\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n }\n else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0)\n focusableElements[focusableElements.length - 1].focus();\n else\n focusableElements[focusedIndex - 1].focus();\n }\n else {\n if (focusedIndex == -1 || focusedIndex === focusableElements.length - 1)\n focusableElements[0].focus();\n else\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n }\n }\n onDrag(event) {\n if (this.dragging) {\n const containerWidth = DomHandler.getOuterWidth(this.container);\n const containerHeight = DomHandler.getOuterHeight(this.container);\n const deltaX = event.pageX - this.lastPageX;\n const deltaY = event.pageY - this.lastPageY;\n const offset = this.container.getBoundingClientRect();\n const containerComputedStyle = getComputedStyle(this.container);\n const leftMargin = parseFloat(containerComputedStyle.marginLeft);\n const topMargin = parseFloat(containerComputedStyle.marginTop);\n const leftPos = offset.left + deltaX - leftMargin;\n const topPos = offset.top + deltaY - topMargin;\n const viewport = DomHandler.getViewport();\n this.container.style.position = 'fixed';\n if (this.keepInViewport) {\n if (leftPos >= this.minX && leftPos + containerWidth < viewport.width) {\n this._style.left = `${leftPos}px`;\n this.lastPageX = event.pageX;\n this.container.style.left = `${leftPos}px`;\n }\n if (topPos >= this.minY && topPos + containerHeight < viewport.height) {\n this._style.top = `${topPos}px`;\n this.lastPageY = event.pageY;\n this.container.style.top = `${topPos}px`;\n }\n }\n else {\n this.lastPageX = event.pageX;\n this.container.style.left = `${leftPos}px`;\n this.lastPageY = event.pageY;\n this.container.style.top = `${topPos}px`;\n }\n }\n }\n endDrag(event) {\n if (this.dragging) {\n this.dragging = false;\n DomHandler.removeClass(this.document.body, 'p-unselectable-text');\n this.cd.detectChanges();\n this.onDragEnd.emit(event);\n }\n }\n resetPosition() {\n this.container.style.position = '';\n this.container.style.left = '';\n this.container.style.top = '';\n this.container.style.margin = '';\n }\n //backward compatibility\n center() {\n this.resetPosition();\n }\n initResize(event) {\n if (this.resizable) {\n this.resizing = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n DomHandler.addClass(this.document.body, 'p-unselectable-text');\n this.onResizeInit.emit(event);\n }\n }\n onResize(event) {\n if (this.resizing) {\n let deltaX = event.pageX - this.lastPageX;\n let deltaY = event.pageY - this.lastPageY;\n let containerWidth = DomHandler.getOuterWidth(this.container);\n let containerHeight = DomHandler.getOuterHeight(this.container);\n let contentHeight = DomHandler.getOuterHeight(this.contentViewChild?.nativeElement);\n let newWidth = containerWidth + deltaX;\n let newHeight = containerHeight + deltaY;\n let minWidth = this.container.style.minWidth;\n let minHeight = this.container.style.minHeight;\n let offset = this.container.getBoundingClientRect();\n let viewport = DomHandler.getViewport();\n let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);\n if (hasBeenDragged) {\n newWidth += deltaX;\n newHeight += deltaY;\n }\n if ((!minWidth || newWidth > parseInt(minWidth)) && offset.left + newWidth < viewport.width) {\n this._style.width = newWidth + 'px';\n this.container.style.width = this._style.width;\n }\n if ((!minHeight || newHeight > parseInt(minHeight)) && offset.top + newHeight < viewport.height) {\n this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';\n if (this._style.height) {\n this._style.height = newHeight + 'px';\n this.container.style.height = this._style.height;\n }\n }\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n }\n }\n resizeEnd(event) {\n if (this.resizing) {\n this.resizing = false;\n DomHandler.removeClass(this.document.body, 'p-unselectable-text');\n this.onResizeEnd.emit(event);\n }\n }\n bindGlobalListeners() {\n if (this.draggable) {\n this.bindDocumentDragListener();\n this.bindDocumentDragEndListener();\n }\n if (this.resizable) {\n this.bindDocumentResizeListeners();\n }\n if (this.closeOnEscape && this.closable) {\n this.bindDocumentEscapeListener();\n }\n }\n unbindGlobalListeners() {\n this.unbindDocumentDragListener();\n this.unbindDocumentDragEndListener();\n this.unbindDocumentResizeListeners();\n this.unbindDocumentEscapeListener();\n }\n bindDocumentDragListener() {\n if (!this.documentDragListener) {\n this.zone.runOutsideAngular(() => {\n this.documentDragListener = this.renderer.listen(this.window, 'mousemove', this.onDrag.bind(this));\n });\n }\n }\n unbindDocumentDragListener() {\n if (this.documentDragListener) {\n this.documentDragListener();\n this.documentDragListener = null;\n }\n }\n bindDocumentDragEndListener() {\n if (!this.documentDragEndListener) {\n this.zone.runOutsideAngular(() => {\n this.documentDragEndListener = this.renderer.listen(this.window, 'mouseup', this.endDrag.bind(this));\n });\n }\n }\n unbindDocumentDragEndListener() {\n if (this.documentDragEndListener) {\n this.documentDragEndListener();\n this.documentDragEndListener = null;\n }\n }\n bindDocumentResizeListeners() {\n if (!this.documentResizeListener && !this.documentResizeEndListener) {\n this.zone.runOutsideAngular(() => {\n this.documentResizeListener = this.renderer.listen(this.window, 'mousemove', this.onResize.bind(this));\n this.documentResizeEndListener = this.renderer.listen(this.window, 'mouseup', this.resizeEnd.bind(this));\n });\n }\n }\n unbindDocumentResizeListeners() {\n if (this.documentResizeListener && this.documentResizeEndListener) {\n this.documentResizeListener();\n this.documentResizeEndListener();\n this.documentResizeListener = null;\n this.documentResizeEndListener = null;\n }\n }\n bindDocumentEscapeListener() {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n if (event.which == 27) {\n this.close(event);\n }\n });\n }\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.wrapper);\n else\n DomHandler.appendChild(this.wrapper, this.appendTo);\n }\n }\n restoreAppend() {\n if (this.container && this.appendTo) {\n this.renderer.appendChild(this.el.nativeElement, this.wrapper);\n }\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = this.container?.parentElement;\n this.appendContainer();\n this.moveOnTop();\n this.bindGlobalListeners();\n this.container?.setAttribute(this.id, '');\n if (this.modal) {\n this.enableModality();\n }\n if (!this.modal && this.blockScroll) {\n DomHandler.addClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.focusOnShow) {\n this.focus();\n }\n break;\n case 'void':\n if (this.wrapper && this.modal) {\n DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n }\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.onContainerDestroy();\n this.onHide.emit({});\n this.cd.markForCheck();\n break;\n case 'visible':\n this.onShow.emit({});\n break;\n }\n }\n onContainerDestroy() {\n this.unbindGlobalListeners();\n this.dragging = false;\n this.maskVisible = false;\n if (this.maximized) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n this.document.body.style.removeProperty('--scrollbar-width');\n this.maximized = false;\n }\n if (this.modal) {\n this.disableModality();\n }\n if (this.blockScroll) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n this.container = null;\n this.wrapper = null;\n this._style = this.originalStyle ? { ...this.originalStyle } : {};\n }\n destroyStyle() {\n if (this.styleElement) {\n this.renderer.removeChild(this.document.head, this.styleElement);\n this.styleElement = null;\n }\n }\n ngOnDestroy() {\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n this.destroyStyle();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Dialog, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Dialog, selector: \"p-dialog\", inputs: { header: \"header\", draggable: \"draggable\", resizable: \"resizable\", positionLeft: \"positionLeft\", positionTop: \"positionTop\", contentStyle: \"contentStyle\", contentStyleClass: \"contentStyleClass\", modal: \"modal\", closeOnEscape: \"closeOnEscape\", dismissableMask: \"dismissableMask\", rtl: \"rtl\", closable: \"closable\", responsive: \"responsive\", appendTo: \"appendTo\", breakpoints: \"breakpoints\", styleClass: \"styleClass\", maskStyleClass: \"maskStyleClass\", maskStyle: \"maskStyle\", showHeader: \"showHeader\", breakpoint: \"breakpoint\", blockScroll: \"blockScroll\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", minX: \"minX\", minY: \"minY\", focusOnShow: \"focusOnShow\", maximizable: \"maximizable\", keepInViewport: \"keepInViewport\", focusTrap: \"focusTrap\", transitionOptions: \"transitionOptions\", closeIcon: \"closeIcon\", closeAriaLabel: \"closeAriaLabel\", closeTabindex: \"closeTabindex\", minimizeIcon: \"minimizeIcon\", maximizeIcon: \"maximizeIcon\", visible: \"visible\", style: \"style\", position: \"position\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\", visibleChange: \"visibleChange\", onResizeInit: \"onResizeInit\", onResizeEnd: \"onResizeEnd\", onDragEnd: \"onDragEnd\", onMaximize: \"onMaximize\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"headerViewChild\", first: true, predicate: [\"titlebar\"], descendants: true }, { propertyName: \"contentViewChild\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"footerViewChild\", first: true, predicate: [\"footer\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n\n \n
    \n
    \n {{ header }}\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 `, isInline: true, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.FocusTrap), selector: \"[pFocusTrap]\", inputs: [\"pFocusTrapDisabled\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"component\", type: i0.forwardRef(() => WindowMaximizeIcon), selector: \"WindowMaximizeIcon\" }, { kind: \"component\", type: i0.forwardRef(() => WindowMinimizeIcon), selector: \"WindowMinimizeIcon\" }], animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Dialog, decorators: [{\n type: Component,\n args: [{ selector: 'p-dialog', template: `\n \n \n \n \n \n\n \n
    \n
    \n {{ header }}\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 `, animations: [trigger('animation', [transition('void => visible', [useAnimation(showAnimation)]), transition('visible => void', [useAnimation(hideAnimation)])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-draggable .p-dialog-header{cursor:move}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translateZ(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0!important;left:0!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }], propDecorators: { header: [{\n type: Input\n }], draggable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], positionLeft: [{\n type: Input\n }], positionTop: [{\n type: Input\n }], contentStyle: [{\n type: Input\n }], contentStyleClass: [{\n type: Input\n }], modal: [{\n type: Input\n }], closeOnEscape: [{\n type: Input\n }], dismissableMask: [{\n type: Input\n }], rtl: [{\n type: Input\n }], closable: [{\n type: Input\n }], responsive: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], breakpoints: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], maskStyleClass: [{\n type: Input\n }], maskStyle: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], breakpoint: [{\n type: Input\n }], blockScroll: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], minX: [{\n type: Input\n }], minY: [{\n type: Input\n }], focusOnShow: [{\n type: Input\n }], maximizable: [{\n type: Input\n }], keepInViewport: [{\n type: Input\n }], focusTrap: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], closeAriaLabel: [{\n type: Input\n }], closeTabindex: [{\n type: Input\n }], minimizeIcon: [{\n type: Input\n }], maximizeIcon: [{\n type: Input\n }], visible: [{\n type: Input\n }], style: [{\n type: Input\n }], position: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], onResizeInit: [{\n type: Output\n }], onResizeEnd: [{\n type: Output\n }], onDragEnd: [{\n type: Output\n }], onMaximize: [{\n type: Output\n }], headerFacet: [{\n type: ContentChild,\n args: [Header]\n }], footerFacet: [{\n type: ContentChild,\n args: [Footer]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], headerViewChild: [{\n type: ViewChild,\n args: ['titlebar']\n }], contentViewChild: [{\n type: ViewChild,\n args: ['content']\n }], footerViewChild: [{\n type: ViewChild,\n args: ['footer']\n }] } });\nclass DialogModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: DialogModule, declarations: [Dialog], imports: [CommonModule, FocusTrapModule, RippleModule, TimesIcon, WindowMaximizeIcon, WindowMinimizeIcon], exports: [Dialog, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DialogModule, imports: [CommonModule, FocusTrapModule, RippleModule, TimesIcon, WindowMaximizeIcon, WindowMinimizeIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, FocusTrapModule, RippleModule, TimesIcon, WindowMaximizeIcon, WindowMinimizeIcon],\n exports: [Dialog, SharedModule],\n declarations: [Dialog]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Dialog, DialogModule };\n","import { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\n\n/**\n * pDraggable directive apply draggable behavior to any element.\n * @group Components\n */\nclass Draggable {\n el;\n zone;\n renderer;\n scope;\n /**\n * Defines the cursor style.\n * @group Props\n */\n dragEffect;\n /**\n * Selector to define the drag handle, by default anywhere on the target element is a drag handle to start dragging.\n * @group Props\n */\n dragHandle;\n /**\n * Callback to invoke when drag begins.\n * @param {DragEvent} event - Drag event.\n * @group Emits\n */\n onDragStart = new EventEmitter();\n /**\n * Callback to invoke when drag ends.\n * @param {DragEvent} event - Drag event.\n * @group Emits\n */\n onDragEnd = new EventEmitter();\n /**\n * Callback to invoke on dragging.\n * @param {DragEvent} event - Drag event.\n * @group Emits\n */\n onDrag = new EventEmitter();\n handle;\n dragListener;\n mouseDownListener;\n mouseUpListener;\n _pDraggableDisabled = false;\n constructor(el, zone, renderer) {\n this.el = el;\n this.zone = zone;\n this.renderer = renderer;\n }\n get pDraggableDisabled() {\n return this._pDraggableDisabled;\n }\n set pDraggableDisabled(_pDraggableDisabled) {\n this._pDraggableDisabled = _pDraggableDisabled;\n if (this._pDraggableDisabled) {\n this.unbindMouseListeners();\n }\n else {\n this.el.nativeElement.draggable = true;\n this.bindMouseListeners();\n }\n }\n ngAfterViewInit() {\n if (!this.pDraggableDisabled) {\n this.el.nativeElement.draggable = true;\n this.bindMouseListeners();\n }\n }\n bindDragListener() {\n if (!this.dragListener) {\n this.zone.runOutsideAngular(() => {\n this.dragListener = this.renderer.listen(this.el.nativeElement, 'drag', this.drag.bind(this));\n });\n }\n }\n unbindDragListener() {\n if (this.dragListener) {\n this.zone.runOutsideAngular(() => {\n this.dragListener && this.dragListener();\n this.dragListener = null;\n });\n }\n }\n bindMouseListeners() {\n if (!this.mouseDownListener && !this.mouseUpListener) {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.mousedown.bind(this));\n this.mouseUpListener = this.renderer.listen(this.el.nativeElement, 'mouseup', this.mouseup.bind(this));\n });\n }\n }\n unbindMouseListeners() {\n if (this.mouseDownListener && this.mouseUpListener) {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener && this.mouseDownListener();\n this.mouseUpListener && this.mouseUpListener();\n this.mouseDownListener = null;\n this.mouseUpListener = null;\n });\n }\n }\n drag(event) {\n this.onDrag.emit(event);\n }\n dragStart(event) {\n if (this.allowDrag() && !this.pDraggableDisabled) {\n if (this.dragEffect) {\n event.dataTransfer.effectAllowed = this.dragEffect;\n }\n event.dataTransfer.setData('text', this.scope);\n this.onDragStart.emit(event);\n this.bindDragListener();\n }\n else {\n event.preventDefault();\n }\n }\n dragEnd(event) {\n this.onDragEnd.emit(event);\n this.unbindDragListener();\n }\n mousedown(event) {\n this.handle = event.target;\n }\n mouseup(event) {\n this.handle = null;\n }\n allowDrag() {\n if (this.dragHandle && this.handle)\n return DomHandler.matches(this.handle, this.dragHandle);\n else\n return true;\n }\n ngOnDestroy() {\n this.unbindDragListener();\n this.unbindMouseListeners();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Draggable, selector: \"[pDraggable]\", inputs: { scope: [\"pDraggable\", \"scope\"], dragEffect: \"dragEffect\", dragHandle: \"dragHandle\", pDraggableDisabled: \"pDraggableDisabled\" }, outputs: { onDragStart: \"onDragStart\", onDragEnd: \"onDragEnd\", onDrag: \"onDrag\" }, host: { listeners: { \"dragstart\": \"dragStart($event)\", \"dragend\": \"dragEnd($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Draggable, decorators: [{\n type: Directive,\n args: [{\n selector: '[pDraggable]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { scope: [{\n type: Input,\n args: ['pDraggable']\n }], dragEffect: [{\n type: Input\n }], dragHandle: [{\n type: Input\n }], onDragStart: [{\n type: Output\n }], onDragEnd: [{\n type: Output\n }], onDrag: [{\n type: Output\n }], pDraggableDisabled: [{\n type: Input\n }], dragStart: [{\n type: HostListener,\n args: ['dragstart', ['$event']]\n }], dragEnd: [{\n type: HostListener,\n args: ['dragend', ['$event']]\n }] } });\n/**\n * pDroppable directive apply droppable behavior to any element.\n * @group Components\n */\nclass Droppable {\n el;\n zone;\n renderer;\n scope;\n /**\n * Whether the element is droppable, useful for conditional cases.\n * @group Props\n */\n pDroppableDisabled = false;\n /**\n * Defines the cursor style, valid values are none, copy, move, link, copyMove, copyLink, linkMove and all.\n * @group Props\n */\n dropEffect;\n /**\n * Callback to invoke when a draggable enters drop area.\n * @group Emits\n */\n onDragEnter = new EventEmitter();\n /**\n * Callback to invoke when a draggable leave drop area.\n * @group Emits\n */\n onDragLeave = new EventEmitter();\n /**\n * Callback to invoke when a draggable is dropped onto drop area.\n * @group Emits\n */\n onDrop = new EventEmitter();\n constructor(el, zone, renderer) {\n this.el = el;\n this.zone = zone;\n this.renderer = renderer;\n }\n dragOverListener;\n ngAfterViewInit() {\n if (!this.pDroppableDisabled) {\n this.bindDragOverListener();\n }\n }\n bindDragOverListener() {\n if (!this.dragOverListener) {\n this.zone.runOutsideAngular(() => {\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.dragOver.bind(this));\n });\n }\n }\n unbindDragOverListener() {\n if (this.dragOverListener) {\n this.zone.runOutsideAngular(() => {\n this.dragOverListener && this.dragOverListener();\n this.dragOverListener = null;\n });\n }\n }\n dragOver(event) {\n event.preventDefault();\n }\n drop(event) {\n if (this.allowDrop(event)) {\n DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n event.preventDefault();\n this.onDrop.emit(event);\n }\n }\n dragEnter(event) {\n event.preventDefault();\n if (this.dropEffect) {\n event.dataTransfer.dropEffect = this.dropEffect;\n }\n DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');\n this.onDragEnter.emit(event);\n }\n dragLeave(event) {\n event.preventDefault();\n DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n this.onDragLeave.emit(event);\n }\n allowDrop(event) {\n let dragScope = event.dataTransfer.getData('text');\n if (typeof this.scope == 'string' && dragScope == this.scope) {\n return true;\n }\n else if (Array.isArray(this.scope)) {\n for (let j = 0; j < this.scope.length; j++) {\n if (dragScope == this.scope[j]) {\n return true;\n }\n }\n }\n return false;\n }\n ngOnDestroy() {\n this.unbindDragOverListener();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Droppable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Droppable, selector: \"[pDroppable]\", inputs: { scope: [\"pDroppable\", \"scope\"], pDroppableDisabled: \"pDroppableDisabled\", dropEffect: \"dropEffect\" }, outputs: { onDragEnter: \"onDragEnter\", onDragLeave: \"onDragLeave\", onDrop: \"onDrop\" }, host: { listeners: { \"drop\": \"drop($event)\", \"dragenter\": \"dragEnter($event)\", \"dragleave\": \"dragLeave($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Droppable, decorators: [{\n type: Directive,\n args: [{\n selector: '[pDroppable]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { scope: [{\n type: Input,\n args: ['pDroppable']\n }], pDroppableDisabled: [{\n type: Input\n }], dropEffect: [{\n type: Input\n }], onDragEnter: [{\n type: Output\n }], onDragLeave: [{\n type: Output\n }], onDrop: [{\n type: Output\n }], drop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], dragEnter: [{\n type: HostListener,\n args: ['dragenter', ['$event']]\n }], dragLeave: [{\n type: HostListener,\n args: ['dragleave', ['$event']]\n }] } });\nclass DragDropModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: DragDropModule, declarations: [Draggable, Droppable], imports: [CommonModule], exports: [Draggable, Droppable] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DragDropModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Draggable, Droppable],\n declarations: [Draggable, Droppable]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DragDropModule, Draggable, Droppable };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport Quill from 'quill';\n\nconst EDITOR_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Editor),\n multi: true\n};\n/**\n * Editor groups a collection of contents in tabs.\n * @group Components\n */\nclass Editor {\n platformId;\n el;\n /**\n * Inline style of the container.\n * @group Props\n */\n style;\n /**\n * Style class of the container.\n * @group Props\n */\n styleClass;\n /**\n * Placeholder text to show when editor is empty.\n * @group Props\n */\n placeholder;\n /**\n * Whitelist of formats to display, see here for available options.\n * @group Props\n */\n formats;\n /**\n * Modules configuration of Editor, see here for available options.\n * @group Props\n */\n modules;\n /**\n * DOM Element or a CSS selector for a DOM Element, within which the editor’s p elements (i.e. tooltips, etc.) should be confined. Currently, it only considers left and right boundaries.\n * @group Props\n */\n bounds;\n /**\n * DOM Element or a CSS selector for a DOM Element, specifying which container has the scrollbars (i.e. overflow-y: auto), if is has been changed from the default ql-editor with custom CSS. Necessary to fix scroll jumping bugs when Quill is set to auto grow its height, and another ancestor container is responsible from the scrolling..\n * @group Props\n */\n scrollingContainer;\n /**\n * Shortcut for debug. Note debug is a static method and will affect other instances of Quill editors on the page. Only warning and error messages are enabled by default.\n * @group Props\n */\n debug;\n /**\n * Whether to instantiate the editor to read-only mode.\n * @group Props\n */\n get readonly() {\n return this._readonly;\n }\n set readonly(val) {\n this._readonly = val;\n // if (this.quill) {\n // if (this._readonly) this.quill.disable();\n // else this.quill.enable();\n // }\n }\n /**\n * Callback to invoke when the quill modules are loaded.\n * @param {EditorInitEvent} event - custom event.\n * @group Emits\n */\n onInit = new EventEmitter();\n /**\n * Callback to invoke when text of editor changes.\n * @param {EditorTextChangeEvent} event - custom event.\n * @group Emits\n */\n onTextChange = new EventEmitter();\n /**\n * Callback to invoke when selection of the text changes.\n * @param {EditorSelectionChangeEvent} event - custom event.\n * @group Emits\n */\n onSelectionChange = new EventEmitter();\n templates;\n toolbar;\n value;\n delayedCommand = null;\n _readonly = false;\n onModelChange = () => { };\n onModelTouched = () => { };\n quill;\n headerTemplate;\n get isAttachedQuillEditorToDOM() {\n return this.quillElements?.editorElement?.isConnected;\n }\n quillElements;\n constructor(platformId, el) {\n this.platformId = platformId;\n this.el = el;\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.initQuillElements();\n if (this.isAttachedQuillEditorToDOM) {\n this.initQuillEditor();\n }\n }\n }\n ngAfterViewChecked() {\n if (isPlatformBrowser(this.platformId)) {\n // The problem is inside the `quill` library, we need to wait for a new release.\n // Function `isLine` - used `getComputedStyle`, it was rewritten in the next release.\n // (We need to wait for a release higher than 1.3.7).\n // These checks and code can be removed.\n if (!this.quill && this.isAttachedQuillEditorToDOM) {\n this.initQuillEditor();\n }\n // Can also be deleted after updating `quill`.\n if (this.delayedCommand && this.isAttachedQuillEditorToDOM) {\n this.delayedCommand();\n this.delayedCommand = null;\n }\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n }\n });\n }\n writeValue(value) {\n this.value = value;\n if (this.quill) {\n if (value) {\n const command = () => {\n this.quill.setContents(this.quill.clipboard.convert(this.value));\n };\n if (this.isAttachedQuillEditorToDOM) {\n command();\n }\n else {\n this.delayedCommand = command;\n }\n }\n else {\n const command = () => {\n this.quill.setText('');\n };\n if (this.isAttachedQuillEditorToDOM) {\n command();\n }\n else {\n this.delayedCommand = command;\n }\n }\n }\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n getQuill() {\n return this.quill;\n }\n initQuillEditor() {\n this.initQuillElements();\n const { toolbarElement, editorElement } = this.quillElements;\n let defaultModule = { toolbar: toolbarElement };\n let modules = this.modules ? { ...defaultModule, ...this.modules } : defaultModule;\n this.quill = new Quill(editorElement, {\n modules: modules,\n placeholder: this.placeholder,\n readOnly: this.readonly,\n theme: 'snow',\n formats: this.formats,\n bounds: this.bounds,\n debug: this.debug,\n scrollingContainer: this.scrollingContainer\n });\n if (this.value) {\n this.quill.setContents(this.quill.clipboard.convert(this.value));\n }\n this.quill.on('text-change', (delta, oldContents, source) => {\n if (source === 'user') {\n let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;\n let text = this.quill.getText().trim();\n if (html === '


    ') {\n html = null;\n }\n this.onTextChange.emit({\n htmlValue: html,\n textValue: text,\n delta: delta,\n source: source\n });\n this.onModelChange(html);\n this.onModelTouched();\n }\n });\n this.quill.on('selection-change', (range, oldRange, source) => {\n this.onSelectionChange.emit({\n range: range,\n oldRange: oldRange,\n source: source\n });\n });\n this.onInit.emit({\n editor: this.quill\n });\n }\n initQuillElements() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.quillElements) {\n this.quillElements = {\n editorElement: DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-content'),\n toolbarElement: DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-toolbar')\n };\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Editor, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Editor, selector: \"p-editor\", inputs: { style: \"style\", styleClass: \"styleClass\", placeholder: \"placeholder\", formats: \"formats\", modules: \"modules\", bounds: \"bounds\", scrollingContainer: \"scrollingContainer\", debug: \"debug\", readonly: \"readonly\" }, outputs: { onInit: \"onInit\", onTextChange: \"onTextChange\", onSelectionChange: \"onSelectionChange\" }, host: { classAttribute: \"p-element\" }, providers: [EDITOR_VALUE_ACCESSOR], queries: [{ propertyName: \"toolbar\", first: true, predicate: Header, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\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
    \n `, isInline: true, styles: [\".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Editor, decorators: [{\n type: Component,\n args: [{ selector: 'p-editor', template: `\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
    \n `, providers: [EDITOR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\\n\"] }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], formats: [{\n type: Input\n }], modules: [{\n type: Input\n }], bounds: [{\n type: Input\n }], scrollingContainer: [{\n type: Input\n }], debug: [{\n type: Input\n }], readonly: [{\n type: Input\n }], onInit: [{\n type: Output\n }], onTextChange: [{\n type: Output\n }], onSelectionChange: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], toolbar: [{\n type: ContentChild,\n args: [Header]\n }] } });\nclass EditorModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: EditorModule, declarations: [Editor], imports: [CommonModule], exports: [Editor, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EditorModule, imports: [CommonModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: EditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Editor, SharedModule],\n declarations: [Editor]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { EDITOR_VALUE_ACCESSOR, Editor, EditorModule };\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { PlusIcon } from 'primeng/icons/plus';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * Fieldset is a grouping component with the optional content toggle feature.\n * @group Components\n */\nclass Fieldset {\n el;\n /**\n * Header text of the fieldset.\n * @group Props\n */\n legend;\n /**\n * When specified, content can toggled by clicking the legend.\n * @group Props\n * @defaultValue false\n */\n toggleable;\n /**\n * Defines the default visibility state of the content.\n * * @group Props\n */\n collapsed = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Transition options of the panel animation.\n * @group Props\n */\n transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n /**\n * Emits when the collapsed state changes.\n * @param {boolean} value - New value.\n * @group Emits\n */\n collapsedChange = new EventEmitter();\n /**\n * Callback to invoke before panel toggle.\n * @param {PanelBeforeToggleEvent} event - Custom toggle event\n * @group Emits\n */\n onBeforeToggle = new EventEmitter();\n /**\n * Callback to invoke after panel toggle.\n * @param {PanelAfterToggleEvent} event - Custom toggle event\n * @group Emits\n */\n onAfterToggle = new EventEmitter();\n templates;\n get id() {\n return UniqueComponentId();\n }\n get buttonAriaLabel() {\n return this.legend;\n }\n animating;\n headerTemplate;\n contentTemplate;\n collapseIconTemplate;\n expandIconTemplate;\n constructor(el) {\n this.el = el;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'expandicon':\n this.expandIconTemplate = item.template;\n break;\n case 'collapseicon':\n this.collapseIconTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n toggle(event) {\n if (this.animating) {\n return false;\n }\n this.animating = true;\n this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });\n if (this.collapsed)\n this.expand();\n else\n this.collapse();\n this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });\n event.preventDefault();\n }\n onKeyDown(event) {\n if (event.code === 'Enter' || event.code === 'Space') {\n this.toggle(event);\n event.preventDefault();\n }\n }\n expand() {\n this.collapsed = false;\n this.collapsedChange.emit(this.collapsed);\n }\n collapse() {\n this.collapsed = true;\n this.collapsedChange.emit(this.collapsed);\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n onToggleDone() {\n this.animating = false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Fieldset, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Fieldset, selector: \"p-fieldset\", inputs: { legend: \"legend\", toggleable: \"toggleable\", collapsed: \"collapsed\", style: \"style\", styleClass: \"styleClass\", transitionOptions: \"transitionOptions\" }, outputs: { collapsedChange: \"collapsedChange\", onBeforeToggle: \"onBeforeToggle\", onAfterToggle: \"onAfterToggle\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ legend }}\n \n \n \n \n \n
    \n \n \n
    \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}.p-fieldset-toggleable.p-fieldset-expanded>.p-toggleable-content:not(.ng-animating){overflow:visible}.p-fieldset-toggleable .p-toggleable-content{overflow:hidden}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => MinusIcon), selector: \"MinusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => PlusIcon), selector: \"PlusIcon\" }], animations: [\n trigger('fieldsetContent', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Fieldset, decorators: [{\n type: Component,\n args: [{ selector: 'p-fieldset', template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ legend }}\n \n \n \n \n \n
    \n \n \n
    \n \n \n `, animations: [\n trigger('fieldsetContent', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}.p-fieldset-toggleable.p-fieldset-expanded>.p-toggleable-content:not(.ng-animating){overflow:visible}.p-fieldset-toggleable .p-toggleable-content{overflow:hidden}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { legend: [{\n type: Input\n }], toggleable: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], collapsedChange: [{\n type: Output\n }], onBeforeToggle: [{\n type: Output\n }], onAfterToggle: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass FieldsetModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FieldsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: FieldsetModule, declarations: [Fieldset], imports: [CommonModule, RippleModule, MinusIcon, PlusIcon], exports: [Fieldset, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FieldsetModule, imports: [CommonModule, RippleModule, MinusIcon, PlusIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: FieldsetModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule, MinusIcon, PlusIcon],\n exports: [Fieldset, SharedModule],\n declarations: [Fieldset]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Fieldset, FieldsetModule };\n","import { style, animate, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ChevronLeftIcon } from 'primeng/icons/chevronleft';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { WindowMaximizeIcon } from 'primeng/icons/windowmaximize';\nimport { WindowMinimizeIcon } from 'primeng/icons/windowminimize';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport * as i4 from 'primeng/focustrap';\nimport { FocusTrapModule } from 'primeng/focustrap';\nimport { platformBrowser } from '@angular/platform-browser';\n\n/**\n * Galleria is an advanced content gallery component.\n * @group Components\n */\nclass Galleria {\n document;\n platformId;\n element;\n cd;\n config;\n /**\n * Index of the first item.\n * @group Props\n */\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n /**\n * Whether to display the component on fullscreen.\n * @group Props\n */\n fullScreen = false;\n /**\n * Unique identifier of the element.\n * @group Props\n */\n id;\n /**\n * An array of objects to display.\n * @group Props\n */\n value;\n /**\n * Number of items per page.\n * @group Props\n */\n numVisible = 3;\n /**\n * An array of options for responsive design.\n * @see {GalleriaResponsiveOptions}\n * @group Props\n */\n responsiveOptions;\n /**\n * Whether to display navigation buttons in item section.\n * @group Props\n */\n showItemNavigators = false;\n /**\n * Whether to display navigation buttons in thumbnail container.\n * @group Props\n */\n showThumbnailNavigators = true;\n /**\n * Whether to display navigation buttons on item hover.\n * @group Props\n */\n showItemNavigatorsOnHover = false;\n /**\n * When enabled, item is changed on indicator hover.\n * @group Props\n */\n changeItemOnIndicatorHover = false;\n /**\n * Defines if scrolling would be infinite.\n * @group Props\n */\n circular = false;\n /**\n * Items are displayed with a slideshow in autoPlay mode.\n * @group Props\n */\n autoPlay = false;\n /**\n * When enabled, autorun should stop by click.\n * @group Props\n */\n shouldStopAutoplayByClick = true;\n /**\n * Time in milliseconds to scroll items.\n * @group Props\n */\n transitionInterval = 4000;\n /**\n * Whether to display thumbnail container.\n * @group Props\n */\n showThumbnails = true;\n /**\n * Position of thumbnails.\n * @group Props\n */\n thumbnailsPosition = 'bottom';\n /**\n * Height of the viewport in vertical thumbnail.\n * @group Props\n */\n verticalThumbnailViewPortHeight = '300px';\n /**\n * Whether to display indicator container.\n * @group Props\n */\n showIndicators = false;\n /**\n * When enabled, indicator container is displayed on item container.\n * @group Props\n */\n showIndicatorsOnItem = false;\n /**\n * Position of indicators.\n * @group Props\n */\n indicatorsPosition = 'bottom';\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Style class of the mask on fullscreen mode.\n * @group Props\n */\n maskClass;\n /**\n * Style class of the component on fullscreen mode. Otherwise, the 'class' property can be used.\n * @group Props\n */\n containerClass;\n /**\n * Inline style of the component on fullscreen mode. Otherwise, the 'style' property can be used.\n * @group Props\n */\n containerStyle;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Specifies the visibility of the mask on fullscreen mode.\n * @group Props\n */\n get visible() {\n return this._visible;\n }\n set visible(visible) {\n this._visible = visible;\n if (this._visible && !this.maskVisible) {\n this.maskVisible = true;\n }\n }\n /**\n * Callback to invoke on active index change.\n * @param {number} number - Active index.\n * @group Emits\n */\n activeIndexChange = new EventEmitter();\n /**\n * Callback to invoke on visiblity change.\n * @param {boolean} boolean - Visible value.\n * @group Emits\n */\n visibleChange = new EventEmitter();\n mask;\n container;\n templates;\n _visible = false;\n _activeIndex = 0;\n headerFacet;\n footerFacet;\n indicatorFacet;\n captionFacet;\n closeIconTemplate;\n previousThumbnailIconTemplate;\n nextThumbnailIconTemplate;\n itemPreviousIconTemplate;\n itemNextIconTemplate;\n maskVisible = false;\n constructor(document, platformId, element, cd, config) {\n this.document = document;\n this.platformId = platformId;\n this.element = element;\n this.cd = cd;\n this.config = config;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerFacet = item.template;\n break;\n case 'footer':\n this.footerFacet = item.template;\n break;\n case 'indicator':\n this.indicatorFacet = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n case 'itemnexticon':\n this.itemNextIconTemplate = item.template;\n break;\n case 'itempreviousicon':\n this.itemPreviousIconTemplate = item.template;\n break;\n case 'previousthumbnailicon':\n this.previousThumbnailIconTemplate = item.template;\n break;\n case 'nextthumbnailicon':\n this.nextThumbnailIconTemplate = item.template;\n break;\n case 'caption':\n this.captionFacet = item.template;\n break;\n }\n });\n }\n ngOnChanges(simpleChanges) {\n if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n this.numVisible = simpleChanges.value.currentValue.length;\n }\n }\n onMaskHide() {\n this.visible = false;\n this.visibleChange.emit(false);\n }\n onActiveItemChange(index) {\n if (this.activeIndex !== index) {\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n }\n }\n onAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.enableModality();\n setTimeout(() => {\n DomHandler.focus(DomHandler.findSingle(this.container.nativeElement, '[data-pc-section=\"closebutton\"]'));\n }, 25);\n break;\n case 'void':\n DomHandler.addClass(this.mask?.nativeElement, 'p-component-overlay-leave');\n break;\n }\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n this.disableModality();\n break;\n }\n }\n enableModality() {\n DomHandler.blockBodyScroll();\n this.cd.markForCheck();\n if (this.mask) {\n ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n }\n }\n disableModality() {\n DomHandler.unblockBodyScroll();\n this.maskVisible = false;\n this.cd.markForCheck();\n if (this.mask) {\n ZIndexUtils.clear(this.mask.nativeElement);\n }\n }\n ngOnDestroy() {\n if (this.fullScreen) {\n DomHandler.removeClass(this.document.body, 'p-overflow-hidden');\n }\n if (this.mask) {\n this.disableModality();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Galleria, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Galleria, selector: \"p-galleria\", inputs: { activeIndex: \"activeIndex\", fullScreen: \"fullScreen\", id: \"id\", value: \"value\", numVisible: \"numVisible\", responsiveOptions: \"responsiveOptions\", showItemNavigators: \"showItemNavigators\", showThumbnailNavigators: \"showThumbnailNavigators\", showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", circular: \"circular\", autoPlay: \"autoPlay\", shouldStopAutoplayByClick: \"shouldStopAutoplayByClick\", transitionInterval: \"transitionInterval\", showThumbnails: \"showThumbnails\", thumbnailsPosition: \"thumbnailsPosition\", verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\", showIndicators: \"showIndicators\", showIndicatorsOnItem: \"showIndicatorsOnItem\", indicatorsPosition: \"indicatorsPosition\", baseZIndex: \"baseZIndex\", maskClass: \"maskClass\", containerClass: \"containerClass\", containerStyle: \"containerStyle\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", visible: \"visible\" }, outputs: { activeIndexChange: \"activeIndexChange\", visibleChange: \"visibleChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"mask\", first: true, predicate: [\"mask\"], descendants: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n
    \n \n\n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => GalleriaContent), selector: \"p-galleriaContent\", inputs: [\"activeIndex\", \"value\", \"numVisible\"], outputs: [\"maskHide\", \"activeItemChange\"] }], animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Galleria, decorators: [{\n type: Component,\n args: [{ selector: 'p-galleria', template: `\n
    \n \n \n
    \n \n\n \n \n \n `, animations: [\n trigger('animation', [\n transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),\n transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }], propDecorators: { activeIndex: [{\n type: Input\n }], fullScreen: [{\n type: Input\n }], id: [{\n type: Input\n }], value: [{\n type: Input\n }], numVisible: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], showItemNavigators: [{\n type: Input\n }], showThumbnailNavigators: [{\n type: Input\n }], showItemNavigatorsOnHover: [{\n type: Input\n }], changeItemOnIndicatorHover: [{\n type: Input\n }], circular: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], shouldStopAutoplayByClick: [{\n type: Input\n }], transitionInterval: [{\n type: Input\n }], showThumbnails: [{\n type: Input\n }], thumbnailsPosition: [{\n type: Input\n }], verticalThumbnailViewPortHeight: [{\n type: Input\n }], showIndicators: [{\n type: Input\n }], showIndicatorsOnItem: [{\n type: Input\n }], indicatorsPosition: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], maskClass: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], containerStyle: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], visible: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], mask: [{\n type: ViewChild,\n args: ['mask']\n }], container: [{\n type: ViewChild,\n args: ['container']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass GalleriaContent {\n galleria;\n cd;\n differs;\n config;\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n value = [];\n numVisible;\n maskHide = new EventEmitter();\n activeItemChange = new EventEmitter();\n closeButton;\n id;\n _activeIndex = 0;\n slideShowActive = true;\n interval;\n styleClass;\n differ;\n constructor(galleria, cd, differs, config) {\n this.galleria = galleria;\n this.cd = cd;\n this.differs = differs;\n this.config = config;\n this.id = this.galleria.id || UniqueComponentId();\n this.differ = this.differs.find(this.galleria).create();\n }\n ngDoCheck() {\n if (isPlatformBrowser(this.galleria.platformId)) {\n const changes = this.differ.diff(this.galleria);\n if (changes && changes.forEachItem.length > 0) {\n // Because we change the properties of the parent component,\n // and the children take our entity from the injector.\n // We can tell the children to redraw themselves when we change the properties of the parent component.\n // Since we have an onPush strategy\n this.cd.markForCheck();\n }\n }\n }\n galleriaClass() {\n const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n return (this.galleria.containerClass ? this.galleria.containerClass + ' ' : '') + (thumbnailsPosClass ? thumbnailsPosClass + ' ' : '') + (indicatorPosClass ? indicatorPosClass + ' ' : '');\n }\n startSlideShow() {\n if (isPlatformBrowser(this.galleria.platformId)) {\n this.interval = setInterval(() => {\n let activeIndex = this.galleria.circular && this.value.length - 1 === this.activeIndex ? 0 : this.activeIndex + 1;\n this.onActiveIndexChange(activeIndex);\n this.activeIndex = activeIndex;\n }, this.galleria.transitionInterval);\n this.slideShowActive = true;\n }\n }\n stopSlideShow() {\n if (this.galleria.autoPlay && !this.galleria.shouldStopAutoplayByClick) {\n return;\n }\n if (this.interval) {\n clearInterval(this.interval);\n }\n this.slideShowActive = false;\n }\n getPositionClass(preClassName, position) {\n const positions = ['top', 'left', 'bottom', 'right'];\n const pos = positions.find((item) => item === position);\n return pos ? `${preClassName}-${pos}` : '';\n }\n isVertical() {\n return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n }\n onActiveIndexChange(index) {\n if (this.activeIndex !== index) {\n this.activeIndex = index;\n this.activeItemChange.emit(this.activeIndex);\n }\n }\n closeAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.close : undefined;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: GalleriaContent, selector: \"p-galleriaContent\", inputs: { activeIndex: \"activeIndex\", value: \"value\", numVisible: \"numVisible\" }, outputs: { maskHide: \"maskHide\", activeItemChange: \"activeItemChange\" }, viewQueries: [{ propertyName: \"closeButton\", first: true, predicate: [\"closeButton\"], descendants: true }], ngImport: i0, template: `\n 0\"\n [ngClass]=\"{\n 'p-galleria p-component': true,\n 'p-galleria-fullscreen': this.galleria.fullScreen,\n 'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,\n 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen\n }\"\n [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\"\n [class]=\"galleriaClass()\"\n pFocusTrap\n >\n \n
    \n \n
    \n
    \n \n\n \n
    \n
    \n \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.FocusTrap), selector: \"[pFocusTrap]\", inputs: [\"pFocusTrapDisabled\"] }, { kind: \"component\", type: i0.forwardRef(() => GalleriaItemSlot), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }, { kind: \"component\", type: i0.forwardRef(() => GalleriaItem), selector: \"p-galleriaItem\", inputs: [\"id\", \"circular\", \"value\", \"showItemNavigators\", \"showIndicators\", \"slideShowActive\", \"changeItemOnIndicatorHover\", \"autoPlay\", \"templates\", \"indicatorFacet\", \"captionFacet\", \"activeIndex\"], outputs: [\"startSlideShow\", \"stopSlideShow\", \"onActiveIndexChange\"] }, { kind: \"component\", type: i0.forwardRef(() => GalleriaThumbnails), selector: \"p-galleriaThumbnails\", inputs: [\"containerId\", \"value\", \"isVertical\", \"slideShowActive\", \"circular\", \"responsiveOptions\", \"contentHeight\", \"showThumbnailNavigators\", \"templates\", \"numVisible\", \"activeIndex\"], outputs: [\"onActiveIndexChange\", \"stopSlideShow\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaContent, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaContent',\n template: `\n 0\"\n [ngClass]=\"{\n 'p-galleria p-component': true,\n 'p-galleria-fullscreen': this.galleria.fullScreen,\n 'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,\n 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen\n }\"\n [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\"\n [class]=\"galleriaClass()\"\n pFocusTrap\n >\n \n
    \n \n
    \n
    \n \n\n \n
    \n
    \n \n
    \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: () => [{ type: Galleria }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i1.PrimeNGConfig }], propDecorators: { activeIndex: [{\n type: Input\n }], value: [{\n type: Input\n }], numVisible: [{\n type: Input\n }], maskHide: [{\n type: Output\n }], activeItemChange: [{\n type: Output\n }], closeButton: [{\n type: ViewChild,\n args: ['closeButton']\n }] } });\nclass GalleriaItemSlot {\n templates;\n index;\n get item() {\n return this._item;\n }\n set item(item) {\n this._item = item;\n if (this.templates) {\n this.templates.forEach((item) => {\n if (item.getType() === this.type) {\n switch (this.type) {\n case 'item':\n case 'caption':\n case 'thumbnail':\n this.context = { $implicit: this.item };\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n }\n type;\n contentTemplate;\n context;\n _item;\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n if (item.getType() === this.type) {\n switch (this.type) {\n case 'item':\n case 'caption':\n case 'thumbnail':\n this.context = { $implicit: this.item };\n this.contentTemplate = item.template;\n break;\n case 'indicator':\n this.context = { $implicit: this.index };\n this.contentTemplate = item.template;\n break;\n default:\n this.context = {};\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: { templates: \"templates\", index: \"index\", item: \"item\", type: \"type\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaItemSlot, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaItemSlot',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { templates: [{\n type: Input\n }], index: [{\n type: Input\n }], item: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\nclass GalleriaItem {\n galleria;\n id;\n circular = false;\n value;\n showItemNavigators = false;\n showIndicators = true;\n slideShowActive = true;\n changeItemOnIndicatorHover = true;\n autoPlay = false;\n templates;\n indicatorFacet;\n captionFacet;\n startSlideShow = new EventEmitter();\n stopSlideShow = new EventEmitter();\n onActiveIndexChange = new EventEmitter();\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._activeIndex = activeIndex;\n }\n get activeItem() {\n return this.value && this.value[this._activeIndex];\n }\n _activeIndex = 0;\n constructor(galleria) {\n this.galleria = galleria;\n }\n ngOnChanges({ autoPlay }) {\n if (autoPlay?.currentValue) {\n this.startSlideShow.emit();\n }\n if (autoPlay && autoPlay.currentValue === false) {\n this.stopTheSlideShow();\n }\n }\n next() {\n let nextItemIndex = this.activeIndex + 1;\n let activeIndex = this.circular && this.value.length - 1 === this.activeIndex ? 0 : nextItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n }\n prev() {\n let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n let activeIndex = this.circular && this.activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n }\n stopTheSlideShow() {\n if (this.slideShowActive && this.stopSlideShow) {\n this.stopSlideShow.emit();\n }\n }\n navForward(e) {\n this.stopTheSlideShow();\n this.next();\n if (e && e.cancelable) {\n e.preventDefault();\n }\n }\n navBackward(e) {\n this.stopTheSlideShow();\n this.prev();\n if (e && e.cancelable) {\n e.preventDefault();\n }\n }\n onIndicatorClick(index) {\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n }\n onIndicatorMouseEnter(index) {\n if (this.changeItemOnIndicatorHover) {\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n }\n }\n onIndicatorKeyDown(event, index) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.stopTheSlideShow();\n this.onActiveIndexChange.emit(index);\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n isNavForwardDisabled() {\n return !this.circular && this.activeIndex === this.value.length - 1;\n }\n isNavBackwardDisabled() {\n return !this.circular && this.activeIndex === 0;\n }\n isIndicatorItemActive(index) {\n return this.activeIndex === index;\n }\n ariaSlideLabel() {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.slide : undefined;\n }\n ariaSlideNumber(value) {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.slideNumber.replace(/{slideNumber}/g, value) : undefined;\n }\n ariaPageLabel(value) {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.pageLabel.replace(/{page}/g, value) : undefined;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaItem, deps: [{ token: Galleria }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: GalleriaItem, selector: \"p-galleriaItem\", inputs: { id: \"id\", circular: \"circular\", value: \"value\", showItemNavigators: \"showItemNavigators\", showIndicators: \"showIndicators\", slideShowActive: \"slideShowActive\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", autoPlay: \"autoPlay\", templates: \"templates\", indicatorFacet: \"indicatorFacet\", captionFacet: \"captionFacet\", activeIndex: \"activeIndex\" }, outputs: { startSlideShow: \"startSlideShow\", stopSlideShow: \"stopSlideShow\", onActiveIndexChange: \"onActiveIndexChange\" }, usesOnChanges: true, ngImport: i0, template: `\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 `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronLeftIcon), selector: \"ChevronLeftIcon\" }, { kind: \"component\", type: i0.forwardRef(() => GalleriaItemSlot), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaItem',\n template: `\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 changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: () => [{ type: Galleria }], propDecorators: { id: [{\n type: Input\n }], circular: [{\n type: Input\n }], value: [{\n type: Input\n }], showItemNavigators: [{\n type: Input\n }], showIndicators: [{\n type: Input\n }], slideShowActive: [{\n type: Input\n }], changeItemOnIndicatorHover: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], templates: [{\n type: Input\n }], indicatorFacet: [{\n type: Input\n }], captionFacet: [{\n type: Input\n }], startSlideShow: [{\n type: Output\n }], stopSlideShow: [{\n type: Output\n }], onActiveIndexChange: [{\n type: Output\n }], activeIndex: [{\n type: Input\n }] } });\nclass GalleriaThumbnails {\n galleria;\n document;\n platformId;\n renderer;\n cd;\n containerId;\n value;\n isVertical = false;\n slideShowActive = false;\n circular = false;\n responsiveOptions;\n contentHeight = '300px';\n showThumbnailNavigators = true;\n templates;\n onActiveIndexChange = new EventEmitter();\n stopSlideShow = new EventEmitter();\n itemsContainer;\n get numVisible() {\n return this._numVisible;\n }\n set numVisible(numVisible) {\n this._numVisible = numVisible;\n this._oldNumVisible = this.d_numVisible;\n this.d_numVisible = numVisible;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n set activeIndex(activeIndex) {\n this._oldactiveIndex = this._activeIndex;\n this._activeIndex = activeIndex;\n }\n index;\n startPos = null;\n thumbnailsStyle = null;\n sortedResponsiveOptions = null;\n totalShiftedItems = 0;\n page = 0;\n documentResizeListener;\n _numVisible = 0;\n d_numVisible = 0;\n _oldNumVisible = 0;\n _activeIndex = 0;\n _oldactiveIndex = 0;\n constructor(galleria, document, platformId, renderer, cd) {\n this.galleria = galleria;\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.cd = cd;\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.createStyle();\n if (this.responsiveOptions) {\n this.bindDocumentListeners();\n }\n }\n }\n ngAfterContentChecked() {\n let totalShiftedItems = this.totalShiftedItems;\n if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n if (this._activeIndex <= this.getMedianItemIndex()) {\n totalShiftedItems = 0;\n }\n else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex() + 1;\n }\n else {\n totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex();\n }\n if (totalShiftedItems !== this.totalShiftedItems) {\n this.totalShiftedItems = totalShiftedItems;\n }\n if (this.itemsContainer && this.itemsContainer.nativeElement) {\n this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n }\n if (this._oldactiveIndex !== this._activeIndex) {\n DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n }\n this._oldactiveIndex = this._activeIndex;\n this._oldNumVisible = this.d_numVisible;\n }\n }\n ngAfterViewInit() {\n if (platformBrowser(this.platformId)) {\n this.calculatePosition();\n }\n }\n createStyle() {\n if (!this.thumbnailsStyle) {\n this.thumbnailsStyle = this.document.createElement('style');\n this.document.body.appendChild(this.thumbnailsStyle);\n }\n let innerHTML = `\n #${this.containerId} .p-galleria-thumbnail-item {\n flex: 1 0 ${100 / this.d_numVisible}%\n }\n `;\n if (this.responsiveOptions) {\n this.sortedResponsiveOptions = [...this.responsiveOptions];\n this.sortedResponsiveOptions.sort((data1, data2) => {\n const value1 = data1.breakpoint;\n const value2 = data2.breakpoint;\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, undefined, { numeric: true });\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return -1 * result;\n });\n for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n let res = this.sortedResponsiveOptions[i];\n innerHTML += `\n @media screen and (max-width: ${res.breakpoint}) {\n #${this.containerId} .p-galleria-thumbnail-item {\n flex: 1 0 ${100 / res.numVisible}%\n }\n }\n `;\n }\n }\n this.thumbnailsStyle.innerHTML = innerHTML;\n }\n calculatePosition() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.itemsContainer && this.sortedResponsiveOptions) {\n let windowWidth = window.innerWidth;\n let matchedResponsiveData = {\n numVisible: this._numVisible\n };\n for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n let res = this.sortedResponsiveOptions[i];\n if (parseInt(res.breakpoint, 10) >= windowWidth) {\n matchedResponsiveData = res;\n }\n }\n if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n this.d_numVisible = matchedResponsiveData.numVisible;\n this.cd.markForCheck();\n }\n }\n }\n }\n getTabIndex(index) {\n return this.isItemActive(index) ? 0 : null;\n }\n navForward(e) {\n this.stopTheSlideShow();\n let nextItemIndex = this._activeIndex + 1;\n if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.totalShiftedItems < this.getTotalPageNumber() - 1 || this.circular)) {\n this.step(-1);\n }\n let activeIndex = this.circular && this.value.length - 1 === this._activeIndex ? 0 : nextItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n navBackward(e) {\n this.stopTheSlideShow();\n let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n let diff = prevItemIndex + this.totalShiftedItems;\n if (this.d_numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.totalShiftedItems !== 0 || this.circular)) {\n this.step(1);\n }\n let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n this.onActiveIndexChange.emit(activeIndex);\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n onItemClick(index) {\n this.stopTheSlideShow();\n let selectedItemIndex = index;\n if (selectedItemIndex !== this._activeIndex) {\n const diff = selectedItemIndex + this.totalShiftedItems;\n let dir = 0;\n if (selectedItemIndex < this._activeIndex) {\n dir = this.d_numVisible - diff - 1 - this.getMedianItemIndex();\n if (dir > 0 && -1 * this.totalShiftedItems !== 0) {\n this.step(dir);\n }\n }\n else {\n dir = this.getMedianItemIndex() - diff;\n if (dir < 0 && -1 * this.totalShiftedItems < this.getTotalPageNumber() - 1) {\n this.step(dir);\n }\n }\n this.activeIndex = selectedItemIndex;\n this.onActiveIndexChange.emit(this.activeIndex);\n }\n }\n onThumbnailKeydown(event, index) {\n if (event.code === 'Enter' || event.code === 'Space') {\n this.onItemClick(index);\n event.preventDefault();\n }\n switch (event.code) {\n case 'ArrowRight':\n this.onRightKey();\n break;\n case 'ArrowLeft':\n this.onLeftKey();\n break;\n case 'Home':\n this.onHomeKey();\n event.preventDefault();\n break;\n case 'End':\n this.onEndKey();\n event.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n case 'Tab':\n this.onTabKey();\n break;\n default:\n break;\n }\n }\n onRightKey() {\n const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"]');\n const activeIndex = this.findFocusedIndicatorIndex();\n this.changedFocusedIndicator(activeIndex, activeIndex + 1 === indicators.length ? indicators.length - 1 : activeIndex + 1);\n }\n onLeftKey() {\n const activeIndex = this.findFocusedIndicatorIndex();\n this.changedFocusedIndicator(activeIndex, activeIndex - 1 <= 0 ? 0 : activeIndex - 1);\n }\n onHomeKey() {\n const activeIndex = this.findFocusedIndicatorIndex();\n this.changedFocusedIndicator(activeIndex, 0);\n }\n onEndKey() {\n const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"]');\n const activeIndex = this.findFocusedIndicatorIndex();\n this.changedFocusedIndicator(activeIndex, indicators.length - 1);\n }\n onTabKey() {\n const indicators = [...DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"]')];\n const highlightedIndex = indicators.findIndex((ind) => DomHandler.getAttribute(ind, 'data-p-active') === true);\n const activeIndicator = DomHandler.findSingle(this.itemsContainer.nativeElement, '[tabindex=\"0\"]');\n const activeIndex = indicators.findIndex((ind) => ind === activeIndicator.parentElement);\n indicators[activeIndex].children[0].tabIndex = '-1';\n indicators[highlightedIndex].children[0].tabIndex = '0';\n }\n findFocusedIndicatorIndex() {\n const indicators = [...DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"]')];\n const activeIndicator = DomHandler.findSingle(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"] > [tabindex=\"0\"]');\n return indicators.findIndex((ind) => ind === activeIndicator.parentElement);\n }\n changedFocusedIndicator(prevInd, nextInd) {\n const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section=\"thumbnailitem\"]');\n indicators[prevInd].children[0].tabIndex = '-1';\n indicators[nextInd].children[0].tabIndex = '0';\n indicators[nextInd].children[0].focus();\n }\n step(dir) {\n let totalShiftedItems = this.totalShiftedItems + dir;\n if (dir < 0 && -1 * totalShiftedItems + this.d_numVisible > this.value.length - 1) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n else if (dir > 0 && totalShiftedItems > 0) {\n totalShiftedItems = 0;\n }\n if (this.circular) {\n if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n totalShiftedItems = 0;\n }\n else if (dir > 0 && this._activeIndex === 0) {\n totalShiftedItems = this.d_numVisible - this.value.length;\n }\n }\n if (this.itemsContainer) {\n DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n }\n this.totalShiftedItems = totalShiftedItems;\n }\n stopTheSlideShow() {\n if (this.slideShowActive && this.stopSlideShow) {\n this.stopSlideShow.emit();\n }\n }\n changePageOnTouch(e, diff) {\n if (diff < 0) {\n // left\n this.navForward(e);\n }\n else {\n // right\n this.navBackward(e);\n }\n }\n getTotalPageNumber() {\n return this.value.length > this.d_numVisible ? this.value.length - this.d_numVisible + 1 : 0;\n }\n getMedianItemIndex() {\n let index = Math.floor(this.d_numVisible / 2);\n return this.d_numVisible % 2 ? index : index - 1;\n }\n onTransitionEnd() {\n if (this.itemsContainer && this.itemsContainer.nativeElement) {\n DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n this.itemsContainer.nativeElement.style.transition = '';\n }\n }\n onTouchEnd(e) {\n let touchobj = e.changedTouches[0];\n if (this.isVertical) {\n this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n }\n else {\n this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n }\n }\n onTouchMove(e) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n onTouchStart(e) {\n let touchobj = e.changedTouches[0];\n this.startPos = {\n x: touchobj.pageX,\n y: touchobj.pageY\n };\n }\n isNavBackwardDisabled() {\n return (!this.circular && this._activeIndex === 0) || this.value.length <= this.d_numVisible;\n }\n isNavForwardDisabled() {\n return (!this.circular && this._activeIndex === this.value.length - 1) || this.value.length <= this.d_numVisible;\n }\n firstItemAciveIndex() {\n return this.totalShiftedItems * -1;\n }\n lastItemActiveIndex() {\n return this.firstItemAciveIndex() + this.d_numVisible - 1;\n }\n isItemActive(index) {\n return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n }\n bindDocumentListeners() {\n if (isPlatformBrowser(this.platformId)) {\n const window = this.document.defaultView || 'window';\n this.documentResizeListener = this.renderer.listen(window, 'resize', () => {\n this.calculatePosition();\n });\n }\n }\n unbindDocumentListeners() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n ngOnDestroy() {\n if (this.responsiveOptions) {\n this.unbindDocumentListeners();\n }\n if (this.thumbnailsStyle) {\n this.thumbnailsStyle.parentNode?.removeChild(this.thumbnailsStyle);\n }\n }\n ariaPrevButtonLabel() {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.prevPageLabel : undefined;\n }\n ariaNextButtonLabel() {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.nextPageLabel : undefined;\n }\n ariaPageLabel(value) {\n return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.pageLabel.replace(/{page}/g, value) : undefined;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: Galleria }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: GalleriaThumbnails, selector: \"p-galleriaThumbnails\", inputs: { containerId: \"containerId\", value: \"value\", isVertical: \"isVertical\", slideShowActive: \"slideShowActive\", circular: \"circular\", responsiveOptions: \"responsiveOptions\", contentHeight: \"contentHeight\", showThumbnailNavigators: \"showThumbnailNavigators\", templates: \"templates\", numVisible: \"numVisible\", activeIndex: \"activeIndex\" }, outputs: { onActiveIndexChange: \"onActiveIndexChange\", stopSlideShow: \"stopSlideShow\" }, viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], ngImport: i0, template: `\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 `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronLeftIcon), selector: \"ChevronLeftIcon\" }, { kind: \"component\", type: i0.forwardRef(() => GalleriaItemSlot), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaThumbnails, decorators: [{\n type: Component,\n args: [{\n selector: 'p-galleriaThumbnails',\n template: `\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 changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: () => [{ type: Galleria }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { containerId: [{\n type: Input\n }], value: [{\n type: Input\n }], isVertical: [{\n type: Input\n }], slideShowActive: [{\n type: Input\n }], circular: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], contentHeight: [{\n type: Input\n }], showThumbnailNavigators: [{\n type: Input\n }], templates: [{\n type: Input\n }], onActiveIndexChange: [{\n type: Output\n }], stopSlideShow: [{\n type: Output\n }], itemsContainer: [{\n type: ViewChild,\n args: ['itemsContainer']\n }], numVisible: [{\n type: Input\n }], activeIndex: [{\n type: Input\n }] } });\nclass GalleriaModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaModule, imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule, CommonModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: GalleriaModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule],\n exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };\n","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, signal, effect, PLATFORM_ID, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport * as i5 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDownIcon } from 'primeng/icons/angledown';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId } from 'primeng/utils';\n\nclass MegaMenuSub {\n el;\n megaMenu;\n id;\n items;\n itemTemplate;\n menuId;\n ariaLabel;\n ariaLabelledBy;\n level = 0;\n focusedItemId;\n disabled = false;\n orientation;\n activeItem;\n submenu;\n tabindex = 0;\n root = false;\n itemClick = new EventEmitter();\n itemMouseEnter = new EventEmitter();\n menuFocus = new EventEmitter();\n menuBlur = new EventEmitter();\n menuKeydown = new EventEmitter();\n menubarViewChild;\n constructor(el, megaMenu) {\n this.el = el;\n this.megaMenu = megaMenu;\n }\n onItemClick(event, processedItem) {\n this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });\n }\n getItemProp(processedItem, name, params = null) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;\n }\n getItemId(processedItem) {\n return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;\n }\n getSubListId(processedItem) {\n return `${this.getItemId(processedItem)}_list`;\n }\n getItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem': true,\n 'p-menuitem-active p-highlight': this.isItemActive(processedItem),\n 'p-focus': this.isItemFocused(processedItem),\n 'p-disabled': this.isItemDisabled(processedItem)\n };\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n getSeparatorItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem-separator': true\n };\n }\n getColumnClass(processedItem) {\n let length = this.isItemGroup(processedItem) ? processedItem.items.length : 0;\n let columnClass;\n switch (length) {\n case 2:\n columnClass = 'p-megamenu-col-6';\n break;\n case 3:\n columnClass = 'p-megamenu-col-4';\n break;\n case 4:\n columnClass = 'p-megamenu-col-3';\n break;\n case 6:\n columnClass = 'p-megamenu-col-2';\n break;\n default:\n columnClass = 'p-megamenu-col-12';\n break;\n }\n return columnClass;\n }\n getSubmenuHeaderClass(processedItem) {\n return {\n 'p-megamenu-submenu-header p-submenu-header': true,\n 'p-disabled': this.isItemDisabled(processedItem),\n ...this.getItemProp(processedItem, 'class')\n };\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemActive(processedItem) {\n return ObjectUtils.isNotEmpty(this.activeItem) ? this.activeItem.key === processedItem.key : false;\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemFocused(processedItem) {\n return this.focusedItemId === this.getItemId(processedItem);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n getAriaSetSize() {\n return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n }\n getAriaPosInset(index) {\n return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n }\n onItemMouseEnter(param) {\n const { event, processedItem } = param;\n this.itemMouseEnter.emit({ originalEvent: event, processedItem });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuSub, deps: [{ token: i0.ElementRef }, { token: forwardRef(() => MegaMenu) }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MegaMenuSub, selector: \"p-megaMenuSub\", inputs: { id: \"id\", items: \"items\", itemTemplate: \"itemTemplate\", menuId: \"menuId\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", level: \"level\", focusedItemId: \"focusedItemId\", disabled: \"disabled\", orientation: \"orientation\", activeItem: \"activeItem\", submenu: \"submenu\", tabindex: \"tabindex\", root: \"root\" }, outputs: { itemClick: \"itemClick\", itemMouseEnter: \"itemMouseEnter\", menuFocus: \"menuFocus\", menuBlur: \"menuBlur\", menuKeydown: \"menuKeydown\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"menubarViewChild\", first: true, predicate: [\"menubar\"], descendants: true, static: true }], ngImport: i0, template: `\n \n
  • {{ getItemLabel(submenu) }}
  • \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n {{ getItemProp(processedItem, 'badge') }}\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 `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleDownIcon), selector: \"AngleDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleRightIcon), selector: \"AngleRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MegaMenuSub), selector: \"p-megaMenuSub\", inputs: [\"id\", \"items\", \"itemTemplate\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"disabled\", \"orientation\", \"activeItem\", \"submenu\", \"tabindex\", \"root\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-megaMenuSub',\n template: `\n \n
  • {{ getItemLabel(submenu) }}
  • \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n {{ getItemProp(processedItem, 'badge') }}\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 encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: MegaMenu, decorators: [{\n type: Inject,\n args: [forwardRef(() => MegaMenu)]\n }] }], propDecorators: { id: [{\n type: Input\n }], items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], menuId: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], level: [{\n type: Input\n }], focusedItemId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], orientation: [{\n type: Input\n }], activeItem: [{\n type: Input\n }], submenu: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], root: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], itemMouseEnter: [{\n type: Output\n }], menuFocus: [{\n type: Output\n }], menuBlur: [{\n type: Output\n }], menuKeydown: [{\n type: Output\n }], menubarViewChild: [{\n type: ViewChild,\n args: ['menubar', { static: true }]\n }] } });\n/**\n * MegaMenu is navigation component that displays submenus together.\n * @group Components\n */\nclass MegaMenu {\n document;\n platformId;\n el;\n renderer;\n config;\n cd;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n this._processedItems = this.createProcessedItems(this._model || []);\n }\n get model() {\n return this._model;\n }\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Defines the orientation.\n * @group Props\n */\n orientation = 'horizontal';\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabel;\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n disabled = false;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n templates;\n menubutton;\n rootmenu;\n startTemplate;\n endTemplate;\n menuIconTemplate;\n submenuIconTemplate;\n itemTemplate;\n outsideClickListener;\n resizeListener;\n dirty = false;\n focused = false;\n activeItem = signal(null);\n focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });\n searchValue = '';\n searchTimeout;\n _processedItems;\n _model;\n get visibleItems() {\n const processedItem = ObjectUtils.isNotEmpty(this.activeItem()) ? this.activeItem() : null;\n return processedItem && processedItem.key === this.focusedItemInfo().parentKey\n ? processedItem.items.reduce((items, col) => {\n col.forEach((submenu) => {\n submenu.items.forEach((a) => {\n items.push(a);\n });\n });\n return items;\n }, [])\n : this.processedItems;\n }\n get processedItems() {\n if (!this._processedItems || !this._processedItems.length) {\n this._processedItems = this.createProcessedItems(this.model || []);\n }\n return this._processedItems;\n }\n get focusedItemId() {\n const focusedItem = this.focusedItemInfo();\n return focusedItem?.item && focusedItem.item?.id ? focusedItem.item.id : ObjectUtils.isNotEmpty(focusedItem.key) ? `${this.id}_${focusedItem.key}` : null;\n }\n constructor(document, platformId, el, renderer, config, cd) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.config = config;\n this.cd = cd;\n effect(() => {\n const activeItem = this.activeItem();\n if (ObjectUtils.isNotEmpty(activeItem)) {\n this.bindOutsideClickListener();\n this.bindResizeListener();\n }\n else {\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n }\n });\n }\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'start':\n this.startTemplate = item.template;\n break;\n case 'end':\n this.endTemplate = item.template;\n break;\n case 'menuicon':\n this.menuIconTemplate = item.template;\n break;\n case 'submenuicon':\n this.submenuIconTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n createProcessedItems(items, level = 0, parent = {}, parentKey = '', columnIndex) {\n const processedItems = [];\n items &&\n items.forEach((item, index) => {\n const key = (parentKey !== '' ? parentKey + '_' : '') + (columnIndex !== undefined ? columnIndex + '_' : '') + index;\n const newItem = {\n item,\n index,\n level,\n key,\n parent,\n parentKey,\n columnIndex: columnIndex !== undefined ? columnIndex : parent.columnIndex !== undefined ? parent.columnIndex : index\n };\n newItem['items'] =\n level === 0 && item.items && item.items.length > 0 ? item.items.map((_items, _index) => this.createProcessedItems(_items, level + 1, newItem, key, _index)) : this.createProcessedItems(item.items, level + 1, newItem, key);\n processedItems.push(newItem);\n });\n return processedItems;\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n onItemClick(event) {\n const { originalEvent, processedItem } = event;\n const grouped = this.isProcessedItemGroup(processedItem);\n const root = ObjectUtils.isEmpty(processedItem.parent);\n const selected = this.isSelected(processedItem);\n if (selected) {\n const { index, key, parentKey, item } = processedItem;\n this.activeItem.set(null);\n this.focusedItemInfo.set({ index, key, parentKey, item });\n this.dirty = !root;\n DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n else {\n if (grouped) {\n this.onItemChange(event);\n }\n else {\n const rootProcessedItem = root ? processedItem : this.activeItem();\n this.hide(originalEvent);\n this.changeFocusedItemInfo(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);\n DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n }\n }\n onItemMouseEnter(event) {\n if (!DomHandler.isTouchDevice()) {\n this.onItemChange(event);\n }\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n onItemChange(event) {\n const { processedItem, isFocus } = event;\n if (ObjectUtils.isEmpty(processedItem))\n return;\n const { index, key, parentKey, items, item } = processedItem;\n const grouped = ObjectUtils.isNotEmpty(items);\n if (grouped) {\n this.activeItem.set(processedItem);\n }\n this.focusedItemInfo.set({ index, key, parentKey, item });\n grouped && (this.dirty = true);\n isFocus && DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n hide(event, isFocus) {\n this.activeItem.set(null);\n this.focusedItemInfo.set({ index: -1, key: '', parentKey: '', item: null });\n isFocus && DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n this.dirty = false;\n }\n onMenuFocus(event) {\n this.focused = true;\n if (this.focusedItemInfo().index === -1) {\n const index = this.findFirstFocusedItemIndex();\n const processedItem = this.findVisibleItem(index);\n this.focusedItemInfo.set({ index, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });\n }\n }\n onMenuBlur(event) {\n this.focused = false;\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n this.searchValue = '';\n this.dirty = false;\n }\n onKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchItems(event, event.key);\n }\n break;\n }\n }\n findFirstFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n }\n findFirstItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n }\n findSelectedItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n }\n isProcessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n isSelected(processedItem) {\n return ObjectUtils.isNotEmpty(this.activeItem()) ? this.activeItem().key === processedItem.key : false;\n }\n isValidSelectedItem(processedItem) {\n return this.isValidItem(processedItem) && this.isSelected(processedItem);\n }\n isValidItem(processedItem) {\n return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);\n }\n isItemDisabled(item) {\n return this.getItemProp(item, 'disabled');\n }\n isItemSeparator(item) {\n return this.getItemProp(item, 'separator');\n }\n isItemMatched(processedItem) {\n return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n }\n isProccessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n searchItems(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let itemIndex = -1;\n let matched = false;\n if (this.focusedItemInfo().index !== -1) {\n itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));\n itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;\n }\n else {\n itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n }\n if (itemIndex !== -1) {\n matched = true;\n }\n if (itemIndex === -1 && this.focusedItemInfo().index === -1) {\n itemIndex = this.findFirstFocusedItemIndex();\n }\n if (itemIndex !== -1) {\n this.changeFocusedItemInfo(event, itemIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n getProccessedItemLabel(processedItem) {\n return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n }\n getItemLabel(item) {\n return this.getItemProp(item, 'label');\n }\n changeFocusedItemInfo(event, index) {\n const processedItem = this.findVisibleItem(index);\n if (ObjectUtils.isNotEmpty(processedItem)) {\n const { key, parentKey, item } = processedItem;\n this.focusedItemInfo.set({ index, key: key ? key : '', parentKey, item });\n }\n this.scrollInView();\n }\n onArrowDownKey(event) {\n if (this.orientation === 'horizontal') {\n if (ObjectUtils.isNotEmpty(this.activeItem()) && this.activeItem().key === this.focusedItemInfo().key) {\n const { key, item } = this.activeItem();\n this.focusedItemInfo.set({ index: -1, key: '', parentKey: key, item });\n }\n else {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n const { parentKey, key, item } = processedItem;\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, key: key, parentKey: parentKey, item: item });\n this.searchValue = '';\n }\n }\n }\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemInfo(event, itemIndex);\n event.preventDefault();\n }\n onArrowRightKey(event) {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n if (this.orientation === 'vertical') {\n if (ObjectUtils.isNotEmpty(this.activeItem()) && this.activeItem().key === processedItem.key) {\n this.focusedItemInfo.set({ index: -1, key: '', parentKey: this.activeItem().key, item: processedItem.item });\n }\n else {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });\n this.searchValue = '';\n }\n }\n }\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemInfo(event, itemIndex);\n }\n else {\n const columnIndex = processedItem.columnIndex + 1;\n const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);\n itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);\n }\n event.preventDefault();\n }\n onArrowUpKey(event) {\n if (event.altKey && this.orientation === 'horizontal') {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n if (!grouped && ObjectUtils.isNotEmpty(this.activeItem)) {\n if (this.focusedItemInfo().index === 0) {\n this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, parentKey: this.activeItem().parentKey, item: processedItem.item });\n this.activeItem.set(null);\n }\n else {\n this.changeFocusedItemInfo(event, this.findFirstItemIndex());\n }\n }\n }\n event.preventDefault();\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemInfo(event, itemIndex);\n event.preventDefault();\n }\n }\n onArrowLeftKey(event) {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n if (this.orientation === 'horizontal') {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemInfo(event, itemIndex);\n }\n }\n else {\n if (this.orientation === 'vertical' && ObjectUtils.isNotEmpty(this.activeItem())) {\n if (processedItem.columnIndex === 0) {\n this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, parentKey: this.activeItem().parentKey, item: processedItem.item });\n this.activeItem.set(null);\n }\n }\n const columnIndex = processedItem.columnIndex - 1;\n const itemIndex = this.visibleItems.findIndex((item) => item.columnIndex === columnIndex);\n itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);\n }\n event.preventDefault();\n }\n onHomeKey(event) {\n this.changeFocusedItemInfo(event, this.findFirstItemIndex());\n event.preventDefault();\n }\n onEndKey(event) {\n this.changeFocusedItemInfo(event, this.findLastItemIndex());\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n onEscapeKey(event) {\n if (ObjectUtils.isNotEmpty(this.activeItem())) {\n this.focusedItemInfo.set({ index: this.activeItem().index, key: this.activeItem().key, item: this.activeItem().item });\n this.activeItem.set(null);\n }\n event.preventDefault();\n }\n onTabKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.onItemChange({ originalEvent: event, processedItem });\n }\n this.hide();\n }\n onEnterKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section=\"action\"]');\n anchorElement ? anchorElement.click() : element && element.click();\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.changeFocusedItemInfo(event, this.findFirstFocusedItemIndex());\n }\n event.preventDefault();\n }\n findVisibleItem(index) {\n return ObjectUtils.isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;\n }\n findLastFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n }\n findLastItemIndex() {\n return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n }\n findPrevItemIndex(index) {\n const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex : index;\n }\n findNextItemIndex(index) {\n const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.resizeListener) {\n this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {\n this.hide(event, true);\n });\n }\n }\n }\n bindOutsideClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.outsideClickListener) {\n this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {\n const isOutsideContainer = this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target);\n if (isOutsideContainer) {\n this.hide();\n }\n });\n }\n }\n }\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n this.outsideClickListener();\n this.outsideClickListener = null;\n }\n }\n unbindResizeListener() {\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n ngOnDestroy() {\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenu, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i5.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MegaMenu, selector: \"p-megaMenu\", inputs: { model: \"model\", style: \"style\", styleClass: \"styleClass\", orientation: \"orientation\", id: \"id\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", disabled: \"disabled\", tabindex: \"tabindex\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"menubutton\", first: true, predicate: [\"menubutton\"], descendants: true }, { propertyName: \"rootmenu\", first: true, predicate: [\"rootmenu\"], descendants: true }], ngImport: i0, template: `\n \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n \n `, isInline: true, styles: [\"@layer primeng{.p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal{align-items:center}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-horizontal .p-megamenu-end{margin-left:auto;align-self:center}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-content>.p-menuitem-link>.p-submenu-icon:not(svg){margin-left:auto}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-content>.p-menuitem-link>.p-icon-wrapper{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: MegaMenuSub, selector: \"p-megaMenuSub\", inputs: [\"id\", \"items\", \"itemTemplate\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"disabled\", \"orientation\", \"activeItem\", \"submenu\", \"tabindex\", \"root\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-megaMenu', template: `\n \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal{align-items:center}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-horizontal .p-megamenu-end{margin-left:auto;align-self:center}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-content>.p-menuitem-link>.p-submenu-icon:not(svg){margin-left:auto}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-content>.p-menuitem-link>.p-icon-wrapper{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i5.PrimeNGConfig }, { type: i0.ChangeDetectorRef }], propDecorators: { model: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], orientation: [{\n type: Input\n }], id: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], menubutton: [{\n type: ViewChild,\n args: ['menubutton']\n }], rootmenu: [{\n type: ViewChild,\n args: ['rootmenu']\n }] } });\nclass MegaMenuModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuModule, declarations: [MegaMenu, MegaMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon], exports: [MegaMenu, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuModule, imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MegaMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon],\n exports: [MegaMenu, RouterModule, TooltipModule, SharedModule],\n declarations: [MegaMenu, MegaMenuSub]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MegaMenu, MegaMenuModule, MegaMenuSub };\n","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ViewChild, signal, effect, PLATFORM_ID, ChangeDetectionStrategy, Inject, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport * as i5 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDownIcon } from 'primeng/icons/angledown';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport { BarsIcon } from 'primeng/icons/bars';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { Subject, interval } from 'rxjs';\nimport { debounce, filter } from 'rxjs/operators';\n\nclass MenubarService {\n autoHide;\n autoHideDelay;\n mouseLeaves = new Subject();\n mouseLeft$ = this.mouseLeaves.pipe(debounce(() => interval(this.autoHideDelay)), filter((mouseLeft) => this.autoHide && mouseLeft));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarService, decorators: [{\n type: Injectable\n }] });\nclass MenubarSub {\n el;\n renderer;\n cd;\n menubarService;\n items;\n itemTemplate;\n root = false;\n autoZIndex = true;\n baseZIndex = 0;\n mobileActive;\n autoDisplay;\n menuId;\n ariaLabel;\n ariaLabelledBy;\n level = 0;\n focusedItemId;\n activeItemPath;\n itemClick = new EventEmitter();\n itemMouseEnter = new EventEmitter();\n menuFocus = new EventEmitter();\n menuBlur = new EventEmitter();\n menuKeydown = new EventEmitter();\n menubarViewChild;\n mouseLeaveSubscriber;\n constructor(el, renderer, cd, menubarService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.menubarService = menubarService;\n }\n ngOnInit() {\n this.mouseLeaveSubscriber = this.menubarService.mouseLeft$.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n onItemClick(event, processedItem) {\n this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });\n }\n getItemProp(processedItem, name, params = null) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;\n }\n getItemId(processedItem) {\n return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId}_${processedItem.key}`;\n }\n getItemKey(processedItem) {\n return this.getItemId(processedItem);\n }\n getItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem': true,\n 'p-highlight': this.isItemActive(processedItem),\n 'p-menuitem-active': this.isItemActive(processedItem),\n 'p-focus': this.isItemFocused(processedItem),\n 'p-disabled': this.isItemDisabled(processedItem)\n };\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n getSeparatorItemClass(processedItem) {\n return {\n ...this.getItemProp(processedItem, 'class'),\n 'p-menuitem-separator': true\n };\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemActive(processedItem) {\n if (this.activeItemPath) {\n return this.activeItemPath.some((path) => path.key === processedItem.key);\n }\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemFocused(processedItem) {\n return this.focusedItemId === this.getItemId(processedItem);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n getAriaSetSize() {\n return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n }\n getAriaPosInset(index) {\n return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n }\n onItemMouseLeave() {\n this.menubarService.mouseLeaves.next(true);\n }\n onItemMouseEnter(param) {\n if (this.autoDisplay) {\n this.menubarService.mouseLeaves.next(false);\n const { event, processedItem } = param;\n this.itemMouseEnter.emit({ originalEvent: event, processedItem });\n }\n }\n ngOnDestroy() {\n this.mouseLeaveSubscriber?.unsubscribe();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: MenubarService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: MenubarSub, selector: \"p-menubarSub\", inputs: { items: \"items\", itemTemplate: \"itemTemplate\", root: \"root\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", mobileActive: \"mobileActive\", autoDisplay: \"autoDisplay\", menuId: \"menuId\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", level: \"level\", focusedItemId: \"focusedItemId\", activeItemPath: \"activeItemPath\" }, outputs: { itemClick: \"itemClick\", itemMouseEnter: \"itemMouseEnter\", menuFocus: \"menuFocus\", menuBlur: \"menuBlur\", menuKeydown: \"menuKeydown\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"menubarViewChild\", first: true, predicate: [\"menubar\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n {{ getItemProp(processedItem, 'badge') }}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i4.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleDownIcon), selector: \"AngleDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleRightIcon), selector: \"AngleRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MenubarSub), selector: \"p-menubarSub\", inputs: [\"items\", \"itemTemplate\", \"root\", \"autoZIndex\", \"baseZIndex\", \"mobileActive\", \"autoDisplay\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-menubarSub',\n template: `\n \n \n \n \n
    \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n \n \n \n {{ getItemProp(processedItem, 'badge') }}\n\n \n \n \n \n \n \n \n \n \n \n {{ getItemLabel(processedItem) }}\n \n {{ getItemProp(processedItem, 'badge') }}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: MenubarService }], propDecorators: { items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], root: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], mobileActive: [{\n type: Input\n }], autoDisplay: [{\n type: Input\n }], menuId: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], level: [{\n type: Input\n }], focusedItemId: [{\n type: Input\n }], activeItemPath: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], itemMouseEnter: [{\n type: Output\n }], menuFocus: [{\n type: Output\n }], menuBlur: [{\n type: Output\n }], menuKeydown: [{\n type: Output\n }], menubarViewChild: [{\n type: ViewChild,\n args: ['menubar', { static: true }]\n }] } });\n/**\n * Menubar is a horizontal menu component.\n * @group Components\n */\nclass Menubar {\n document;\n platformId;\n el;\n renderer;\n cd;\n config;\n menubarService;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n this._processedItems = this.createProcessedItems(this._model || []);\n }\n get model() {\n return this._model;\n }\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * Whether to show a root submenu on mouse over.\n * @defaultValue true\n * @group Props\n */\n autoDisplay = true;\n /**\n * Whether to hide a root submenu when mouse leaves.\n * @group Props\n */\n autoHide;\n /**\n * Delay to hide the root submenu in milliseconds when mouse leaves.\n * @group Props\n */\n autoHideDelay = 100;\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabel;\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Callback to execute when button is focused.\n * @param {FocusEvent} event - Focus event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to execute when button loses focus.\n * @param {FocusEvent} event - Focus event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n templates;\n menubutton;\n rootmenu;\n startTemplate;\n endTemplate;\n menuIconTemplate;\n submenuIconTemplate;\n itemTemplate;\n mobileActive;\n outsideClickListener;\n resizeListener;\n mouseLeaveSubscriber;\n dirty = false;\n focused = false;\n activeItemPath = signal([]);\n number = signal(0);\n focusedItemInfo = signal({ index: -1, level: 0, parentKey: '', item: null });\n searchValue = '';\n searchTimeout;\n _processedItems;\n _model;\n get visibleItems() {\n const processedItem = this.activeItemPath().find((p) => p.key === this.focusedItemInfo().parentKey);\n return processedItem ? processedItem.items : this.processedItems;\n }\n get processedItems() {\n if (!this._processedItems || !this._processedItems.length) {\n this._processedItems = this.createProcessedItems(this.model || []);\n }\n return this._processedItems;\n }\n get focusedItemId() {\n const focusedItem = this.focusedItemInfo();\n return focusedItem.item && focusedItem.item?.id ? focusedItem.item.id : focusedItem.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(focusedItem.parentKey) ? '_' + focusedItem.parentKey : ''}_${focusedItem.index}` : null;\n }\n constructor(document, platformId, el, renderer, cd, config, menubarService) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.config = config;\n this.menubarService = menubarService;\n effect(() => {\n const path = this.activeItemPath();\n if (ObjectUtils.isNotEmpty(path)) {\n this.bindOutsideClickListener();\n this.bindResizeListener();\n }\n else {\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n }\n });\n }\n ngOnInit() {\n this.menubarService.autoHide = this.autoHide;\n this.menubarService.autoHideDelay = this.autoHideDelay;\n this.mouseLeaveSubscriber = this.menubarService.mouseLeft$.subscribe(() => this.unbindOutsideClickListener());\n this.id = this.id || UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'start':\n this.startTemplate = item.template;\n break;\n case 'end':\n this.endTemplate = item.template;\n break;\n case 'menuicon':\n this.menuIconTemplate = item.template;\n break;\n case 'submenuicon':\n this.submenuIconTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n const processedItems = [];\n items &&\n items.forEach((item, index) => {\n const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n const newItem = {\n item,\n index,\n level,\n key,\n parent,\n parentKey\n };\n newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n processedItems.push(newItem);\n });\n return processedItems;\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n menuButtonClick(event) {\n this.toggle(event);\n }\n menuButtonKeydown(event) {\n (event.code === 'Enter' || event.code === 'Space') && this.menuButtonClick(event);\n }\n onItemClick(event) {\n const { originalEvent, processedItem } = event;\n const grouped = this.isProcessedItemGroup(processedItem);\n const root = ObjectUtils.isEmpty(processedItem.parent);\n const selected = this.isSelected(processedItem);\n if (selected) {\n const { index, key, level, parentKey, item } = processedItem;\n this.activeItemPath.set(this.activeItemPath().filter((p) => key !== p.key && key.startsWith(p.key)));\n this.focusedItemInfo.set({ index, level, parentKey, item });\n this.dirty = !root;\n DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n else {\n if (grouped) {\n this.onItemChange(event);\n }\n else {\n const rootProcessedItem = root ? processedItem : this.activeItemPath().find((p) => p.parentKey === '');\n this.hide(originalEvent);\n this.changeFocusedItemIndex(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);\n this.mobileActive = false;\n DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n }\n }\n onItemMouseEnter(event) {\n if (!DomHandler.isTouchDevice()) {\n if (!this.mobileActive) {\n this.onItemChange(event);\n }\n }\n }\n changeFocusedItemIndex(event, index) {\n const processedItem = this.findVisibleItem(index);\n if (this.focusedItemInfo().index !== index) {\n const focusedItemInfo = this.focusedItemInfo();\n this.focusedItemInfo.set({ ...focusedItemInfo, item: processedItem.item, index });\n this.scrollInView();\n }\n }\n scrollInView(index = -1) {\n const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n onItemChange(event) {\n const { processedItem, isFocus } = event;\n if (ObjectUtils.isEmpty(processedItem))\n return;\n const { index, key, level, parentKey, items, item } = processedItem;\n const grouped = ObjectUtils.isNotEmpty(items);\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n grouped && activeItemPath.push(processedItem);\n this.focusedItemInfo.set({ index, level, parentKey, item });\n this.activeItemPath.set(activeItemPath);\n grouped && (this.dirty = true);\n isFocus && DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n toggle(event) {\n if (this.mobileActive) {\n this.mobileActive = false;\n ZIndexUtils.clear(this.rootmenu.el.nativeElement);\n this.hide();\n }\n else {\n this.mobileActive = true;\n ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);\n setTimeout(() => {\n this.show();\n }, 0);\n }\n this.cd.markForCheck();\n this.bindOutsideClickListener();\n event.preventDefault();\n }\n hide(event, isFocus) {\n if (this.mobileActive) {\n setTimeout(() => {\n DomHandler.focus(this.menubutton.nativeElement);\n }, 0);\n }\n this.activeItemPath.set([]);\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n isFocus && DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n this.dirty = false;\n }\n show() {\n const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());\n this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '', item: processedItem.item });\n DomHandler.focus(this.rootmenu.menubarViewChild.nativeElement);\n }\n onMenuFocus(event) {\n this.focused = true;\n const processedItem = this.findVisibleItem(this.findFirstFocusedItemIndex());\n const focusedItemInfo = this.focusedItemInfo().index !== -1 ? this.focusedItemInfo() : { index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '', item: processedItem.item };\n this.focusedItemInfo.set(focusedItemInfo);\n this.onFocus.emit(event);\n }\n onMenuBlur(event) {\n this.focused = false;\n this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n this.searchValue = '';\n this.dirty = false;\n this.onBlur.emit(event);\n }\n onKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n this.onEscapeKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchItems(event, event.key);\n }\n break;\n }\n }\n findVisibleItem(index) {\n return ObjectUtils.isNotEmpty(this.visibleItems) ? this.visibleItems[index] : null;\n }\n findFirstFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n }\n findFirstItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n }\n findSelectedItemIndex() {\n return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n }\n isProcessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n isSelected(processedItem) {\n return this.activeItemPath().some((p) => p.key === processedItem.key);\n }\n isValidSelectedItem(processedItem) {\n return this.isValidItem(processedItem) && this.isSelected(processedItem);\n }\n isValidItem(processedItem) {\n return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);\n }\n isItemDisabled(item) {\n return this.getItemProp(item, 'disabled');\n }\n isItemSeparator(item) {\n return this.getItemProp(item, 'separator');\n }\n isItemMatched(processedItem) {\n return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n }\n isProccessedItemGroup(processedItem) {\n return processedItem && ObjectUtils.isNotEmpty(processedItem.items);\n }\n searchItems(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let itemIndex = -1;\n let matched = false;\n if (this.focusedItemInfo().index !== -1) {\n itemIndex = this.visibleItems.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));\n itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;\n }\n else {\n itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n }\n if (itemIndex !== -1) {\n matched = true;\n }\n if (itemIndex === -1 && this.focusedItemInfo().index === -1) {\n itemIndex = this.findFirstFocusedItemIndex();\n }\n if (itemIndex !== -1) {\n this.changeFocusedItemIndex(event, itemIndex);\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n getProccessedItemLabel(processedItem) {\n return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n }\n getItemLabel(item) {\n return this.getItemProp(item, 'label');\n }\n onArrowDownKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const root = processedItem ? ObjectUtils.isEmpty(processedItem.parent) : null;\n if (root) {\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });\n this.onArrowRightKey(event);\n }\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n }\n onArrowRightKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const parentItem = processedItem ? this.activeItemPath().find((p) => p.key === processedItem.parentKey) : null;\n if (parentItem) {\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });\n this.onArrowDownKey(event);\n }\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n }\n onArrowUpKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const root = ObjectUtils.isEmpty(processedItem.parent);\n if (root) {\n const grouped = this.isProccessedItemGroup(processedItem);\n if (grouped) {\n this.onItemChange({ originalEvent: event, processedItem });\n this.focusedItemInfo.set({ index: -1, parentKey: processedItem.key, item: processedItem.item });\n const itemIndex = this.findLastItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n }\n }\n else {\n const parentItem = this.activeItemPath().find((p) => p.key === processedItem.parentKey);\n if (this.focusedItemInfo().index === 0) {\n this.focusedItemInfo.set({ index: -1, parentKey: parentItem ? parentItem.parentKey : '', item: processedItem.item });\n this.searchValue = '';\n this.onArrowLeftKey(event);\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);\n this.activeItemPath.set(activeItemPath);\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n }\n }\n event.preventDefault();\n }\n onArrowLeftKey(event) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const parentItem = processedItem ? this.activeItemPath().find((p) => p.key === processedItem.parentKey) : null;\n if (parentItem) {\n this.onItemChange({ originalEvent: event, processedItem: parentItem });\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItemInfo().parentKey);\n this.activeItemPath.set(activeItemPath);\n event.preventDefault();\n }\n else {\n const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n this.changeFocusedItemIndex(event, itemIndex);\n event.preventDefault();\n }\n }\n onHomeKey(event) {\n this.changeFocusedItemIndex(event, this.findFirstItemIndex());\n event.preventDefault();\n }\n onEndKey(event) {\n this.changeFocusedItemIndex(event, this.findLastItemIndex());\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n onEscapeKey(event) {\n this.hide(event, true);\n this.focusedItemInfo().index = this.findFirstFocusedItemIndex();\n event.preventDefault();\n }\n onTabKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && this.onItemChange({ originalEvent: event, processedItem });\n }\n this.hide();\n }\n onEnterKey(event) {\n if (this.focusedItemInfo().index !== -1) {\n const element = DomHandler.findSingle(this.rootmenu.el.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n const anchorElement = element && DomHandler.findSingle(element, 'a[data-pc-section=\"action\"]');\n anchorElement ? anchorElement.click() : element && element.click();\n const processedItem = this.visibleItems[this.focusedItemInfo().index];\n const grouped = this.isProccessedItemGroup(processedItem);\n !grouped && (this.focusedItemInfo().index = this.findFirstFocusedItemIndex());\n }\n event.preventDefault();\n }\n findLastFocusedItemIndex() {\n const selectedIndex = this.findSelectedItemIndex();\n return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n }\n findLastItemIndex() {\n return ObjectUtils.findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n }\n findPrevItemIndex(index) {\n const matchedItemIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex : index;\n }\n findNextItemIndex(index) {\n const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n }\n bindResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.resizeListener) {\n this.resizeListener = this.renderer.listen(this.document.defaultView, 'resize', (event) => {\n if (!DomHandler.isTouchDevice()) {\n this.hide(event, true);\n }\n this.mobileActive = false;\n });\n }\n }\n }\n bindOutsideClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.outsideClickListener) {\n this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {\n const isOutsideContainer = this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target);\n const isOutsideMenuButton = this.mobileActive && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target);\n if (isOutsideContainer) {\n isOutsideMenuButton ? (this.mobileActive = false) : this.hide();\n }\n });\n }\n }\n }\n unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n this.outsideClickListener();\n this.outsideClickListener = null;\n }\n }\n unbindResizeListener() {\n if (this.resizeListener) {\n this.resizeListener();\n this.resizeListener = null;\n }\n }\n ngOnDestroy() {\n this.mouseLeaveSubscriber?.unsubscribe();\n this.unbindOutsideClickListener();\n this.unbindResizeListener();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Menubar, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: MenubarService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Menubar, selector: \"p-menubar\", inputs: { model: \"model\", style: \"style\", styleClass: \"styleClass\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", autoDisplay: \"autoDisplay\", autoHide: \"autoHide\", autoHideDelay: \"autoHideDelay\", id: \"id\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\" }, outputs: { onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, providers: [MenubarService], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"menubutton\", first: true, predicate: [\"menubutton\"], descendants: true }, { propertyName: \"rootmenu\", first: true, predicate: [\"rootmenu\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n
    \n 0 ? true : false\"\n [attr.aria-expanded]=\"mobileActive\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"config.translation.aria.navigation\"\n [attr.data-pc-section]=\"'button'\"\n *ngIf=\"model && model.length > 0\"\n class=\"p-menubar-button\"\n (click)=\"menuButtonClick($event)\"\n (keydown)=\"menuButtonKeydown($event)\"\n >\n \n \n \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:2}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-menubar .p-menubar-root-list .p-icon-wrapper,.p-menubar .p-submenu-list .p-menuitem-link .p-icon-wrapper{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => BarsIcon), selector: \"BarsIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MenubarSub), selector: \"p-menubarSub\", inputs: [\"items\", \"itemTemplate\", \"root\", \"autoZIndex\", \"baseZIndex\", \"mobileActive\", \"autoDisplay\", \"menuId\", \"ariaLabel\", \"ariaLabelledBy\", \"level\", \"focusedItemId\", \"activeItemPath\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"menuFocus\", \"menuBlur\", \"menuKeydown\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Menubar, decorators: [{\n type: Component,\n args: [{ selector: 'p-menubar', template: `\n
    \n
    \n \n
    \n 0 ? true : false\"\n [attr.aria-expanded]=\"mobileActive\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"config.translation.aria.navigation\"\n [attr.data-pc-section]=\"'button'\"\n *ngIf=\"model && model.length > 0\"\n class=\"p-menubar-button\"\n (click)=\"menuButtonClick($event)\"\n (keydown)=\"menuButtonKeydown($event)\"\n >\n \n \n \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, providers: [MenubarService], styles: [\"@layer primeng{.p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:2}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon:not(svg){margin-left:auto}.p-menubar .p-menubar-root-list .p-icon-wrapper,.p-menubar .p-submenu-list .p-menuitem-link .p-icon-wrapper{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: MenubarService }], propDecorators: { model: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], autoDisplay: [{\n type: Input\n }], autoHide: [{\n type: Input\n }], autoHideDelay: [{\n type: Input\n }], id: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], menubutton: [{\n type: ViewChild,\n args: ['menubutton']\n }], rootmenu: [{\n type: ViewChild,\n args: ['rootmenu']\n }] } });\nclass MenubarModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarModule, declarations: [Menubar, MenubarSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, BarsIcon, AngleDownIcon, AngleRightIcon], exports: [Menubar, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarModule, imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, BarsIcon, AngleDownIcon, AngleRightIcon, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MenubarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, RippleModule, TooltipModule, SharedModule, BarsIcon, AngleDownIcon, AngleRightIcon],\n exports: [Menubar, RouterModule, TooltipModule, SharedModule],\n declarations: [Menubar, MenubarSub]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Menubar, MenubarModule, MenubarService, MenubarSub };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ExclamationTriangleIcon } from 'primeng/icons/exclamationtriangle';\nimport { InfoCircleIcon } from 'primeng/icons/infocircle';\nimport { TimesCircleIcon } from 'primeng/icons/timescircle';\n\n/**\n * Message groups a collection of contents in tabs.\n * @group Components\n */\nclass UIMessage {\n /**\n * Severity level of the message.\n * @group Props\n */\n severity;\n /**\n * Text content.\n * @group Props\n */\n text;\n /**\n * Whether displaying messages would be escaped or not.\n * @group Props\n */\n escape = true;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n get icon() {\n if (this.severity && this.severity.trim()) {\n return this.severity;\n }\n else {\n return 'info';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: UIMessage, selector: \"p-message\", inputs: { severity: \"severity\", text: \"text\", escape: \"escape\", style: \"style\", styleClass: \"styleClass\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n
    \n \n
    \n \n {{ text }}\n \n \n `, isInline: true, styles: [\"@layer primeng{.p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }, { kind: \"component\", type: i0.forwardRef(() => InfoCircleIcon), selector: \"InfoCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesCircleIcon), selector: \"TimesCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ExclamationTriangleIcon), selector: \"ExclamationTriangleIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UIMessage, decorators: [{\n type: Component,\n args: [{ selector: 'p-message', template: `\n \n \n \n \n \n
    \n \n
    \n \n {{ text }}\n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}}\\n\"] }]\n }], propDecorators: { severity: [{\n type: Input\n }], text: [{\n type: Input\n }], escape: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }] } });\nclass MessageModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon], exports: [UIMessage] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MessageModule, imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: MessageModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon],\n exports: [UIMessage],\n declarations: [UIMessage]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MessageModule, UIMessage };\n","import * as i5 from '@angular/cdk/drag-drop';\nimport { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDoubleDownIcon } from 'primeng/icons/angledoubledown';\nimport { AngleDoubleUpIcon } from 'primeng/icons/angledoubleup';\nimport { AngleDownIcon } from 'primeng/icons/angledown';\nimport { AngleUpIcon } from 'primeng/icons/angleup';\nimport { SearchIcon } from 'primeng/icons/search';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId, ObjectUtils } from 'primeng/utils';\n\n/**\n * OrderList is used to managed the order of a collection.\n * @group Components\n */\nclass OrderList {\n document;\n platformId;\n renderer;\n el;\n cd;\n filterService;\n config;\n /**\n * Text for the caption.\n * @group Props\n */\n header;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Specifies one or more IDs in the DOM that labels the input field.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Inline style of the list element.\n * @group Props\n */\n listStyle;\n /**\n * A boolean value that indicates whether the component should be responsive.\n * @group Props\n */\n responsive;\n /**\n * When specified displays an input field to filter the items on keyup and decides which fields to search against.\n * @group Props\n */\n filterBy;\n /**\n * Placeholder of the filter input.\n * @group Props\n */\n filterPlaceholder;\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * When true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = true;\n /**\n * Whether to enable dragdrop based reordering.\n * @group Props\n */\n dragdrop = false;\n /**\n * Defines the location of the buttons with respect to the list.\n * @group Props\n */\n controlsPosition = 'left';\n /**\n * Defines a string that labels the filter input.\n * @group Props\n */\n ariaFilterLabel;\n /**\n * Defines how the items are filtered.\n * @group Props\n */\n filterMatchMode = 'contains';\n /**\n * Indicates the width of the screen at which the component should change its behavior.\n * @group Props\n */\n breakpoint = '960px';\n /**\n * Whether to displays rows with alternating colors.\n * @group Props\n */\n stripedRows;\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n disabled = false;\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n trackBy = (index, item) => item;\n /**\n * A list of values that are currently selected.\n * @group Props\n */\n set selection(val) {\n this.d_selection = val;\n }\n get selection() {\n return this.d_selection;\n }\n /**\n * Array of values to be displayed in the component.\n * It represents the data source for the list of items.\n * @group Props\n */\n set value(val) {\n this._value = val;\n if (this.filterValue) {\n this.filter();\n }\n }\n get value() {\n return this._value;\n }\n /**\n * Callback to invoke on selection change.\n * @param {*} any - selection instance.\n * @group Emits\n */\n selectionChange = new EventEmitter();\n /**\n * Callback to invoke when list is reordered.\n * @param {*} any - list instance.\n * @group Emits\n */\n onReorder = new EventEmitter();\n /**\n * Callback to invoke when selection changes.\n * @param {OrderListSelectionChangeEvent} event - Custom change event.\n * @group Emits\n */\n onSelectionChange = new EventEmitter();\n /**\n * Callback to invoke when filtering occurs.\n * @param {OrderListFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilterEvent = new EventEmitter();\n /**\n * Callback to invoke when the list is focused\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Callback to invoke when the list is blurred\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n listViewChild;\n filterViewChild;\n templates;\n itemTemplate;\n headerTemplate;\n emptyMessageTemplate;\n emptyFilterMessageTemplate;\n filterTemplate;\n get moveUpAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.moveUp : undefined;\n }\n get moveTopAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.moveTop : undefined;\n }\n get moveDownAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;\n }\n get moveBottomAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.moveBottom : undefined;\n }\n moveUpIconTemplate;\n moveTopIconTemplate;\n moveDownIconTemplate;\n moveBottomIconTemplate;\n filterIconTemplate;\n filterOptions;\n d_selection = [];\n movedUp;\n movedDown;\n itemTouched;\n styleElement;\n id = UniqueComponentId();\n focused = false;\n focusedOptionIndex = -1;\n focusedOption;\n filterValue;\n visibleOptions;\n _value;\n constructor(document, platformId, renderer, el, cd, filterService, config) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.el = el;\n this.cd = cd;\n this.filterService = filterService;\n this.config = config;\n }\n ngOnInit() {\n if (this.responsive) {\n this.createStyle();\n }\n if (this.filterBy) {\n this.filterOptions = {\n filter: (value) => this.onFilterKeyup(value),\n reset: () => this.resetFilter()\n };\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterMessageTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'moveupicon':\n this.moveUpIconTemplate = item.template;\n break;\n case 'movetopicon':\n this.moveTopIconTemplate = item.template;\n break;\n case 'movedownicon':\n this.moveDownIconTemplate = item.template;\n break;\n case 'movebottomicon':\n this.moveBottomIconTemplate = item.template;\n break;\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewChecked() {\n if (this.movedUp || this.movedDown) {\n let listItems = DomHandler.find(this.listViewChild?.nativeElement, 'li.p-highlight');\n let listItem;\n if (listItems.length > 0) {\n if (this.movedUp)\n listItem = listItems[0];\n else\n listItem = listItems[listItems.length - 1];\n DomHandler.scrollInView(this.listViewChild?.nativeElement, listItem);\n }\n this.movedUp = false;\n this.movedDown = false;\n }\n }\n onItemClick(event, item, index, selectedId) {\n this.itemTouched = false;\n let focusedIndex = index ? index : ObjectUtils.findIndexInList(this.focusedOption, this.value);\n let selectedIndex = ObjectUtils.findIndexInList(item, this.d_selection);\n let selected = selectedIndex !== -1;\n let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n if (selectedId) {\n this.focusedOptionIndex = selectedId;\n }\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected && metaKey) {\n this.d_selection = this.d_selection.filter((val, focusedIndex) => focusedIndex !== selectedIndex);\n }\n else {\n this.d_selection = metaKey ? (this.d_selection ? [...this.d_selection] : []) : [];\n ObjectUtils.insertIntoOrderedArray(item, focusedIndex, this.d_selection, this.value);\n }\n }\n else {\n if (selected) {\n this.d_selection = this.d_selection.filter((val, focusedIndex) => focusedIndex !== selectedIndex);\n }\n else {\n this.d_selection = this.d_selection ? [...this.d_selection] : [];\n ObjectUtils.insertIntoOrderedArray(item, focusedIndex, this.d_selection, this.value);\n }\n }\n //binding\n this.selectionChange.emit(this.d_selection);\n //event\n this.onSelectionChange.emit({ originalEvent: event, value: this.d_selection });\n }\n onFilterKeyup(event) {\n this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);\n this.filter();\n this.onFilterEvent.emit({\n originalEvent: event,\n value: this.visibleOptions\n });\n }\n filter() {\n let searchFields = this.filterBy.split(',');\n this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n }\n /**\n * Callback to invoke on filter reset.\n * @group Method\n */\n resetFilter() {\n this.filterValue = null;\n this.filterViewChild && (this.filterViewChild.nativeElement.value = '');\n }\n isItemVisible(item) {\n if (this.filterValue && this.filterValue.trim().length) {\n for (let i = 0; i < this.visibleOptions.length; i++) {\n if (item == this.visibleOptions[i]) {\n return true;\n }\n }\n }\n else {\n return true;\n }\n }\n onItemTouchEnd() {\n this.itemTouched = true;\n }\n isSelected(item) {\n return ObjectUtils.findIndexInList(item, this.d_selection) !== -1;\n }\n isEmpty() {\n return this.filterValue ? !this.visibleOptions || this.visibleOptions.length === 0 : !this.value || this.value.length === 0;\n }\n moveUp() {\n if (this.selection) {\n for (let i = 0; i < this.selection.length; i++) {\n let selectedItem = this.selection[i];\n let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);\n if (selectedItemIndex != 0 && this.value instanceof Array) {\n let movedItem = this.value[selectedItemIndex];\n let temp = this.value[selectedItemIndex - 1];\n this.value[selectedItemIndex - 1] = movedItem;\n this.value[selectedItemIndex] = temp;\n }\n else {\n break;\n }\n }\n if (this.dragdrop && this.filterValue)\n this.filter();\n this.movedUp = true;\n this.onReorder.emit(this.selection);\n }\n }\n moveTop() {\n if (this.selection) {\n for (let i = this.selection.length - 1; i >= 0; i--) {\n let selectedItem = this.selection[i];\n let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);\n if (selectedItemIndex != 0 && this.value instanceof Array) {\n let movedItem = this.value.splice(selectedItemIndex, 1)[0];\n this.value.unshift(movedItem);\n }\n else {\n break;\n }\n }\n if (this.dragdrop && this.filterValue)\n this.filter();\n this.onReorder.emit(this.selection);\n this.listViewChild.nativeElement.scrollTop = 0;\n }\n }\n moveDown() {\n if (this.selection) {\n for (let i = this.selection.length - 1; i >= 0; i--) {\n let selectedItem = this.selection[i];\n let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);\n if (this.value instanceof Array && selectedItemIndex != this.value.length - 1) {\n let movedItem = this.value[selectedItemIndex];\n let temp = this.value[selectedItemIndex + 1];\n this.value[selectedItemIndex + 1] = movedItem;\n this.value[selectedItemIndex] = temp;\n }\n else {\n break;\n }\n }\n if (this.dragdrop && this.filterValue)\n this.filter();\n this.movedDown = true;\n this.onReorder.emit(this.selection);\n }\n }\n moveBottom() {\n if (this.selection) {\n for (let i = 0; i < this.selection.length; i++) {\n let selectedItem = this.selection[i];\n let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);\n if (this.value instanceof Array && selectedItemIndex != this.value.length - 1) {\n let movedItem = this.value.splice(selectedItemIndex, 1)[0];\n this.value.push(movedItem);\n }\n else {\n break;\n }\n }\n if (this.dragdrop && this.filterValue)\n this.filter();\n this.onReorder.emit(this.selection);\n this.listViewChild.nativeElement.scrollTop = this.listViewChild?.nativeElement.scrollHeight;\n }\n }\n onDrop(event) {\n let previousIndex = event.previousIndex;\n let currentIndex = event.currentIndex;\n if (previousIndex !== currentIndex) {\n if (this.visibleOptions) {\n if (this.filterValue) {\n previousIndex = ObjectUtils.findIndexInList(event.item.data, this.value);\n currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);\n }\n moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);\n }\n moveItemInArray(this.value, previousIndex, currentIndex);\n this.changeFocusedOptionIndex(currentIndex);\n this.onReorder.emit([event.item.data]);\n }\n }\n onListFocus(event) {\n const focusableEl = DomHandler.findSingle(this.listViewChild.nativeElement, '[data-p-highlight=\"true\"]') || DomHandler.findSingle(this.listViewChild.nativeElement, '[data-pc-section=\"item\"]');\n if (focusableEl) {\n const findIndex = ObjectUtils.findIndexInList(focusableEl, this.listViewChild.nativeElement.children);\n this.focused = true;\n const index = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : focusableEl ? findIndex : -1;\n this.changeFocusedOptionIndex(index);\n }\n this.onFocus.emit(event);\n }\n onListBlur(event) {\n this.focused = false;\n this.focusedOption = null;\n this.focusedOptionIndex = -1;\n this.onBlur.emit(event);\n }\n onItemKeydown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'KeyA':\n if (event.ctrlKey) {\n this.d_selection = [...this.value];\n this.selectionChange.emit(this.d_selection);\n }\n default:\n break;\n }\n }\n onOptionMouseDown(index) {\n this.focused = true;\n this.focusedOptionIndex = index;\n }\n onArrowDownKey(event) {\n const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex);\n this.changeFocusedOptionIndex(optionIndex);\n if (event.shiftKey) {\n this.onEnterKey(event);\n }\n event.preventDefault();\n }\n onArrowUpKey(event) {\n const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex);\n this.changeFocusedOptionIndex(optionIndex);\n if (event.shiftKey) {\n this.onEnterKey(event);\n }\n event.preventDefault();\n }\n onHomeKey(event) {\n if (event.ctrlKey && event.shiftKey) {\n let visibleOptions = this.getVisibleOptions();\n let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleOptions);\n this.d_selection = [...this.value].slice(0, focusedIndex + 1);\n this.selectionChange.emit(this.d_selection);\n }\n else {\n this.changeFocusedOptionIndex(0);\n }\n event.preventDefault();\n }\n onEndKey(event) {\n if (event.ctrlKey && event.shiftKey) {\n let visibleOptions = this.getVisibleOptions();\n let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleOptions);\n this.d_selection = [...this.value].slice(focusedIndex, visibleOptions.length - 1);\n this.selectionChange.emit(this.d_selection);\n }\n else {\n this.changeFocusedOptionIndex(DomHandler.find(this.listViewChild.nativeElement, '[data-pc-section=\"item\"]').length - 1);\n }\n event.preventDefault();\n }\n onEnterKey(event) {\n this.onItemClick(event, this.focusedOption);\n event.preventDefault();\n }\n onSpaceKey(event) {\n event.preventDefault();\n if (event.shiftKey && this.selection && this.selection.length > 0) {\n let visibleOptions = this.getVisibleOptions();\n let lastSelectedIndex = this.getLatestSelectedVisibleOptionIndex(visibleOptions);\n if (lastSelectedIndex !== -1) {\n let focusedIndex = ObjectUtils.findIndexInList(this.focusedOption, visibleOptions);\n this.d_selection = [...visibleOptions.slice(Math.min(lastSelectedIndex, focusedIndex), Math.max(lastSelectedIndex, focusedIndex) + 1)];\n this.selectionChange.emit(this.d_selection);\n this.onSelectionChange.emit({ originalEvent: event, value: this.d_selection });\n return;\n }\n }\n this.onEnterKey(event);\n }\n findNextOptionIndex(index) {\n const items = DomHandler.find(this.listViewChild.nativeElement, '[data-pc-section=\"item\"]');\n const matchedOptionIndex = [...items].findIndex((link) => link.id === index);\n return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;\n }\n findPrevOptionIndex(index) {\n const items = DomHandler.find(this.listViewChild.nativeElement, '[data-pc-section=\"item\"]');\n const matchedOptionIndex = [...items].findIndex((link) => link.id === index);\n return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;\n }\n getLatestSelectedVisibleOptionIndex(visibleOptions) {\n const latestSelectedItem = [...this.d_selection].reverse().find((item) => visibleOptions.includes(item));\n return latestSelectedItem !== undefined ? visibleOptions.indexOf(latestSelectedItem) : -1;\n }\n getVisibleOptions() {\n return this.visibleOptions && this.visibleOptions.length > 0 ? this.visibleOptions : this.value && this.value.length > 0 ? this.value : null;\n }\n getFocusedOption(index) {\n if (index === -1)\n return null;\n return this.visibleOptions && this.visibleOptions.length ? this.visibleOptions[index] : this.value && this.value.length ? this.value[index] : null;\n }\n changeFocusedOptionIndex(index) {\n const items = DomHandler.find(this.listViewChild.nativeElement, '[data-pc-section=\"item\"]');\n let order = index >= items.length ? items.length - 1 : index < 0 ? 0 : index;\n this.focusedOptionIndex = items[order] ? items[order].getAttribute('id') : -1;\n this.focusedOption = this.getFocusedOption(order);\n this.scrollInView(this.focusedOptionIndex);\n }\n scrollInView(id) {\n const element = DomHandler.findSingle(this.listViewChild.nativeElement, `[data-pc-section=\"item\"][id=\"${id}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n if (nextItem)\n return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n else\n return null;\n }\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n if (prevItem)\n return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n else\n return null;\n }\n moveDisabled() {\n if (this.disabled || !this.selection.length) {\n return true;\n }\n }\n focusedOptionId() {\n return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;\n }\n createStyle() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.styleElement) {\n this.renderer.setAttribute(this.el.nativeElement.children[0], this.id, '');\n this.styleElement = this.renderer.createElement('style');\n this.renderer.setAttribute(this.styleElement, 'type', 'text/css');\n this.renderer.appendChild(this.document.head, this.styleElement);\n let innerHTML = `\n @media screen and (max-width: ${this.breakpoint}) {\n .p-orderlist[${this.id}] {\n flex-direction: column;\n }\n\n .p-orderlist[${this.id}] .p-orderlist-controls {\n padding: var(--content-padding);\n flex-direction: row;\n }\n\n .p-orderlist[${this.id}] .p-orderlist-controls .p-button {\n margin-right: var(--inline-spacing);\n margin-bottom: 0;\n }\n\n .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {\n margin-right: 0;\n }\n }\n `;\n this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);\n }\n }\n }\n destroyStyle() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.styleElement) {\n this.renderer.removeChild(this.document, this.styleElement);\n this.styleElement = null;\n ``;\n }\n }\n }\n ngOnDestroy() {\n this.destroyStyle();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderList, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: OrderList, selector: \"p-orderList\", inputs: { header: \"header\", style: \"style\", styleClass: \"styleClass\", tabindex: \"tabindex\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", listStyle: \"listStyle\", responsive: \"responsive\", filterBy: \"filterBy\", filterPlaceholder: \"filterPlaceholder\", filterLocale: \"filterLocale\", metaKeySelection: \"metaKeySelection\", dragdrop: \"dragdrop\", controlsPosition: \"controlsPosition\", ariaFilterLabel: \"ariaFilterLabel\", filterMatchMode: \"filterMatchMode\", breakpoint: \"breakpoint\", stripedRows: \"stripedRows\", disabled: \"disabled\", trackBy: \"trackBy\", selection: \"selection\", value: \"value\" }, outputs: { selectionChange: \"selectionChange\", onReorder: \"onReorder\", onSelectionChange: \"onSelectionChange\", onFilterEvent: \"onFilterEvent\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"listViewChild\", first: true, predicate: [\"listelement\"], descendants: true }, { propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }], ngImport: i0, template: `\n \n
    \n \n \n \n \n
    \n
    \n
    \n
    {{ header }}
    \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 `, isInline: true, styles: [\"@layer primeng{.p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.ButtonDirective), selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { kind: \"directive\", type: i0.forwardRef(() => i4.Ripple), selector: \"[pRipple]\" }, { kind: \"directive\", type: i0.forwardRef(() => i5.CdkDropList), selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: i0.forwardRef(() => i5.CdkDrag), selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleDoubleDownIcon), selector: \"AngleDoubleDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleDoubleUpIcon), selector: \"AngleDoubleUpIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleUpIcon), selector: \"AngleUpIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleDownIcon), selector: \"AngleDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SearchIcon), selector: \"SearchIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderList, decorators: [{\n type: Component,\n args: [{ selector: 'p-orderList', template: `\n \n
    \n \n \n \n \n
    \n
    \n
    \n
    {{ header }}
    \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 `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }], propDecorators: { header: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], listStyle: [{\n type: Input\n }], responsive: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], filterPlaceholder: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], dragdrop: [{\n type: Input\n }], controlsPosition: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], breakpoint: [{\n type: Input\n }], stripedRows: [{\n type: Input\n }], disabled: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], onReorder: [{\n type: Output\n }], onSelectionChange: [{\n type: Output\n }], onFilterEvent: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], listViewChild: [{\n type: ViewChild,\n args: ['listelement']\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass OrderListModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderListModule, declarations: [OrderList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleUpIcon, AngleUpIcon, AngleDownIcon, SearchIcon], exports: [OrderList, SharedModule, DragDropModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderListModule, imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleUpIcon, AngleUpIcon, AngleDownIcon, SearchIcon, SharedModule, DragDropModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrderListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule, AngleDoubleDownIcon, AngleDoubleUpIcon, AngleUpIcon, AngleDownIcon, SearchIcon],\n exports: [OrderList, SharedModule, DragDropModule],\n declarations: [OrderList]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { OrderList, OrderListModule };\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Input, EventEmitter, Output, ContentChildren, NgModule } from '@angular/core';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronUpIcon } from 'primeng/icons/chevronup';\nimport { Subject } from 'rxjs';\n\nclass OrganizationChartNode {\n cd;\n node;\n root;\n first;\n last;\n chart;\n subscription;\n constructor(chart, cd) {\n this.cd = cd;\n this.chart = chart;\n this.subscription = this.chart.selectionSource$.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n get leaf() {\n if (this.node) {\n return this.node.leaf == false ? false : !(this.node.children && this.node.children.length);\n }\n }\n get colspan() {\n if (this.node) {\n return this.node.children && this.node.children.length ? this.node.children.length * 2 : null;\n }\n }\n onNodeClick(event, node) {\n this.chart.onNodeClick(event, node);\n }\n toggleNode(event, node) {\n node.expanded = !node.expanded;\n if (node.expanded)\n this.chart.onNodeExpand.emit({ originalEvent: event, node: this.node });\n else\n this.chart.onNodeCollapse.emit({ originalEvent: event, node: this.node });\n event.preventDefault();\n }\n isSelected() {\n return this.chart.isSelected(this.node);\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartNode, deps: [{ token: forwardRef(() => OrganizationChart) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: OrganizationChartNode, selector: \"[pOrganizationChartNode]\", inputs: { node: \"node\", root: \"root\", first: \"first\", last: \"last\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n
    {{ node.label }}
    \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 1\">\n \n  \n  \n \n \n \n \n \n
    \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronUpIcon), selector: \"ChevronUpIcon\" }, { kind: \"component\", type: i0.forwardRef(() => OrganizationChartNode), selector: \"[pOrganizationChartNode]\", inputs: [\"node\", \"root\", \"first\", \"last\"] }], animations: [trigger('childState', [state('in', style({ opacity: 1 })), transition('void => *', [style({ opacity: 0 }), animate(150)]), transition('* => void', [animate(150, style({ opacity: 0 }))])])], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartNode, decorators: [{\n type: Component,\n args: [{ selector: '[pOrganizationChartNode]', template: `\n \n \n \n \n
    {{ node.label }}
    \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 1\">\n \n  \n  \n \n \n \n \n \n
    \n \n \n \n `, animations: [trigger('childState', [state('in', style({ opacity: 1 })), transition('void => *', [style({ opacity: 0 }), animate(150)]), transition('* => void', [animate(150, style({ opacity: 0 }))])])], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}}\\n\"] }]\n }], ctorParameters: () => [{ type: OrganizationChart, decorators: [{\n type: Inject,\n args: [forwardRef(() => OrganizationChart)]\n }] }, { type: i0.ChangeDetectorRef }], propDecorators: { node: [{\n type: Input\n }], root: [{\n type: Input\n }], first: [{\n type: Input\n }], last: [{\n type: Input\n }] } });\n/**\n * OrganizationChart visualizes hierarchical organization data.\n * @group Components\n */\nclass OrganizationChart {\n el;\n cd;\n /**\n * An array of nested TreeNodes.\n * @group Props\n */\n value;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Defines the selection mode.\n * @group Props\n */\n selectionMode;\n /**\n * Whether the space allocated by a node is preserved when hidden.\n * @group Props\n */\n preserveSpace = true;\n /**\n * A single treenode instance or an array to refer to the selections.\n * @group Props\n */\n get selection() {\n return this._selection;\n }\n set selection(val) {\n this._selection = val;\n if (this.initialized)\n this.selectionSource.next(null);\n }\n /**\n * Callback to invoke on selection change.\n * @param {*} any - selected value.\n * @group Emits\n */\n selectionChange = new EventEmitter();\n /**\n * Callback to invoke when a node is selected.\n * @param {OrganizationChartNodeSelectEvent} event - custom node select event.\n * @group Emits\n */\n onNodeSelect = new EventEmitter();\n /**\n * Callback to invoke when a node is unselected.\n * @param {OrganizationChartNodeUnSelectEvent} event - custom node unselect event.\n * @group Emits\n */\n onNodeUnselect = new EventEmitter();\n /**\n * Callback to invoke when a node is expanded.\n * @param {OrganizationChartNodeExpandEvent} event - custom node expand event.\n * @group Emits\n */\n onNodeExpand = new EventEmitter();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {OrganizationChartNodeCollapseEvent} event - custom node collapse event.\n * @group Emits\n */\n onNodeCollapse = new EventEmitter();\n templates;\n templateMap;\n togglerIconTemplate;\n selectionSource = new Subject();\n _selection;\n initialized;\n selectionSource$ = this.selectionSource.asObservable();\n constructor(el, cd) {\n this.el = el;\n this.cd = cd;\n }\n get root() {\n return this.value && this.value.length ? this.value[0] : null;\n }\n ngAfterContentInit() {\n if (this.templates.length) {\n this.templateMap = {};\n }\n this.templates.forEach((item) => {\n if (item.getType() === 'togglericon') {\n this.togglerIconTemplate = item.template;\n }\n else {\n this.templateMap[item.getType()] = item.template;\n }\n });\n this.initialized = true;\n }\n getTemplateForNode(node) {\n if (this.templateMap)\n return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n else\n return null;\n }\n onNodeClick(event, node) {\n let eventTarget = event.target;\n if (eventTarget.className && (DomHandler.hasClass(eventTarget, 'p-node-toggler') || DomHandler.hasClass(eventTarget, 'p-node-toggler-icon'))) {\n return;\n }\n else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n if (this.selectionMode === 'single') {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n this.selection = node;\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n else if (this.selectionMode === 'multiple') {\n if (selected) {\n this.selection = this.selection.filter((val, i) => i != index);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n this.selection = [...(this.selection || []), node];\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n this.selectionChange.emit(this.selection);\n this.selectionSource.next(null);\n }\n }\n findIndexInSelection(node) {\n let index = -1;\n if (this.selectionMode && this.selection) {\n if (this.selectionMode === 'single') {\n index = this.selection == node ? 0 : -1;\n }\n else if (this.selectionMode === 'multiple') {\n for (let i = 0; i < this.selection.length; i++) {\n if (this.selection[i] == node) {\n index = i;\n break;\n }\n }\n }\n }\n return index;\n }\n isSelected(node) {\n return this.findIndexInSelection(node) != -1;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChart, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: OrganizationChart, selector: \"p-organizationChart\", inputs: { value: \"value\", style: \"style\", styleClass: \"styleClass\", selectionMode: \"selectionMode\", preserveSpace: \"preserveSpace\", selection: \"selection\" }, outputs: { selectionChange: \"selectionChange\", onNodeSelect: \"onNodeSelect\", onNodeUnselect: \"onNodeUnselect\", onNodeExpand: \"onNodeExpand\", onNodeCollapse: \"onNodeCollapse\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: OrganizationChartNode, selector: \"[pOrganizationChartNode]\", inputs: [\"node\", \"root\", \"first\", \"last\"] }], changeDetection: i0.ChangeDetectionStrategy.Default });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChart, decorators: [{\n type: Component,\n args: [{\n selector: 'p-organizationChart',\n template: `\n
    \n
    \n
    \n `,\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], preserveSpace: [{\n type: Input\n }], selection: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], onNodeSelect: [{\n type: Output\n }], onNodeUnselect: [{\n type: Output\n }], onNodeExpand: [{\n type: Output\n }], onNodeCollapse: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass OrganizationChartModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartModule, declarations: [OrganizationChart, OrganizationChartNode], imports: [CommonModule, ChevronDownIcon, ChevronUpIcon, SharedModule], exports: [OrganizationChart, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartModule, imports: [CommonModule, ChevronDownIcon, ChevronUpIcon, SharedModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OrganizationChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ChevronDownIcon, ChevronUpIcon, SharedModule],\n exports: [OrganizationChart, SharedModule],\n declarations: [OrganizationChart, OrganizationChartNode]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { OrganizationChart, OrganizationChartModule, OrganizationChartNode };\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, HostListener, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { TimesIcon } from 'primeng/icons/times';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { ZIndexUtils } from 'primeng/utils';\n\n/**\n * OverlayPanel is a container component positioned as connected to its target.\n * @group Components\n */\nclass OverlayPanel {\n document;\n platformId;\n el;\n renderer;\n cd;\n zone;\n config;\n overlayService;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Enables to hide the overlay when outside is clicked.\n * @group Props\n */\n dismissable = true;\n /**\n * When enabled, displays a close icon at top right corner.\n * @group Props\n */\n showCloseIcon;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Target element to attach the panel, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo = 'body';\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Aria label of the close icon.\n * @group Props\n */\n ariaCloseLabel;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * When enabled, first button receives focus on show.\n * @group Props\n */\n focusOnShow = true;\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '.1s linear';\n /**\n * Callback to invoke when an overlay becomes visible.\n * @group Emits\n */\n onShow = new EventEmitter();\n /**\n * Callback to invoke when an overlay gets hidden.\n * @group Emits\n */\n onHide = new EventEmitter();\n templates;\n container;\n overlayVisible = false;\n render = false;\n isOverlayAnimationInProgress = false;\n selfClick = false;\n documentClickListener;\n target;\n willHide;\n scrollHandler;\n documentResizeListener;\n contentTemplate;\n closeIconTemplate;\n destroyCallback;\n overlayEventListener;\n overlaySubscription;\n constructor(document, platformId, el, renderer, cd, zone, config, overlayService) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.config = config;\n this.overlayService = overlayService;\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n this.cd.markForCheck();\n });\n }\n bindDocumentClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentClickListener && this.dismissable) {\n let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;\n this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n if (!this.container?.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {\n this.hide();\n }\n this.selfClick = false;\n this.cd.markForCheck();\n });\n }\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n /**\n * Toggles the visibility of the panel.\n * @param {Event} event - Browser event\n * @param {Target} target - Target element.\n * @group Method\n */\n toggle(event, target) {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n if (this.overlayVisible) {\n if (this.hasTargetChanged(event, target)) {\n this.destroyCallback = () => {\n this.show(null, target || event.currentTarget || event.target);\n };\n }\n this.hide();\n }\n else {\n this.show(event, target);\n }\n }\n /**\n * Displays the panel.\n * @param {Event} event - Browser event\n * @param {Target} target - Target element.\n * @group Method\n */\n show(event, target) {\n target && event && event.stopPropagation();\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n this.target = target || event.currentTarget || event.target;\n this.overlayVisible = true;\n this.render = true;\n this.cd.markForCheck();\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n this.selfClick = true;\n }\n onContentClick(event) {\n const targetElement = event.target;\n this.selfClick = event.offsetX < targetElement.clientWidth && event.offsetY < targetElement.clientHeight;\n }\n hasTargetChanged(event, target) {\n return this.target != null && this.target !== (target || event.currentTarget || event.target);\n }\n appendContainer() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n this.renderer.appendChild(this.document.body, this.container);\n else\n DomHandler.appendChild(this.container, this.appendTo);\n }\n }\n restoreAppend() {\n if (this.container && this.appendTo) {\n this.renderer.appendChild(this.el.nativeElement, this.container);\n }\n }\n align() {\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);\n }\n DomHandler.absolutePosition(this.container, this.target);\n const containerOffset = DomHandler.getOffset(this.container);\n const targetOffset = DomHandler.getOffset(this.target);\n const borderRadius = this.document.defaultView?.getComputedStyle(this.container).getPropertyValue('border-radius');\n let arrowLeft = 0;\n if (containerOffset.left < targetOffset.left) {\n arrowLeft = targetOffset.left - containerOffset.left - parseFloat(borderRadius) * 2;\n }\n this.container?.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'p-overlaypanel-flipped');\n if (this.showCloseIcon) {\n this.renderer.setStyle(this.container, 'margin-top', '-30px');\n }\n }\n }\n onAnimationStart(event) {\n if (event.toState === 'open') {\n this.container = event.element;\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n if (this.focusOnShow) {\n this.focus();\n }\n this.overlayEventListener = (e) => {\n if (this.container && this.container.contains(e.target)) {\n this.selfClick = true;\n }\n };\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n this.onShow.emit(null);\n }\n this.isOverlayAnimationInProgress = true;\n }\n onAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n if (this.destroyCallback) {\n this.destroyCallback();\n this.destroyCallback = null;\n }\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n case 'close':\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n this.onContainerDestroy();\n this.onHide.emit({});\n this.render = false;\n break;\n }\n this.isOverlayAnimationInProgress = false;\n }\n focus() {\n let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n /**\n * Hides the panel.\n * @group Method\n */\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n onCloseClick(event) {\n this.hide();\n event.preventDefault();\n }\n onEscapeKeydown(event) {\n this.hide();\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n bindDocumentResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentResizeListener) {\n const window = this.document.defaultView;\n this.documentResizeListener = this.renderer.listen(window, 'resize', this.onWindowResize.bind(this));\n }\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n onContainerDestroy() {\n if (!this.cd.destroyed) {\n this.target = null;\n }\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n if (!this.cd.destroyed) {\n this.target = null;\n }\n this.destroyCallback = null;\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanel, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: OverlayPanel, selector: \"p-overlayPanel\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", dismissable: \"dismissable\", showCloseIcon: \"showCloseIcon\", style: \"style\", styleClass: \"styleClass\", appendTo: \"appendTo\", autoZIndex: \"autoZIndex\", ariaCloseLabel: \"ariaCloseLabel\", baseZIndex: \"baseZIndex\", focusOnShow: \"focusOnShow\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onShow: \"onShow\", onHide: \"onHide\" }, host: { listeners: { \"document:keydown.escape\": \"onEscapeKeydown($event)\" }, classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n
    \n \n \n
    \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after{border-bottom-color:transparent}.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }], animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('close', style({\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}'))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanel, decorators: [{\n type: Component,\n args: [{ selector: 'p-overlayPanel', template: `\n \n
    \n \n \n
    \n \n \n `, animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('close', style({\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}'))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after{border-bottom-color:transparent}.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], dismissable: [{\n type: Input\n }], showCloseIcon: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], ariaCloseLabel: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], focusOnShow: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onEscapeKeydown: [{\n type: HostListener,\n args: ['document:keydown.escape', ['$event']]\n }] } });\nclass OverlayPanelModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule, TimesIcon], exports: [OverlayPanel, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanelModule, imports: [CommonModule, RippleModule, SharedModule, TimesIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: OverlayPanelModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule, SharedModule, TimesIcon],\n exports: [OverlayPanel, SharedModule],\n declarations: [OverlayPanel]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { OverlayPanel, OverlayPanelModule };\n","import { style, state, animate, transition, trigger } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, signal, computed, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { RouterModule } from '@angular/router';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDownIcon } from 'primeng/icons/angledown';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ObjectUtils, UniqueComponentId } from 'primeng/utils';\n\nclass PanelMenuSub {\n panelMenu;\n el;\n panelId;\n focusedItemId;\n items;\n itemTemplate;\n level = 0;\n activeItemPath;\n root;\n tabindex;\n transitionOptions;\n parentExpanded;\n itemToggle = new EventEmitter();\n menuFocus = new EventEmitter();\n menuBlur = new EventEmitter();\n menuKeyDown = new EventEmitter();\n listViewChild;\n constructor(panelMenu, el) {\n this.panelMenu = panelMenu;\n this.el = el;\n }\n getItemId(processedItem) {\n return processedItem.item?.id ?? `${this.panelId}_${processedItem.key}`;\n }\n getItemKey(processedItem) {\n return this.getItemId(processedItem);\n }\n getItemClass(processedItem) {\n return {\n 'p-menuitem': true,\n 'p-disabled': this.isItemDisabled(processedItem)\n };\n }\n getItemProp(processedItem, name, params) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name], params) : undefined;\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n isItemExpanded(processedItem) {\n return processedItem.expanded;\n }\n isItemActive(processedItem) {\n return this.isItemExpanded(processedItem) || this.activeItemPath.some((path) => path && path.key === processedItem.key);\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemFocused(processedItem) {\n return this.focusedItemId === this.getItemId(processedItem);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n getAnimation(processedItem) {\n return this.isItemActive(processedItem) ? { value: 'visible', params: { transitionParams: this.transitionOptions, height: '*' } } : { value: 'hidden', params: { transitionParams: this.transitionOptions, height: '0' } };\n }\n getAriaSetSize() {\n return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n }\n getAriaPosInset(index) {\n return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n }\n onItemClick(event, processedItem) {\n if (!this.isItemDisabled(processedItem)) {\n this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n this.itemToggle.emit({ processedItem, expanded: !this.isItemActive(processedItem) });\n }\n }\n onItemToggle(event) {\n this.itemToggle.emit(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuSub, deps: [{ token: forwardRef(() => PanelMenu) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: PanelMenuSub, selector: \"p-panelMenuSub\", inputs: { panelId: \"panelId\", focusedItemId: \"focusedItemId\", items: \"items\", itemTemplate: \"itemTemplate\", level: \"level\", activeItemPath: \"activeItemPath\", root: \"root\", tabindex: \"tabindex\", transitionOptions: \"transitionOptions\", parentExpanded: \"parentExpanded\" }, outputs: { itemToggle: \"itemToggle\", menuFocus: \"menuFocus\", menuBlur: \"menuBlur\", menuKeyDown: \"menuKeyDown\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"listViewChild\", first: true, predicate: [\"list\"], descendants: true }], ngImport: i0, template: `\n \n \n
  • \n \n
    \n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(processedItem, 'label') }}\n \n {{ processedItem.badge }}\n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(processedItem, 'label') }}\n \n {{ getItemProp(processedItem, 'badge') }}\n \n \n \n \n \n
    \n
    \n \n
    \n \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => AngleDownIcon), selector: \"AngleDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => AngleRightIcon), selector: \"AngleRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => PanelMenuSub), selector: \"p-panelMenuSub\", inputs: [\"panelId\", \"focusedItemId\", \"items\", \"itemTemplate\", \"level\", \"activeItemPath\", \"root\", \"tabindex\", \"transitionOptions\", \"parentExpanded\"], outputs: [\"itemToggle\", \"menuFocus\", \"menuBlur\", \"menuKeyDown\"] }], animations: [\n trigger('submenu', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuSub, decorators: [{\n type: Component,\n args: [{\n selector: 'p-panelMenuSub',\n template: `\n \n \n
  • \n \n
    \n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(processedItem, 'label') }}\n \n {{ processedItem.badge }}\n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(processedItem, 'label') }}\n \n {{ getItemProp(processedItem, 'badge') }}\n \n \n \n \n \n
    \n
    \n \n
    \n \n
    \n \n `,\n animations: [\n trigger('submenu', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: PanelMenu, decorators: [{\n type: Inject,\n args: [forwardRef(() => PanelMenu)]\n }] }, { type: i0.ElementRef }], propDecorators: { panelId: [{\n type: Input\n }], focusedItemId: [{\n type: Input\n }], items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], level: [{\n type: Input\n }], activeItemPath: [{\n type: Input\n }], root: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], parentExpanded: [{\n type: Input\n }], itemToggle: [{\n type: Output\n }], menuFocus: [{\n type: Output\n }], menuBlur: [{\n type: Output\n }], menuKeyDown: [{\n type: Output\n }], listViewChild: [{\n type: ViewChild,\n args: ['list']\n }] } });\nclass PanelMenuList {\n set model(value) {\n this._model = value;\n this._processedItems = this.createProcessedItems(this._model || []);\n }\n get model() {\n return this._model;\n }\n panelId;\n id;\n items;\n itemTemplate;\n parentExpanded;\n expanded;\n transitionOptions;\n root;\n tabindex;\n activeItem;\n itemToggle = new EventEmitter();\n headerFocus = new EventEmitter();\n subMenuViewChild;\n searchTimeout;\n searchValue;\n focused;\n focusedItem = signal(null);\n activeItemPath = signal([]);\n _model;\n _processedItems;\n get processedItems() {\n if (!this._processedItems || !this._processedItems.length) {\n this._processedItems = this.createProcessedItems(this.model || []);\n }\n return this._processedItems;\n }\n visibleItems = computed(() => {\n const processedItems = this.processedItems;\n return this.flatItems(processedItems);\n });\n get focusedItemId() {\n const focusedItem = this.focusedItem();\n return focusedItem && focusedItem.item?.id ? focusedItem.item.id : ObjectUtils.isNotEmpty(this.focusedItem()) ? `${this.panelId}_${this.focusedItem().key}` : undefined;\n }\n // ngOnChanges(changes: SimpleChanges) {\n // if (changes && changes.items && changes.items.currentValue) {\n // this._processedItems = this.createProcessedItems(changes.items.currentValue || []);\n // }\n // }\n getItemProp(processedItem, name) {\n return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name]) : undefined;\n }\n getItemLabel(processedItem) {\n return this.getItemProp(processedItem, 'label');\n }\n isItemVisible(processedItem) {\n return this.getItemProp(processedItem, 'visible') !== false;\n }\n isItemDisabled(processedItem) {\n return this.getItemProp(processedItem, 'disabled');\n }\n isItemActive(processedItem) {\n return this.activeItemPath().some((path) => path.key === processedItem.parentKey);\n }\n isItemGroup(processedItem) {\n return ObjectUtils.isNotEmpty(processedItem.items);\n }\n isElementInPanel(event, element) {\n const panel = event.currentTarget.closest('[data-pc-section=\"panel\"]');\n return panel && panel.contains(element);\n }\n isItemMatched(processedItem) {\n return this.isValidItem(processedItem) && this.getItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n }\n isVisibleItem(processedItem) {\n return !!processedItem && (processedItem.level === 0 || this.isItemActive(processedItem)) && this.isItemVisible(processedItem);\n }\n isValidItem(processedItem) {\n return !!processedItem && !this.isItemDisabled(processedItem) && !processedItem.separator;\n }\n findFirstItem() {\n return this.visibleItems().find((processedItem) => this.isValidItem(processedItem));\n }\n findLastItem() {\n return ObjectUtils.findLast(this.visibleItems(), (processedItem) => this.isValidItem(processedItem));\n }\n createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n const processedItems = [];\n items &&\n items.forEach((item, index) => {\n const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n const newItem = {\n icon: item.icon,\n expanded: item.expanded,\n separator: item.separator,\n item,\n index,\n level,\n key,\n parent,\n parentKey\n };\n newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n processedItems.push(newItem);\n });\n return processedItems;\n }\n findProcessedItemByItemKey(key, processedItems, level = 0) {\n processedItems = processedItems || this.processedItems;\n if (processedItems && processedItems.length) {\n for (let i = 0; i < processedItems.length; i++) {\n const processedItem = processedItems[i];\n if (this.getItemProp(processedItem, 'key') === key)\n return processedItem;\n const matchedItem = this.findProcessedItemByItemKey(key, processedItem.items, level + 1);\n if (matchedItem)\n return matchedItem;\n }\n }\n }\n flatItems(processedItems, processedFlattenItems = []) {\n processedItems &&\n processedItems.forEach((processedItem) => {\n if (this.isVisibleItem(processedItem)) {\n processedFlattenItems.push(processedItem);\n this.flatItems(processedItem.items, processedFlattenItems);\n }\n });\n return processedFlattenItems;\n }\n changeFocusedItem(event) {\n const { originalEvent, processedItem, focusOnNext, selfCheck, allowHeaderFocus = true } = event;\n if (ObjectUtils.isNotEmpty(this.focusedItem()) && this.focusedItem().key !== processedItem.key) {\n this.focusedItem.set(processedItem);\n this.scrollInView();\n }\n else if (allowHeaderFocus) {\n this.headerFocus.emit({ originalEvent, focusOnNext, selfCheck });\n }\n }\n scrollInView() {\n const element = DomHandler.findSingle(this.subMenuViewChild.listViewChild.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n onFocus(event) {\n this.focused = true;\n const focusedItem = this.focusedItem() || (this.isElementInPanel(event, event.relatedTarget) ? this.findFirstItem() : this.findLastItem());\n if (event.relatedTarget !== null)\n this.focusedItem.set(focusedItem);\n }\n onBlur(event) {\n this.focused = false;\n this.focusedItem.set(null);\n this.searchValue = '';\n }\n onItemToggle(event) {\n this.focused = true;\n const { processedItem, expanded } = event;\n processedItem.expanded = !processedItem.expanded;\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== processedItem.parentKey);\n expanded && activeItemPath.push(processedItem);\n this.activeItemPath.set(activeItemPath);\n const processedItems = this.processedItems;\n const newProcessedItems = processedItems.map((item) => (item === processedItem ? processedItem : item));\n this._processedItems = newProcessedItems;\n this.focusedItem.set(processedItem);\n }\n onKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n case 'Space':\n this.onSpaceKey(event);\n break;\n case 'Enter':\n this.onEnterKey(event);\n break;\n case 'Escape':\n case 'Tab':\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n default:\n if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {\n this.searchItems(event, event.key);\n }\n break;\n }\n }\n onArrowDownKey(event) {\n const processedItem = ObjectUtils.isNotEmpty(this.focusedItem()) ? this.findNextItem(this.focusedItem()) : this.findFirstItem();\n this.changeFocusedItem({ originalEvent: event, processedItem, focusOnNext: true });\n event.preventDefault();\n }\n onArrowUpKey(event) {\n const processedItem = ObjectUtils.isNotEmpty(this.focusedItem()) ? this.findPrevItem(this.focusedItem()) : this.findLastItem();\n this.changeFocusedItem({ originalEvent: event, processedItem, selfCheck: true });\n event.preventDefault();\n }\n onArrowLeftKey(event) {\n if (ObjectUtils.isNotEmpty(this.focusedItem())) {\n const matched = this.activeItemPath().some((p) => p.key === this.focusedItem().key);\n if (matched) {\n const activeItemPath = this.activeItemPath().filter((p) => p.key !== this.focusedItem().key);\n this.activeItemPath.set(activeItemPath);\n }\n else {\n const focusedItem = ObjectUtils.isNotEmpty(this.focusedItem().parent) ? this.focusedItem().parent : this.focusedItem();\n this.focusedItem.set(focusedItem);\n }\n event.preventDefault();\n }\n }\n onArrowRightKey(event) {\n if (ObjectUtils.isNotEmpty(this.focusedItem())) {\n const grouped = this.isItemGroup(this.focusedItem());\n if (grouped) {\n const matched = this.activeItemPath().some((p) => p.key === this.focusedItem().key);\n if (matched) {\n this.onArrowDownKey(event);\n }\n else {\n const activeItemPath = this.activeItemPath().filter((p) => p.parentKey !== this.focusedItem().parentKey);\n activeItemPath.push(this.focusedItem());\n this.activeItemPath.set(activeItemPath);\n }\n }\n event.preventDefault();\n }\n }\n onHomeKey(event) {\n this.changeFocusedItem({ originalEvent: event, processedItem: this.findFirstItem(), allowHeaderFocus: false });\n event.preventDefault();\n }\n onEndKey(event) {\n this.changeFocusedItem({ originalEvent: event, processedItem: this.findLastItem(), focusOnNext: true, allowHeaderFocus: false });\n event.preventDefault();\n }\n onEnterKey(event) {\n if (ObjectUtils.isNotEmpty(this.focusedItem())) {\n const element = DomHandler.findSingle(this.subMenuViewChild.listViewChild.nativeElement, `li[id=\"${`${this.focusedItemId}`}\"]`);\n const anchorElement = element && (DomHandler.findSingle(element, '[data-pc-section=\"action\"]') || DomHandler.findSingle(element, 'a,button'));\n anchorElement ? anchorElement.click() : element && element.click();\n }\n event.preventDefault();\n }\n onSpaceKey(event) {\n this.onEnterKey(event);\n }\n findNextItem(processedItem) {\n const index = this.visibleItems().findIndex((item) => item.key === processedItem.key);\n const matchedItem = index < this.visibleItems().length - 1\n ? this.visibleItems()\n .slice(index + 1)\n .find((pItem) => this.isValidItem(pItem))\n : undefined;\n return matchedItem || processedItem;\n }\n findPrevItem(processedItem) {\n const index = this.visibleItems().findIndex((item) => item.key === processedItem.key);\n const matchedItem = index > 0 ? ObjectUtils.findLast(this.visibleItems().slice(0, index), (pItem) => this.isValidItem(pItem)) : undefined;\n return matchedItem || processedItem;\n }\n searchItems(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n let matchedItem = null;\n let matched = false;\n if (ObjectUtils.isNotEmpty(this.focusedItem())) {\n const focusedItemIndex = this.visibleItems().findIndex((processedItem) => processedItem.key === this.focusedItem().key);\n matchedItem = this.visibleItems()\n .slice(focusedItemIndex)\n .find((processedItem) => this.isItemMatched(processedItem));\n matchedItem = ObjectUtils.isEmpty(matchedItem)\n ? this.visibleItems()\n .slice(0, focusedItemIndex)\n .find((processedItem) => this.isItemMatched(processedItem))\n : matchedItem;\n }\n else {\n matchedItem = this.visibleItems().find((processedItem) => this.isItemMatched(processedItem));\n }\n if (ObjectUtils.isNotEmpty(matchedItem)) {\n matched = true;\n }\n if (ObjectUtils.isEmpty(matchedItem) && ObjectUtils.isEmpty(this.focusedItem())) {\n matchedItem = this.findFirstItem();\n }\n if (ObjectUtils.isNotEmpty(matchedItem)) {\n this.changeFocusedItem({\n originalEvent: event,\n processedItem: matchedItem,\n allowHeaderFocus: false\n });\n }\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n return matched;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuList, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: PanelMenuList, selector: \"p-panelMenuList\", inputs: { model: \"model\", panelId: \"panelId\", id: \"id\", items: \"items\", itemTemplate: \"itemTemplate\", parentExpanded: \"parentExpanded\", expanded: \"expanded\", transitionOptions: \"transitionOptions\", root: \"root\", tabindex: \"tabindex\", activeItem: \"activeItem\" }, outputs: { itemToggle: \"itemToggle\", headerFocus: \"headerFocus\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"subMenuViewChild\", first: true, predicate: [\"submenu\"], descendants: true }], ngImport: i0, template: `\n \n `, isInline: true, styles: [\"@layer primeng{.p-panelmenu .p-panelmenu-header-action{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-action:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;text-decoration:none;position:relative;overflow:hidden;outline:none}.p-panelmenu .p-menuitem-text{line-height:1}.p-panelmenu-expanded.p-toggleable-content:not(.ng-animating),.p-panelmenu .p-submenu-expanded:not(.ng-animating){overflow:visible}.p-panelmenu .p-toggleable-content,.p-panelmenu .p-submenu-list{overflow:hidden}}\\n\"], dependencies: [{ kind: \"component\", type: PanelMenuSub, selector: \"p-panelMenuSub\", inputs: [\"panelId\", \"focusedItemId\", \"items\", \"itemTemplate\", \"level\", \"activeItemPath\", \"root\", \"tabindex\", \"transitionOptions\", \"parentExpanded\"], outputs: [\"itemToggle\", \"menuFocus\", \"menuBlur\", \"menuKeyDown\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuList, decorators: [{\n type: Component,\n args: [{ selector: 'p-panelMenuList', template: `\n \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-panelmenu .p-panelmenu-header-action{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-action:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;text-decoration:none;position:relative;overflow:hidden;outline:none}.p-panelmenu .p-menuitem-text{line-height:1}.p-panelmenu-expanded.p-toggleable-content:not(.ng-animating),.p-panelmenu .p-submenu-expanded:not(.ng-animating){overflow:visible}.p-panelmenu .p-toggleable-content,.p-panelmenu .p-submenu-list{overflow:hidden}}\\n\"] }]\n }], propDecorators: { model: [{\n type: Input\n }], panelId: [{\n type: Input\n }], id: [{\n type: Input\n }], items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], parentExpanded: [{\n type: Input\n }], expanded: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], root: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], activeItem: [{\n type: Input\n }], itemToggle: [{\n type: Output\n }], headerFocus: [{\n type: Output\n }], subMenuViewChild: [{\n type: ViewChild,\n args: ['submenu']\n }] } });\n/**\n * PanelMenu is a hybrid of Accordion and Tree components.\n * @group Components\n */\nclass PanelMenu {\n cd;\n /**\n * An array of menuitems.\n * @group Props\n */\n set model(value) {\n this._model = value;\n }\n get model() {\n return this._model;\n }\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Whether multiple tabs can be activated at the same time or not.\n * @group Props\n */\n multiple = false;\n /**\n * Transition options of the animation.\n * @group Props\n */\n transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n /**\n * Current id state as a string.\n * @group Props\n */\n id;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n templates;\n containerViewChild;\n submenuIconTemplate;\n itemTemplate;\n animating;\n activeItem = signal(null);\n _model;\n ngOnInit() {\n this.id = this.id || UniqueComponentId();\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'submenuicon':\n this.submenuIconTemplate = item.template;\n break;\n case 'item':\n this.itemTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n constructor(cd) {\n this.cd = cd;\n }\n /**\n * Collapses open panels.\n * @group Method\n */\n collapseAll() {\n for (let item of this.model) {\n if (item.expanded) {\n item.expanded = false;\n }\n }\n this.cd.detectChanges();\n }\n onToggleDone() {\n this.animating = false;\n }\n changeActiveItem(event, item, index, selfActive = false) {\n if (!this.isItemDisabled(item)) {\n const activeItem = selfActive ? item : this.activeItem && ObjectUtils.equals(item, this.activeItem) ? null : item;\n this.activeItem.set(activeItem);\n }\n }\n getAnimation(item) {\n return item.expanded ? { value: 'visible', params: { transitionParams: this.animating ? this.transitionOptions : '0ms', height: '*' } } : { value: 'hidden', params: { transitionParams: this.transitionOptions, height: '0' } };\n }\n getItemProp(item, name) {\n return item ? ObjectUtils.getItemValue(item[name]) : undefined;\n }\n getItemLabel(item) {\n return this.getItemProp(item, 'label');\n }\n isItemActive(item) {\n return item.expanded;\n }\n isItemVisible(item) {\n return this.getItemProp(item, 'visible') !== false;\n }\n isItemDisabled(item) {\n return this.getItemProp(item, 'disabled');\n }\n isItemGroup(item) {\n return ObjectUtils.isNotEmpty(item.items);\n }\n getPanelId(index, item) {\n return item && item.id ? item.id : `${this.id}_${index}`;\n }\n getHeaderId(item, index) {\n return item.id ? item.id + '_header' : `${this.getPanelId(index)}_header`;\n }\n getContentId(item, index) {\n return item.id ? item.id + '_content' : `${this.getPanelId(index)}_content`;\n }\n updateFocusedHeader(event) {\n const { originalEvent, focusOnNext, selfCheck } = event;\n const panelElement = originalEvent.currentTarget.closest('[data-pc-section=\"panel\"]');\n const header = selfCheck ? DomHandler.findSingle(panelElement, '[data-pc-section=\"header\"]') : focusOnNext ? this.findNextHeader(panelElement) : this.findPrevHeader(panelElement);\n header ? this.changeFocusedHeader(originalEvent, header) : focusOnNext ? this.onHeaderHomeKey(originalEvent) : this.onHeaderEndKey(originalEvent);\n }\n changeFocusedHeader(event, element) {\n element && DomHandler.focus(element);\n }\n findNextHeader(panelElement, selfCheck = false) {\n const nextPanelElement = selfCheck ? panelElement : panelElement.nextElementSibling;\n const headerElement = DomHandler.findSingle(nextPanelElement, '[data-pc-section=\"header\"]');\n return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findNextHeader(headerElement.parentElement) : headerElement) : null;\n }\n findPrevHeader(panelElement, selfCheck = false) {\n const prevPanelElement = selfCheck ? panelElement : panelElement.previousElementSibling;\n const headerElement = DomHandler.findSingle(prevPanelElement, '[data-pc-section=\"header\"]');\n return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findPrevHeader(headerElement.parentElement) : headerElement) : null;\n }\n findFirstHeader() {\n return this.findNextHeader(this.containerViewChild.nativeElement.firstElementChild, true);\n }\n findLastHeader() {\n return this.findPrevHeader(this.containerViewChild.nativeElement.lastElementChild, true);\n }\n onHeaderClick(event, item, index) {\n if (this.isItemDisabled(item)) {\n event.preventDefault();\n return;\n }\n if (item.command) {\n item.command({ originalEvent: event, item });\n }\n if (!this.multiple) {\n for (let modelItem of this.model) {\n if (item !== modelItem && modelItem.expanded) {\n modelItem.expanded = false;\n }\n }\n }\n item.expanded = !item.expanded;\n this.changeActiveItem(event, item, index);\n this.animating = true;\n DomHandler.focus(event.currentTarget);\n }\n onHeaderKeyDown(event, item, index) {\n switch (event.code) {\n case 'ArrowDown':\n this.onHeaderArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onHeaderArrowUpKey(event);\n break;\n case 'Home':\n this.onHeaderHomeKey(event);\n break;\n case 'End':\n this.onHeaderEndKey(event);\n break;\n case 'Enter':\n case 'Space':\n this.onHeaderEnterKey(event, item, index);\n break;\n default:\n break;\n }\n }\n onHeaderArrowDownKey(event) {\n const rootList = DomHandler.getAttribute(event.currentTarget, 'data-p-highlight') === true ? DomHandler.findSingle(event.currentTarget.nextElementSibling, '[data-pc-section=\"menu\"]') : null;\n rootList ? DomHandler.focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: true });\n event.preventDefault();\n }\n onHeaderArrowUpKey(event) {\n const prevHeader = this.findPrevHeader(event.currentTarget.parentElement) || this.findLastHeader();\n const rootList = DomHandler.getAttribute(prevHeader, 'data-p-highlight') === true ? DomHandler.findSingle(prevHeader.nextElementSibling, '[data-pc-section=\"menu\"]') : null;\n rootList ? DomHandler.focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: false });\n event.preventDefault();\n }\n onHeaderHomeKey(event) {\n this.changeFocusedHeader(event, this.findFirstHeader());\n event.preventDefault();\n }\n onHeaderEndKey(event) {\n this.changeFocusedHeader(event, this.findLastHeader());\n event.preventDefault();\n }\n onHeaderEnterKey(event, item, index) {\n const headerAction = DomHandler.findSingle(event.currentTarget, '[data-pc-section=\"headeraction\"]');\n headerAction ? headerAction.click() : this.onHeaderClick(event, item, index);\n event.preventDefault();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: PanelMenu, selector: \"p-panelMenu\", inputs: { model: \"model\", style: \"style\", styleClass: \"styleClass\", multiple: \"multiple\", transitionOptions: \"transitionOptions\", id: \"id\", tabindex: \"tabindex\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-panelmenu .p-panelmenu-header-action{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-action:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;text-decoration:none;position:relative;overflow:hidden;outline:none}.p-panelmenu .p-menuitem-text{line-height:1}.p-panelmenu-expanded.p-toggleable-content:not(.ng-animating),.p-panelmenu .p-submenu-expanded:not(.ng-animating){overflow:visible}.p-panelmenu .p-toggleable-content,.p-panelmenu .p-submenu-list{overflow:hidden}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLink), selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.RouterLinkActive), selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Tooltip), selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => PanelMenuList), selector: \"p-panelMenuList\", inputs: [\"model\", \"panelId\", \"id\", \"items\", \"itemTemplate\", \"parentExpanded\", \"expanded\", \"transitionOptions\", \"root\", \"tabindex\", \"activeItem\"], outputs: [\"itemToggle\", \"headerFocus\"] }], animations: [\n trigger('rootItem', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenu, decorators: [{\n type: Component,\n args: [{ selector: 'p-panelMenu', template: `\n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n \n \n \n \n \n \n \n \n \n {{ getItemProp(item, 'label') }}\n \n {{ getItemProp(item, 'badge') }}\n \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n \n `, animations: [\n trigger('rootItem', [\n state('hidden', style({\n height: '0'\n })),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', [animate('{{transitionParams}}')]),\n transition('void => *', animate(0))\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-panelmenu .p-panelmenu-header-action{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-action:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;text-decoration:none;position:relative;overflow:hidden;outline:none}.p-panelmenu .p-menuitem-text{line-height:1}.p-panelmenu-expanded.p-toggleable-content:not(.ng-animating),.p-panelmenu .p-submenu-expanded:not(.ng-animating){overflow:visible}.p-panelmenu .p-toggleable-content,.p-panelmenu .p-submenu-list{overflow:hidden}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { model: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], multiple: [{\n type: Input\n }], transitionOptions: [{\n type: Input\n }], id: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }] } });\nclass PanelMenuModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub, PanelMenuList], imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon], exports: [PanelMenu, RouterModule, TooltipModule, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuModule, imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon, RouterModule, TooltipModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: PanelMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RouterModule, TooltipModule, SharedModule, AngleDownIcon, AngleRightIcon, ChevronDownIcon, ChevronRightIcon],\n exports: [PanelMenu, RouterModule, TooltipModule, SharedModule],\n declarations: [PanelMenu, PanelMenuSub, PanelMenuList]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PanelMenu, PanelMenuList, PanelMenuModule, PanelMenuSub };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\n\n/**\n * ProgressSpinner is a process status indicator.\n * @group Components\n */\nclass ProgressSpinner {\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Width of the circle stroke.\n * @group Props\n */\n strokeWidth = '2';\n /**\n * Color for the background of the circle.\n * @group Props\n */\n fill = 'none';\n /**\n * Duration of the rotate animation.\n * @group Props\n */\n animationDuration = '2s';\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ProgressSpinner, selector: \"p-progressSpinner\", inputs: { styleClass: \"styleClass\", style: \"style\", strokeWidth: \"strokeWidth\", fill: \"fill\", animationDuration: \"animationDuration\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n \n \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\\\"\\\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;inset:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinner, decorators: [{\n type: Component,\n args: [{ selector: 'p-progressSpinner', template: `\n
    \n \n \n \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\\\"\\\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;inset:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\\n\"] }]\n }], propDecorators: { styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], fill: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }] } });\nclass ProgressSpinnerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinnerModule, declarations: [ProgressSpinner], imports: [CommonModule], exports: [ProgressSpinner] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinnerModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ProgressSpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ProgressSpinner],\n declarations: [ProgressSpinner]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ProgressSpinner, ProgressSpinnerModule };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass BanIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BanIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: BanIcon, isStandalone: true, selector: \"BanIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: BanIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'BanIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BanIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass StarIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: StarIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: StarIcon, isStandalone: true, selector: \"StarIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: StarIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'StarIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { StarIcon };\n","import * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass StarFillIcon extends BaseIcon {\n pathId;\n ngOnInit() {\n this.pathId = 'url(#' + UniqueComponentId() + ')';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: StarFillIcon, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: StarFillIcon, isStandalone: true, selector: \"StarFillIcon\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: StarFillIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'StarFillIcon',\n standalone: true,\n imports: [BaseIcon],\n template: `\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { StarFillIcon };\n","import * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, signal, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { BanIcon } from 'primeng/icons/ban';\nimport { StarIcon } from 'primeng/icons/star';\nimport { StarFillIcon } from 'primeng/icons/starfill';\nimport { DomHandler } from 'primeng/dom';\nimport { UniqueComponentId } from 'primeng/utils';\n\nconst RATING_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Rating),\n multi: true\n};\n/**\n * Rating is an extension to standard radio button element with theming.\n * @group Components\n */\nclass Rating {\n cd;\n config;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * When present, changing the value is not possible.\n * @group Props\n */\n readonly;\n /**\n * Number of stars.\n * @group Props\n */\n stars = 5;\n /**\n * When specified a cancel icon is displayed to allow removing the value.\n * @group Props\n */\n cancel = true;\n /**\n * Style class of the on icon.\n * @group Props\n */\n iconOnClass;\n /**\n * Inline style of the on icon.\n * @group Props\n */\n iconOnStyle;\n /**\n * Style class of the off icon.\n * @group Props\n */\n iconOffClass;\n /**\n * Inline style of the off icon.\n * @group Props\n */\n iconOffStyle;\n /**\n * Style class of the cancel icon.\n * @group Props\n */\n iconCancelClass;\n /**\n * Inline style of the cancel icon.\n * @group Props\n */\n iconCancelStyle;\n /**\n * Emitted on value change.\n * @param {RatingRateEvent} value - Custom rate event.\n * @group Emits\n */\n onRate = new EventEmitter();\n /**\n * Emitted when the rating is cancelled.\n * @param {Event} value - Browser event.\n * @group Emits\n */\n onCancel = new EventEmitter();\n /**\n * Emitted when the rating receives focus.\n * @param {Event} value - Browser event.\n * @group Emits\n */\n onFocus = new EventEmitter();\n /**\n * Emitted when the rating loses focus.\n * @param {Event} value - Browser event.\n * @group Emits\n */\n onBlur = new EventEmitter();\n templates;\n onIconTemplate;\n offIconTemplate;\n cancelIconTemplate;\n value;\n onModelChange = () => { };\n onModelTouched = () => { };\n starsArray;\n isFocusVisibleItem = true;\n focusedOptionIndex = signal(-1);\n name;\n constructor(cd, config) {\n this.cd = cd;\n this.config = config;\n }\n ngOnInit() {\n this.name = this.name || UniqueComponentId();\n this.starsArray = [];\n for (let i = 0; i < this.stars; i++) {\n this.starsArray[i] = i;\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'onicon':\n this.onIconTemplate = item.template;\n break;\n case 'officon':\n this.offIconTemplate = item.template;\n break;\n case 'cancelicon':\n this.cancelIconTemplate = item.template;\n break;\n }\n });\n }\n onOptionClick(event, value) {\n if (!this.readonly && !this.disabled) {\n this.onOptionSelect(event, value);\n this.isFocusVisibleItem = false;\n const firstFocusableEl = DomHandler.getFirstFocusableElement(event.currentTarget, '');\n firstFocusableEl && DomHandler.focus(firstFocusableEl);\n }\n }\n onOptionSelect(event, value) {\n this.focusedOptionIndex.set(value);\n this.updateModel(event, value || null);\n }\n onChange(event, value) {\n this.onOptionSelect(event, value);\n this.isFocusVisibleItem = true;\n }\n onInputBlur(event) {\n this.focusedOptionIndex.set(-1);\n this.onBlur.emit(event);\n }\n onInputFocus(event, value) {\n this.focusedOptionIndex.set(value);\n this.onFocus.emit(event);\n }\n updateModel(event, value) {\n this.value = value;\n this.onModelChange(this.value);\n this.onModelTouched();\n if (!value) {\n this.onCancel.emit();\n }\n else {\n this.onRate.emit({\n originalEvent: event,\n value\n });\n }\n }\n cancelAriaLabel() {\n return this.config.translation.clear;\n }\n starAriaLabel(value) {\n return value === 1 ? this.config.translation.aria.star : this.config.translation.aria.stars.replace(/{star}/g, value);\n }\n getIconTemplate(i) {\n return !this.value || i >= this.value ? this.offIconTemplate : this.onIconTemplate;\n }\n writeValue(value) {\n this.value = value;\n this.cd.detectChanges();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n get isCustomIcon() {\n return this.templates && this.templates.length > 0;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Rating, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Rating, selector: \"p-rating\", inputs: { disabled: \"disabled\", readonly: \"readonly\", stars: \"stars\", cancel: \"cancel\", iconOnClass: \"iconOnClass\", iconOnStyle: \"iconOnStyle\", iconOffClass: \"iconOffClass\", iconOffStyle: \"iconOffStyle\", iconCancelClass: \"iconCancelClass\", iconCancelStyle: \"iconCancelStyle\" }, outputs: { onRate: \"onRate\", onCancel: \"onCancel\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, providers: [RATING_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n \n
    \n \n
    \n \n \n \n = value\">\n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-rating{display:inline-flex}.p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => StarFillIcon), selector: \"StarFillIcon\" }, { kind: \"component\", type: i0.forwardRef(() => StarIcon), selector: \"StarIcon\" }, { kind: \"component\", type: i0.forwardRef(() => BanIcon), selector: \"BanIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Rating, decorators: [{\n type: Component,\n args: [{ selector: 'p-rating', template: `\n
    \n \n
    \n \n \n \n \n \n
    \n \n
    \n \n \n \n = value\">\n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n `, providers: [RATING_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-rating{display:inline-flex}.p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }], propDecorators: { disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], stars: [{\n type: Input\n }], cancel: [{\n type: Input\n }], iconOnClass: [{\n type: Input\n }], iconOnStyle: [{\n type: Input\n }], iconOffClass: [{\n type: Input\n }], iconOffStyle: [{\n type: Input\n }], iconCancelClass: [{\n type: Input\n }], iconCancelStyle: [{\n type: Input\n }], onRate: [{\n type: Output\n }], onCancel: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass RatingModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: RatingModule, declarations: [Rating], imports: [CommonModule, StarFillIcon, StarIcon, BanIcon], exports: [Rating, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RatingModule, imports: [CommonModule, StarFillIcon, StarIcon, BanIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: RatingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, StarFillIcon, StarIcon, BanIcon],\n exports: [Rating, SharedModule],\n declarations: [Rating]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RATING_VALUE_ACCESSOR, Rating, RatingModule };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\n\n/**\n * Skeleton is a placeholder to display instead of the actual content.\n * @group Components\n */\nclass Skeleton {\n /**\n * Class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Shape of the element.\n * @group Props\n */\n shape = 'rectangle';\n /**\n * Type of the animation.\n * @gruop Props\n */\n animation = 'wave';\n /**\n * Border radius of the element, defaults to value from theme.\n * @group Props\n */\n borderRadius;\n /**\n * Size of the Circle or Square.\n * @group Props\n */\n size;\n /**\n * Width of the element.\n * @group Props\n */\n width = '100%';\n /**\n * Height of the element.\n * @group Props\n */\n height = '1rem';\n containerClass() {\n return {\n 'p-skeleton p-component': true,\n 'p-skeleton-circle': this.shape === 'circle',\n 'p-skeleton-none': this.animation === 'none'\n };\n }\n containerStyle() {\n if (this.size)\n return { ...this.style, width: this.size, height: this.size, borderRadius: this.borderRadius };\n else\n return { ...this.style, width: this.width, height: this.height, borderRadius: this.borderRadius };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Skeleton, selector: \"p-skeleton\", inputs: { styleClass: \"styleClass\", style: \"style\", shape: \"shape\", animation: \"animation\", borderRadius: \"borderRadius\", size: \"size\", width: \"width\", height: \"height\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `
    `, isInline: true, styles: [\"@layer primeng{.p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\\\"\\\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Skeleton, decorators: [{\n type: Component,\n args: [{ selector: 'p-skeleton', template: `
    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\\\"\\\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\\n\"] }]\n }], propDecorators: { styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], shape: [{\n type: Input\n }], animation: [{\n type: Input\n }], borderRadius: [{\n type: Input\n }], size: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] } });\nclass SkeletonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SkeletonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: SkeletonModule, declarations: [Skeleton], imports: [CommonModule], exports: [Skeleton] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SkeletonModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SkeletonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Skeleton],\n declarations: [Skeleton]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Skeleton, SkeletonModule };\n","import * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomHandler } from 'primeng/dom';\n\nconst SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true\n};\n/**\n * Slider is a component to provide input with a drag handle.\n * @group Components\n */\nclass Slider {\n document;\n platformId;\n el;\n renderer;\n ngZone;\n cd;\n /**\n * When enabled, displays an animation on click of the slider bar.\n * @group Props\n */\n animate;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * Mininum boundary value.\n * @group Props\n */\n min = 0;\n /**\n * Maximum boundary value.\n * @group Props\n */\n max = 100;\n /**\n * Orientation of the slider.\n * @group Props\n */\n orientation = 'horizontal';\n /**\n * Step factor to increment/decrement the value.\n * @group Props\n */\n step;\n /**\n * When specified, allows two boundary values to be picked.\n * @group Props\n */\n range;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = 0;\n /**\n * Callback to invoke on value change.\n * @param {SliderChangeEvent} event - Custom value change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n /**\n * Callback to invoke when slide ended.\n * @param {SliderSlideEndEvent} event - Custom slide end event.\n * @group Emits\n */\n onSlideEnd = new EventEmitter();\n sliderHandle;\n sliderHandleStart;\n sliderHandleEnd;\n value;\n values;\n handleValue;\n handleValues = [];\n diff;\n offset;\n bottom;\n onModelChange = () => { };\n onModelTouched = () => { };\n dragging;\n dragListener;\n mouseupListener;\n initX;\n initY;\n barWidth;\n barHeight;\n sliderHandleClick;\n handleIndex = 0;\n startHandleValue;\n startx;\n starty;\n constructor(document, platformId, el, renderer, ngZone, cd) {\n this.document = document;\n this.platformId = platformId;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.cd = cd;\n }\n onMouseDown(event, index) {\n if (this.disabled) {\n return;\n }\n this.dragging = true;\n this.updateDomData();\n this.sliderHandleClick = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n }\n else {\n this.handleIndex = index;\n }\n this.bindDragListeners();\n event.target.focus();\n event.preventDefault();\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n }\n }\n onDragStart(event, index) {\n if (this.disabled) {\n return;\n }\n var touchobj = event.changedTouches[0];\n this.startHandleValue = this.range ? this.handleValues[index] : this.handleValue;\n this.dragging = true;\n if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n this.handleIndex = 0;\n }\n else {\n this.handleIndex = index;\n }\n if (this.orientation === 'horizontal') {\n this.startx = parseInt(touchobj.clientX, 10);\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n }\n else {\n this.starty = parseInt(touchobj.clientY, 10);\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n if (this.animate) {\n DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n }\n event.preventDefault();\n }\n onDrag(event) {\n if (this.disabled) {\n return;\n }\n var touchobj = event.changedTouches[0], handleValue = 0;\n if (this.orientation === 'horizontal') {\n handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / this.barWidth) + this.startHandleValue;\n }\n else {\n handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / this.barHeight) + this.startHandleValue;\n }\n this.setValueFromHandle(event, handleValue);\n event.preventDefault();\n }\n onDragEnd(event) {\n if (this.disabled) {\n return;\n }\n this.dragging = false;\n if (this.range)\n this.onSlideEnd.emit({ originalEvent: event, values: this.values });\n else\n this.onSlideEnd.emit({ originalEvent: event, value: this.value });\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n }\n event.preventDefault();\n }\n onBarClick(event) {\n if (this.disabled) {\n return;\n }\n if (!this.sliderHandleClick) {\n this.updateDomData();\n this.handleChange(event);\n if (this.range)\n this.onSlideEnd.emit({ originalEvent: event, values: this.values });\n else\n this.onSlideEnd.emit({ originalEvent: event, value: this.value });\n }\n this.sliderHandleClick = false;\n }\n onKeyDown(event, index) {\n this.handleIndex = index;\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n this.decrementValue(event, index);\n event.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowRight':\n this.incrementValue(event, index);\n event.preventDefault();\n break;\n case 'PageDown':\n this.decrementValue(event, index, true);\n event.preventDefault();\n break;\n case 'PageUp':\n this.incrementValue(event, index, true);\n event.preventDefault();\n break;\n case 'Home':\n this.updateValue(this.min, event);\n event.preventDefault();\n break;\n case 'End':\n this.updateValue(this.max, event);\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n decrementValue(event, index, pageKey = false) {\n let newValue;\n if (this.range) {\n if (this.step)\n newValue = this.values[index] - this.step;\n else\n newValue = this.values[index] - 1;\n }\n else {\n if (this.step)\n newValue = this.value - this.step;\n else if (!this.step && pageKey)\n newValue = this.value - 10;\n else\n newValue = this.value - 1;\n }\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n incrementValue(event, index, pageKey = false) {\n let newValue;\n if (this.range) {\n if (this.step)\n newValue = this.values[index] + this.step;\n else\n newValue = this.values[index] + 1;\n }\n else {\n if (this.step)\n newValue = this.value + this.step;\n else if (!this.step && pageKey)\n newValue = this.value + 10;\n else\n newValue = this.value + 1;\n }\n this.updateValue(newValue, event);\n event.preventDefault();\n }\n handleChange(event) {\n let handleValue = this.calculateHandleValue(event);\n this.setValueFromHandle(event, handleValue);\n }\n bindDragListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngZone.runOutsideAngular(() => {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : this.document;\n if (!this.dragListener) {\n this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n if (this.dragging) {\n this.ngZone.run(() => {\n this.handleChange(event);\n });\n }\n });\n }\n if (!this.mouseupListener) {\n this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n if (this.dragging) {\n this.dragging = false;\n this.ngZone.run(() => {\n if (this.range)\n this.onSlideEnd.emit({ originalEvent: event, values: this.values });\n else\n this.onSlideEnd.emit({ originalEvent: event, value: this.value });\n if (this.animate) {\n DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n }\n });\n }\n });\n }\n });\n }\n }\n unbindDragListeners() {\n if (this.dragListener) {\n this.dragListener();\n this.dragListener = null;\n }\n if (this.mouseupListener) {\n this.mouseupListener();\n this.mouseupListener = null;\n }\n }\n setValueFromHandle(event, handleValue) {\n let newValue = this.getValueFromHandle(handleValue);\n if (this.range) {\n if (this.step) {\n this.handleStepChange(newValue, this.values[this.handleIndex]);\n }\n else {\n this.handleValues[this.handleIndex] = handleValue;\n this.updateValue(newValue, event);\n }\n }\n else {\n if (this.step) {\n this.handleStepChange(newValue, this.value);\n }\n else {\n this.handleValue = handleValue;\n this.updateValue(newValue, event);\n }\n }\n this.cd.markForCheck();\n }\n handleStepChange(newValue, oldValue) {\n let diff = newValue - oldValue;\n let val = oldValue;\n let _step = this.step;\n if (diff < 0) {\n val = oldValue + Math.ceil(newValue / _step - oldValue / _step) * _step;\n }\n else if (diff > 0) {\n val = oldValue + Math.floor(newValue / _step - oldValue / _step) * _step;\n }\n this.updateValue(val);\n this.updateHandleValue();\n }\n writeValue(value) {\n if (this.range)\n this.values = value || [0, 0];\n else\n this.value = value || 0;\n this.updateHandleValue();\n this.updateDiffAndOffset();\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n get rangeStartLeft() {\n if (!this.isVertical())\n return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%';\n return null;\n }\n get rangeStartBottom() {\n return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n }\n get rangeEndLeft() {\n return this.isVertical() ? null : this.handleValues[1] + '%';\n }\n get rangeEndBottom() {\n return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n }\n isVertical() {\n return this.orientation === 'vertical';\n }\n updateDomData() {\n let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n this.initX = rect.left + DomHandler.getWindowScrollLeft();\n this.initY = rect.top + DomHandler.getWindowScrollTop();\n this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n }\n calculateHandleValue(event) {\n if (this.orientation === 'horizontal')\n return ((event.pageX - this.initX) * 100) / this.barWidth;\n else\n return ((this.initY + this.barHeight - event.pageY) * 100) / this.barHeight;\n }\n updateHandleValue() {\n if (this.range) {\n this.handleValues[0] = ((this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100) / (this.max - this.min);\n this.handleValues[1] = ((this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100) / (this.max - this.min);\n }\n else {\n if (this.value < this.min)\n this.handleValue = 0;\n else if (this.value > this.max)\n this.handleValue = 100;\n else\n this.handleValue = ((this.value - this.min) * 100) / (this.max - this.min);\n }\n if (this.step) {\n this.updateDiffAndOffset();\n }\n }\n updateDiffAndOffset() {\n this.diff = this.getDiff();\n this.offset = this.getOffset();\n }\n getDiff() {\n return Math.abs(this.handleValues[0] - this.handleValues[1]);\n }\n getOffset() {\n return Math.min(this.handleValues[0], this.handleValues[1]);\n }\n updateValue(val, event) {\n if (this.range) {\n let value = val;\n if (this.handleIndex == 0) {\n if (value < this.min) {\n value = this.min;\n this.handleValues[0] = 0;\n }\n else if (value > this.values[1]) {\n if (value > this.max) {\n value = this.max;\n this.handleValues[0] = 100;\n }\n }\n this.sliderHandleStart?.nativeElement.focus();\n }\n else {\n if (value > this.max) {\n value = this.max;\n this.handleValues[1] = 100;\n this.offset = this.handleValues[1];\n }\n else if (value < this.min) {\n value = this.min;\n this.handleValues[1] = 0;\n }\n else if (value < this.values[0]) {\n this.offset = this.handleValues[1];\n }\n this.sliderHandleEnd?.nativeElement.focus();\n }\n if (this.step) {\n this.updateHandleValue();\n }\n else {\n this.updateDiffAndOffset();\n }\n this.values[this.handleIndex] = this.getNormalizedValue(value);\n let newValues = [this.minVal, this.maxVal];\n this.onModelChange(newValues);\n this.onChange.emit({ event: event, values: this.values });\n }\n else {\n if (val < this.min) {\n val = this.min;\n this.handleValue = 0;\n }\n else if (val > this.max) {\n val = this.max;\n this.handleValue = 100;\n }\n this.value = this.getNormalizedValue(val);\n this.onModelChange(this.value);\n this.onChange.emit({ event: event, value: this.value });\n this.sliderHandle?.nativeElement.focus();\n }\n this.updateHandleValue();\n }\n getValueFromHandle(handleValue) {\n return (this.max - this.min) * (handleValue / 100) + this.min;\n }\n getDecimalsCount(value) {\n if (value && Math.floor(value) !== value)\n return value.toString().split('.')[1].length || 0;\n return 0;\n }\n getNormalizedValue(val) {\n let decimalsCount = this.getDecimalsCount(this.step);\n if (decimalsCount > 0) {\n return +parseFloat(val.toString()).toFixed(decimalsCount);\n }\n else {\n return Math.floor(val);\n }\n }\n ngOnDestroy() {\n this.unbindDragListeners();\n }\n get minVal() {\n return Math.min(this.values[1], this.values[0]);\n }\n get maxVal() {\n return Math.max(this.values[1], this.values[0]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Slider, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Slider, selector: \"p-slider\", inputs: { animate: \"animate\", disabled: \"disabled\", min: \"min\", max: \"max\", orientation: \"orientation\", step: \"step\", range: \"range\", style: \"style\", styleClass: \"styleClass\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", tabindex: \"tabindex\" }, outputs: { onChange: \"onChange\", onSlideEnd: \"onSlideEnd\" }, host: { classAttribute: \"p-element\" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"sliderHandle\", first: true, predicate: [\"sliderHandle\"], descendants: true }, { propertyName: \"sliderHandleStart\", first: true, predicate: [\"sliderHandleStart\"], descendants: true }, { propertyName: \"sliderHandleEnd\", first: true, predicate: [\"sliderHandleEnd\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Slider, decorators: [{\n type: Component,\n args: [{ selector: 'p-slider', template: `\n \n \n \n \n \n \n \n \n \n `, providers: [SLIDER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { animate: [{\n type: Input\n }], disabled: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], orientation: [{\n type: Input\n }], step: [{\n type: Input\n }], range: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onSlideEnd: [{\n type: Output\n }], sliderHandle: [{\n type: ViewChild,\n args: ['sliderHandle']\n }], sliderHandleStart: [{\n type: ViewChild,\n args: ['sliderHandleStart']\n }], sliderHandleEnd: [{\n type: ViewChild,\n args: ['sliderHandleEnd']\n }] } });\nclass SliderModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SliderModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Slider],\n declarations: [Slider]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SLIDER_VALUE_ACCESSOR, Slider, SliderModule };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, ViewChild, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst SPINNER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Spinner),\n multi: true\n};\nclass Spinner {\n el;\n cd;\n onChange = new EventEmitter();\n onFocus = new EventEmitter();\n onBlur = new EventEmitter();\n min;\n max;\n maxlength;\n size;\n placeholder;\n inputId;\n disabled;\n readonly;\n tabindex;\n required;\n name;\n ariaLabelledBy;\n inputStyle;\n inputStyleClass;\n formatInput;\n decimalSeparator;\n thousandSeparator;\n precision;\n value;\n _step = 1;\n formattedValue;\n onModelChange = () => { };\n onModelTouched = () => { };\n keyPattern = /[0-9\\+\\-]/;\n timer;\n focus;\n filled;\n negativeSeparator = '-';\n localeDecimalSeparator;\n localeThousandSeparator;\n thousandRegExp;\n calculatedPrecision;\n inputfieldViewChild;\n get step() {\n return this._step;\n }\n set step(val) {\n this._step = val;\n if (this._step != null) {\n let tokens = this.step.toString().split(/[,]|[.]/);\n this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;\n }\n }\n constructor(el, cd) {\n this.el = el;\n this.cd = cd;\n }\n ngOnInit() {\n if (this.formatInput) {\n this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);\n this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);\n this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');\n if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {\n console.warn('thousandSeparator and decimalSeparator cannot have the same value.');\n }\n }\n }\n repeat(event, interval, dir) {\n let i = interval || 500;\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n this.spin(event, dir);\n }\n spin(event, dir) {\n let step = this.step * dir;\n let currentValue;\n let precision = this.getPrecision();\n if (this.value)\n currentValue = typeof this.value === 'string' ? this.parseValue(this.value) : this.value;\n else\n currentValue = 0;\n if (precision)\n this.value = parseFloat(this.toFixed(currentValue + step, precision));\n else\n this.value = currentValue + step;\n if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {\n this.value = currentValue;\n }\n if (this.min !== undefined && this.value < this.min) {\n this.value = this.min;\n }\n if (this.max !== undefined && this.value > this.max) {\n this.value = this.max;\n }\n this.formatValue();\n this.onModelChange(this.value);\n this.onChange.emit(event);\n }\n getPrecision() {\n return this.precision === undefined ? this.calculatedPrecision : this.precision;\n }\n toFixed(value, precision) {\n let power = Math.pow(10, precision || 0);\n return String(Math.round(value * power) / power);\n }\n onUpButtonMousedown(event) {\n if (!this.disabled) {\n this.inputfieldViewChild.nativeElement.focus();\n this.repeat(event, null, 1);\n this.updateFilledState();\n event.preventDefault();\n }\n }\n onUpButtonMouseup(event) {\n if (!this.disabled) {\n this.clearTimer();\n }\n }\n onUpButtonMouseleave(event) {\n if (!this.disabled) {\n this.clearTimer();\n }\n }\n onDownButtonMousedown(event) {\n if (!this.disabled) {\n this.inputfieldViewChild.nativeElement.focus();\n this.repeat(event, null, -1);\n this.updateFilledState();\n event.preventDefault();\n }\n }\n onDownButtonMouseup(event) {\n if (!this.disabled) {\n this.clearTimer();\n }\n }\n onDownButtonMouseleave(event) {\n if (!this.disabled) {\n this.clearTimer();\n }\n }\n onInputKeydown(event) {\n if (event.which == 38) {\n this.spin(event, 1);\n event.preventDefault();\n }\n else if (event.which == 40) {\n this.spin(event, -1);\n event.preventDefault();\n }\n }\n onInputChange(event) {\n this.onChange.emit(event);\n }\n onInput(event) {\n this.value = this.parseValue(event.target.value);\n this.onModelChange(this.value);\n this.updateFilledState();\n }\n onInputBlur(event) {\n this.focus = false;\n this.formatValue();\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n onInputFocus(event) {\n this.focus = true;\n this.onFocus.emit(event);\n }\n parseValue(val) {\n let value;\n let precision = this.getPrecision();\n if (val.trim() === '') {\n value = null;\n }\n else {\n if (this.formatInput) {\n val = val.replace(this.thousandRegExp, '');\n }\n if (precision) {\n val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');\n value = parseFloat(val);\n }\n else {\n value = parseInt(val, 10);\n }\n if (!isNaN(value)) {\n if (this.max !== null && value > this.max) {\n value = this.max;\n }\n if (this.min !== null && value < this.min) {\n value = this.min;\n }\n }\n else {\n value = null;\n }\n }\n return value;\n }\n formatValue() {\n let value = this.value;\n let precision = this.getPrecision();\n if (value != null) {\n if (this.formatInput) {\n value = value.toLocaleString(undefined, { maximumFractionDigits: 20 });\n if (this.decimalSeparator && this.thousandSeparator) {\n value = value.split(this.localeDecimalSeparator);\n if (precision && value[1]) {\n value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];\n }\n if (this.thousandSeparator && value[0].length > 3) {\n value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);\n }\n value = value.join('');\n }\n }\n this.formattedValue = value.toString();\n }\n else {\n this.formattedValue = null;\n }\n if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n this.inputfieldViewChild.nativeElement.value = this.formattedValue;\n }\n }\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n writeValue(value) {\n this.value = value;\n this.formatValue();\n this.updateFilledState();\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n updateFilledState() {\n this.filled = this.value !== undefined && this.value != null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Spinner, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Spinner, selector: \"p-spinner\", inputs: { min: \"min\", max: \"max\", maxlength: \"maxlength\", size: \"size\", placeholder: \"placeholder\", inputId: \"inputId\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", required: \"required\", name: \"name\", ariaLabelledBy: \"ariaLabelledBy\", inputStyle: \"inputStyle\", inputStyleClass: \"inputStyleClass\", formatInput: \"formatInput\", decimalSeparator: \"decimalSeparator\", thousandSeparator: \"thousandSeparator\", precision: \"precision\", step: \"step\" }, outputs: { onChange: \"onChange\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { properties: { \"class.ui-inputwrapper-filled\": \"filled\", \"class.ui-inputwrapper-focus\": \"focus\" }, classAttribute: \"p-element\" }, providers: [SPINNER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"inputfieldViewChild\", first: true, predicate: [\"inputfield\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Spinner, decorators: [{\n type: Component,\n args: [{ selector: 'p-spinner', template: `\n \n \n \n \n \n \n \n \n \n `, host: {\n class: 'p-element',\n '[class.ui-inputwrapper-filled]': 'filled',\n '[class.ui-inputwrapper-focus]': 'focus'\n }, providers: [SPINNER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\"@layer primeng{.ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { onChange: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], size: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], inputId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], required: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], formatInput: [{\n type: Input\n }], decimalSeparator: [{\n type: Input\n }], thousandSeparator: [{\n type: Input\n }], precision: [{\n type: Input\n }], inputfieldViewChild: [{\n type: ViewChild,\n args: ['inputfield']\n }], step: [{\n type: Input\n }] } });\nclass SpinnerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: SpinnerModule, declarations: [Spinner], imports: [CommonModule, InputTextModule], exports: [Spinner] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SpinnerModule, imports: [CommonModule, InputTextModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: SpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule],\n exports: [Spinner],\n declarations: [Spinner]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SPINNER_VALUE_ACCESSOR, Spinner, SpinnerModule };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\nimport * as i3 from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { Subject } from 'rxjs';\n\nclass TerminalService {\n commandSource = new Subject();\n responseSource = new Subject();\n commandHandler = this.commandSource.asObservable();\n responseHandler = this.responseSource.asObservable();\n sendCommand(command) {\n if (command) {\n this.commandSource.next(command);\n }\n }\n sendResponse(response) {\n if (response) {\n this.responseSource.next(response);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Terminal is a text based user interface.\n * @group Components\n */\nclass Terminal {\n el;\n terminalService;\n cd;\n /**\n * Initial text to display on terminal.\n * @group Props\n */\n welcomeMessage;\n /**\n * Prompt text for each command.\n * @group Props\n */\n prompt;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n commands = [];\n command;\n container;\n commandProcessed;\n subscription;\n constructor(el, terminalService, cd) {\n this.el = el;\n this.terminalService = terminalService;\n this.cd = cd;\n this.subscription = terminalService.responseHandler.subscribe((response) => {\n this.commands[this.commands.length - 1].response = response;\n this.commandProcessed = true;\n });\n }\n ngAfterViewInit() {\n this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];\n }\n ngAfterViewChecked() {\n if (this.commandProcessed) {\n this.container.scrollTop = this.container.scrollHeight;\n this.commandProcessed = false;\n }\n }\n set response(value) {\n if (value) {\n this.commands[this.commands.length - 1].response = value;\n this.commandProcessed = true;\n }\n }\n handleCommand(event) {\n if (event.keyCode == 13) {\n this.commands.push({ text: this.command });\n this.terminalService.sendCommand(this.command);\n this.command = '';\n }\n }\n focus(element) {\n element.focus();\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Terminal, deps: [{ token: i0.ElementRef }, { token: TerminalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Terminal, selector: \"p-terminal\", inputs: { welcomeMessage: \"welcomeMessage\", prompt: \"prompt\", style: \"style\", styleClass: \"styleClass\", response: \"response\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    {{ welcomeMessage }}
    \n
    \n
    \n {{ prompt }}\n {{ command.text }}\n
    {{ command.response }}
    \n
    \n
    \n
    \n {{ prompt }}\n \n
    \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Terminal, decorators: [{\n type: Component,\n args: [{ selector: 'p-terminal', template: `\n
    \n
    {{ welcomeMessage }}
    \n
    \n
    \n {{ prompt }}\n {{ command.text }}\n
    {{ command.response }}
    \n
    \n
    \n
    \n {{ prompt }}\n \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: TerminalService }, { type: i0.ChangeDetectorRef }], propDecorators: { welcomeMessage: [{\n type: Input\n }], prompt: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], response: [{\n type: Input\n }] } });\nclass TerminalModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalModule, declarations: [Terminal], imports: [CommonModule, FormsModule], exports: [Terminal] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalModule, imports: [CommonModule, FormsModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TerminalModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, FormsModule],\n exports: [Terminal],\n declarations: [Terminal]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Terminal, TerminalModule, TerminalService };\n","import { style, state, animate, transition, trigger, animateChild, query } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, Inject, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ExclamationTriangleIcon } from 'primeng/icons/exclamationtriangle';\nimport { InfoCircleIcon } from 'primeng/icons/infocircle';\nimport { TimesIcon } from 'primeng/icons/times';\nimport { TimesCircleIcon } from 'primeng/icons/timescircle';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId, ZIndexUtils, ObjectUtils } from 'primeng/utils';\n\nclass ToastItem {\n zone;\n config;\n message;\n index;\n life;\n template;\n headlessTemplate;\n showTransformOptions;\n hideTransformOptions;\n showTransitionOptions;\n hideTransitionOptions;\n onClose = new EventEmitter();\n containerViewChild;\n timeout;\n constructor(zone, config) {\n this.zone = zone;\n this.config = config;\n }\n ngAfterViewInit() {\n this.initTimeout();\n }\n initTimeout() {\n if (!this.message?.sticky) {\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => {\n this.onClose.emit({\n index: this.index,\n message: this.message\n });\n }, this.message?.life || this.life || 3000);\n });\n }\n }\n clearTimeout() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n onMouseEnter() {\n this.clearTimeout();\n }\n onMouseLeave() {\n this.initTimeout();\n }\n onCloseIconClick(event) {\n this.clearTimeout();\n this.onClose.emit({\n index: this.index,\n message: this.message\n });\n event.preventDefault();\n }\n get closeAriaLabel() {\n return this.config.translation.aria ? this.config.translation.aria.close : undefined;\n }\n ngOnDestroy() {\n this.clearTimeout();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: ToastItem, selector: \"p-toastItem\", inputs: { message: \"message\", index: \"index\", life: \"life\", template: \"template\", headlessTemplate: \"headlessTemplate\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n
    {{ message.summary }}
    \n
    {{ message.detail }}
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }, { kind: \"component\", type: i0.forwardRef(() => InfoCircleIcon), selector: \"InfoCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesCircleIcon), selector: \"TimesCircleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ExclamationTriangleIcon), selector: \"ExclamationTriangleIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TimesIcon), selector: \"TimesIcon\" }], animations: [\n trigger('messageState', [\n state('visible', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => *', [\n style({\n transform: '{{showTransformParams}}',\n opacity: 0\n }),\n animate('{{showTransitionParams}}')\n ]),\n transition('* => void', [\n animate('{{hideTransitionParams}}', style({\n height: 0,\n opacity: 0,\n transform: '{{hideTransformParams}}'\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-toastItem',\n template: `\n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n
    {{ message.summary }}
    \n
    {{ message.detail }}
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n `,\n animations: [\n trigger('messageState', [\n state('visible', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => *', [\n style({\n transform: '{{showTransformParams}}',\n opacity: 0\n }),\n animate('{{showTransitionParams}}')\n ]),\n transition('* => void', [\n animate('{{hideTransitionParams}}', style({\n height: 0,\n opacity: 0,\n transform: '{{hideTransformParams}}'\n }))\n ])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.PrimeNGConfig }], propDecorators: { message: [{\n type: Input\n }], index: [{\n type: Input\n }], life: [{\n type: Input\n }], template: [{\n type: Input\n }], headlessTemplate: [{\n type: Input\n }], showTransformOptions: [{\n type: Input\n }], hideTransformOptions: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onClose: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }] } });\n/**\n * Toast is used to display messages in an overlay.\n * @group Components\n */\nclass Toast {\n document;\n renderer;\n messageService;\n cd;\n config;\n /**\n * Key of the message in case message is targeted to a specific toast component.\n * @group Props\n */\n key;\n /**\n * Whether to automatically manage layering.\n * @group Props\n */\n autoZIndex = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex = 0;\n /**\n * The default time to display messages for in milliseconds.\n * @group Props\n */\n life = 3000;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Inline class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Position of the toast in viewport.\n * @group Props\n */\n get position() {\n return this._position;\n }\n set position(value) {\n this._position = value;\n this.cd.markForCheck();\n }\n /**\n * It does not add the new message if there is already a toast displayed with the same content\n * @group Props\n */\n preventOpenDuplicates = false;\n /**\n * Displays only once a message with the same content.\n * @group Props\n */\n preventDuplicates = false;\n /**\n * Transform options of the show animation.\n * @group Props\n */\n showTransformOptions = 'translateY(100%)';\n /**\n * Transform options of the hide animation.\n * @group Props\n */\n hideTransformOptions = 'translateY(-100%)';\n /**\n * Transition options of the show animation.\n * @group Props\n */\n showTransitionOptions = '300ms ease-out';\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n hideTransitionOptions = '250ms ease-in';\n /**\n * Object literal to define styles per screen size.\n * @group Props\n */\n breakpoints;\n /**\n * Callback to invoke when a message is closed.\n * @param {ToastCloseEvent} event - custom close event.\n * @group Emits\n */\n onClose = new EventEmitter();\n containerViewChild;\n templates;\n messageSubscription;\n clearSubscription;\n messages;\n messagesArchieve;\n template;\n headlessTemplate;\n _position = 'top-right';\n constructor(document, renderer, messageService, cd, config) {\n this.document = document;\n this.renderer = renderer;\n this.messageService = messageService;\n this.cd = cd;\n this.config = config;\n }\n styleElement;\n id = UniqueComponentId();\n ngOnInit() {\n this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {\n if (messages) {\n if (Array.isArray(messages)) {\n const filteredMessages = messages.filter((m) => this.canAdd(m));\n this.add(filteredMessages);\n }\n else if (this.canAdd(messages)) {\n this.add([messages]);\n }\n }\n });\n this.clearSubscription = this.messageService.clearObserver.subscribe((key) => {\n if (key) {\n if (this.key === key) {\n this.messages = null;\n }\n }\n else {\n this.messages = null;\n }\n this.cd.markForCheck();\n });\n }\n ngAfterViewInit() {\n if (this.breakpoints) {\n this.createStyle();\n }\n }\n add(messages) {\n this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n if (this.preventDuplicates) {\n this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n }\n this.cd.markForCheck();\n }\n canAdd(message) {\n let allow = this.key === message.key;\n if (allow && this.preventOpenDuplicates) {\n allow = !this.containsMessage(this.messages, message);\n }\n if (allow && this.preventDuplicates) {\n allow = !this.containsMessage(this.messagesArchieve, message);\n }\n return allow;\n }\n containsMessage(collection, message) {\n if (!collection) {\n return false;\n }\n return (collection.find((m) => {\n return m.summary === message.summary && m.detail == message.detail && m.severity === message.severity;\n }) != null);\n }\n ngAfterContentInit() {\n this.templates?.forEach((item) => {\n switch (item.getType()) {\n case 'message':\n this.template = item.template;\n break;\n case 'headless':\n this.headlessTemplate = item.template;\n break;\n default:\n this.template = item.template;\n break;\n }\n });\n }\n onMessageClose(event) {\n this.messages?.splice(event.index, 1);\n this.onClose.emit({\n message: event.message\n });\n this.cd.detectChanges();\n }\n onAnimationStart(event) {\n if (event.fromState === 'void') {\n this.renderer.setAttribute(this.containerViewChild?.nativeElement, this.id, '');\n if (this.autoZIndex && this.containerViewChild?.nativeElement.style.zIndex === '') {\n ZIndexUtils.set('modal', this.containerViewChild?.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n }\n }\n }\n onAnimationEnd(event) {\n if (event.toState === 'void') {\n if (this.autoZIndex && ObjectUtils.isEmpty(this.messages)) {\n ZIndexUtils.clear(this.containerViewChild?.nativeElement);\n }\n }\n }\n createStyle() {\n if (!this.styleElement) {\n this.styleElement = this.renderer.createElement('style');\n this.styleElement.type = 'text/css';\n this.renderer.appendChild(this.document.head, this.styleElement);\n let innerHTML = '';\n for (let breakpoint in this.breakpoints) {\n let breakpointStyle = '';\n for (let styleProp in this.breakpoints[breakpoint]) {\n breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n }\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n .p-toast[${this.id}] {\n ${breakpointStyle}\n }\n }\n `;\n }\n this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);\n }\n }\n destroyStyle() {\n if (this.styleElement) {\n this.renderer.removeChild(this.document.head, this.styleElement);\n this.styleElement = null;\n }\n }\n ngOnDestroy() {\n if (this.messageSubscription) {\n this.messageSubscription.unsubscribe();\n }\n if (this.containerViewChild && this.autoZIndex) {\n ZIndexUtils.clear(this.containerViewChild.nativeElement);\n }\n if (this.clearSubscription) {\n this.clearSubscription.unsubscribe();\n }\n this.destroyStyle();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Toast, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i1.MessageService }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Toast, selector: \"p-toast\", inputs: { key: \"key\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", life: \"life\", style: \"style\", styleClass: \"styleClass\", position: \"position\", preventOpenDuplicates: \"preventOpenDuplicates\", preventDuplicates: \"preventDuplicates\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", breakpoints: \"breakpoints\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n
    \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex:none}.p-toast-icon-close.p-link{cursor:pointer}}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: ToastItem, selector: \"p-toastItem\", inputs: [\"message\", \"index\", \"life\", \"template\", \"headlessTemplate\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"onClose\"] }], animations: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Toast, decorators: [{\n type: Component,\n args: [{ selector: 'p-toast', template: `\n
    \n \n
    \n `, animations: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex:none}.p-toast-icon-close.p-link{cursor:pointer}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.Renderer2 }, { type: i1.MessageService }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }], propDecorators: { key: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], life: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], position: [{\n type: Input\n }], preventOpenDuplicates: [{\n type: Input\n }], preventDuplicates: [{\n type: Input\n }], showTransformOptions: [{\n type: Input\n }], hideTransformOptions: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], breakpoints: [{\n type: Input\n }], onClose: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass ToastModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon], exports: [Toast, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastModule, imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToastModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule, CheckIcon, InfoCircleIcon, TimesCircleIcon, ExclamationTriangleIcon, TimesIcon],\n exports: [Toast, SharedModule],\n declarations: [Toast, ToastItem]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Toast, ToastItem, ToastModule };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\n\nconst TOGGLEBUTTON_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleButton),\n multi: true\n};\n/**\n * ToggleButton is used to select a boolean value using a button.\n * @group Components\n */\nclass ToggleButton {\n cd;\n /**\n * Label for the on state.\n * @group Props\n */\n onLabel;\n /**\n * Label for the off state.\n * @group Props\n */\n offLabel;\n /**\n * Icon for the on state.\n * @group Props\n */\n onIcon;\n /**\n * Icon for the off state.\n * @group Props\n */\n offIcon;\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n disabled;\n /**\n * Inline style of the element.\n * @group Props\n */\n style;\n /**\n * Style class of the element.\n * @group Props\n */\n styleClass;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n inputId;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex;\n /**\n * Position of the icon.\n * @group Props\n */\n iconPos = 'left';\n /**\n * Callback to invoke on value change.\n * @param {ToggleButtonChangeEvent} event - Custom change event.\n * @group Emits\n */\n onChange = new EventEmitter();\n templates;\n iconTemplate;\n checked = false;\n onModelChange = () => { };\n onModelTouched = () => { };\n constructor(cd) {\n this.cd = cd;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'icon':\n this.iconTemplate = item.template;\n break;\n default:\n this.iconTemplate = item.template;\n break;\n }\n });\n }\n toggle(event) {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.onModelChange(this.checked);\n this.onModelTouched();\n this.onChange.emit({\n originalEvent: event,\n checked: this.checked\n });\n this.cd.markForCheck();\n }\n }\n onKeyDown(event) {\n switch (event.code) {\n case 'Enter':\n this.toggle(event);\n event.preventDefault();\n break;\n case 'Space':\n this.toggle(event);\n event.preventDefault();\n break;\n }\n }\n onBlur() {\n this.onModelTouched();\n }\n writeValue(value) {\n this.checked = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n get hasOnLabel() {\n return (this.onLabel && this.onLabel.length > 0);\n }\n get hasOffLabel() {\n return (this.onLabel && this.onLabel.length > 0);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"17.0.5\", type: ToggleButton, selector: \"p-toggleButton\", inputs: { onLabel: \"onLabel\", offLabel: \"offLabel\", onIcon: \"onIcon\", offIcon: \"offIcon\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", disabled: \"disabled\", style: \"style\", styleClass: \"styleClass\", inputId: \"inputId\", tabindex: \"tabindex\", iconPos: \"iconPos\" }, outputs: { onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n @if(!iconTemplate) {\n \n } @else {\n \n }\n {{ checked ? (hasOnLabel ? onLabel : '') : hasOffLabel ? offLabel : '' }}\n \n `, isInline: true, styles: [\"@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\\\"p\\\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}p-button[iconpos=right] spinnericon{order:1}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i2.Ripple, selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButton, decorators: [{\n type: Component,\n args: [{ selector: 'p-toggleButton', template: `\n \n @if(!iconTemplate) {\n \n } @else {\n \n }\n {{ checked ? (hasOnLabel ? onLabel : '') : hasOffLabel ? offLabel : '' }}\n \n `, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\\\"p\\\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}p-button[iconpos=right] spinnericon{order:1}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { onLabel: [{\n type: Input\n }], offLabel: [{\n type: Input\n }], onIcon: [{\n type: Input\n }], offIcon: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], disabled: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], inputId: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], onChange: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass ToggleButtonModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButtonModule, declarations: [ToggleButton], imports: [CommonModule, RippleModule, SharedModule], exports: [ToggleButton, SharedModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButtonModule, imports: [CommonModule, RippleModule, SharedModule, SharedModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToggleButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule, SharedModule],\n exports: [ToggleButton, SharedModule],\n declarations: [ToggleButton]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TOGGLEBUTTON_VALUE_ACCESSOR, ToggleButton, ToggleButtonModule };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';\nimport { PrimeTemplate } from 'primeng/api';\n\n/**\n * Toolbar is a grouping component for buttons and other content.\n * @group Components\n */\nclass Toolbar {\n el;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Defines a string value that labels an interactive element.\n * @group Props\n */\n ariaLabelledBy;\n templates;\n startTemplate;\n endTemplate;\n centerTemplate;\n constructor(el) {\n this.el = el;\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'start':\n case 'left':\n this.startTemplate = item.template;\n break;\n case 'end':\n case 'right':\n this.endTemplate = item.template;\n break;\n case 'center':\n this.centerTemplate = item.template;\n break;\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Toolbar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Toolbar, selector: \"p-toolbar\", inputs: { style: \"style\", styleClass: \"styleClass\", ariaLabelledBy: \"ariaLabelledBy\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-start,.p-toolbar-group-center,.p-toolbar-group-end,.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Toolbar, decorators: [{\n type: Component,\n args: [{ selector: 'p-toolbar', template: `\n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-start,.p-toolbar-group-center,.p-toolbar-group-end,.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass ToolbarModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: ToolbarModule, declarations: [Toolbar], imports: [CommonModule], exports: [Toolbar] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToolbarModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: ToolbarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Toolbar],\n declarations: [Toolbar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Toolbar, ToolbarModule };\n","import * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, Optional, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { PlusIcon } from 'primeng/icons/plus';\nimport { SearchIcon } from 'primeng/icons/search';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\n\nclass UITreeNode {\n static ICON_CLASS = 'p-treenode-icon ';\n rowNode;\n node;\n parentNode;\n root;\n index;\n firstChild;\n lastChild;\n level;\n indentation;\n itemSize;\n tree;\n timeout;\n draghoverPrev;\n draghoverNext;\n draghoverNode;\n get ariaSelected() {\n return this.tree.selectionMode === 'single' || this.tree.selectionMode === 'multiple' ? this.isSelected() : undefined;\n }\n get ariaChecked() {\n return this.tree.selectionMode === 'checkbox' ? this.isSelected() : undefined;\n }\n constructor(tree) {\n this.tree = tree;\n }\n ngOnInit() {\n this.node.parent = this.parentNode;\n if (this.parentNode) {\n this.setAllNodesTabIndexes();\n this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n }\n }\n getIcon() {\n let icon;\n if (this.node.icon)\n icon = this.node.icon;\n else\n icon = this.node.expanded && this.node.children && this.node.children?.length ? this.node.expandedIcon : this.node.collapsedIcon;\n return UITreeNode.ICON_CLASS + ' ' + icon;\n }\n isLeaf() {\n return this.tree.isNodeLeaf(this.node);\n }\n toggle(event) {\n if (this.node.expanded)\n this.collapse(event);\n else\n this.expand(event);\n event.stopPropagation();\n }\n expand(event) {\n this.node.expanded = true;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });\n }\n collapse(event) {\n this.node.expanded = false;\n if (this.tree.virtualScroll) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });\n }\n onNodeClick(event) {\n this.tree.onNodeClick(event, this.node);\n }\n onNodeKeydown(event) {\n if (event.key === 'Enter') {\n this.tree.onNodeClick(event, this.node);\n }\n }\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n onNodeRightClick(event) {\n this.tree.onNodeRightClick(event, this.node);\n }\n isSelected() {\n return this.tree.isSelected(this.node);\n }\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n onDropPoint(event, position) {\n event.preventDefault();\n let dragNode = this.tree.dragNode;\n let dragNodeIndex = this.tree.dragNodeIndex;\n let dragNodeScope = this.tree.dragNodeScope;\n let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? position === 1 || dragNodeIndex !== this.index - 1 : true;\n if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n let dropParams = { ...this.createDropPointEventMetadata(position) };\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processPointDrop(dropParams);\n }\n });\n }\n else {\n this.processPointDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n processPointDrop(event) {\n let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n let dropIndex = this.index;\n if (event.position < 0) {\n dropIndex = event.dragNodeSubNodes === newNodeList ? (event.dragNodeIndex > event.index ? event.index : event.index - 1) : event.index;\n newNodeList.splice(dropIndex, 0, event.dragNode);\n }\n else {\n dropIndex = newNodeList.length;\n newNodeList.push(event.dragNode);\n }\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: event.dragNodeIndex\n });\n }\n createDropPointEventMetadata(position) {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node,\n index: this.index,\n position: position\n };\n }\n onDropPointDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n onDropPointDragEnter(event, position) {\n if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n if (position < 0)\n this.draghoverPrev = true;\n else\n this.draghoverNext = true;\n }\n }\n onDropPointDragLeave(event) {\n this.draghoverPrev = false;\n this.draghoverNext = false;\n }\n onDragStart(event) {\n if (this.tree.draggableNodes && this.node.draggable !== false) {\n event.dataTransfer.setData('text', 'data');\n this.tree.dragDropService.startDrag({\n tree: this,\n node: this.node,\n subNodes: this.node?.parent ? this.node.parent.children : this.tree.value,\n index: this.index,\n scope: this.tree.draggableScope\n });\n }\n else {\n event.preventDefault();\n }\n }\n onDragStop(event) {\n this.tree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.node?.parent ? this.node.parent.children : this.tree.value,\n index: this.index\n });\n }\n onDropNodeDragOver(event) {\n event.dataTransfer.dropEffect = 'move';\n if (this.tree.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n onDropNode(event) {\n if (this.tree.droppableNodes && this.node?.droppable !== false) {\n let dragNode = this.tree.dragNode;\n if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n let dropParams = { ...this.createDropNodeEventMetadata() };\n if (this.tree.validateDrop) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n this.processNodeDrop(dropParams);\n }\n });\n }\n else {\n this.processNodeDrop(dropParams);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n }\n event.preventDefault();\n event.stopPropagation();\n this.draghoverNode = false;\n }\n createDropNodeEventMetadata() {\n return {\n dragNode: this.tree.dragNode,\n dragNodeIndex: this.tree.dragNodeIndex,\n dragNodeSubNodes: this.tree.dragNodeSubNodes,\n dropNode: this.node\n };\n }\n processNodeDrop(event) {\n let dragNodeIndex = event.dragNodeIndex;\n event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n if (event.dropNode.children)\n event.dropNode.children.push(event.dragNode);\n else\n event.dropNode.children = [event.dragNode];\n this.tree.dragDropService.stopDrag({\n node: event.dragNode,\n subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n index: dragNodeIndex\n });\n }\n onDropNodeDragEnter(event) {\n if (this.tree.droppableNodes && this.node?.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n this.draghoverNode = true;\n }\n }\n onDropNodeDragLeave(event) {\n if (this.tree.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n this.draghoverNode = false;\n }\n }\n }\n onKeyDown(event) {\n if (!this.isSameNode(event) || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild?.nativeElement.style.display === 'block')) {\n return;\n }\n switch (event.code) {\n //down arrow\n case 'ArrowDown':\n this.onArrowDown(event);\n break;\n //up arrow\n case 'ArrowUp':\n this.onArrowUp(event);\n break;\n //right arrow\n case 'ArrowRight':\n this.onArrowRight(event);\n break;\n //left arrow\n case 'ArrowLeft':\n this.onArrowLeft(event);\n break;\n //enter\n case 'Enter':\n case 'Space':\n this.onEnter(event);\n break;\n //tab\n case 'Tab':\n this.setAllNodesTabIndexes();\n break;\n default:\n //no op\n break;\n }\n }\n onArrowUp(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'toggler' ? event.target.closest('[role=\"treeitem\"]') : event.target.parentElement;\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n }\n else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n event.preventDefault();\n }\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'toggler' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n if (listElement && listElement.children.length > 0) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n }\n else {\n if (nodeElement.parentElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.parentElement.nextElementSibling);\n }\n else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement.parentElement);\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n event.preventDefault();\n }\n onArrowRight(event) {\n if (!this.node?.expanded && !this.tree.isNodeLeaf(this.node)) {\n this.expand(event);\n event.currentTarget.tabIndex = -1;\n setTimeout(() => {\n this.onArrowDown(event);\n }, 1);\n }\n event.preventDefault();\n }\n onArrowLeft(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'toggler' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n if (this.level === 0 && !this.node?.expanded) {\n return false;\n }\n if (this.node?.expanded) {\n this.collapse(event);\n return;\n }\n let parentNodeElement = this.getParentNodeElement(nodeElement.parentElement);\n if (parentNodeElement) {\n this.focusRowChange(event.currentTarget, parentNodeElement);\n }\n event.preventDefault();\n }\n onEnter(event) {\n this.tree.onNodeClick(event, this.node);\n this.setTabIndexForSelectionMode(event, this.tree.nodeTouched);\n event.preventDefault();\n }\n setAllNodesTabIndexes() {\n const nodes = DomHandler.find(this.tree.el.nativeElement, '.p-treenode');\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n selectedNodes[0].tabIndex = 0;\n return;\n }\n [...nodes][0].tabIndex = 0;\n }\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.tree.selectionMode !== null) {\n const elements = [...DomHandler.find(this.tree.el.nativeElement, '.p-treenode')];\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n }\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling)\n return parentNodeElement.nextElementSibling;\n else\n return this.findNextSiblingOfAncestor(parentNodeElement);\n }\n else {\n return null;\n }\n }\n findLastVisibleDescendant(nodeElement) {\n const listElement = Array.from(nodeElement.children).find((el) => DomHandler.hasClass(el, 'p-treenode'));\n const childrenListElement = listElement.children[1];\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n return this.findLastVisibleDescendant(lastChildElement);\n }\n else {\n return nodeElement;\n }\n }\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement?.parentElement?.parentElement;\n return parentNodeElement?.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n focusNode(element) {\n if (this.tree.droppableNodes)\n element.children[1].focus();\n else\n element.children[0].focus();\n }\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.children[0].tabIndex = '0';\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n }\n focusVirtualNode() {\n this.timeout = setTimeout(() => {\n let node = DomHandler.findSingle(document.body, `[data-id=\"${this.node?.key ?? this.node?.data}\"]`);\n DomHandler.focus(node);\n }, 1);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UITreeNode, deps: [{ token: forwardRef(() => Tree) }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: UITreeNode, selector: \"p-treeNode\", inputs: { rowNode: \"rowNode\", node: \"node\", parentNode: \"parentNode\", root: \"root\", index: \"index\", firstChild: \"firstChild\", lastChild: \"lastChild\", level: \"level\", indentation: \"indentation\", itemSize: \"itemSize\" }, host: { properties: { \"attr.role\": \"\\\"treeitem\\\"\" }, classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n {{ node.label }}\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 \n \n \n \n \n \n \n \n {{ node.label }}\n \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MinusIcon), selector: \"MinusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => PlusIcon), selector: \"PlusIcon\" }, { kind: \"component\", type: i0.forwardRef(() => UITreeNode), selector: \"p-treeNode\", inputs: [\"rowNode\", \"node\", \"parentNode\", \"root\", \"index\", \"firstChild\", \"lastChild\", \"level\", \"indentation\", \"itemSize\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: UITreeNode, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeNode',\n template: `\n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n {{ node.label }}\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 \n \n \n \n \n \n \n \n {{ node.label }}\n \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element',\n '[attr.role]': '\"treeitem\"'\n }\n }]\n }], ctorParameters: () => [{ type: Tree, decorators: [{\n type: Inject,\n args: [forwardRef(() => Tree)]\n }] }], propDecorators: { rowNode: [{\n type: Input\n }], node: [{\n type: Input\n }], parentNode: [{\n type: Input\n }], root: [{\n type: Input\n }], index: [{\n type: Input\n }], firstChild: [{\n type: Input\n }], lastChild: [{\n type: Input\n }], level: [{\n type: Input\n }], indentation: [{\n type: Input\n }], itemSize: [{\n type: Input\n }] } });\n/**\n * Tree is used to display hierarchical data.\n * @group Components\n */\nclass Tree {\n el;\n dragDropService;\n config;\n cd;\n /**\n * An array of treenodes.\n * @group Props\n */\n value;\n /**\n * Defines the selection mode.\n * @group Props\n */\n selectionMode;\n /**\n * A single treenode instance or an array to refer to the selections.\n * @group Props\n */\n selection;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Context menu instance.\n * @group Props\n */\n contextMenu;\n /**\n * Defines the orientation of the tree, valid values are 'vertical' and 'horizontal'.\n * @group Props\n */\n layout = 'vertical';\n /**\n * Scope of the draggable nodes to match a droppableScope.\n * @group Props\n */\n draggableScope;\n /**\n * Scope of the droppable nodes to match a draggableScope.\n * @group Props\n */\n droppableScope;\n /**\n * Whether the nodes are draggable.\n * @group Props\n */\n draggableNodes;\n /**\n * Whether the nodes are droppable.\n * @group Props\n */\n droppableNodes;\n /**\n * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = true;\n /**\n * Whether checkbox selections propagate to ancestor nodes.\n * @group Props\n */\n propagateSelectionUp = true;\n /**\n * Whether checkbox selections propagate to descendant nodes.\n * @group Props\n */\n propagateSelectionDown = true;\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading;\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon;\n /**\n * Text to display when there is no data.\n * @group Props\n */\n emptyMessage = '';\n /**\n * Used to define a string that labels the tree.\n * @group Props\n */\n ariaLabel;\n /**\n * Defines a string that labels the toggler icon for accessibility.\n * @group Props\n */\n togglerAriaLabel;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy;\n /**\n * When enabled, drop can be accepted or rejected based on condition defined at onNodeDrop.\n * @group Props\n */\n validateDrop;\n /**\n * When specified, displays an input field to filter the items.\n * @group Props\n */\n filter;\n /**\n * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n * @group Props\n */\n filterBy = 'label';\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = 'lenient';\n /**\n * Placeholder text to show when filter input is empty.\n * @group Props\n */\n filterPlaceholder;\n /**\n * Values after the tree nodes are filtered.\n * @group Props\n */\n filteredNodes;\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * Height of the scrollable viewport.\n * @group Props\n */\n scrollHeight;\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = false;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll;\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions;\n /**\n * Indentation factor for spacing of the nested node when virtual scrolling is enabled.\n * @group Props\n */\n indentation = 1.5;\n /**\n * Custom templates of the component.\n * @group Props\n */\n _templateMap;\n /**\n * Function to optimize the node list rendering, default algorithm checks for object identity.\n * @group Props\n */\n trackBy = (index, item) => item;\n /**\n * Height of the node.\n * @group Props\n * @deprecated use virtualScrollItemSize property instead.\n */\n _virtualNodeHeight;\n get virtualNodeHeight() {\n return this._virtualNodeHeight;\n }\n set virtualNodeHeight(val) {\n this._virtualNodeHeight = val;\n console.warn('The virtualNodeHeight property is deprecated, use virtualScrollItemSize property instead.');\n }\n /**\n * Callback to invoke on selection change.\n * @param {(TreeNode | TreeNode[] | null)} event - Custom selection change event.\n * @group Emits\n */\n selectionChange = new EventEmitter();\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeNodeSelectEvent} event - Node select event.\n * @group Emits\n */\n onNodeSelect = new EventEmitter();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeNodeUnSelectEvent} event - Node unselect event.\n * @group Emits\n */\n onNodeUnselect = new EventEmitter();\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeNodeExpandEvent} event - Node expand event.\n * @group Emits\n */\n onNodeExpand = new EventEmitter();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeNodeCollapseEvent} event - Node collapse event.\n * @group Emits\n */\n onNodeCollapse = new EventEmitter();\n /**\n * Callback to invoke when a node is selected with right click.\n * @param {onNodeContextMenuSelect} event - Node context menu select event.\n * @group Emits\n */\n onNodeContextMenuSelect = new EventEmitter();\n /**\n * Callback to invoke when a node is dropped.\n * @param {TreeNodeDropEvent} event - Node drop event.\n * @group Emits\n */\n onNodeDrop = new EventEmitter();\n /**\n * Callback to invoke in lazy mode to load new data.\n * @param {TreeLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = new EventEmitter();\n /**\n * Callback to invoke in virtual scroll mode when scroll position changes.\n * @param {TreeScrollEvent} event - Custom scroll event.\n * @group Emits\n */\n onScroll = new EventEmitter();\n /**\n * Callback to invoke in virtual scroll mode when scroll position and item's range in view changes.\n * @param {TreeScrollIndexChangeEvent} event - Scroll index change event.\n * @group Emits\n */\n onScrollIndexChange = new EventEmitter();\n /**\n * Callback to invoke when data is filtered.\n * @param {TreeFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = new EventEmitter();\n templates;\n filterViewChild;\n scroller;\n wrapperViewChild;\n serializedValue;\n headerTemplate;\n footerTemplate;\n loaderTemplate;\n emptyMessageTemplate;\n togglerIconTemplate;\n checkboxIconTemplate;\n loadingIconTemplate;\n filterIconTemplate;\n nodeTouched;\n dragNodeTree;\n dragNode;\n dragNodeSubNodes;\n dragNodeIndex;\n dragNodeScope;\n dragHover;\n dragStartSubscription;\n dragStopSubscription;\n constructor(el, dragDropService, config, cd) {\n this.el = el;\n this.dragDropService = dragDropService;\n this.config = config;\n this.cd = cd;\n }\n ngOnInit() {\n if (this.droppableNodes) {\n this.dragStartSubscription = this.dragDropService.dragStart$.subscribe((event) => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n this.dragStopSubscription = this.dragDropService.dragStop$.subscribe((event) => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.value) {\n this.updateSerializedValue();\n }\n }\n get horizontal() {\n return this.layout == 'horizontal';\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n ngAfterContentInit() {\n if (this.templates.length) {\n this._templateMap = {};\n }\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'empty':\n this.emptyMessageTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'loader':\n this.loaderTemplate = item.template;\n break;\n case 'togglericon':\n this.togglerIconTemplate = item.template;\n break;\n case 'checkboxicon':\n this.checkboxIconTemplate = item.template;\n break;\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n default:\n this._templateMap[item.name] = item.template;\n break;\n }\n });\n }\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n onNodeClick(event, node) {\n let eventTarget = event.target;\n if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n return;\n }\n else if (this.selectionMode) {\n if (node.selectable === false) {\n return;\n }\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(node.key, this.value);\n if (!node) {\n return;\n }\n }\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown)\n this.propagateDown(node, false);\n else\n this.selection = this.selection.filter((val, i) => i != index);\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, false);\n }\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n if (this.propagateSelectionDown)\n this.propagateDown(node, true);\n else\n this.selection = [...(this.selection || []), node];\n if (this.propagateSelectionUp && node.parent) {\n this.propagateUp(node.parent, true);\n }\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(null);\n }\n else {\n this.selection = this.selection.filter((val, i) => i != index);\n this.selectionChange.emit(this.selection);\n }\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n if (this.isSingleSelectionMode()) {\n this.selectionChange.emit(node);\n }\n else if (this.isMultipleSelectionMode()) {\n this.selection = !metaKey ? [] : this.selection || [];\n this.selection = [...this.selection, node];\n this.selectionChange.emit(this.selection);\n }\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection = null;\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n this.selection = node;\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n else {\n if (selected) {\n this.selection = this.selection.filter((val, i) => i != index);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n this.selection = [...(this.selection || []), node];\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n }\n this.selectionChange.emit(this.selection);\n }\n }\n }\n this.nodeTouched = false;\n }\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n onNodeRightClick(event, node) {\n if (this.contextMenu) {\n let eventTarget = event.target;\n if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n return;\n }\n else {\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n if (!selected) {\n if (this.isSingleSelectionMode())\n this.selectionChange.emit(node);\n else\n this.selectionChange.emit([node]);\n }\n this.contextMenu.show(event);\n this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });\n }\n }\n }\n findIndexInSelection(node) {\n let index = -1;\n if (this.selectionMode && this.selection) {\n if (this.isSingleSelectionMode()) {\n let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n index = areNodesEqual ? 0 : -1;\n }\n else {\n for (let i = 0; i < this.selection.length; i++) {\n let selectedNode = this.selection[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n return index;\n }\n syncNodeOption(node, parentNodes, option, value) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n if (_node) {\n _node[option] = value || node[option];\n }\n }\n hasFilteredNodes() {\n return this.filter && this.filteredNodes && this.filteredNodes.length;\n }\n getNodeWithKey(key, nodes) {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n propagateUp(node, select) {\n if (node.children && node.children.length) {\n let selectedCount = 0;\n let childPartialSelected = false;\n for (let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n }\n else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n if (select && selectedCount == node.children.length) {\n this.selection = [...(this.selection || []), node];\n node.partialSelected = false;\n }\n else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n }\n if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length))\n node.partialSelected = true;\n else\n node.partialSelected = false;\n }\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n }\n let parent = node.parent;\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n propagateDown(node, select) {\n let index = this.findIndexInSelection(node);\n if (select && index == -1) {\n this.selection = [...(this.selection || []), node];\n }\n else if (!select && index > -1) {\n this.selection = this.selection.filter((val, i) => i != index);\n }\n node.partialSelected = false;\n this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n isSelected(node) {\n return this.findIndexInSelection(node) != -1;\n }\n isSingleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'single';\n }\n isMultipleSelectionMode() {\n return this.selectionMode && this.selectionMode == 'multiple';\n }\n isCheckboxSelectionMode() {\n return this.selectionMode && this.selectionMode == 'checkbox';\n }\n isNodeLeaf(node) {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n getRootNode() {\n return this.filteredNodes ? this.filteredNodes : this.value;\n }\n getTemplateForNode(node) {\n if (this._templateMap)\n return node.type ? this._templateMap[node.type] : this._templateMap['default'];\n else\n return null;\n }\n onDragOver(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.dataTransfer.dropEffect = 'move';\n event.preventDefault();\n }\n }\n onDrop(event) {\n if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n event.preventDefault();\n let dragNode = this.dragNode;\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n this.value = this.value || [];\n if (this.validateDrop) {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n }\n else {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n this.value.push(dragNode);\n this.dragDropService.stopDrag({\n node: dragNode\n });\n }\n onDragEnter() {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n this.dragHover = false;\n }\n }\n }\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n }\n else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n }\n else {\n let parent = dropNode.parent;\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n return allow;\n }\n else {\n return false;\n }\n }\n isValidDragScope(dragScope) {\n let dropScope = this.droppableScope;\n if (dropScope) {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string')\n return dropScope === dragScope;\n else if (Array.isArray(dragScope))\n return dragScope.indexOf(dropScope) != -1;\n }\n else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) != -1;\n }\n else if (Array.isArray(dragScope)) {\n for (let s of dropScope) {\n for (let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n else {\n return true;\n }\n }\n _filter(value) {\n let filterValue = value;\n if (filterValue === '') {\n this.filteredNodes = null;\n }\n else {\n this.filteredNodes = [];\n const searchFields = this.filterBy.split(',');\n const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n const isStrictMode = this.filterMode === 'strict';\n for (let node of this.value) {\n let copyNode = { ...node };\n let paramsWithoutNode = { searchFields, filterText, isStrictMode };\n if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n this.filteredNodes.push(copyNode);\n }\n }\n }\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes\n });\n }\n /**\n * Resets filter.\n * @group Method\n */\n resetFilter() {\n this.filteredNodes = null;\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n }\n /**\n * Scrolls to virtual index.\n * @param {number} number - Index to be scrolled.\n * @group Method\n */\n scrollToVirtualIndex(index) {\n this.virtualScroll && this.scroller?.scrollToIndex(index);\n }\n /**\n * Scrolls to virtual index.\n * @param {ScrollToOptions} options - Scroll options.\n * @group Method\n */\n scrollTo(options) {\n if (this.virtualScroll) {\n this.scroller?.scrollTo(options);\n }\n else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {\n if (this.wrapperViewChild.nativeElement.scrollTo) {\n this.wrapperViewChild.nativeElement.scrollTo(options);\n }\n else {\n this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n this.wrapperViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n if (matched) {\n node.expanded = true;\n return true;\n }\n }\n }\n isFilterMatched(node, params) {\n let { searchFields, filterText, isStrictMode } = params;\n let matched = false;\n for (let field of searchFields) {\n let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;\n }\n return matched;\n }\n getIndex(options, index) {\n const getItemOptions = options['getItemOptions'];\n return getItemOptions ? getItemOptions(index).index : index;\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n ngOnDestroy() {\n if (this.dragStartSubscription) {\n this.dragStartSubscription.unsubscribe();\n }\n if (this.dragStopSubscription) {\n this.dragStopSubscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Tree, deps: [{ token: i0.ElementRef }, { token: i3.TreeDragDropService, optional: true }, { token: i3.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: Tree, selector: \"p-tree\", inputs: { value: \"value\", selectionMode: \"selectionMode\", selection: \"selection\", style: \"style\", styleClass: \"styleClass\", contextMenu: \"contextMenu\", layout: \"layout\", draggableScope: \"draggableScope\", droppableScope: \"droppableScope\", draggableNodes: \"draggableNodes\", droppableNodes: \"droppableNodes\", metaKeySelection: \"metaKeySelection\", propagateSelectionUp: \"propagateSelectionUp\", propagateSelectionDown: \"propagateSelectionDown\", loading: \"loading\", loadingIcon: \"loadingIcon\", emptyMessage: \"emptyMessage\", ariaLabel: \"ariaLabel\", togglerAriaLabel: \"togglerAriaLabel\", ariaLabelledBy: \"ariaLabelledBy\", validateDrop: \"validateDrop\", filter: \"filter\", filterBy: \"filterBy\", filterMode: \"filterMode\", filterPlaceholder: \"filterPlaceholder\", filteredNodes: \"filteredNodes\", filterLocale: \"filterLocale\", scrollHeight: \"scrollHeight\", lazy: \"lazy\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", indentation: \"indentation\", _templateMap: \"_templateMap\", trackBy: \"trackBy\", virtualNodeHeight: \"virtualNodeHeight\" }, outputs: { selectionChange: \"selectionChange\", onNodeSelect: \"onNodeSelect\", onNodeUnselect: \"onNodeUnselect\", onNodeExpand: \"onNodeExpand\", onNodeCollapse: \"onNodeCollapse\", onNodeContextMenuSelect: \"onNodeContextMenuSelect\", onNodeDrop: \"onNodeDrop\", onLazyLoad: \"onLazyLoad\", onScroll: \"onScroll\", onScrollIndexChange: \"onScrollIndexChange\", onFilter: \"onFilter\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }, { propertyName: \"wrapperViewChild\", first: true, predicate: [\"wrapper\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\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 \n
    \n
    \n
    \n\n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n \n \n
    \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n
    \n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n \n
    \n `, isInline: true, styles: [\"@layer primeng{.p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-scroller .p-tree-container{overflow:visible}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i1.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgForOf), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i0.forwardRef(() => i3.PrimeTemplate), selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: i0.forwardRef(() => i4.Scroller), selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"component\", type: i0.forwardRef(() => SearchIcon), selector: \"SearchIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SpinnerIcon), selector: \"SpinnerIcon\" }, { kind: \"component\", type: i0.forwardRef(() => UITreeNode), selector: \"p-treeNode\", inputs: [\"rowNode\", \"node\", \"parentNode\", \"root\", \"index\", \"firstChild\", \"lastChild\", \"level\", \"indentation\", \"itemSize\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: Tree, decorators: [{\n type: Component,\n args: [{ selector: 'p-tree', template: `\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 \n
    \n
    \n
    \n\n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n \n \n
    \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n
    \n
    \n \n {{ emptyMessageLabel }}\n \n \n
    \n \n
    \n `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-scroller .p-tree-container{overflow:visible}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i3.TreeDragDropService, decorators: [{\n type: Optional\n }] }, { type: i3.PrimeNGConfig }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], selection: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], contextMenu: [{\n type: Input\n }], layout: [{\n type: Input\n }], draggableScope: [{\n type: Input\n }], droppableScope: [{\n type: Input\n }], draggableNodes: [{\n type: Input\n }], droppableNodes: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], propagateSelectionUp: [{\n type: Input\n }], propagateSelectionDown: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], togglerAriaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], validateDrop: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], filterMode: [{\n type: Input\n }], filterPlaceholder: [{\n type: Input\n }], filteredNodes: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], lazy: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], indentation: [{\n type: Input\n }], _templateMap: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], virtualNodeHeight: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], onNodeSelect: [{\n type: Output\n }], onNodeUnselect: [{\n type: Output\n }], onNodeExpand: [{\n type: Output\n }], onNodeCollapse: [{\n type: Output\n }], onNodeContextMenuSelect: [{\n type: Output\n }], onNodeDrop: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], onScroll: [{\n type: Output\n }], onScrollIndexChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], wrapperViewChild: [{\n type: ViewChild,\n args: ['wrapper']\n }] } });\nclass TreeModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeModule, declarations: [Tree, UITreeNode], imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon, PlusIcon], exports: [Tree, SharedModule, ScrollerModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeModule, imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon, PlusIcon, SharedModule, ScrollerModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, CheckIcon, ChevronDownIcon, ChevronRightIcon, MinusIcon, SearchIcon, SpinnerIcon, PlusIcon],\n exports: [Tree, SharedModule, ScrollerModule],\n declarations: [Tree, UITreeNode]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Tree, TreeModule, UITreeNode };\n","import * as i2 from '@angular/common';\nimport { DOCUMENT, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ContentChildren, PLATFORM_ID, Directive, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ArrowDownIcon } from 'primeng/icons/arrowdown';\nimport { ArrowUpIcon } from 'primeng/icons/arrowup';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { ChevronDownIcon } from 'primeng/icons/chevrondown';\nimport { ChevronRightIcon } from 'primeng/icons/chevronright';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { SortAltIcon } from 'primeng/icons/sortalt';\nimport { SortAmountDownIcon } from 'primeng/icons/sortamountdown';\nimport { SortAmountUpAltIcon } from 'primeng/icons/sortamountupalt';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport * as i3 from 'primeng/paginator';\nimport { PaginatorModule } from 'primeng/paginator';\nimport * as i5 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i4 from 'primeng/scroller';\nimport { ScrollerModule } from 'primeng/scroller';\nimport { ObjectUtils } from 'primeng/utils';\nimport { Subject } from 'rxjs';\n\nclass TreeTableService {\n sortSource = new Subject();\n selectionSource = new Subject();\n contextMenuSource = new Subject();\n uiUpdateSource = new Subject();\n totalRecordsSource = new Subject();\n sortSource$ = this.sortSource.asObservable();\n selectionSource$ = this.selectionSource.asObservable();\n contextMenuSource$ = this.contextMenuSource.asObservable();\n uiUpdateSource$ = this.uiUpdateSource.asObservable();\n totalRecordsSource$ = this.totalRecordsSource.asObservable();\n onSort(sortMeta) {\n this.sortSource.next(sortMeta);\n }\n onSelectionChange() {\n this.selectionSource.next(null);\n }\n onContextMenu(node) {\n this.contextMenuSource.next(node);\n }\n onUIUpdate(value) {\n this.uiUpdateSource.next(value);\n }\n onTotalRecordsChange(value) {\n this.totalRecordsSource.next(value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableService, decorators: [{\n type: Injectable\n }] });\n/**\n * TreeTable is used to display hierarchical data in tabular format.\n * @group Components\n */\nclass TreeTable {\n document;\n renderer;\n el;\n cd;\n zone;\n tableService;\n filterService;\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n columns;\n /**\n * Inline style of the component.\n * @group Props\n */\n style;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass;\n /**\n * Inline style of the table.\n * @group Props\n */\n tableStyle;\n /**\n * Style class of the table.\n * @group Props\n */\n tableStyleClass;\n /**\n * Whether the cell widths scale according to their content or not.\n * @group Props\n */\n autoLayout;\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = false;\n /**\n * Whether to call lazy loading on initialization.\n * @group Props\n */\n lazyLoadOnInit = true;\n /**\n * When specified as true, enables the pagination.\n * @group Props\n */\n paginator;\n /**\n * Number of rows to display per page.\n * @group Props\n */\n rows;\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n first = 0;\n /**\n * Number of page links to display in paginator.\n * @group Props\n */\n pageLinks = 5;\n /**\n * Array of integer/object values to display inside rows per page dropdown of paginator\n * @group Props\n */\n rowsPerPageOptions;\n /**\n * Whether to show it even there is only one page.\n * @group Props\n */\n alwaysShowPaginator = true;\n /**\n * Position of the paginator.\n * @group Props\n */\n paginatorPosition = 'bottom';\n /**\n * Custom style class for paginator\n * @group Props\n */\n paginatorStyleClass;\n /**\n * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n paginatorDropdownAppendTo;\n /**\n * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n * @group Props\n */\n currentPageReportTemplate = '{currentPage} of {totalPages}';\n /**\n * Whether to display current page report.\n * @group Props\n */\n showCurrentPageReport;\n /**\n * Whether to display a dropdown to navigate to any page.\n * @group Props\n */\n showJumpToPageDropdown;\n /**\n * When enabled, icons are displayed on paginator to go first and last page.\n * @group Props\n */\n showFirstLastIcon = true;\n /**\n * Whether to show page links.\n * @group Props\n */\n showPageLinks = true;\n /**\n * Sort order to use when an unsorted column gets sorted by user interaction.\n * @group Props\n */\n defaultSortOrder = 1;\n /**\n * Defines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n sortMode = 'single';\n /**\n * When true, resets paginator to first page after sorting.\n * @group Props\n */\n resetPageOnSort = true;\n /**\n * Whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n customSort;\n /**\n * Specifies the selection mode, valid values are \"single\" and \"multiple\".\n * @group Props\n */\n selectionMode;\n /**\n * Selected row with a context menu.\n * @group Props\n */\n contextMenuSelection;\n /**\n * Mode of the contet menu selection.\n * @group Props\n */\n contextMenuSelectionMode = 'separate';\n /**\n * A property to uniquely identify a record in data.\n * @group Props\n */\n dataKey;\n /**\n * Defines whether metaKey is should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = true;\n /**\n * Algorithm to define if a row is selected, valid values are \"equals\" that compares by reference and \"deepEquals\" that compares all fields.\n * @group Props\n */\n compareSelectionBy = 'deepEquals';\n /**\n * Adds hover effect to rows without the need for selectionMode.\n * @group Props\n */\n rowHover;\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading;\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon;\n /**\n * Whether to show the loading mask when loading property is true.\n * @group Props\n */\n showLoader = true;\n /**\n * When specifies, enables horizontal and/or vertical scrolling.\n * @group Props\n */\n scrollable;\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n scrollHeight;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll;\n /**\n * Height of a row to use in calculations of virtual scrolling.\n * @group Props\n */\n virtualScrollItemSize;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions;\n /**\n * The delay (in milliseconds) before triggering the virtual scroll. This determines the time gap between the user's scroll action and the actual rendering of the next set of items in the virtual scroll.\n * @group Props\n */\n virtualScrollDelay = 150;\n /**\n * Width of the frozen columns container.\n * @group Props\n */\n frozenWidth;\n /**\n * An array of objects to represent dynamic columns that are frozen.\n * @group Props\n */\n frozenColumns;\n /**\n * When enabled, columns can be resized using drag and drop.\n * @group Props\n */\n resizableColumns;\n /**\n * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n * @group Props\n */\n columnResizeMode = 'fit';\n /**\n * When enabled, columns can be reordered using drag and drop.\n * @group Props\n */\n reorderableColumns;\n /**\n * Local ng-template varilable of a ContextMenu.\n * @group Props\n */\n contextMenu;\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n rowTrackBy = (index, item) => item;\n /**\n * An array of FilterMetadata objects to provide external filters.\n * @group Props\n */\n filters = {};\n /**\n * An array of fields as string to use in global filtering.\n * @group Props\n */\n globalFilterFields;\n /**\n * Delay in milliseconds before filtering the data.\n * @group Props\n */\n filterDelay = 300;\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = 'lenient';\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale;\n /**\n * Locale to be used in paginator formatting.\n * @group Props\n */\n paginatorLocale;\n /**\n * Number of total records, defaults to length of value when not defined.\n * @group Props\n */\n get totalRecords() {\n return this._totalRecords;\n }\n set totalRecords(val) {\n this._totalRecords = val;\n this.tableService.onTotalRecordsChange(this._totalRecords);\n }\n /**\n * Name of the field to sort data by default.\n * @group Props\n */\n get sortField() {\n return this._sortField;\n }\n set sortField(val) {\n this._sortField = val;\n }\n /**\n * Order to sort when default sorting is enabled.\n * @defaultValue 1\n * @group Props\n */\n get sortOrder() {\n return this._sortOrder;\n }\n set sortOrder(val) {\n this._sortOrder = val;\n }\n /**\n * An array of SortMeta objects to sort the data by default in multiple sort mode.\n * @defaultValue null\n * @group Props\n */\n get multiSortMeta() {\n return this._multiSortMeta;\n }\n set multiSortMeta(val) {\n this._multiSortMeta = val;\n }\n /**\n * Selected row in single mode or an array of values in multiple mode.\n * @defaultValue null\n * @group Props\n */\n get selection() {\n return this._selection;\n }\n set selection(val) {\n this._selection = val;\n }\n /**\n * An array of objects to display.\n * @defaultValue null\n * @group Props\n */\n get value() {\n return this._value;\n }\n set value(val) {\n this._value = val;\n }\n /**\n * Indicates the height of rows to be scrolled.\n * @defaultValue 28\n * @group Props\n * @deprecated use virtualScrollItemSize property instead.\n */\n get virtualRowHeight() {\n return this._virtualRowHeight;\n }\n set virtualRowHeight(val) {\n this._virtualRowHeight = val;\n console.warn('The virtualRowHeight property is deprecated, use virtualScrollItemSize property instead.');\n }\n _virtualRowHeight = 28;\n /**\n * Callback to invoke on selected node change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n selectionChange = new EventEmitter();\n /**\n * Callback to invoke on context menu selection change.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n contextMenuSelectionChange = new EventEmitter();\n /**\n * Callback to invoke when data is filtered.\n * @param {TreeTableFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = new EventEmitter();\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n onNodeExpand = new EventEmitter();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeTableNodeCollapseEvent} event - Node collapse event.\n * @group Emits\n */\n onNodeCollapse = new EventEmitter();\n /**\n * Callback to invoke when pagination occurs.\n * @param {TreeTablePaginatorState} object - Paginator state.\n * @group Emits\n */\n onPage = new EventEmitter();\n /**\n * Callback to invoke when a column gets sorted.\n * @param {Object} Object - Sort data.\n * @group Emits\n */\n onSort = new EventEmitter();\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {TreeTableLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = new EventEmitter();\n /**\n * An event emitter to invoke on custom sorting, refer to sorting section for details.\n * @param {TreeTableSortEvent} event - Custom sort event.\n * @group Emits\n */\n sortFunction = new EventEmitter();\n /**\n * Callback to invoke when a column is resized.\n * @param {TreeTableColResizeEvent} event - Custom column resize event.\n * @group Emits\n */\n onColResize = new EventEmitter();\n /**\n * Callback to invoke when a column is reordered.\n * @param {TreeTableColumnReorderEvent} event - Custom column reorder.\n * @group Emits\n */\n onColReorder = new EventEmitter();\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeTableNode} object - Node instance.\n * @group Emits\n */\n onNodeSelect = new EventEmitter();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeTableNodeUnSelectEvent} event - Custom node unselect event.\n * @group Emits\n */\n onNodeUnselect = new EventEmitter();\n /**\n * Callback to invoke when a node is selected with right click.\n * @param {TreeTableContextMenuSelectEvent} event - Custom context menu select event.\n * @group Emits\n */\n onContextMenuSelect = new EventEmitter();\n /**\n * Callback to invoke when state of header checkbox changes.\n * @param {TreeTableHeaderCheckboxToggleEvent} event - Custom checkbox toggle event.\n * @group Emits\n */\n onHeaderCheckboxToggle = new EventEmitter();\n /**\n * Callback to invoke when a cell switches to edit mode.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditInit = new EventEmitter();\n /**\n * Callback to invoke when cell edit is completed.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditComplete = new EventEmitter();\n /**\n * Callback to invoke when cell edit is cancelled with escape key.\n * @param {TreeTableEditEvent} event - Custom edit event.\n * @group Emits\n */\n onEditCancel = new EventEmitter();\n containerViewChild;\n resizeHelperViewChild;\n reorderIndicatorUpViewChild;\n reorderIndicatorDownViewChild;\n tableViewChild;\n scrollableViewChild;\n scrollableFrozenViewChild;\n templates;\n _value = [];\n serializedValue;\n _totalRecords = 0;\n _multiSortMeta;\n _sortField;\n _sortOrder = 1;\n filteredNodes;\n filterTimeout;\n colGroupTemplate;\n captionTemplate;\n headerTemplate;\n bodyTemplate;\n footerTemplate;\n summaryTemplate;\n emptyMessageTemplate;\n paginatorLeftTemplate;\n paginatorRightTemplate;\n paginatorDropdownItemTemplate;\n frozenHeaderTemplate;\n frozenBodyTemplate;\n frozenFooterTemplate;\n frozenColGroupTemplate;\n loadingIconTemplate;\n reorderIndicatorUpIconTemplate;\n reorderIndicatorDownIconTemplate;\n sortIconTemplate;\n checkboxIconTemplate;\n headerCheckboxIconTemplate;\n togglerIconTemplate;\n paginatorFirstPageLinkIconTemplate;\n paginatorLastPageLinkIconTemplate;\n paginatorPreviousPageLinkIconTemplate;\n paginatorNextPageLinkIconTemplate;\n lastResizerHelperX;\n reorderIconWidth;\n reorderIconHeight;\n draggedColumn;\n dropPosition;\n preventSelectionSetterPropagation;\n _selection;\n selectionKeys = {};\n rowTouched;\n editingCell;\n editingCellData;\n editingCellField;\n editingCellClick;\n documentEditListener;\n initialized;\n toggleRowIndex;\n ngOnInit() {\n if (this.lazy && this.lazyLoadOnInit && !this.virtualScroll) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'caption':\n this.captionTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'body':\n this.bodyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'summary':\n this.summaryTemplate = item.template;\n break;\n case 'colgroup':\n this.colGroupTemplate = item.template;\n break;\n case 'emptymessage':\n this.emptyMessageTemplate = item.template;\n break;\n case 'paginatorleft':\n this.paginatorLeftTemplate = item.template;\n break;\n case 'paginatorright':\n this.paginatorRightTemplate = item.template;\n break;\n case 'paginatordropdownitem':\n this.paginatorDropdownItemTemplate = item.template;\n break;\n case 'frozenheader':\n this.frozenHeaderTemplate = item.template;\n break;\n case 'frozenbody':\n this.frozenBodyTemplate = item.template;\n break;\n case 'frozenfooter':\n this.frozenFooterTemplate = item.template;\n break;\n case 'frozencolgroup':\n this.frozenColGroupTemplate = item.template;\n break;\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n case 'reorderindicatorupicon':\n this.reorderIndicatorUpIconTemplate = item.template;\n break;\n case 'reorderindicatordownicon':\n this.reorderIndicatorDownIconTemplate = item.template;\n break;\n case 'sorticon':\n this.sortIconTemplate = item.template;\n break;\n case 'checkboxicon':\n this.checkboxIconTemplate = item.template;\n break;\n case 'headercheckboxicon':\n this.headerCheckboxIconTemplate = item.template;\n break;\n case 'togglericon':\n this.togglerIconTemplate = item.template;\n break;\n case 'paginatorfirstpagelinkicon':\n this.paginatorFirstPageLinkIconTemplate = item.template;\n break;\n case 'paginatorlastpagelinkicon':\n this.paginatorLastPageLinkIconTemplate = item.template;\n break;\n case 'paginatorpreviouspagelinkicon':\n this.paginatorPreviousPageLinkIconTemplate = item.template;\n break;\n case 'paginatornextpagelinkicon':\n this.paginatorNextPageLinkIconTemplate = item.template;\n break;\n }\n });\n }\n constructor(document, renderer, el, cd, zone, tableService, filterService) {\n this.document = document;\n this.renderer = renderer;\n this.el = el;\n this.cd = cd;\n this.zone = zone;\n this.tableService = tableService;\n this.filterService = filterService;\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.value) {\n this._value = simpleChange.value.currentValue;\n if (!this.lazy) {\n this.totalRecords = this._value ? this._value.length : 0;\n if (this.sortMode == 'single' && this.sortField)\n this.sortSingle();\n else if (this.sortMode == 'multiple' && this.multiSortMeta)\n this.sortMultiple();\n else if (this.hasFilter())\n //sort already filters\n this._filter();\n }\n this.updateSerializedValue();\n this.tableService.onUIUpdate(this.value);\n }\n if (simpleChange.sortField) {\n this._sortField = simpleChange.sortField.currentValue;\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.sortOrder) {\n this._sortOrder = simpleChange.sortOrder.currentValue;\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.multiSortMeta) {\n this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n if (this.sortMode === 'multiple') {\n this.sortMultiple();\n }\n }\n if (simpleChange.selection) {\n this._selection = simpleChange.selection.currentValue;\n if (!this.preventSelectionSetterPropagation) {\n this.updateSelectionKeys();\n this.tableService.onSelectionChange();\n }\n this.preventSelectionSetterPropagation = false;\n }\n }\n updateSerializedValue() {\n this.serializedValue = [];\n if (this.paginator)\n this.serializePageNodes();\n else\n this.serializeNodes(null, this.filteredNodes || this.value, 0, true);\n }\n serializeNodes(parent, nodes, level, visible) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n this.serializedValue.push(rowNode);\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n serializePageNodes() {\n let data = this.filteredNodes || this.value;\n this.serializedValue = [];\n if (data && data.length) {\n const first = this.lazy ? 0 : this.first;\n for (let i = first; i < first + this.rows; i++) {\n let node = data[i];\n if (node) {\n this.serializedValue.push({\n node: node,\n parent: null,\n level: 0,\n visible: true\n });\n this.serializeNodes(node, node.children, 1, true);\n }\n }\n }\n }\n updateSelectionKeys() {\n if (this.dataKey && this._selection) {\n this.selectionKeys = {};\n if (Array.isArray(this._selection)) {\n for (let node of this._selection) {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;\n }\n }\n else {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;\n }\n }\n }\n onPageChange(event) {\n this.first = event.first;\n this.rows = event.rows;\n if (this.lazy)\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n else\n this.serializePageNodes();\n this.onPage.emit({\n first: this.first,\n rows: this.rows\n });\n this.tableService.onUIUpdate(this.value);\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n sort(event) {\n let originalEvent = event.originalEvent;\n if (this.sortMode === 'single') {\n this._sortOrder = this.sortField === event.field ? this.sortOrder * -1 : this.defaultSortOrder;\n this._sortField = event.field;\n this.sortSingle();\n if (this.resetPageOnSort && this.scrollable) {\n this.resetScrollTop();\n }\n }\n if (this.sortMode === 'multiple') {\n let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n let sortMeta = this.getSortMeta(event.field);\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];\n if (this.resetPageOnSort && this.scrollable) {\n this.resetScrollTop();\n }\n }\n else {\n sortMeta.order = sortMeta.order * -1;\n }\n }\n else {\n if (!metaKey || !this.multiSortMeta) {\n this._multiSortMeta = [];\n if (this.resetPageOnSort && this.scrollable) {\n this.resetScrollTop();\n }\n }\n this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n }\n this.sortMultiple();\n }\n }\n sortSingle() {\n if (this.sortField && this.sortOrder) {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n this.sortNodes(this.value);\n if (this.hasFilter()) {\n this._filter();\n }\n }\n let sortMeta = {\n field: this.sortField,\n order: this.sortOrder\n };\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n this.updateSerializedValue();\n }\n }\n sortNodes(nodes) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (this.customSort) {\n this.sortFunction.emit({\n data: nodes,\n mode: this.sortMode,\n field: this.sortField,\n order: this.sortOrder\n });\n }\n else {\n nodes.sort((node1, node2) => {\n let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);\n let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, undefined, { numeric: true });\n else\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return this.sortOrder * result;\n });\n }\n for (let node of nodes) {\n this.sortNodes(node.children);\n }\n }\n sortMultiple() {\n if (this.multiSortMeta) {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n this.sortMultipleNodes(this.value);\n if (this.hasFilter()) {\n this._filter();\n }\n }\n this.onSort.emit({\n multisortmeta: this.multiSortMeta\n });\n this.updateSerializedValue();\n this.tableService.onSort(this.multiSortMeta);\n }\n }\n sortMultipleNodes(nodes) {\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n multiSortMeta: this.multiSortMeta\n });\n }\n else {\n nodes.sort((node1, node2) => {\n return this.multisortField(node1, node2, this.multiSortMeta, 0);\n });\n }\n for (let node of nodes) {\n this.sortMultipleNodes(node.children);\n }\n }\n multisortField(node1, node2, multiSortMeta, index) {\n if (ObjectUtils.isEmpty(this.multiSortMeta) || ObjectUtils.isEmpty(multiSortMeta[index])) {\n return 0;\n }\n let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 != value2) {\n return multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true });\n }\n }\n else {\n result = value1 < value2 ? -1 : 1;\n }\n if (value1 == value2) {\n return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n }\n return multiSortMeta[index].order * result;\n }\n getSortMeta(field) {\n if (this.multiSortMeta && this.multiSortMeta.length) {\n for (let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field === field) {\n return this.multiSortMeta[i];\n }\n }\n }\n return null;\n }\n isSorted(field) {\n if (this.sortMode === 'single') {\n return this.sortField && this.sortField === field;\n }\n else if (this.sortMode === 'multiple') {\n let sorted = false;\n if (this.multiSortMeta) {\n for (let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field == field) {\n sorted = true;\n break;\n }\n }\n }\n return sorted;\n }\n }\n createLazyLoadMetadata() {\n return {\n first: this.first,\n rows: this.rows,\n sortField: this.sortField,\n sortOrder: this.sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this.multiSortMeta,\n forceUpdate: () => this.cd.detectChanges()\n };\n }\n onLazyItemLoad(event) {\n this.onLazyLoad.emit({\n ...this.createLazyLoadMetadata(),\n ...event,\n rows: event.last - event.first\n });\n }\n /**\n * Resets scroll to top.\n * @group Method\n */\n resetScrollTop() {\n if (this.virtualScroll)\n this.scrollToVirtualIndex(0);\n else\n this.scrollTo({ top: 0 });\n }\n /**\n * Scrolls to given index when using virtual scroll.\n * @param {number} index - index of the element.\n * @group Method\n */\n scrollToVirtualIndex(index) {\n if (this.scrollableViewChild) {\n this.scrollableViewChild.scrollToVirtualIndex(index);\n }\n if (this.scrollableFrozenViewChild) {\n this.scrollableViewChild.scrollToVirtualIndex(index);\n }\n }\n /**\n * Scrolls to given index.\n * @param {ScrollToOptions} options - Scroll options.\n * @group Method\n */\n scrollTo(options) {\n if (this.scrollableViewChild) {\n this.scrollableViewChild.scrollTo(options);\n }\n if (this.scrollableFrozenViewChild) {\n this.scrollableViewChild.scrollTo(options);\n }\n }\n isEmpty() {\n let data = this.filteredNodes || this.value;\n return data == null || data.length == 0;\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n onColumnResizeBegin(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild?.nativeElement).left;\n this.lastResizerHelperX = event.pageX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft;\n event.preventDefault();\n }\n onColumnResize(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild?.nativeElement).left;\n DomHandler.addClass(this.containerViewChild?.nativeElement, 'p-unselectable-text');\n this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild?.nativeElement.offsetHeight + 'px';\n this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n this.resizeHelperViewChild.nativeElement.style.left = event.pageX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft + 'px';\n this.resizeHelperViewChild.nativeElement.style.display = 'block';\n }\n onColumnResizeEnd(event, column) {\n let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n let columnWidth = column.offsetWidth;\n let newColumnWidth = columnWidth + delta;\n let minWidth = column.style.minWidth || 15;\n if (columnWidth + delta > parseInt(minWidth)) {\n if (this.columnResizeMode === 'fit') {\n let nextColumn = column.nextElementSibling;\n while (!nextColumn.offsetParent) {\n nextColumn = nextColumn.nextElementSibling;\n }\n if (nextColumn) {\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n if (this.scrollable) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-scroller-viewport table');\n let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n let resizeColumnIndex = DomHandler.index(column);\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n }\n else {\n column.style.width = newColumnWidth + 'px';\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n }\n }\n else if (this.columnResizeMode === 'expand') {\n if (this.scrollable) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, '.p-scroller-viewport');\n let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');\n let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');\n let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-scroller-viewport table');\n let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n if (scrollableFooterTable) {\n scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n }\n let resizeColumnIndex = DomHandler.index(column);\n const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n const isContainerInViewport = this.containerViewChild?.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n let setWidth = (container, table, width, isContainerInViewport) => {\n if (container && table) {\n container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';\n table.style.width = width + 'px';\n }\n };\n setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n }\n else {\n this.tableViewChild.nativeElement.style.width = this.tableViewChild?.nativeElement.offsetWidth + delta + 'px';\n column.style.width = newColumnWidth + 'px';\n let containerWidth = this.tableViewChild?.nativeElement.style.width;\n this.containerViewChild.nativeElement.style.width = containerWidth + 'px';\n }\n }\n this.onColResize.emit({\n element: column,\n delta: delta\n });\n }\n this.resizeHelperViewChild.nativeElement.style.display = 'none';\n DomHandler.removeClass(this.containerViewChild?.nativeElement, 'p-unselectable-text');\n }\n findParentScrollableView(column) {\n if (column) {\n let parent = column.parentElement;\n while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {\n parent = parent.parentElement;\n }\n return parent;\n }\n else {\n return null;\n }\n }\n resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n if (table) {\n let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n if (colGroup) {\n let col = colGroup.children[resizeColumnIndex];\n let nextCol = col.nextElementSibling;\n col.style.width = newColumnWidth + 'px';\n if (nextCol && nextColumnWidth) {\n nextCol.style.width = nextColumnWidth + 'px';\n }\n }\n else {\n throw 'Scrollable tables require a colgroup to support resizable columns';\n }\n }\n }\n onColumnDragStart(event, columnElement) {\n this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild?.nativeElement);\n this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild?.nativeElement);\n this.draggedColumn = columnElement;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n onColumnDragEnter(event, dropHeader) {\n if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n event.preventDefault();\n let containerOffset = DomHandler.getOffset(this.containerViewChild?.nativeElement);\n let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n if (this.draggedColumn != dropHeader) {\n let targetLeft = dropHeaderOffset.left - containerOffset.left;\n let targetTop = containerOffset.top - dropHeaderOffset.top;\n let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2) + 'px';\n this.dropPosition = 1;\n }\n else {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = targetLeft - Math.ceil(this.reorderIconWidth / 2) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = targetLeft - Math.ceil(this.reorderIconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n }\n else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n }\n onColumnDragLeave(event) {\n if (this.reorderableColumns && this.draggedColumn) {\n event.preventDefault();\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n }\n }\n onColumnDrop(event, dropColumn) {\n event.preventDefault();\n if (this.draggedColumn) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n let allowDrop = dragIndex != dropIndex;\n if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n allowDrop = false;\n }\n if (allowDrop && dropIndex < dragIndex && this.dropPosition === 1) {\n dropIndex = dropIndex + 1;\n }\n if (allowDrop && dropIndex > dragIndex && this.dropPosition === -1) {\n dropIndex = dropIndex - 1;\n }\n if (allowDrop) {\n ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n this.onColReorder.emit({\n dragIndex: dragIndex,\n dropIndex: dropIndex,\n columns: this.columns\n });\n }\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n this.draggedColumn.draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n handleRowClick(event) {\n let targetNode = event.originalEvent.target.nodeName;\n if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || DomHandler.hasClass(event.originalEvent.target, 'p-clickable')) {\n return;\n }\n if (this.selectionMode) {\n this.preventSelectionSetterPropagation = true;\n let rowNode = event.rowNode;\n let selected = this.isSelected(rowNode.node);\n let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;\n if (metaSelection) {\n let keyboardEvent = event.originalEvent;\n let metaKey = keyboardEvent.metaKey || keyboardEvent.ctrlKey;\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(null);\n }\n else {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n }\n else {\n if (this.isSingleSelectionMode()) {\n this._selection = rowNode.node;\n this.selectionChange.emit(rowNode.node);\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this.selection || [];\n }\n else {\n this._selection = [];\n this.selectionKeys = {};\n }\n this._selection = [...this.selection, rowNode.node];\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n }\n }\n else {\n if (this.selectionMode === 'single') {\n if (selected) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n }\n else {\n this._selection = rowNode.node;\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n else if (this.selectionMode === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowNode.node);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n else {\n this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n }\n this.tableService.onSelectionChange();\n }\n this.rowTouched = false;\n }\n handleRowTouchEnd(event) {\n this.rowTouched = true;\n }\n handleRowRightClick(event) {\n if (this.contextMenu) {\n const node = event.rowNode.node;\n if (this.contextMenuSelectionMode === 'separate') {\n this.contextMenuSelection = node;\n this.contextMenuSelectionChange.emit(node);\n this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n this.contextMenu.show(event.originalEvent);\n this.tableService.onContextMenu(node);\n }\n else if (this.contextMenuSelectionMode === 'joint') {\n this.preventSelectionSetterPropagation = true;\n let selected = this.isSelected(node);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n if (!selected) {\n if (this.isSingleSelectionMode()) {\n this.selection = node;\n this.selectionChange.emit(node);\n }\n else if (this.isMultipleSelectionMode()) {\n this.selection = [node];\n this.selectionChange.emit(this.selection);\n }\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n this.contextMenu.show(event.originalEvent);\n this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });\n }\n }\n }\n toggleNodeWithCheckbox(event) {\n this.selection = this.selection || [];\n this.preventSelectionSetterPropagation = true;\n let node = event.rowNode.node;\n let selected = this.isSelected(node);\n if (selected) {\n this.propagateSelectionDown(node, false);\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, false);\n }\n this.selectionChange.emit(this.selection);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n }\n else {\n this.propagateSelectionDown(node, true);\n if (event.rowNode.parent) {\n this.propagateSelectionUp(node.parent, true);\n }\n this.selectionChange.emit(this.selection);\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n this.tableService.onSelectionChange();\n }\n toggleNodesWithCheckbox(event, check) {\n let data = this.filteredNodes || this.value;\n this._selection = check && data ? data.slice() : [];\n if (check) {\n if (data && data.length) {\n for (let node of data) {\n this.propagateSelectionDown(node, true);\n }\n }\n }\n else {\n this._selection = [];\n this.selectionKeys = {};\n }\n this.preventSelectionSetterPropagation = true;\n this.selectionChange.emit(this._selection);\n this.tableService.onSelectionChange();\n this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });\n }\n propagateSelectionUp(node, select) {\n if (node.children && node.children.length) {\n let selectedChildCount = 0;\n let childPartialSelected = false;\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n for (let child of node.children) {\n if (this.isSelected(child))\n selectedChildCount++;\n else if (child.partialSelected)\n childPartialSelected = true;\n }\n if (select && selectedChildCount == node.children.length) {\n this._selection = [...(this.selection || []), node];\n node.partialSelected = false;\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n if (index >= 0) {\n this._selection = this.selection.filter((val, i) => i != index);\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n }\n if (childPartialSelected || (selectedChildCount > 0 && selectedChildCount != node.children.length))\n node.partialSelected = true;\n else\n node.partialSelected = false;\n }\n }\n let parent = node.parent;\n if (parent) {\n this.propagateSelectionUp(parent, select);\n }\n }\n propagateSelectionDown(node, select) {\n let index = this.findIndexInSelection(node);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n if (select && index == -1) {\n this._selection = [...(this.selection || []), node];\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else if (!select && index > -1) {\n this._selection = this.selection.filter((val, i) => i != index);\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n node.partialSelected = false;\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateSelectionDown(child, select);\n }\n }\n }\n isSelected(node) {\n if (node && this.selection) {\n if (this.dataKey) {\n return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;\n }\n else {\n if (Array.isArray(this.selection))\n return this.findIndexInSelection(node) > -1;\n else\n return this.equals(node, this.selection);\n }\n }\n return false;\n }\n findIndexInSelection(node) {\n let index = -1;\n if (this.selection && this.selection.length) {\n for (let i = 0; i < this.selection.length; i++) {\n if (this.equals(node, this.selection[i])) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n }\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n }\n equals(node1, node2) {\n return this.compareSelectionBy === 'equals' ? node1 === node2 : ObjectUtils.equals(node1.data, node2.data, this.dataKey);\n }\n filter(value, field, matchMode) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n if (!this.isFilterBlank(value)) {\n this.filters[field] = { value: value, matchMode: matchMode };\n }\n else if (this.filters[field]) {\n delete this.filters[field];\n }\n this.filterTimeout = setTimeout(() => {\n this._filter();\n this.filterTimeout = null;\n }, this.filterDelay);\n }\n filterGlobal(value, matchMode) {\n this.filter(value, 'global', matchMode);\n }\n isFilterBlank(filter) {\n if (filter !== null && filter !== undefined) {\n if ((typeof filter === 'string' && filter.trim().length == 0) || (Array.isArray(filter) && filter.length == 0))\n return true;\n else\n return false;\n }\n return true;\n }\n _filter() {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n if (!this.value) {\n return;\n }\n if (!this.hasFilter()) {\n this.filteredNodes = null;\n if (this.paginator) {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n }\n else {\n let globalFilterFieldsArray;\n if (this.filters['global']) {\n if (!this.columns && !this.globalFilterFields)\n throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else\n globalFilterFieldsArray = this.globalFilterFields || this.columns;\n }\n this.filteredNodes = [];\n const isStrictMode = this.filterMode === 'strict';\n let isValueChanged = false;\n for (let node of this.value) {\n let copyNode = { ...node };\n let localMatch = true;\n let globalMatch = false;\n let paramsWithoutNode;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n let filterMeta = this.filters[prop];\n let filterField = prop;\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || 'startsWith';\n let filterConstraint = this.filterService.filters[filterMatchMode];\n paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };\n if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n localMatch = false;\n }\n if (!localMatch) {\n break;\n }\n }\n }\n if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n let copyNodeForGlobal = { ...copyNode };\n let filterField = undefined;\n let filterValue = this.filters['global'].value;\n let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];\n paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray };\n if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n let matches = localMatch;\n if (this.filters['global']) {\n matches = localMatch && globalMatch;\n }\n if (matches) {\n this.filteredNodes.push(copyNode);\n }\n isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);\n }\n if (!isValueChanged) {\n this.filteredNodes = null;\n }\n if (this.paginator) {\n this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n }\n }\n }\n this.first = 0;\n const filteredValue = this.filteredNodes || this.value;\n this.onFilter.emit({\n filters: this.filters,\n filteredValue: filteredValue\n });\n this.tableService.onUIUpdate(filteredValue);\n this.updateSerializedValue();\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n if (node.children) {\n let childNodes = [...node.children];\n node.children = [];\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n if (matched) {\n return true;\n }\n }\n }\n isFilterMatched(node, filterOptions) {\n let { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray } = filterOptions;\n let matched = false;\n const isMatched = (field) => filterConstraint(ObjectUtils.resolveFieldData(node.data, field), filterValue, this.filterLocale);\n matched = globalFilterFieldsArray?.length ? globalFilterFieldsArray.some((globalFilterField) => isMatched(globalFilterField.field || globalFilterField)) : isMatched(filterField);\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, isStrictMode, globalFilterFieldsArray }) || matched;\n }\n return matched;\n }\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n }\n hasFilter() {\n let empty = true;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop)) {\n empty = false;\n break;\n }\n }\n return !empty;\n }\n /**\n * Clears the sort and paginator state.\n * @group Method\n */\n reset() {\n this._sortField = null;\n this._sortOrder = 1;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n this.filteredNodes = null;\n this.filters = {};\n this.first = 0;\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n this.totalRecords = this._value ? this._value.length : 0;\n }\n }\n updateEditingCell(cell, data, field) {\n this.editingCell = cell;\n this.editingCellData = data;\n this.editingCellField = field;\n this.bindDocumentEditListener();\n }\n isEditingCellValid() {\n return this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0;\n }\n bindDocumentEditListener() {\n if (!this.documentEditListener) {\n this.documentEditListener = this.renderer.listen(this.document, 'click', (event) => {\n if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n this.editingCellField = null;\n this.editingCellData = null;\n this.unbindDocumentEditListener();\n }\n this.editingCellClick = false;\n });\n }\n }\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n this.documentEditListener();\n this.documentEditListener = null;\n }\n }\n ngOnDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.editingCellField = null;\n this.editingCellData = null;\n this.initialized = null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTable, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TreeTable, selector: \"p-treeTable\", inputs: { columns: \"columns\", style: \"style\", styleClass: \"styleClass\", tableStyle: \"tableStyle\", tableStyleClass: \"tableStyleClass\", autoLayout: \"autoLayout\", lazy: \"lazy\", lazyLoadOnInit: \"lazyLoadOnInit\", paginator: \"paginator\", rows: \"rows\", first: \"first\", pageLinks: \"pageLinks\", rowsPerPageOptions: \"rowsPerPageOptions\", alwaysShowPaginator: \"alwaysShowPaginator\", paginatorPosition: \"paginatorPosition\", paginatorStyleClass: \"paginatorStyleClass\", paginatorDropdownAppendTo: \"paginatorDropdownAppendTo\", currentPageReportTemplate: \"currentPageReportTemplate\", showCurrentPageReport: \"showCurrentPageReport\", showJumpToPageDropdown: \"showJumpToPageDropdown\", showFirstLastIcon: \"showFirstLastIcon\", showPageLinks: \"showPageLinks\", defaultSortOrder: \"defaultSortOrder\", sortMode: \"sortMode\", resetPageOnSort: \"resetPageOnSort\", customSort: \"customSort\", selectionMode: \"selectionMode\", contextMenuSelection: \"contextMenuSelection\", contextMenuSelectionMode: \"contextMenuSelectionMode\", dataKey: \"dataKey\", metaKeySelection: \"metaKeySelection\", compareSelectionBy: \"compareSelectionBy\", rowHover: \"rowHover\", loading: \"loading\", loadingIcon: \"loadingIcon\", showLoader: \"showLoader\", scrollable: \"scrollable\", scrollHeight: \"scrollHeight\", virtualScroll: \"virtualScroll\", virtualScrollItemSize: \"virtualScrollItemSize\", virtualScrollOptions: \"virtualScrollOptions\", virtualScrollDelay: \"virtualScrollDelay\", frozenWidth: \"frozenWidth\", frozenColumns: \"frozenColumns\", resizableColumns: \"resizableColumns\", columnResizeMode: \"columnResizeMode\", reorderableColumns: \"reorderableColumns\", contextMenu: \"contextMenu\", rowTrackBy: \"rowTrackBy\", filters: \"filters\", globalFilterFields: \"globalFilterFields\", filterDelay: \"filterDelay\", filterMode: \"filterMode\", filterLocale: \"filterLocale\", paginatorLocale: \"paginatorLocale\", totalRecords: \"totalRecords\", sortField: \"sortField\", sortOrder: \"sortOrder\", multiSortMeta: \"multiSortMeta\", selection: \"selection\", value: \"value\", virtualRowHeight: \"virtualRowHeight\" }, outputs: { selectionChange: \"selectionChange\", contextMenuSelectionChange: \"contextMenuSelectionChange\", onFilter: \"onFilter\", onNodeExpand: \"onNodeExpand\", onNodeCollapse: \"onNodeCollapse\", onPage: \"onPage\", onSort: \"onSort\", onLazyLoad: \"onLazyLoad\", sortFunction: \"sortFunction\", onColResize: \"onColResize\", onColReorder: \"onColReorder\", onNodeSelect: \"onNodeSelect\", onNodeUnselect: \"onNodeUnselect\", onContextMenuSelect: \"onContextMenuSelect\", onHeaderCheckboxToggle: \"onHeaderCheckboxToggle\", onEditInit: \"onEditInit\", onEditComplete: \"onEditComplete\", onEditCancel: \"onEditCancel\" }, host: { classAttribute: \"p-element\" }, providers: [TreeTableService], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"resizeHelperViewChild\", first: true, predicate: [\"resizeHelper\"], descendants: true }, { propertyName: \"reorderIndicatorUpViewChild\", first: true, predicate: [\"reorderIndicatorUp\"], descendants: true }, { propertyName: \"reorderIndicatorDownViewChild\", first: true, predicate: [\"reorderIndicatorDown\"], descendants: true }, { propertyName: \"tableViewChild\", first: true, predicate: [\"table\"], descendants: true }, { propertyName: \"scrollableViewChild\", first: true, predicate: [\"scrollableView\"], descendants: true }, { propertyName: \"scrollableFrozenViewChild\", first: true, predicate: [\"scrollableFrozenView\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\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 \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 \n
    \n\n
    \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\"@layer primeng{.p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox{vertical-align:middle}p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-treetable .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgStyle), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i0.forwardRef(() => i3.Paginator), selector: \"p-paginator\", inputs: [\"pageLinkSize\", \"style\", \"styleClass\", \"alwaysShow\", \"dropdownAppendTo\", \"templateLeft\", \"templateRight\", \"appendTo\", \"dropdownScrollHeight\", \"currentPageReportTemplate\", \"showCurrentPageReport\", \"showFirstLastIcon\", \"totalRecords\", \"rows\", \"rowsPerPageOptions\", \"showJumpToPageDropdown\", \"showJumpToPageInput\", \"showPageLinks\", \"locale\", \"dropdownItemTemplate\", \"first\"], outputs: [\"onPageChange\"] }, { kind: \"directive\", type: i0.forwardRef(() => i1.PrimeTemplate), selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: i0.forwardRef(() => SpinnerIcon), selector: \"SpinnerIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ArrowDownIcon), selector: \"ArrowDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ArrowUpIcon), selector: \"ArrowUpIcon\" }, { kind: \"component\", type: i0.forwardRef(() => TTScrollableView), selector: \"[ttScrollableView]\", inputs: [\"ttScrollableView\", \"frozen\", \"scrollHeight\"] }, { kind: \"component\", type: i0.forwardRef(() => TTBody), selector: \"[pTreeTableBody]\", inputs: [\"pTreeTableBody\", \"pTreeTableBodyTemplate\", \"frozen\", \"serializedNodes\", \"scrollerOptions\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTable, decorators: [{\n type: Component,\n args: [{ selector: 'p-treeTable', template: `\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 \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 \n
    \n\n
    \n \n \n \n \n \n \n \n \n \n `, providers: [TreeTableService], encapsulation: ViewEncapsulation.None, host: {\n class: 'p-element'\n }, styles: [\"@layer primeng{.p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox{vertical-align:middle}p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-virtual-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-treetable .p-scroller-loading{transform:none!important;min-height:0;position:sticky;top:0;left:0}}\\n\"] }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: TreeTableService }, { type: i1.FilterService }], propDecorators: { columns: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tableStyle: [{\n type: Input\n }], tableStyleClass: [{\n type: Input\n }], autoLayout: [{\n type: Input\n }], lazy: [{\n type: Input\n }], lazyLoadOnInit: [{\n type: Input\n }], paginator: [{\n type: Input\n }], rows: [{\n type: Input\n }], first: [{\n type: Input\n }], pageLinks: [{\n type: Input\n }], rowsPerPageOptions: [{\n type: Input\n }], alwaysShowPaginator: [{\n type: Input\n }], paginatorPosition: [{\n type: Input\n }], paginatorStyleClass: [{\n type: Input\n }], paginatorDropdownAppendTo: [{\n type: Input\n }], currentPageReportTemplate: [{\n type: Input\n }], showCurrentPageReport: [{\n type: Input\n }], showJumpToPageDropdown: [{\n type: Input\n }], showFirstLastIcon: [{\n type: Input\n }], showPageLinks: [{\n type: Input\n }], defaultSortOrder: [{\n type: Input\n }], sortMode: [{\n type: Input\n }], resetPageOnSort: [{\n type: Input\n }], customSort: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], contextMenuSelection: [{\n type: Input\n }], contextMenuSelectionMode: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], compareSelectionBy: [{\n type: Input\n }], rowHover: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], showLoader: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollItemSize: [{\n type: Input\n }], virtualScrollOptions: [{\n type: Input\n }], virtualScrollDelay: [{\n type: Input\n }], frozenWidth: [{\n type: Input\n }], frozenColumns: [{\n type: Input\n }], resizableColumns: [{\n type: Input\n }], columnResizeMode: [{\n type: Input\n }], reorderableColumns: [{\n type: Input\n }], contextMenu: [{\n type: Input\n }], rowTrackBy: [{\n type: Input\n }], filters: [{\n type: Input\n }], globalFilterFields: [{\n type: Input\n }], filterDelay: [{\n type: Input\n }], filterMode: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], paginatorLocale: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], sortField: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }], multiSortMeta: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], virtualRowHeight: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], contextMenuSelectionChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onNodeExpand: [{\n type: Output\n }], onNodeCollapse: [{\n type: Output\n }], onPage: [{\n type: Output\n }], onSort: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], sortFunction: [{\n type: Output\n }], onColResize: [{\n type: Output\n }], onColReorder: [{\n type: Output\n }], onNodeSelect: [{\n type: Output\n }], onNodeUnselect: [{\n type: Output\n }], onContextMenuSelect: [{\n type: Output\n }], onHeaderCheckboxToggle: [{\n type: Output\n }], onEditInit: [{\n type: Output\n }], onEditComplete: [{\n type: Output\n }], onEditCancel: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], resizeHelperViewChild: [{\n type: ViewChild,\n args: ['resizeHelper']\n }], reorderIndicatorUpViewChild: [{\n type: ViewChild,\n args: ['reorderIndicatorUp']\n }], reorderIndicatorDownViewChild: [{\n type: ViewChild,\n args: ['reorderIndicatorDown']\n }], tableViewChild: [{\n type: ViewChild,\n args: ['table']\n }], scrollableViewChild: [{\n type: ViewChild,\n args: ['scrollableView']\n }], scrollableFrozenViewChild: [{\n type: ViewChild,\n args: ['scrollableFrozenView']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass TTBody {\n tt;\n treeTableService;\n cd;\n columns;\n template;\n frozen;\n serializedNodes;\n scrollerOptions;\n subscription;\n constructor(tt, treeTableService, cd) {\n this.tt = tt;\n this.treeTableService = treeTableService;\n this.cd = cd;\n this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n if (this.tt.virtualScroll) {\n this.cd.detectChanges();\n }\n });\n }\n getScrollerOption(option, options) {\n if (this.tt.virtualScroll) {\n options = options || this.scrollerOptions;\n return options ? options[option] : null;\n }\n return null;\n }\n getRowIndex(rowIndex) {\n const getItemOptions = this.getScrollerOption('getItemOptions');\n return getItemOptions ? getItemOptions(rowIndex).index : rowIndex;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTBody, selector: \"[pTreeTableBody]\", inputs: { columns: [\"pTreeTableBody\", \"columns\"], template: [\"pTreeTableBodyTemplate\", \"template\"], frozen: \"frozen\", serializedNodes: \"serializedNodes\", scrollerOptions: \"scrollerOptions\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTBody, decorators: [{\n type: Component,\n args: [{\n selector: '[pTreeTableBody]',\n template: `\n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }], propDecorators: { columns: [{\n type: Input,\n args: ['pTreeTableBody']\n }], template: [{\n type: Input,\n args: ['pTreeTableBodyTemplate']\n }], frozen: [{\n type: Input\n }], serializedNodes: [{\n type: Input\n }], scrollerOptions: [{\n type: Input\n }] } });\nclass TTScrollableView {\n platformId;\n renderer;\n tt;\n el;\n zone;\n columns;\n frozen;\n scrollHeaderViewChild;\n scrollHeaderBoxViewChild;\n scrollBodyViewChild;\n scrollTableViewChild;\n scrollLoadingTableViewChild;\n scrollFooterViewChild;\n scrollFooterBoxViewChild;\n scrollableAlignerViewChild;\n scroller;\n headerScrollListener;\n bodyScrollListener;\n footerScrollListener;\n frozenSiblingBody;\n totalRecordsSubscription;\n _scrollHeight;\n preventBodyScrollPropagation;\n get scrollHeight() {\n return this._scrollHeight;\n }\n set scrollHeight(val) {\n this._scrollHeight = val;\n if (val != null && (val.includes('%') || val.includes('calc'))) {\n console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.');\n }\n }\n constructor(platformId, renderer, tt, el, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.tt = tt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.frozen) {\n if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {\n DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n }\n let frozenView = this.el.nativeElement.previousElementSibling;\n if (frozenView) {\n if (this.tt.virtualScroll)\n this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-scroller-viewport');\n else\n this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');\n }\n let scrollBarWidth = DomHandler.calculateScrollbarWidth();\n this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {\n this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n }\n }\n else {\n if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {\n this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';\n }\n }\n this.bindEvents();\n }\n }\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.headerScrollListener = this.renderer.listen(this.scrollHeaderBoxViewChild?.nativeElement, 'scroll', this.onHeaderScroll.bind(this));\n }\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.footerScrollListener = this.renderer.listen(this.scrollFooterViewChild.nativeElement, 'scroll', this.onFooterScroll.bind(this));\n }\n if (!this.frozen) {\n if (this.tt.virtualScroll) {\n this.bodyScrollListener = this.renderer.listen((this.scroller?.getElementRef()).nativeElement, 'scroll', this.onBodyScroll.bind(this));\n }\n else {\n this.bodyScrollListener = this.renderer.listen(this.scrollBodyViewChild?.nativeElement, 'scroll', this.onBodyScroll.bind(this));\n }\n }\n });\n }\n }\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n if (this.headerScrollListener) {\n this.headerScrollListener();\n this.headerScrollListener = null;\n }\n }\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n if (this.footerScrollListener) {\n this.footerScrollListener();\n this.footerScrollListener = null;\n }\n }\n if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n if (this.scroller && this.scroller.getElementRef()) {\n if (this.bodyScrollListener) {\n this.bodyScrollListener();\n this.bodyScrollListener = null;\n }\n }\n }\n }\n onHeaderScroll() {\n const scrollLeft = this.scrollHeaderViewChild?.nativeElement.scrollLeft;\n this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;\n }\n this.preventBodyScrollPropagation = true;\n }\n onFooterScroll() {\n const scrollLeft = this.scrollFooterViewChild?.nativeElement.scrollLeft;\n this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;\n }\n this.preventBodyScrollPropagation = true;\n }\n onBodyScroll(event) {\n if (this.preventBodyScrollPropagation) {\n this.preventBodyScrollPropagation = false;\n return;\n }\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n }\n if (this.frozenSiblingBody) {\n this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n }\n }\n scrollToVirtualIndex(index) {\n if (this.scroller) {\n this.scroller.scrollToIndex(index);\n }\n }\n scrollTo(options) {\n if (this.scroller) {\n this.scroller.scrollTo(options);\n }\n else {\n if (this.scrollBodyViewChild?.nativeElement.scrollTo) {\n this.scrollBodyViewChild.nativeElement.scrollTo(options);\n }\n else {\n this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;\n this.scrollBodyViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n ngOnDestroy() {\n this.unbindEvents();\n this.frozenSiblingBody = null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTScrollableView, deps: [{ token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTScrollableView, selector: \"[ttScrollableView]\", inputs: { columns: [\"ttScrollableView\", \"columns\"], frozen: \"frozen\", scrollHeight: \"scrollHeight\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"scrollHeaderViewChild\", first: true, predicate: [\"scrollHeader\"], descendants: true }, { propertyName: \"scrollHeaderBoxViewChild\", first: true, predicate: [\"scrollHeaderBox\"], descendants: true }, { propertyName: \"scrollBodyViewChild\", first: true, predicate: [\"scrollBody\"], descendants: true }, { propertyName: \"scrollTableViewChild\", first: true, predicate: [\"scrollTable\"], descendants: true }, { propertyName: \"scrollLoadingTableViewChild\", first: true, predicate: [\"loadingTable\"], descendants: true }, { propertyName: \"scrollFooterViewChild\", first: true, predicate: [\"scrollFooter\"], descendants: true }, { propertyName: \"scrollFooterBoxViewChild\", first: true, predicate: [\"scrollFooterBox\"], descendants: true }, { propertyName: \"scrollableAlignerViewChild\", first: true, predicate: [\"scrollableAligner\"], descendants: true }, { propertyName: \"scroller\", first: true, predicate: [\"scroller\"], descendants: true }], ngImport: i0, template: `\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\n
    \n \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: i1.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: i4.Scroller, selector: \"p-scroller\", inputs: [\"id\", \"style\", \"styleClass\", \"tabindex\", \"items\", \"itemSize\", \"scrollHeight\", \"scrollWidth\", \"orientation\", \"step\", \"delay\", \"resizeDelay\", \"appendOnly\", \"inline\", \"lazy\", \"disabled\", \"loaderDisabled\", \"columns\", \"showSpacer\", \"showLoader\", \"numToleratedItems\", \"loading\", \"autoSize\", \"trackBy\", \"options\"], outputs: [\"onLazyLoad\", \"onScroll\", \"onScrollIndexChange\"] }, { kind: \"component\", type: TTBody, selector: \"[pTreeTableBody]\", inputs: [\"pTreeTableBody\", \"pTreeTableBodyTemplate\", \"frozen\", \"serializedNodes\", \"scrollerOptions\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTScrollableView, decorators: [{\n type: Component,\n args: [{\n selector: '[ttScrollableView]',\n template: `\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\n
    \n \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { columns: [{\n type: Input,\n args: ['ttScrollableView']\n }], frozen: [{\n type: Input\n }], scrollHeaderViewChild: [{\n type: ViewChild,\n args: ['scrollHeader']\n }], scrollHeaderBoxViewChild: [{\n type: ViewChild,\n args: ['scrollHeaderBox']\n }], scrollBodyViewChild: [{\n type: ViewChild,\n args: ['scrollBody']\n }], scrollTableViewChild: [{\n type: ViewChild,\n args: ['scrollTable']\n }], scrollLoadingTableViewChild: [{\n type: ViewChild,\n args: ['loadingTable']\n }], scrollFooterViewChild: [{\n type: ViewChild,\n args: ['scrollFooter']\n }], scrollFooterBoxViewChild: [{\n type: ViewChild,\n args: ['scrollFooterBox']\n }], scrollableAlignerViewChild: [{\n type: ViewChild,\n args: ['scrollableAligner']\n }], scroller: [{\n type: ViewChild,\n args: ['scroller']\n }], scrollHeight: [{\n type: Input\n }] } });\nclass TTSortableColumn {\n tt;\n field;\n ttSortableColumnDisabled;\n sorted;\n subscription;\n get ariaSorted() {\n if (this.sorted && this.tt.sortOrder < 0)\n return 'descending';\n else if (this.sorted && this.tt.sortOrder > 0)\n return 'ascending';\n else\n return 'none';\n }\n constructor(tt) {\n this.tt = tt;\n if (this.isEnabled()) {\n this.subscription = this.tt.tableService.sortSource$.subscribe((sortMeta) => {\n this.updateSortState();\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.updateSortState();\n }\n }\n updateSortState() {\n this.sorted = this.tt.isSorted(this.field);\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.updateSortState();\n this.tt.sort({\n originalEvent: event,\n field: this.field\n });\n DomHandler.clearSelection();\n }\n }\n onEnterKey(event) {\n this.onClick(event);\n }\n isEnabled() {\n return this.ttSortableColumnDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTSortableColumn, selector: \"[ttSortableColumn]\", inputs: { field: [\"ttSortableColumn\", \"field\"], ttSortableColumnDisabled: \"ttSortableColumnDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\", \"keydown.enter\": \"onEnterKey($event)\" }, properties: { \"class.p-sortable-column\": \"isEnabled()\", \"class.p-highlight\": \"sorted\", \"attr.tabindex\": \"isEnabled() ? \\\"0\\\" : null\", \"attr.role\": \"\\\"columnheader\\\"\", \"attr.aria-sort\": \"ariaSorted\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSortableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttSortableColumn]',\n host: {\n class: 'p-element',\n '[class.p-sortable-column]': 'isEnabled()',\n '[class.p-highlight]': 'sorted',\n '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n '[attr.role]': '\"columnheader\"',\n '[attr.aria-sort]': 'ariaSorted'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }], propDecorators: { field: [{\n type: Input,\n args: ['ttSortableColumn']\n }], ttSortableColumnDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onEnterKey: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }] } });\nclass TTSortIcon {\n tt;\n cd;\n field;\n ariaLabelDesc;\n ariaLabelAsc;\n subscription;\n sortOrder;\n constructor(tt, cd) {\n this.tt = tt;\n this.cd = cd;\n this.subscription = this.tt.tableService.sortSource$.subscribe((sortMeta) => {\n this.updateSortState();\n this.cd.markForCheck();\n });\n }\n ngOnInit() {\n this.updateSortState();\n }\n onClick(event) {\n event.preventDefault();\n }\n updateSortState() {\n if (this.tt.sortMode === 'single') {\n this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;\n }\n else if (this.tt.sortMode === 'multiple') {\n let sortMeta = this.tt.getSortMeta(this.field);\n this.sortOrder = sortMeta ? sortMeta.order : 0;\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTSortIcon, selector: \"p-treeTableSortIcon\", inputs: { field: \"field\", ariaLabelDesc: \"ariaLabelDesc\", ariaLabelAsc: \"ariaLabelAsc\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: ` \n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i0.forwardRef(() => SortAltIcon), selector: \"SortAltIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SortAmountUpAltIcon), selector: \"SortAmountUpAltIcon\" }, { kind: \"component\", type: i0.forwardRef(() => SortAmountDownIcon), selector: \"SortAmountDownIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSortIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeTableSortIcon',\n template: ` \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: i0.ChangeDetectorRef }], propDecorators: { field: [{\n type: Input\n }], ariaLabelDesc: [{\n type: Input\n }], ariaLabelAsc: [{\n type: Input\n }] } });\nclass TTResizableColumn {\n document;\n platformId;\n renderer;\n tt;\n el;\n zone;\n ttResizableColumnDisabled;\n resizer;\n resizerMouseDownListener;\n documentMouseMoveListener;\n documentMouseUpListener;\n constructor(document, platformId, renderer, tt, el, zone) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.tt = tt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n this.resizer = this.renderer.createElement('span');\n this.renderer.addClass(this.resizer, 'p-column-resizer');\n this.renderer.appendChild(this.el.nativeElement, this.resizer);\n this.zone.runOutsideAngular(() => {\n this.resizerMouseDownListener = this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n });\n }\n }\n }\n bindDocumentEvents() {\n this.zone.runOutsideAngular(() => {\n this.documentMouseMoveListener = this.renderer.listen(this.document, 'mousemove', this.onDocumentMouseMove.bind(this));\n this.documentMouseUpListener = this.renderer.listen(this.document, 'mouseup', this.onDocumentMouseUp.bind(this));\n });\n }\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n this.documentMouseMoveListener();\n this.documentMouseMoveListener = null;\n }\n if (this.documentMouseUpListener) {\n this.documentMouseUpListener();\n this.documentMouseUpListener = null;\n }\n }\n onMouseDown(event) {\n this.tt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n onDocumentMouseMove(event) {\n this.tt.onColumnResize(event);\n }\n onDocumentMouseUp(event) {\n this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n this.unbindDocumentEvents();\n }\n isEnabled() {\n return this.ttResizableColumnDisabled !== true;\n }\n ngOnDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizerMouseDownListener();\n this.resizerMouseDownListener = null;\n }\n this.unbindDocumentEvents();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTResizableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTResizableColumn, selector: \"[ttResizableColumn]\", inputs: { ttResizableColumnDisabled: \"ttResizableColumnDisabled\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTResizableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttResizableColumn]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { ttResizableColumnDisabled: [{\n type: Input\n }] } });\nclass TTReorderableColumn {\n document;\n platformId;\n renderer;\n tt;\n el;\n zone;\n ttReorderableColumnDisabled;\n dragStartListener;\n dragOverListener;\n dragEnterListener;\n dragLeaveListener;\n mouseDownListener;\n constructor(document, platformId, renderer, tt, el, zone) {\n this.document = document;\n this.platformId = platformId;\n this.renderer = renderer;\n this.tt = tt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n this.bindEvents();\n }\n }\n bindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragEnter.bind(this));\n this.dragEnterListener = this.renderer.listen(this.el.nativeElement, 'dragenter', this.onDragEnter.bind(this));\n this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n });\n }\n }\n unbindEvents() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mouseDownListener) {\n this.mouseDownListener();\n this.mouseDownListener = null;\n }\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n if (this.dragEnterListener) {\n this.dragEnterListener();\n this.dragEnterListener = null;\n }\n if (this.dragLeaveListener) {\n this.dragLeaveListener();\n this.dragLeaveListener = null;\n }\n }\n }\n onMouseDown(event) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n this.el.nativeElement.draggable = false;\n else\n this.el.nativeElement.draggable = true;\n }\n onDragStart(event) {\n this.tt.onColumnDragStart(event, this.el.nativeElement);\n }\n onDragOver(event) {\n event.preventDefault();\n }\n onDragEnter(event) {\n this.tt.onColumnDragEnter(event, this.el.nativeElement);\n }\n onDragLeave(event) {\n this.tt.onColumnDragLeave(event);\n }\n onDrop(event) {\n if (this.isEnabled()) {\n this.tt.onColumnDrop(event, this.el.nativeElement);\n }\n }\n isEnabled() {\n return this.ttReorderableColumnDisabled !== true;\n }\n ngOnDestroy() {\n this.unbindEvents();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTReorderableColumn, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTReorderableColumn, selector: \"[ttReorderableColumn]\", inputs: { ttReorderableColumnDisabled: \"ttReorderableColumnDisabled\" }, host: { listeners: { \"drop\": \"onDrop($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTReorderableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttReorderableColumn]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.Renderer2 }, { type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { ttReorderableColumnDisabled: [{\n type: Input\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\nclass TTSelectableRow {\n tt;\n tableService;\n rowNode;\n ttSelectableRowDisabled;\n selected;\n subscription;\n constructor(tt, tableService) {\n this.tt = tt;\n this.tableService = tableService;\n if (this.isEnabled()) {\n this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.tt.isSelected(this.rowNode.node);\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.tt.isSelected(this.rowNode.node);\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode\n });\n }\n }\n onKeyDown(event) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n this.onEnterKey(event);\n break;\n default:\n break;\n }\n }\n onTouchEnd(event) {\n if (this.isEnabled()) {\n this.tt.handleRowTouchEnd(event);\n }\n }\n onEnterKey(event) {\n if (this.tt.selectionMode === 'checkbox') {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode\n });\n }\n else {\n this.onClick(event);\n }\n event.preventDefault();\n }\n isEnabled() {\n return this.ttSelectableRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTSelectableRow, selector: \"[ttSelectableRow]\", inputs: { rowNode: [\"ttSelectableRow\", \"rowNode\"], ttSelectableRowDisabled: \"ttSelectableRowDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\", \"keydown\": \"onKeyDown($event)\", \"touchend\": \"onTouchEnd($event)\" }, properties: { \"class.p-highlight\": \"selected\", \"attr.data-p-highlight\": \"selected\", \"attr.aria-checked\": \"selected\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSelectableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttSelectableRow]',\n host: {\n class: 'p-element',\n '[class.p-highlight]': 'selected',\n '[attr.data-p-highlight]': 'selected',\n '[attr.aria-checked]': 'selected'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }], propDecorators: { rowNode: [{\n type: Input,\n args: ['ttSelectableRow']\n }], ttSelectableRowDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onTouchEnd: [{\n type: HostListener,\n args: ['touchend', ['$event']]\n }] } });\nclass TTSelectableRowDblClick {\n tt;\n tableService;\n rowNode;\n ttSelectableRowDisabled;\n selected;\n subscription;\n constructor(tt, tableService) {\n this.tt = tt;\n this.tableService = tableService;\n if (this.isEnabled()) {\n this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.tt.isSelected(this.rowNode.node);\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.tt.isSelected(this.rowNode.node);\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.tt.handleRowClick({\n originalEvent: event,\n rowNode: this.rowNode\n });\n }\n }\n isEnabled() {\n return this.ttSelectableRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTSelectableRowDblClick, selector: \"[ttSelectableRowDblClick]\", inputs: { rowNode: [\"ttSelectableRowDblClick\", \"rowNode\"], ttSelectableRowDisabled: \"ttSelectableRowDisabled\" }, host: { listeners: { \"dblclick\": \"onClick($event)\" }, properties: { \"class.p-highlight\": \"selected\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttSelectableRowDblClick]',\n host: {\n class: 'p-element',\n '[class.p-highlight]': 'selected'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }], propDecorators: { rowNode: [{\n type: Input,\n args: ['ttSelectableRowDblClick']\n }], ttSelectableRowDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }] } });\nclass TTContextMenuRow {\n tt;\n tableService;\n el;\n rowNode;\n ttContextMenuRowDisabled;\n selected;\n subscription;\n constructor(tt, tableService, el) {\n this.tt = tt;\n this.tableService = tableService;\n this.el = el;\n if (this.isEnabled()) {\n this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {\n this.selected = this.tt.equals(this.rowNode.node, node);\n });\n }\n }\n onContextMenu(event) {\n if (this.isEnabled()) {\n this.tt.handleRowRightClick({\n originalEvent: event,\n rowNode: this.rowNode\n });\n this.el.nativeElement.focus();\n event.preventDefault();\n }\n }\n isEnabled() {\n return this.ttContextMenuRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTContextMenuRow, selector: \"[ttContextMenuRow]\", inputs: { rowNode: [\"ttContextMenuRow\", \"rowNode\"], ttContextMenuRowDisabled: \"ttContextMenuRowDisabled\" }, host: { listeners: { \"contextmenu\": \"onContextMenu($event)\" }, properties: { \"class.p-highlight-contextmenu\": \"selected\", \"attr.tabindex\": \"isEnabled() ? 0 : undefined\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTContextMenuRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttContextMenuRow]',\n host: {\n class: 'p-element',\n '[class.p-highlight-contextmenu]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ElementRef }], propDecorators: { rowNode: [{\n type: Input,\n args: ['ttContextMenuRow']\n }], ttContextMenuRowDisabled: [{\n type: Input\n }], onContextMenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }] } });\nclass TTCheckbox {\n tt;\n tableService;\n cd;\n disabled;\n rowNode;\n checked;\n focused;\n subscription;\n constructor(tt, tableService, cd) {\n this.tt = tt;\n this.tableService = tableService;\n this.cd = cd;\n this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.tt.isSelected(this.rowNode.node);\n this.cd.markForCheck();\n });\n }\n ngOnInit() {\n this.checked = this.tt.isSelected(this.rowNode.node);\n }\n onClick(event) {\n if (!this.disabled) {\n this.tt.toggleNodeWithCheckbox({\n originalEvent: event,\n rowNode: this.rowNode\n });\n }\n DomHandler.clearSelection();\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTCheckbox, selector: \"p-treeTableCheckbox\", inputs: { disabled: \"disabled\", rowNode: [\"value\", \"rowNode\"] }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }, { kind: \"component\", type: i0.forwardRef(() => MinusIcon), selector: \"MinusIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeTableCheckbox',\n template: `\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{\n type: Input\n }], rowNode: [{\n type: Input,\n args: ['value']\n }] } });\nclass TTHeaderCheckbox {\n tt;\n tableService;\n cd;\n boxViewChild;\n checked;\n focused;\n disabled;\n selectionChangeSubscription;\n valueChangeSubscription;\n constructor(tt, tableService, cd) {\n this.tt = tt;\n this.tableService = tableService;\n this.cd = cd;\n this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n }\n ngOnInit() {\n this.checked = this.updateCheckedState();\n }\n onClick(event, checked) {\n if (this.tt.value && this.tt.value.length > 0) {\n this.tt.toggleNodesWithCheckbox(event, !checked);\n }\n DomHandler.clearSelection();\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n ngOnDestroy() {\n if (this.selectionChangeSubscription) {\n this.selectionChangeSubscription.unsubscribe();\n }\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n updateCheckedState() {\n this.cd.markForCheck();\n let checked;\n const data = this.tt.filteredNodes || this.tt.value;\n if (data) {\n for (let node of data) {\n if (this.tt.isSelected(node)) {\n checked = true;\n }\n else {\n checked = false;\n break;\n }\n }\n }\n else {\n checked = false;\n }\n return checked;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTHeaderCheckbox, selector: \"p-treeTableHeaderCheckbox\", host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"boxViewChild\", first: true, predicate: [\"box\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgClass), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i0.forwardRef(() => CheckIcon), selector: \"CheckIcon\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTHeaderCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeTableHeaderCheckbox',\n template: `\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }], propDecorators: { boxViewChild: [{\n type: ViewChild,\n args: ['box']\n }] } });\nclass TTEditableColumn {\n tt;\n el;\n zone;\n data;\n field;\n ttEditableColumnDisabled;\n constructor(tt, el, zone) {\n this.tt = tt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.tt.editingCellClick = true;\n if (this.tt.editingCell) {\n if (this.tt.editingCell !== this.el.nativeElement) {\n if (!this.tt.isEditingCellValid()) {\n return;\n }\n DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n this.openCell();\n }\n }\n else {\n this.openCell();\n }\n }\n }\n openCell() {\n this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);\n DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n this.tt.onEditInit.emit({ field: this.field, data: this.data });\n this.tt.editingCellClick = true;\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');\n if (focusable) {\n focusable.focus();\n }\n }, 50);\n });\n }\n closeEditingCell() {\n DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');\n this.tt.editingCell = null;\n this.tt.unbindDocumentEditListener();\n }\n onKeyDown(event) {\n if (this.isEnabled()) {\n //enter\n if (event.keyCode == 13 && !event.shiftKey) {\n if (this.tt.isEditingCellValid()) {\n DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n this.closeEditingCell();\n this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n }\n event.preventDefault();\n }\n //escape\n else if (event.keyCode == 27) {\n if (this.tt.isEditingCellValid()) {\n DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n this.closeEditingCell();\n this.tt.onEditCancel.emit({ field: this.field, data: this.data });\n }\n event.preventDefault();\n }\n //tab\n else if (event.keyCode == 9) {\n this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n if (event.shiftKey)\n this.moveToPreviousCell(event);\n else\n this.moveToNextCell(event);\n }\n }\n }\n findCell(element) {\n if (element) {\n let cell = element;\n while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n cell = cell.parentElement;\n }\n return cell;\n }\n else {\n return null;\n }\n }\n moveToPreviousCell(event) {\n let currentCell = this.findCell(event.target);\n let row = currentCell.parentElement;\n let targetCell = this.findPreviousEditableColumn(currentCell);\n if (targetCell) {\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n moveToNextCell(event) {\n let currentCell = this.findCell(event.target);\n let row = currentCell.parentElement;\n let targetCell = this.findNextEditableColumn(currentCell);\n if (targetCell) {\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n findPreviousEditableColumn(cell) {\n let prevCell = cell.previousElementSibling;\n if (!prevCell) {\n let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;\n if (previousRow) {\n prevCell = previousRow.lastElementChild;\n }\n }\n if (prevCell) {\n if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n return prevCell;\n else\n return this.findPreviousEditableColumn(prevCell);\n }\n else {\n return null;\n }\n }\n findNextEditableColumn(cell) {\n let nextCell = cell.nextElementSibling;\n if (!nextCell) {\n let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;\n if (nextRow) {\n nextCell = nextRow.firstElementChild;\n }\n }\n if (nextCell) {\n if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n return nextCell;\n else\n return this.findNextEditableColumn(nextCell);\n }\n else {\n return null;\n }\n }\n isEnabled() {\n return this.ttEditableColumnDisabled !== true;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTEditableColumn, selector: \"[ttEditableColumn]\", inputs: { data: [\"ttEditableColumn\", \"data\"], field: [\"ttEditableColumnField\", \"field\"], ttEditableColumnDisabled: \"ttEditableColumnDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\", \"keydown\": \"onKeyDown($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTEditableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttEditableColumn]',\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { data: [{\n type: Input,\n args: ['ttEditableColumn']\n }], field: [{\n type: Input,\n args: ['ttEditableColumnField']\n }], ttEditableColumnDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\nclass TreeTableCellEditor {\n tt;\n editableColumn;\n templates;\n inputTemplate;\n outputTemplate;\n constructor(tt, editableColumn) {\n this.tt = tt;\n this.editableColumn = editableColumn;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'input':\n this.inputTemplate = item.template;\n break;\n case 'output':\n this.outputTemplate = item.template;\n break;\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TreeTableCellEditor, selector: \"p-treeTableCellEditor\", host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableCellEditor, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeTableCellEditor',\n template: `\n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: TTEditableColumn }], propDecorators: { templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass TTRow {\n tt;\n el;\n zone;\n get level() {\n return this.rowNode?.['level'] + 1;\n }\n get expanded() {\n return this.rowNode?.node['expanded'];\n }\n rowNode;\n constructor(tt, el, zone) {\n this.tt = tt;\n this.el = el;\n this.zone = zone;\n }\n onKeyDown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n case 'Tab':\n this.onTabKey(event);\n break;\n case 'Home':\n this.onHomeKey(event);\n break;\n case 'End':\n this.onEndKey(event);\n break;\n default:\n break;\n }\n }\n onArrowDownKey(event) {\n let nextRow = this.el?.nativeElement?.nextElementSibling;\n if (nextRow) {\n this.focusRowChange(event.currentTarget, nextRow);\n }\n event.preventDefault();\n }\n onArrowUpKey(event) {\n let prevRow = this.el?.nativeElement?.previousElementSibling;\n if (prevRow) {\n this.focusRowChange(event.currentTarget, prevRow);\n }\n event.preventDefault();\n }\n onArrowRightKey(event) {\n const currentTarget = event.currentTarget;\n const isHiddenIcon = DomHandler.findSingle(currentTarget, 'button').style.visibility === 'hidden';\n if (!isHiddenIcon && !this.expanded && this.rowNode.node['children']) {\n this.expand(event);\n currentTarget.tabIndex = -1;\n }\n event.preventDefault();\n }\n onArrowLeftKey(event) {\n const container = this.tt.containerViewChild?.nativeElement;\n const expandedRows = DomHandler.find(container, '[aria-expanded=\"true\"]');\n const lastExpandedRow = expandedRows[expandedRows.length - 1];\n if (this.expanded) {\n this.collapse(event);\n }\n if (lastExpandedRow) {\n this.tt.toggleRowIndex = DomHandler.index(lastExpandedRow);\n }\n this.restoreFocus();\n event.preventDefault();\n }\n onHomeKey(event) {\n const firstElement = DomHandler.findSingle(this.tt.containerViewChild?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n firstElement && DomHandler.focus(firstElement);\n event.preventDefault();\n }\n onEndKey(event) {\n const nodes = DomHandler.find(this.tt.containerViewChild?.nativeElement, `tr[aria-level=\"${this.level}\"]`);\n const lastElement = nodes[nodes.length - 1];\n DomHandler.focus(lastElement);\n event.preventDefault();\n }\n onTabKey(event) {\n const rows = this.el.nativeElement ? [...DomHandler.find(this.el.nativeElement.parentNode, 'tr')] : undefined;\n if (rows && ObjectUtils.isNotEmpty(rows)) {\n const hasSelectedRow = rows.some((row) => DomHandler.getAttribute(row, 'data-p-highlight') || row.getAttribute('aria-checked') === 'true');\n rows.forEach((row) => {\n row.tabIndex = -1;\n });\n if (hasSelectedRow) {\n const selectedNodes = rows.filter((node) => DomHandler.getAttribute(node, 'data-p-highlight') || node.getAttribute('aria-checked') === 'true');\n selectedNodes[0].tabIndex = 0;\n return;\n }\n rows[0].tabIndex = 0;\n }\n }\n expand(event) {\n this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);\n this.rowNode.node['expanded'] = true;\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n this.rowNode.node['children'] ? this.restoreFocus(this.tt.toggleRowIndex + 1) : this.restoreFocus();\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode.node\n });\n }\n collapse(event) {\n this.rowNode.node['expanded'] = false;\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n this.tt.onNodeCollapse.emit({ originalEvent: event, node: this.rowNode.node });\n }\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n DomHandler.focus(currentFocusedRow);\n }\n restoreFocus(index) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n const container = this.tt.containerViewChild?.nativeElement;\n const row = DomHandler.findSingle(container, '.p-treetable-tbody').children[index || this.tt.toggleRowIndex];\n const rows = [...DomHandler.find(container, 'tr')];\n rows &&\n rows.forEach((r) => {\n if (!row.isSameNode(r)) {\n r.tabIndex = -1;\n }\n });\n if (row) {\n row.tabIndex = 0;\n row.focus();\n }\n }, 25);\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TTRow, selector: \"[ttRow]\", inputs: { rowNode: [\"ttRow\", \"rowNode\"] }, host: { listeners: { \"keydown\": \"onKeyDown($event)\" }, properties: { \"attr.tabindex\": \"'0'\", \"attr.aria-expanded\": \"expanded\", \"attr.aria-level\": \"level\", \"attr.data-pc-section\": \"row\", \"attr.role\": \"row\" }, classAttribute: \"p-element\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TTRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[ttRow]',\n host: {\n class: 'p-element',\n '[attr.tabindex]': \"'0'\",\n '[attr.aria-expanded]': 'expanded',\n '[attr.aria-level]': 'level',\n '[attr.data-pc-section]': 'row',\n '[attr.role]': 'row'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { rowNode: [{\n type: Input,\n args: ['ttRow']\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\nclass TreeTableToggler {\n tt;\n config;\n rowNode;\n constructor(tt, config) {\n this.tt = tt;\n this.config = config;\n }\n get toggleButtonAriaLabel() {\n return this.config.translation ? (this.rowNode.expanded ? this.config.translation.aria.collapseRow : this.config.translation.aria.expandRow) : undefined;\n }\n onClick(event) {\n this.rowNode.node.expanded = !this.rowNode.node.expanded;\n if (this.rowNode.node.expanded) {\n this.tt.onNodeExpand.emit({\n originalEvent: event,\n node: this.rowNode.node\n });\n }\n else {\n this.tt.onNodeCollapse.emit({\n originalEvent: event,\n node: this.rowNode.node\n });\n }\n this.tt.updateSerializedValue();\n this.tt.tableService.onUIUpdate(this.tt.value);\n event.preventDefault();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.5\", type: TreeTableToggler, selector: \"p-treeTableToggler\", inputs: { rowNode: \"rowNode\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(() => i2.NgIf), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(() => i5.Ripple), selector: \"[pRipple]\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronDownIcon), selector: \"ChevronDownIcon\" }, { kind: \"component\", type: i0.forwardRef(() => ChevronRightIcon), selector: \"ChevronRightIcon\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableToggler, decorators: [{\n type: Component,\n args: [{\n selector: 'p-treeTableToggler',\n template: `\n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n }]\n }], ctorParameters: () => [{ type: TreeTable }, { type: i1.PrimeNGConfig }], propDecorators: { rowNode: [{\n type: Input\n }] } });\nclass TreeTableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollerModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableModule, imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon, SharedModule,\n ScrollerModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.5\", ngImport: i0, type: TreeTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PaginatorModule, RippleModule, ScrollerModule, SpinnerIcon, ArrowDownIcon, ArrowUpIcon, SortAltIcon, SortAmountUpAltIcon, SortAmountDownIcon, CheckIcon, MinusIcon, ChevronDownIcon, ChevronRightIcon],\n exports: [\n TreeTable,\n SharedModule,\n TreeTableToggler,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor,\n ScrollerModule\n ],\n declarations: [\n TreeTable,\n TreeTableToggler,\n TTScrollableView,\n TTBody,\n TTSortableColumn,\n TTSortIcon,\n TTResizableColumn,\n TTRow,\n TTReorderableColumn,\n TTSelectableRow,\n TTSelectableRowDblClick,\n TTContextMenuRow,\n TTCheckbox,\n TTHeaderCheckbox,\n TTEditableColumn,\n TreeTableCellEditor\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TTBody, TTCheckbox, TTContextMenuRow, TTEditableColumn, TTHeaderCheckbox, TTReorderableColumn, TTResizableColumn, TTRow, TTScrollableView, TTSelectableRow, TTSelectableRowDblClick, TTSortIcon, TTSortableColumn, TreeTable, TreeTableCellEditor, TreeTableModule, TreeTableService, TreeTableToggler };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tAccordionModule\r\n} from 'primeng/accordion';\r\nimport {\r\n\tAutoCompleteModule\r\n} from 'primeng/autocomplete';\r\nimport {\r\n\tBadgeModule\r\n} from 'primeng/badge';\r\nimport {\r\n\tBreadcrumbModule\r\n} from 'primeng/breadcrumb';\r\nimport {\r\n\tButtonModule\r\n} from 'primeng/button';\r\nimport {\r\n\tCalendarModule\r\n} from 'primeng/calendar';\r\nimport {\r\n\tCardModule\r\n} from 'primeng/card';\r\nimport {\r\n\tCarouselModule\r\n} from 'primeng/carousel';\r\nimport {\r\n\tChartModule\r\n} from 'primeng/chart';\r\nimport {\r\n\tCheckboxModule\r\n} from 'primeng/checkbox';\r\nimport {\r\n\tChipsModule\r\n} from 'primeng/chips';\r\nimport {\r\n\tColorPickerModule\r\n} from 'primeng/colorpicker';\r\nimport {\r\n\tConfirmDialogModule\r\n} from 'primeng/confirmdialog';\r\nimport {\r\n\tContextMenuModule\r\n} from 'primeng/contextmenu';\r\nimport {\r\n\tDataViewModule\r\n} from 'primeng/dataview';\r\nimport {\r\n\tDialogModule\r\n} from 'primeng/dialog';\r\nimport {\r\n\tDividerModule\r\n} from 'primeng/divider';\r\nimport {\r\n\tDragDropModule\r\n} from 'primeng/dragdrop';\r\nimport {\r\n\tDropdownModule\r\n} from 'primeng/dropdown';\r\nimport {\r\n\tEditorModule\r\n} from 'primeng/editor';\r\nimport {\r\n\tFieldsetModule\r\n} from 'primeng/fieldset';\r\nimport {\r\n\tFileUploadModule\r\n} from 'primeng/fileupload';\r\nimport {\r\n\tGalleriaModule\r\n} from 'primeng/galleria';\r\nimport {\r\n\tImageModule\r\n} from 'primeng/image';\r\nimport {\r\n\tInputMaskModule\r\n} from 'primeng/inputmask';\r\nimport {\r\n\tInputSwitchModule\r\n} from 'primeng/inputswitch';\r\nimport {\r\n\tInputTextModule\r\n} from 'primeng/inputtext';\r\nimport {\r\n\tInputTextareaModule\r\n} from 'primeng/inputtextarea';\r\nimport {\r\n\tListboxModule\r\n} from 'primeng/listbox';\r\nimport {\r\n\tMegaMenuModule\r\n} from 'primeng/megamenu';\r\nimport {\r\n\tMenuModule\r\n} from 'primeng/menu';\r\nimport {\r\n\tMenubarModule\r\n} from 'primeng/menubar';\r\nimport {\r\n\tMessageModule\r\n} from 'primeng/message';\r\nimport {\r\n\tMessagesModule\r\n} from 'primeng/messages';\r\nimport {\r\n\tMultiSelectModule\r\n} from 'primeng/multiselect';\r\nimport {\r\n\tOrderListModule\r\n} from 'primeng/orderlist';\r\nimport {\r\n\tOrganizationChartModule\r\n} from 'primeng/organizationchart';\r\nimport {\r\n\tOverlayPanelModule\r\n} from 'primeng/overlaypanel';\r\nimport {\r\n\tPaginatorModule\r\n} from 'primeng/paginator';\r\nimport {\r\n\tPanelModule\r\n} from 'primeng/panel';\r\nimport {\r\n\tPanelMenuModule\r\n} from 'primeng/panelmenu';\r\nimport {\r\n\tPasswordModule\r\n} from 'primeng/password';\r\nimport {\r\n\tPickListModule\r\n} from 'primeng/picklist';\r\nimport {\r\n\tProgressBarModule\r\n} from 'primeng/progressbar';\r\nimport {\r\n\tProgressSpinnerModule\r\n} from 'primeng/progressspinner';\r\nimport {\r\n\tRadioButtonModule\r\n} from 'primeng/radiobutton';\r\nimport {\r\n\tRatingModule\r\n} from 'primeng/rating';\r\nimport {\r\n\tScrollerModule\r\n} from 'primeng/scroller';\r\nimport {\r\n\tScrollPanelModule\r\n} from 'primeng/scrollpanel';\r\nimport {\r\n\tSelectButtonModule\r\n} from 'primeng/selectbutton';\r\nimport {\r\n\tSidebarModule\r\n} from 'primeng/sidebar';\r\nimport {\r\n\tSkeletonModule\r\n} from 'primeng/skeleton';\r\nimport {\r\n\tSlideMenuModule\r\n} from 'primeng/slidemenu';\r\nimport {\r\n\tSliderModule\r\n} from 'primeng/slider';\r\nimport {\r\n\tSpinnerModule\r\n} from 'primeng/spinner';\r\nimport {\r\n\tSplitButtonModule\r\n} from 'primeng/splitbutton';\r\nimport {\r\n\tStepsModule\r\n} from 'primeng/steps';\r\nimport {\r\n\tTableModule\r\n} from 'primeng/table';\r\nimport {\r\n\tTabMenuModule\r\n} from 'primeng/tabmenu';\r\nimport {\r\n\tTabViewModule\r\n} from 'primeng/tabview';\r\nimport {\r\n\tTerminalModule\r\n} from 'primeng/terminal';\r\nimport {\r\n\tTieredMenuModule\r\n} from 'primeng/tieredmenu';\r\nimport {\r\n\tTimelineModule\r\n} from 'primeng/timeline';\r\nimport {\r\n\tToastModule\r\n} from 'primeng/toast';\r\nimport {\r\n\tToggleButtonModule\r\n} from 'primeng/togglebutton';\r\nimport {\r\n\tToolbarModule\r\n} from 'primeng/toolbar';\r\nimport {\r\n\tTooltipModule\r\n} from 'primeng/tooltip';\r\nimport {\r\n\tTreeModule\r\n} from 'primeng/tree';\r\nimport {\r\n\tTreeTableModule\r\n} from 'primeng/treetable';\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tAccordionModule,\r\n\t\tAutoCompleteModule,\r\n\t\tBadgeModule,\r\n\t\tBreadcrumbModule,\r\n\t\tButtonModule,\r\n\t\tCalendarModule,\r\n\t\tCardModule,\r\n\t\tCarouselModule,\r\n\t\tColorPickerModule,\r\n\t\tChartModule,\r\n\t\tCheckboxModule,\r\n\t\tChipsModule,\r\n\t\tConfirmDialogModule,\r\n\t\tContextMenuModule,\r\n\t\tDataViewModule,\r\n\t\tDialogModule,\r\n\t\tDividerModule,\r\n\t\tDragDropModule,\r\n\t\tDropdownModule,\r\n\t\tEditorModule,\r\n\t\tFieldsetModule,\r\n\t\tFileUploadModule,\r\n\t\tGalleriaModule,\r\n\t\tImageModule,\r\n\t\tInputMaskModule,\r\n\t\tInputSwitchModule,\r\n\t\tInputTextModule,\r\n\t\tInputTextareaModule,\r\n\t\tListboxModule,\r\n\t\tMegaMenuModule,\r\n\t\tMenuModule,\r\n\t\tMenubarModule,\r\n\t\tMessagesModule,\r\n\t\tMessageModule,\r\n\t\tMultiSelectModule,\r\n\t\tOrderListModule,\r\n\t\tOrganizationChartModule,\r\n\t\tOverlayPanelModule,\r\n\t\tPaginatorModule,\r\n\t\tPanelModule,\r\n\t\tPanelMenuModule,\r\n\t\tPasswordModule,\r\n\t\tPickListModule,\r\n\t\tProgressBarModule,\r\n\t\tProgressSpinnerModule,\r\n\t\tRadioButtonModule,\r\n\t\tRatingModule,\r\n\t\tScrollPanelModule,\r\n\t\tScrollerModule,\r\n\t\tSelectButtonModule,\r\n\t\tSidebarModule,\r\n\t\tSkeletonModule,\r\n\t\tSlideMenuModule,\r\n\t\tSliderModule,\r\n\t\tSpinnerModule,\r\n\t\tSplitButtonModule,\r\n\t\tStepsModule,\r\n\t\tTableModule,\r\n\t\tTabMenuModule,\r\n\t\tTabViewModule,\r\n\t\tTerminalModule,\r\n\t\tTieredMenuModule,\r\n\t\tTimelineModule,\r\n\t\tToastModule,\r\n\t\tToggleButtonModule,\r\n\t\tToolbarModule,\r\n\t\tTooltipModule,\r\n\t\tTreeModule,\r\n\t\tTreeTableModule\r\n\t],\r\n\texports: [\r\n\t\tAccordionModule,\r\n\t\tAutoCompleteModule,\r\n\t\tBadgeModule,\r\n\t\tBreadcrumbModule,\r\n\t\tButtonModule,\r\n\t\tCalendarModule,\r\n\t\tCardModule,\r\n\t\tCarouselModule,\r\n\t\tColorPickerModule,\r\n\t\tChartModule,\r\n\t\tCheckboxModule,\r\n\t\tChipsModule,\r\n\t\tConfirmDialogModule,\r\n\t\tContextMenuModule,\r\n\t\tDataViewModule,\r\n\t\tDialogModule,\r\n\t\tDividerModule,\r\n\t\tDragDropModule,\r\n\t\tDropdownModule,\r\n\t\tEditorModule,\r\n\t\tFieldsetModule,\r\n\t\tFileUploadModule,\r\n\t\tGalleriaModule,\r\n\t\tImageModule,\r\n\t\tInputMaskModule,\r\n\t\tInputSwitchModule,\r\n\t\tInputTextModule,\r\n\t\tInputTextareaModule,\r\n\t\tListboxModule,\r\n\t\tMegaMenuModule,\r\n\t\tMenuModule,\r\n\t\tMenubarModule,\r\n\t\tMessagesModule,\r\n\t\tMessageModule,\r\n\t\tMultiSelectModule,\r\n\t\tOrderListModule,\r\n\t\tOrganizationChartModule,\r\n\t\tOverlayPanelModule,\r\n\t\tPaginatorModule,\r\n\t\tPanelModule,\r\n\t\tPanelMenuModule,\r\n\t\tPasswordModule,\r\n\t\tPickListModule,\r\n\t\tProgressBarModule,\r\n\t\tProgressSpinnerModule,\r\n\t\tRadioButtonModule,\r\n\t\tRatingModule,\r\n\t\tScrollPanelModule,\r\n\t\tScrollerModule,\r\n\t\tSelectButtonModule,\r\n\t\tSidebarModule,\r\n\t\tSkeletonModule,\r\n\t\tSlideMenuModule,\r\n\t\tSliderModule,\r\n\t\tSpinnerModule,\r\n\t\tSplitButtonModule,\r\n\t\tStepsModule,\r\n\t\tTableModule,\r\n\t\tTabMenuModule,\r\n\t\tTabViewModule,\r\n\t\tTerminalModule,\r\n\t\tTieredMenuModule,\r\n\t\tTimelineModule,\r\n\t\tToastModule,\r\n\t\tToggleButtonModule,\r\n\t\tToolbarModule,\r\n\t\tTooltipModule,\r\n\t\tTreeModule,\r\n\t\tTreeTableModule\r\n\t],\r\n\tproviders: [],\r\n\tdeclarations: []\r\n})\r\n\r\n/**\r\n * A module to be shared accross the application used\r\n * to hold all prime ng modules for import.\r\n *\r\n * @export\r\n * @class PrimeNgModule\r\n */\r\nexport class PrimeNgModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/**\r\n * The types of setting preferences stored in the settings service.\r\n */\r\nexport enum SettingPreferenceType\r\n{\r\n\t/**\r\n\t * The preference for session settings identifying existing data in\r\n\t * chat sessions.\r\n\t */\r\n\tchatDataPreference = 'chatDataPreference',\r\n\r\n\t/**\r\n\t * The preference for session settings identifying pinned\r\n\t * utility drawers.\r\n\t */\r\n\tutilityMenuPinPreference = 'UtilityMenuPinPreference'\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tSettingPreferenceType\r\n} from '@shared/constants/enums/setting-preference-type.enum';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tISettingPreference\r\n} from '@shared/interfaces/settings/setting-preference.interface';\r\n\r\n/**\r\n * A class representing a settings service for both local and\r\n * api valued site and user settings.\r\n *\r\n * @export\r\n * @class SettingsService\r\n * @typeparam TSettingPreference\r\n * The setting preference to be stored and loaded with this service.\r\n */\r\n@Injectable()\r\nexport class SettingsService\r\n{\r\n\t/**\r\n\t * Creates an instance of a settings service.\r\n\t *\r\n\t * @param {StorageMap} storageMap\r\n\t * The local storage map used for the settings cache.\r\n\t * @memberof SettingsService\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly storageMap: StorageMap)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the unique key for this storage service\r\n\t * implementation. This is used to give the local storage\r\n\t * a unique suffix for this settings service instance.\r\n\t *\r\n\t * @type {SettingPreferenceType}\r\n\t * @memberof SettingsService\r\n\t */\r\n\tpublic settingKey: SettingPreferenceType;\r\n\r\n\t/**\r\n\t * Gets or sets the local storage settings object.\r\n\t *\r\n\t * @type {TSettingPreference[]}\r\n\t * @memberof SettingsService\r\n\t */\r\n\tprivate settings: TSettingPreference[] = [];\r\n\r\n\t/**\r\n\t * Gets the identifier used for the session based setting list storage.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SettingsService\r\n\t */\r\n\tprivate readonly localStorageKey: string = 'NautixSettings';\r\n\r\n\t/**\r\n\t * Loads and returns the current settings for this session.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding all current session storage values.\r\n\t * @memberof SettingsService\r\n\t */\r\n\tprivate get storageKey(): string\r\n\t{\r\n\t\treturn `${this.localStorageKey}_${this.settingKey}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads and returns the current settings for this session.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise holding all current session storage values.\r\n\t * @memberof SettingsService\r\n\t */\r\n\tpublic async loadSettings(): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.storageMap.get(this.storageKey)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t(settings: TSettingPreference[]) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.settings =\r\n\t\t\t\t\t\t\t\tAnyHelper.isNull(settings)\r\n\t\t\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t\t\t: settings;\r\n\r\n\t\t\t\t\t\t\tresolve(this.settings);\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the current settings for this session.\r\n\t *\r\n\t * @async\r\n\t * @param {TSettingPreference[]} settings\r\n\t * The current setting values to store.\r\n\t * @memberof SettingsService\r\n\t */\r\n\tpublic async saveSettings(\r\n\t\tsettings: TSettingPreference[]): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve) =>\r\n\t\t\t{\r\n\t\t\t\tthis.settings = settings;\r\n\r\n\t\t\t\tthis.storageMap.set(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tthis.settings)\r\n\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds or updates a current setting for this session.\r\n\t *\r\n\t * @async\r\n\t * @param {TSettingPreference} setting\r\n\t * The current setting value to add or update.\r\n\t * @memberof SettingsService\r\n\t */\r\n\tpublic async addOrUpdateSetting(\r\n\t\tsetting: TSettingPreference): Promise\r\n\t{\r\n\t\tconst filteredSettings: TSettingPreference[] =\r\n\t\t\tthis.settings.filter(\r\n\t\t\t\t(filterSetting: TSettingPreference) =>\r\n\t\t\t\t\tfilterSetting.key !== setting.key);\r\n\t\tfilteredSettings.push(setting);\r\n\r\n\t\treturn this.saveSettings(\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t...filteredSettings\r\n\t\t\t]);\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{{drawerMenuItem.label}}\r\n\t\t\t\r\n\t\t
    \r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tIDrawerMenuItem\r\n} from '@shared/interfaces/application-objects/drawer-menu-item.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-drawer',\r\n\ttemplateUrl: './app-drawer.component.html',\r\n\tstyleUrls: ['./app-drawer.component.scss']\r\n})\r\n\r\n/**\r\n * A component representing an instance of a drawers component.\r\n *\r\n * @export\r\n * @class AppDrawerComponent\r\n */\r\nexport class AppDrawerComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the drawer menu item displayed in this drawer.\r\n\t *\r\n\t * @type {IDrawerMenuItem}\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\t@Input() public drawerMenuItem: IDrawerMenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the page context used for linking drawer displays to\r\n\t * page content.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when a pin drawer button is clicked.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\t@Output() public drawerPinButtonClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when a close drawer button is clicked.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\t@Output() public drawerCloseButtonClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Handles the close drawer click by bubbling this event up to the\r\n\t * containing drawers component.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The menu item that received the close click event.\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\tpublic closeDrawer(): void\r\n\t{\r\n\t\tthis.drawerCloseButtonClicked.emit(\r\n\t\t\tthis.drawerMenuItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the pin drawer click by bubbling this event up to the containing\r\n\t * drawers component.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The menu item that received the pin click event.\r\n\t * @memberof AppDrawerComponent\r\n\t */\r\n\tpublic pinDrawer(): void\r\n\t{\r\n\t\tif (this.drawerMenuItem.pinnable === true)\r\n\t\t{\r\n\t\t\tthis.drawerPinButtonClicked.emit(\r\n\t\t\t\tthis.drawerMenuItem);\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\r\n\t\r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tDrawerAnimation,\r\n\tListDrawerAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tIDrawerMenuItem\r\n} from '@shared/interfaces/application-objects/drawer-menu-item.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-drawers',\r\n\ttemplateUrl: './app-drawers.component.html',\r\n\tstyleUrls: ['./app-drawers.component.scss'],\r\n\tanimations: [\r\n\t\tDrawerAnimation,\r\n\t\tListDrawerAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a drawer displayed in the\r\n * drawers component.\r\n *\r\n * @export\r\n * @class AppDrawersComponent\r\n */\r\nexport class AppDrawersComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the current set of pinned drawer items.\r\n\t *\r\n\t * @type {IDrawerMenuItem}\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\t@Input() public pinnedDrawerItems: IDrawerMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the current overlayed drawer item.\r\n\t *\r\n\t * @type {IDrawerMenuItem}\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\t@Input() public overlayDrawerItem: IDrawerMenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets the page context used for linking drawer displays to\r\n\t * page content.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when a pin drawer button is clicked.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\t@Output() public drawerPinButtonClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when a close drawer button is clicked.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\t@Output() public drawerCloseButtonClicked: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Handles the close drawer click by bubbling this event up to the\r\n\t * containing command component.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The menu item that received the close click event.\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\tpublic closeDrawerClick(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): void\r\n\t{\r\n\t\tthis.drawerCloseButtonClicked.emit(\r\n\t\t\tdrawerMenuItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the pin drawer click by bubbling this event up to the containing\r\n\t * command component.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The menu item that received the pin click event.\r\n\t * @memberof AppDrawersComponent\r\n\t */\r\n\tpublic pinDrawerClick(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): void\r\n\t{\r\n\t\tthis.drawerPinButtonClicked.emit(\r\n\t\t\tdrawerMenuItem);\r\n\t}\r\n}","
    \r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t
    \r\n\r\n\t\r\n\t\r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tBaseOperationGroupDirective\r\n} from '@operation/directives/base-operation-group.directive';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tDrawerAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSettingPreferenceType\r\n} from '@shared/constants/enums/setting-preference-type.enum';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tActivityListComponent\r\n} from '@shared/dynamic-components/activity-list/activity-list.component';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDrawerMenuItem\r\n} from '@shared/interfaces/application-objects/drawer-menu-item.interface';\r\nimport {\r\n\tIChatService\r\n} from '@shared/interfaces/services/chat-service';\r\nimport {\r\n\tIUtilityMenuPinPreference\r\n} from '@shared/interfaces/settings/utility-menu-pin-preference.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSettingsService\r\n} from '@shared/services/settings.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-utility-menu',\r\n\ttemplateUrl: './app-utility-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./app-utility-menu.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tDrawerAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of a utility\r\n * menu component. This component represents global and\r\n * content context specific navigation and actions.\r\n *\r\n * @export\r\n * @extends {BaseOperationGroupDirective}\r\n * @implements {OnDestroy}\r\n * @class AppUtilityMenuComponent\r\n */\r\nexport class AppUtilityMenuComponent\r\n\textends BaseOperationGroupDirective\r\n\timplements OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of a AppUtilityMenuComponent.\r\n\t *\r\n\t * @param {LoggerService} loggerService\r\n\t * The logger service to use for client and server side logging.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service to use when loading operation group data.\r\n\t * @param {OperationExecutionService} operationExecutionService\r\n\t * The operation execution service to use when performing operation\r\n\t * commands.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service to use for session based data.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver to use for string based lookups.\r\n\t * @param {SettingsService} settingsService\r\n\t * The settings service used to load and save pinned utility menu\r\n\t * preferences.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic loggerService: LoggerService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic settingsService: SettingsService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tloggerService,\r\n\t\t\toperationService,\r\n\t\t\toperationExecutionService,\r\n\t\t\tsiteLayoutService);\r\n\r\n\t\tsettingsService.settingKey =\r\n\t\t\tSettingPreferenceType.utilityMenuPinPreference;\r\n\r\n\t\tthis.globalUtilities =\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tdynamicComponent: ActivityListComponent,\r\n\t\t\t\t\ticon:\r\n\t\t\t\t\t\tAppConstants.cssClasses.fontAwesomeFullWidth\r\n\t\t\t\t\t\t\t+ AppConstants.cssClasses\r\n\t\t\t\t\t\t\t\t.fontAwesomeBell,\r\n\t\t\t\t\tlabel: 'Activities'\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tif (this.sessionService.systemSettings\r\n\t\t\t.knowledgeBase\r\n\t\t\t.enabled === true)\r\n\t\t{\r\n\t\t\tthis.globalUtilities.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\ticon:\r\n\t\t\t\t\t\tAppConstants.cssClasses.fontAwesomeFullWidth\r\n\t\t\t\t\t\t\t+ AppConstants.cssClasses\r\n\t\t\t\t\t\t\t\t.fontAwesomeQuestion,\r\n\t\t\t\t\tlabel: 'Help',\r\n\t\t\t\t\tdynamicComponent:\r\n\t\t\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t\t\t.knowledgeBase\r\n\t\t\t\t\t\t\t.componentName\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.sessionService.systemSettings\r\n\t\t\t.chat\r\n\t\t\t.enabled === true)\r\n\t\t{\r\n\t\t\tconst chatService: IChatService =\r\n\t\t\t\tthis.resolver.resolveShared(\r\n\t\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t\t.chat\r\n\t\t\t\t\t\t.modalService);\r\n\r\n\t\t\tchatService.initializeChat()\r\n\t\t\t\t.then(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.globalUtilities.push(\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ticon:\r\n\t\t\t\t\t\t\t\t\tAppConstants.cssClasses.fontAwesomeFullWidth\r\n\t\t\t\t\t\t\t\t\t\t+ AppConstants.cssClasses\r\n\t\t\t\t\t\t\t\t\t\t\t.fontAwesomeComments,\r\n\t\t\t\t\t\t\t\tlabel: 'Chat',\r\n\t\t\t\t\t\t\t\tdynamicComponent:\r\n\t\t\t\t\t\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t\t\t\t\t\t.chat\r\n\t\t\t\t\t\t\t\t\t\t.componentName\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.handlePinPreferences();\r\n\t\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.displayName = 'context utilities';\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the maximum number of pinnable drawers.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic static readonly maximumPinnableDrawerCount: number = 5;\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when a drawer is displayed or removed as a pinned item consuming layout.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@Output() public pinnedDrawerCountChange: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the chat in progress value. This value is used\r\n\t * to toggle open or close behaviors.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic messengerOpened: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the walkthrough in progress value. This value is used\r\n\t * to override click outside for overlaid drawers while in a walkthrough.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic walkthroughInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the set of drawer menu items displayed in the global\r\n\t * utility menu list.\r\n\t *\r\n\t * @type {IDrawerMenuItem[]}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic globalUtilities: IDrawerMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the set of drawer menu items displayed in the context\r\n\t * utility menu list.\r\n\t *\r\n\t * @type {IDrawerMenuItem[]}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic contextUtilities: IDrawerMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the number of utilities loaded from the api to display\r\n\t * in this utility menu.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic apiUtilityCount: number;\r\n\r\n\t/**\r\n\t * Gets or sets the drawer items that are currently pinned.\r\n\t *\r\n\t * @type {IDrawerMenuItem[]}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic pinnedDrawerItems: IDrawerMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the drawer item that is currently overlayed.\r\n\t *\r\n\t * @type {IDrawerMenuItem}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic overlayDrawerItem: IDrawerMenuItem;\r\n\r\n\t/**\r\n\t * Gets or sets an active drawer component that will display on page load.\r\n\t *\r\n\t * @type {string | Component}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic activeDrawerComponent: string | Component;\r\n\r\n\t/**\r\n\t * Gets or sets a partial description of the active drawer component item.\r\n\t * This value is used to set an item as active after setting a drawer\r\n\t * component as active on page load.\r\n\t * @note This value can be sent as a span with the class visually-hidden\r\n\t * to ensure that you can find the specific item based on unique values.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic activeDrawerItemDescription: string;\r\n\r\n\t/**\r\n\t * Gets the identifier for this component. This is used as a\r\n\t * target component to handle add drawer actions.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tprivate readonly componentName: string = 'UtilityMenuComponent';\r\n\r\n\t/**\r\n\t * Handles the add drawer event.\r\n\t * This will add a drawer menu item to this utility menu\r\n\t * if the target component is a match for our component\r\n\t * identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component that will be displayed as drawer\r\n\t * content.\r\n\t * @param {string} targetComponent\r\n\t * The identifier of the drawer command component to add this drawer to.\r\n\t * @param {string} label\r\n\t * The drawer header as well as the label displayed on hover.\r\n\t * @param {string} icon\r\n\t * The fontAwesome icon to display in the drawer and the utility menu for\r\n\t * this drawer item. Note: Only the icon identifier is required,\r\n\t * ie 'edit-o' as these are decorated into the standard of\r\n\t * 'fa fa-fw fa-{icon}'.\r\n\t * @param {number} order\r\n\t * The order to display this drawer.\r\n\t * @param {boolean} startOpen\r\n\t * The value that will define if this drawer should immediately be\r\n\t * overlaid on add.\r\n\t * @param {boolean} disabled\r\n\t * The value that will define if this drawer should be displayed but\r\n\t * disabled.\r\n\t * @param {string} disabledMessage\r\n\t * If sent, this value will be added to the utility menu tooltip to\r\n\t * define why this is disabled.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.addDrawerEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent,\r\n\t\t\tAppEventParameterConstants.targetComponent,\r\n\t\t\tAppEventParameterConstants.label,\r\n\t\t\tAppEventParameterConstants.icon,\r\n\t\t\tAppEventParameterConstants.order,\r\n\t\t\tAppEventParameterConstants.startOpen,\r\n\t\t\tAppEventParameterConstants.disabled,\r\n\t\t\tAppEventParameterConstants.disabledMessage,\r\n\t\t\tAppEventParameterConstants.displayDrawerOverlay,\r\n\t\t\tAppEventParameterConstants.overlayClassName\r\n\t\t])\r\n\tpublic async addDrawer(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string,\r\n\t\tlabel: string,\r\n\t\ticon: string,\r\n\t\torder: number,\r\n\t\tstartOpen: boolean,\r\n\t\tdisabled: boolean,\r\n\t\tdisabledMessage: string,\r\n\t\tdisplayDrawerOverlay: boolean = false,\r\n\t\toverlayClassName: string = null): Promise\r\n\t{\r\n\t\tif (targetComponent === this.componentName)\r\n\t\t{\r\n\t\t\tconst drawerItem: IDrawerMenuItem =\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tdynamicComponent: contentComponent,\r\n\t\t\t\t\tactive: contentComponent === this.activeDrawerComponent,\r\n\t\t\t\t\tlabel: StringHelper.beforeCapitalSpaces(label),\r\n\t\t\t\t\ticon: 'fa fa-fw fa-' + icon,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\tdisabled: disabled,\r\n\t\t\t\t\ttooltipOptions: {\r\n\t\t\t\t\t\ttooltipLabel: disabledMessage\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpinned: false,\r\n\t\t\t\t\tpinnable: this.isPinnable(),\r\n\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\torder: order\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdisplayDrawerOverlay: displayDrawerOverlay,\r\n\t\t\t\t\toverlayClassName: overlayClassName\r\n\t\t\t\t};\r\n\r\n\t\t\tif (startOpen === true\r\n\t\t\t\t&& disabled === false\r\n\t\t\t\t&& AnyHelper.isNullOrEmpty(this.activeDrawerComponent))\r\n\t\t\t{\r\n\t\t\t\tthis.activeDrawerComponent = contentComponent;\r\n\t\t\t}\r\n\r\n\t\t\tthis.contextUtilities.push(\r\n\t\t\t\tdrawerItem);\r\n\t\t\tthis.contextUtilities.sort(\r\n\t\t\t\t(firstMenuItem: MenuItem, secondMenuItem: MenuItem) =>\r\n\t\t\t\t\tfirstMenuItem.queryParams.order -\r\n\t\t\t\t\t\tsecondMenuItem.queryParams.order);\r\n\r\n\t\t\tif (this.apiUtilityCount === this.contextUtilities.length)\r\n\t\t\t{\r\n\t\t\t\tthis.handlePinPreferences();\r\n\t\t\t\tthis.handleActiveDrawer();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the set badge promise event.\r\n\t * This will add a promise from a string or a method to the drawer item\r\n\t * and set this value.\r\n\t *\r\n\t * @async\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to be targetted for the badge promise.\r\n\t * @param {string} targetComponent\r\n\t * The identifier for the content component container.\r\n\t * @param {string} badgePromise\r\n\t * The promise as a string which will return a populated badge item.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.setBadgePromiseEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent,\r\n\t\t\tAppEventParameterConstants.targetComponent,\r\n\t\t\tAppEventParameterConstants.badgePromise\r\n\t\t])\r\n\tpublic async setBadgePromise(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string,\r\n\t\tbadgePromise: string): Promise\r\n\t{\r\n\t\tif (targetComponent === this.componentName)\r\n\t\t{\r\n\t\t\tconst matchingDrawerItem: IDrawerMenuItem =\r\n\t\t\t\tthis.getMatchingDrawerItem(contentComponent);\r\n\r\n\t\t\tif (matchingDrawerItem == null)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmatchingDrawerItem.state = matchingDrawerItem.state || {};\r\n\t\t\tmatchingDrawerItem.state.rawBadgePromise = badgePromise;\r\n\r\n\t\t\tmatchingDrawerItem.state.badgeItem =\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tmatchingDrawerItem.state.rawBadgePromise,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the refresh badge promise event.\r\n\t * This will call the existing badge promise for the matching drawer.\r\n\t *\r\n\t * @async\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to be targetted for the badge promise refresh.\r\n\t * @param {string} targetComponent\r\n\t * The identifier for the content component container.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.refreshBadgePromiseEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent,\r\n\t\t\tAppEventParameterConstants.targetComponent\r\n\t\t])\r\n\tpublic async refreshBadgePromise(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string): Promise\r\n\t{\r\n\t\tif (targetComponent === this.componentName)\r\n\t\t{\r\n\t\t\tconst matchingDrawerItem: IDrawerMenuItem =\r\n\t\t\t\tthis.getMatchingDrawerItem(contentComponent);\r\n\r\n\t\t\tif (AnyHelper.isNull(matchingDrawerItem?.state?.rawBadgePromise))\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmatchingDrawerItem.state.badgeItem =\r\n\t\t\t\tawait StringHelper.transformToDataPromise(\r\n\t\t\t\t\tStringHelper.interpolate(\r\n\t\t\t\t\t\tmatchingDrawerItem.state.rawBadgePromise,\r\n\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\tthis.pageContext);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the refresh component event.\r\n\t * This will refresh the drawer matching the content component if this\r\n\t * utility menu is the target component.\r\n\t *\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to be targetted for a view refresh.\r\n\t * @param {string} targetComponent\r\n\t * The identifier for the content component container.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.refreshComponentEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.contentComponent,\r\n\t\t\tAppEventParameterConstants.targetComponent\r\n\t\t])\r\n\tpublic refreshDrawer(\r\n\t\tcontentComponent: Component | string,\r\n\t\ttargetComponent: string): void\r\n\t{\r\n\t\tif (targetComponent === this.componentName)\r\n\t\t{\r\n\t\t\tthis.refreshBadgePromise(\r\n\t\t\t\tcontentComponent,\r\n\t\t\t\ttargetComponent);\r\n\r\n\t\t\tconst matchingDrawerItem: IDrawerMenuItem =\r\n\t\t\t\tthis.getMatchingDrawerItem(contentComponent);\r\n\r\n\t\t\tif (matchingDrawerItem == null)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (matchingDrawerItem.pinned === false\r\n\t\t\t\t&& this.overlayDrawerItem !== matchingDrawerItem)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dynamicComponent: string | Component =\r\n\t\t\t\tmatchingDrawerItem.dynamicComponent;\r\n\r\n\t\t\tmatchingDrawerItem.dynamicComponent = null;\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tmatchingDrawerItem.dynamicComponent = dynamicComponent;\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the set utility menu event. This will set the\r\n\t * utility menu operation group name to display and, if sent, this will\r\n\t * also set a drawer component and item in that drawer as active.\r\n\t *\r\n\t * @param {string} utilityMenuGroup\r\n\t * The utility menu to display in this application.\r\n\t * @param {string | Component} activeDrawerComponent\r\n\t * If sent, this will be the drawer component to set as active.\r\n\t * @param {string} activeDrawerItemDescription\r\n\t * If sent, this will be the unique description found in a drawer item list\r\n\t * to select an item as active.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.setUtilityMenuEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.utilityMenuOperationGroupName,\r\n\t\t\tAppEventParameterConstants.activeDrawerComponent,\r\n\t\t\tAppEventParameterConstants.activeDrawerItemDescription\r\n\t\t])\r\n\tpublic displayUtilityMenu(\r\n\t\tutilityMenuGroup: string,\r\n\t\tactiveDrawerComponent?: string | Component,\r\n\t\tactiveDrawerItemDescription?: string): void\r\n\t{\r\n\t\tthis.activeDrawerComponent = activeDrawerComponent;\r\n\t\tthis.activeDrawerItemDescription = activeDrawerItemDescription;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.operationGroupName = utilityMenuGroup;\r\n\r\n\t\t\t\tthis.pinnedDrawerItems =\r\n\t\t\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t\t\t(drawerMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\t\t!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\tthis.globalUtilities.find(\r\n\t\t\t\t\t\t\t\t\t(globalMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\t\t\t\t\tglobalMenuItem.label ===\r\n\t\t\t\t\t\t\t\t\t\t\tdrawerMenuItem.label)));\r\n\r\n\t\t\t\tthis.overlayDrawerItem = null;\r\n\r\n\t\t\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\t\t\tthis.pinnedDrawerItems.length);\r\n\r\n\t\t\t\tthis.ngOnInit();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.closeOverlay(true);\r\n\r\n\t\tif (this.pinnedDrawerItems.length > 0\r\n\t\t\t&& this.siteLayoutService.breakpointWidth\r\n\t\t\t\t+ AppConstants.staticLayoutSizes.drawerWidth\r\n\t\t\t\t\t< AppConstants.layoutBreakpoints.pinnableDrawerWidth)\r\n\t\t{\r\n\t\t\tconst numberOfDrawersToRemove: number =\r\n\t\t\t\tMath.floor((AppConstants.layoutBreakpoints.pinnableDrawerWidth\r\n\t\t\t\t\t- this.siteLayoutService.contentWidth)\r\n\t\t\t\t\t\t/ AppConstants.staticLayoutSizes.drawerWidth);\r\n\r\n\t\t\tif (numberOfDrawersToRemove > 0\r\n\t\t\t\t&& this.pinnedDrawerItems.length > 0)\r\n\t\t\t{\r\n\t\t\t\tconst drawerToRemove: IDrawerMenuItem =\r\n\t\t\t\t\tthis.pinnedDrawerItems[0];\r\n\r\n\t\t\t\tdrawerToRemove.active = false;\r\n\t\t\t\tdrawerToRemove.pinned = false;\r\n\t\t\t\tdrawerToRemove.pinnable = false;\r\n\r\n\t\t\t\tconst currentPinnedItems: number =\r\n\t\t\t\t\tthis.pinnedDrawerItems.length;\r\n\r\n\t\t\t\tthis.pinnedDrawerItems =\r\n\t\t\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t\t\t(drawerMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\t\tdrawerMenuItem !== drawerToRemove);\r\n\r\n\t\t\t\tif (currentPinnedItems !==\r\n\t\t\t\t\tthis.pinnedDrawerItems.length)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\t\t\t\tthis.pinnedDrawerItems.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (numberOfDrawersToRemove > 1)\r\n\t\t\t{\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.siteLayoutChanged();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tthis.siteLayoutService.debounceDelay);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.handlePinPreferences();\r\n\t\tthis.handleActiveDrawer();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click outside event sent when clicking outside of\r\n\t * the utility menu or associated drawers component. Also handles the\r\n\t * hide associated menus event. This is used to close overlays when\r\n\t * an associated menu is opened, such as a sibling context menu.\r\n\t * This will close any existing overlays matching overlay business rules.\r\n\t *\r\n\t * @param {string} controlIdentifer\r\n\t * The identifier of the control sending this event.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic clickOutside(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrEmpty(this.overlayDrawerItem)\r\n\t\t\t&& controlIdentifer !== 'ellipsis-menu'\r\n\t\t\t&& this.walkthroughInProgress === false)\r\n\t\t{\r\n\t\t\tthis.closeOverlay(true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the walkthrough start event. This will ensure that we do\r\n\t * not enforce click outside events while in a walkthrough.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.alterUtilityTitleEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.utilityId,\r\n\t\t\tAppEventParameterConstants.title\r\n\t\t])\r\n\tpublic AlterUtilityTitle(\r\n\t\tutilityId: string,\r\n\t\ttitle: string): void\r\n\t{\r\n\t\tconst matchingDrawerItem: IDrawerMenuItem =\r\n\t\t\tthis.globalUtilities.find(\r\n\t\t\t\t(globalMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\tglobalMenuItem.id === utilityId);\r\n\r\n\t\tmatchingDrawerItem.label = title;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the walkthrough start event. This will ensure that we do\r\n\t * not enforce click outside events while in a walkthrough.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.walkthroughStartEvent)\r\n\tpublic async walkthroughStart(): Promise\r\n\t{\r\n\t\tthis.walkthroughInProgress = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the walkthrough end event. This will ensure that we do\r\n\t * not enforce click outside events while in a walkthrough.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.walkthroughEndEvent)\r\n\tpublic async walkthroughEnd(): Promise\r\n\t{\r\n\t\tthis.walkthroughInProgress = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This is called only during logout and will refresh the singleton\r\n\t * layout service pinned count for the next login session.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.pinnedDrawerItems = [];\r\n\t\tthis.overlayDrawerItem = null;\r\n\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\tthis.pinnedDrawerItems.length);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the perform post operation load actions operation group\r\n\t * component post load lifecycle event.\r\n\t * This will call the associated utility operation group commands\r\n\t * after load. With AddDrawer operations defined this will add\r\n\t * each drawer to it's associated command target component. A\r\n\t * layout watcher will also ensure we close overlays on window\r\n\t * width changes.\r\n\t *\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic performPostOperationLoadActions(): void\r\n\t{\r\n\t\tthis.contextUtilities = [];\r\n\t\tthis.apiUtilityCount = this.model.length;\r\n\r\n\t\t// Handle global utility preferences.\r\n\t\tthis.handlePinPreferences();\r\n\r\n\t\tthis.model.forEach(\r\n\t\t\t(menuItem: MenuItem) =>\r\n\t\t\t{\r\n\t\t\t\tif (menuItem.visible === false)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmenuItem.command({});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This method will remove the auto focus click event attached to\r\n\t * primeNg tooltips.\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t * The click event to be captured and halted.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic preventDefault(\r\n\t\tevent: MouseEvent): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopImmediatePropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pin preferences on events such as load and layout changed.\r\n\t * This will ensure that the currently displayed pin set reflects\r\n\t * preferences stored in the setting service.\r\n\t *\r\n\t * @async\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic async handlePinPreferences(): Promise\r\n\t{\r\n\t\tif (!this.isPinnable())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst pinnedPreferences: IUtilityMenuPinPreference[] =\r\n\t\t\tawait this.settingsService.loadSettings();\r\n\r\n\t\t// Pin matching utilities in the longest pinned order.\r\n\t\tfor (const pinPreference of\r\n\t\t\tpinnedPreferences.filter(\r\n\t\t\t\t(preference: IUtilityMenuPinPreference) =>\r\n\t\t\t\t\tpreference.pinned === true))\r\n\t\t{\r\n\t\t\tconst matchingDrawerItems: IDrawerMenuItem[] =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.globalUtilities,\r\n\t\t\t\t\t...this.contextUtilities\r\n\t\t\t\t].filter(\r\n\t\t\t\t\t(drawerMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\tdrawerMenuItem.label === pinPreference.key);\r\n\r\n\t\t\tconst pinnedItems: IDrawerMenuItem[] =\r\n\t\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t\t(drawerMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\tdrawerMenuItem.label === pinPreference.key);\r\n\r\n\t\t\tif (matchingDrawerItems.length > 0\r\n\t\t\t\t&& pinnedItems.length === 0)\r\n\t\t\t{\r\n\t\t\t\tthis.handlePinPreference(\r\n\t\t\t\t\tmatchingDrawerItems[0]);\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.isPinnable())\r\n\t\t\t{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click event sent when clicking the global or\r\n\t * context level utility menu items.\r\n\t * This will hide or display the existing drawer matching business rules.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The drawer menu item that received the item click event.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic utilityMenuItemClick(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): void\r\n\t{\r\n\t\tif (drawerMenuItem.disabled === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle command based menu items.\r\n\t\tif (AnyHelper.isNull(drawerMenuItem.command) === false)\r\n\t\t{\r\n\t\t\tdrawerMenuItem.command(null);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdrawerMenuItem.active = !drawerMenuItem.active;\r\n\r\n\t\tif (drawerMenuItem.active === true)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrEmpty(this.overlayDrawerItem))\r\n\t\t\t{\r\n\t\t\t\tthis.overlayDrawerItem.active = false;\r\n\t\t\t}\r\n\r\n\t\t\tdrawerMenuItem.pinned = false;\r\n\t\t\tdrawerMenuItem.pinnable = this.isPinnable();\r\n\t\t\tthis.overlayDrawerItem = drawerMenuItem;\r\n\r\n\t\t\tEventHelper.dispatchDrawerOverlayEvent(true);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.closeOverlay(true);\r\n\r\n\t\t\tconst currentPinnedItems: number =\r\n\t\t\t\tthis.pinnedDrawerItems.length;\r\n\r\n\t\t\tthis.pinnedDrawerItems =\r\n\t\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t\t(drawerItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\tdrawerItem !== drawerMenuItem);\r\n\r\n\t\t\tdrawerMenuItem.pinned = false;\r\n\t\t\tthis.storeContextPinSettings(\r\n\t\t\t\tdrawerMenuItem);\r\n\r\n\t\t\tif (currentPinnedItems !==\r\n\t\t\t\tthis.pinnedDrawerItems.length)\r\n\t\t\t{\r\n\t\t\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\t\t\tthis.pinnedDrawerItems.length);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click event sent when the pin action is called on\r\n\t * the sent drawer menu item.\r\n\t * This will pin or unpin the display matching existing business rules\r\n\t * and call to the app component to ensure layouts can change based\r\n\t * on smaller available content widths due to pinned drawers.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The drawer menu item that received the item click event.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic pinDrawerClick(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): void\r\n\t{\r\n\t\tthis.closeOverlay(drawerMenuItem !== this.overlayDrawerItem);\r\n\t\tdrawerMenuItem.pinned = !drawerMenuItem.pinned;\r\n\r\n\t\tconst currentPinnedItems: number =\r\n\t\t\tthis.pinnedDrawerItems.length;\r\n\r\n\t\tif (drawerMenuItem.pinned === true)\r\n\t\t{\r\n\t\t\tthis.pinnedDrawerItems =\r\n\t\t\t\t[\r\n\t\t\t\t\tdrawerMenuItem,\r\n\t\t\t\t\t...this.pinnedDrawerItems\r\n\t\t\t\t];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.pinnedDrawerItems =\r\n\t\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t\t(utilityItem: IDrawerMenuItem) =>\r\n\t\t\t\t\t\tutilityItem !== drawerMenuItem);\r\n\r\n\t\t\tdrawerMenuItem.active = false;\r\n\t\t}\r\n\r\n\t\tthis.storeContextPinSettings(\r\n\t\t\tdrawerMenuItem);\r\n\r\n\t\tif (currentPinnedItems !==\r\n\t\t\tthis.pinnedDrawerItems.length)\r\n\t\t{\r\n\t\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\t\tthis.pinnedDrawerItems.length);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * On pin value changes, this will store those as pin preferences\r\n\t * for this session if the pinned item is in the context utility\r\n\t * set.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The drawer menu item that received a pinned value change.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic storeContextPinSettings(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): void\r\n\t{\r\n\t\tthis.settingsService.addOrUpdateSetting(\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tkey: drawerMenuItem.label,\r\n\t\t\t\tpinned: drawerMenuItem.pinned\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles changes in the pinned drawer counts by emitting this pinned count\r\n\t * to the listening application component.\r\n\t *\r\n\t * @param {number} pinnedDrawerCount\r\n\t * The number of currently pinned drawers.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic pinnedDrawerCountChanged(\r\n\t\tpinnedDrawerCount: number): void\r\n\t{\r\n\t\tconst countChanged: boolean =\r\n\t\t\tthis.siteLayoutService.pinnedDrawerCount !== pinnedDrawerCount;\r\n\r\n\t\tif (countChanged === true)\r\n\t\t{\r\n\t\t\tthis.siteLayoutService.pinnedDrawerCount = pinnedDrawerCount;\r\n\t\t\tthis.pinnedDrawerCountChange.emit(pinnedDrawerCount);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Closes any utility menu drawers that are currently displaying\r\n\t * in overlay mode.\r\n\t *\r\n\t * @param {boolean} setAsInactive\r\n\t * The truthy specifying if this overlay close should also set\r\n\t * the drawer menu item as no longer active.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic closeOverlay(\r\n\t\tsetAsInactive: boolean): void\r\n\t{\r\n\t\tif (setAsInactive === true\r\n\t\t\t&& !AnyHelper.isNullOrEmpty(this.overlayDrawerItem))\r\n\t\t{\r\n\t\t\tthis.overlayDrawerItem.active = false;\r\n\t\t}\r\n\r\n\t\tthis.overlayDrawerItem = null;\r\n\t\tEventHelper.dispatchDrawerOverlayEvent(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a value specifying if this drawer is currently pinnable.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * A boolean signifying whether or not this drawer item is pinnable.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic isPinnable(): boolean\r\n\t{\r\n\t\treturn this.pinnedDrawerItems.length <=\r\n\t\t\tAppUtilityMenuComponent.maximumPinnableDrawerCount\r\n\t\t\t&& this.siteLayoutService.breakpointWidth\r\n\t\t\t\t>= AppConstants.layoutBreakpoints.pinnableDrawerWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the icon class to be displayed for all utilty menu item\r\n\t * icons.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerMenuItem\r\n\t * The menu item that requires icon decoration.\r\n\t * @returns {string}\r\n\t * The class used for utility menu item icons.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tpublic iconClass(\r\n\t\tdrawerMenuItem: IDrawerMenuItem): string\r\n\t{\r\n\t\treturn `utility-icon ${drawerMenuItem.icon}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets and returns a filtered drawer menu item with the matching content\r\n\t * component.\r\n\t *\r\n\t * @param {Component | string} contentComponent\r\n\t * The dynamic component to filter by.\r\n\t * @returns {IDrawerMenuItem}\r\n\t * The matching component displayed in the utility menu that holds this\r\n\t * content component.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tprivate getMatchingDrawerItem(\r\n\t\tcontentComponent: string | Component): IDrawerMenuItem\r\n\t{\r\n\t\treturn [\r\n\t\t\t...this.globalUtilities,\r\n\t\t\t...this.contextUtilities\r\n\t\t].find(\r\n\t\t\t(drawerMenuItem: IDrawerMenuItem) =>\r\n\t\t\t\tdrawerMenuItem.dynamicComponent === contentComponent);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a sent drawer to pin, this will handle logic that will include\r\n\t * preference based drawer pins on page load.\r\n\t *\r\n\t * @param {IDrawerMenuItem} drawerToPin\r\n\t * The drawer to be pinned.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tprivate handlePinPreference(\r\n\t\tdrawerToPin: IDrawerMenuItem): void\r\n\t{\r\n\t\tif (drawerToPin.disabled === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (drawerToPin === this.overlayDrawerItem)\r\n\t\t{\r\n\t\t\tthis.closeOverlay(true);\r\n\t\t}\r\n\r\n\t\tdrawerToPin.active = true;\r\n\t\tdrawerToPin.pinned = true;\r\n\t\tdrawerToPin.pinnable = true;\r\n\r\n\t\tthis.pinnedDrawerItems =\r\n\t\t\t[\r\n\t\t\t\tdrawerToPin,\r\n\t\t\t\t...this.pinnedDrawerItems\r\n\t\t\t];\r\n\r\n\t\tthis.pinnedDrawerCountChanged(\r\n\t\t\tthis.pinnedDrawerItems.length);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set active drawer component, this will handle logic that will\r\n\t * set that drawer as active in overlay mode or pinned if available.\r\n\t *\r\n\t * @param {number} retryCount\r\n\t * The number of retries to attempt displaying this active drawer. This is\r\n\t * used to handle differences in drawer load times.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tprivate handleActiveDrawer(\r\n\t\tretryCount: number = 0): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.activeDrawerComponent)\r\n\t\t\t|| retryCount >= 10)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst activeDrawer: IDrawerMenuItem =\r\n\t\t\tthis.getMatchingDrawerItem(this.activeDrawerComponent);\r\n\r\n\t\tif (AnyHelper.isNull(activeDrawer))\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.handleActiveDrawer(\r\n\t\t\t\t\t\tretryCount + 1);\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.oneSecond);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst isOverlaid: boolean =\r\n\t\t\t!AnyHelper.isNull(this.overlayDrawerItem)\r\n\t\t\t\t&& this.overlayDrawerItem.dynamicComponent ===\r\n\t\t\t\t\tthis.activeDrawerComponent;\r\n\t\tconst isPinned: boolean =\r\n\t\t\tthis.pinnedDrawerItems.filter(\r\n\t\t\t\t(pinnedItem: IDrawerMenuItem) =>\r\n\t\t\t\t\tpinnedItem.dynamicComponent ===\r\n\t\t\t\t\t\tthis.activeDrawerComponent).length > 0;\r\n\r\n\t\tif (this.isPinnable()\r\n\t\t\t&& isPinned === false)\r\n\t\t{\r\n\t\t\tif (isOverlaid === true)\r\n\t\t\t{\r\n\t\t\t\tthis.closeOverlay(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.pinDrawerClick(activeDrawer);\r\n\t\t}\r\n\t\telse if (isPinned === false\r\n\t\t\t&& isOverlaid === false)\r\n\t\t{\r\n\t\t\tthis.utilityMenuItemClick(activeDrawer);\r\n\t\t}\r\n\r\n\t\tthis.setActiveDrawerItem();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.activeDrawerComponent = null;\r\n\t\t\t},\r\n\t\t\tAppConstants.time.fiveSeconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set active drawer component item, this will handle logic that\r\n\t * will set that drawer item as selected.\r\n\t *\r\n\t * @param {number} retryCount\r\n\t * The number of retries to attempt displaying this active drawer item. This\r\n\t * is used to handle differences in drawer load times.\r\n\t * @memberof AppUtilityMenuComponent\r\n\t */\r\n\tprivate setActiveDrawerItem(\r\n\t\tretryCount: number = 0): void\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.activeDrawerItemDescription)\r\n\t\t\t|| retryCount >= 5)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet listElement: Element = null;\r\n\r\n\t\tdocument.querySelectorAll(\r\n\t\t\t`.${AppConstants.cssClasses.lineOne}`)\r\n\t\t\t.forEach(\r\n\t\t\t\t(element: Element) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (element.textContent\r\n\t\t\t\t\t\t.includes(this.activeDrawerItemDescription))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlistElement = element.parentElement.parentElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tif (AnyHelper.isNull(listElement))\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setActiveDrawerItem(\r\n\t\t\t\t\t\tretryCount + 1);\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.oneSecond);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!listElement.classList.contains(\r\n\t\t\tAppConstants.cssClasses.selected))\r\n\t\t{\r\n\t\t\tlistElement.dispatchEvent(\r\n\t\t\t\tnew Event(WindowEventConstants.click));\r\n\t\t\tthis.activeDrawerItemDescription = null;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tInjectable,\r\n\tOnDestroy\r\n} from '@angular/core';\r\nimport {\r\n\tAppUtilityMenuComponent\r\n} from '@appComponents/app-utility-menu/app-utility-menu.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIChatService\r\n} from '@shared/interfaces/services/chat-service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tinterval,\r\n\tSubject,\r\n\tSubscription,\r\n\ttakeUntil\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A singleton service representing the ability to interact with the Genesys\r\n * chat system.\r\n *\r\n * @export\r\n * @class GenesysChatService\r\n * @implements {IChatService}\r\n * @implements {OnDestroy}\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class GenesysChatService\r\nimplements IChatService, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of Genesys chat service.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used to interact with the session.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets a boolean signifying whether the chat is opened.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic chatOpened: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the Genesys deployment id.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic deploymentId: string;\r\n\r\n\t/**\r\n\t * Gets or sets the Genesys environment.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic environment: string;\r\n\r\n\t/**\r\n\t * Gets or sets the subject observable for installations.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic installSubject: Subject =\r\n\t\tnew Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the subscription for installations.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic installSubscription: Subscription =\r\n\t\tnew Subscription();\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic service that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets the id for the Genesys messenger element.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate readonly messengerElementId: string =\r\n\t\t'#genesys-messenger';\r\n\r\n\t/**\r\n\t * Gets the name for the Genesys messenger custom attributes data location.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate readonly customAttributesDataName: string =\r\n\t\t'messaging.customAttributes';\r\n\r\n\t/**\r\n\t * Gets the Genesys commands that can be executed.\r\n\t *\r\n\t * @type {{\r\n\t *\tcommand: string;\r\n\t *\tsubscribe: string;\r\n\t * }}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate readonly genesysCommands: {\r\n\t\tcommand: string;\r\n\t\tsubscribe: string;\r\n\t} = {\r\n\t\t\tcommand: 'command',\r\n\t\t\tsubscribe: 'subscribe'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the Genesys events that can be listened or ran to.\r\n\t *\r\n\t * @type {{\r\n\t *\tcobrowseReady: string;\r\n\t *\tcobrowseSessionStarted: string;\r\n\t *\tcobrowseSessionEnded: string;\r\n\t *\tconversationClosed: string;\r\n\t *\tconversationOpened: string;\r\n\t *\tconversationStarted: string;\r\n\t *\tgetData: string;\r\n\t *\thideLauncher: string;\r\n\t *\tlauncherReady: string;\r\n\t *\tmessengerClear: string;\r\n\t *\tmessengerCleared: string;\r\n\t *\tmessengerClose: string;\r\n\t *\tmessengerClosed: string;\r\n\t *\tmessengerOpen: string;\r\n\t *\tmessengerOpened: string;\r\n\t *\tmessengerReady: string;\r\n\t *\tremoveData: string;\r\n\t *\tsetData: string;\r\n\t *\tupdateData: string;\r\n\t * }}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate readonly genesysEvents: {\r\n\t\tcobrowseReady: string;\r\n\t\tcobrowseSessionStarted: string;\r\n\t\tcobrowseSessionEnded: string;\r\n\t\tconversationClosed: string;\r\n\t\tconversationOpened: string;\r\n\t\tconversationStarted: string;\r\n\t\tgetData: string;\r\n\t\thideLauncher: string;\r\n\t\tlauncherReady: string;\r\n\t\tmessengerClear: string;\r\n\t\tmessengerCleared: string;\r\n\t\tmessengerClose: string;\r\n\t\tmessengerClosed: string;\r\n\t\tmessengerOpen: string;\r\n\t\tmessengerOpened: string;\r\n\t\tmessengerReady: string;\r\n\t\tremoveData: string;\r\n\t\tsetData: string;\r\n\t\tupdateData: string;\r\n\t} = {\r\n\t\t\tcobrowseReady: 'CobrowseService.ready',\r\n\t\t\tcobrowseSessionStarted: 'CobrowseService.sessionStarted',\r\n\t\t\tcobrowseSessionEnded: 'CobrowseService.sessionEnded',\r\n\t\t\tconversationClosed: 'Conversations.closed',\r\n\t\t\tconversationStarted: 'Conversations.started',\r\n\t\t\tconversationOpened: 'Conversations.opened',\r\n\t\t\tgetData: 'Database.get',\r\n\t\t\thideLauncher: 'Launcher.hide',\r\n\t\t\tlauncherReady: 'Launcher.ready',\r\n\t\t\tmessengerClear: 'Messenger.clear',\r\n\t\t\tmessengerCleared: 'Messenger.cleared',\r\n\t\t\tmessengerClose: 'Messenger.close',\r\n\t\t\tmessengerClosed: 'Messenger.closed',\r\n\t\t\tmessengerOpen: 'Messenger.open',\r\n\t\t\tmessengerOpened: 'Messenger.opened',\r\n\t\t\tmessengerReady: 'Messenger.ready',\r\n\t\t\tremoveData: 'Database.remove',\r\n\t\t\tsetData: 'Database.set',\r\n\t\t\tupdateData: 'Database.update'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the script for genesys.\r\n\t * See: https://developer.genesys.cloud/.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate readonly genesysScript: string =\r\n\t\t`(function (g, e, n, es, ys)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tg['_genesysJs'] = e;\r\n\t\t\t\tg[e] = g[e] || function () {\r\n\t\t\t\t\t(g[e].q = g[e].q || []).push(arguments)\r\n\t\t\t\t};\r\n\t\t\t\tg[e].t = 1 * new Date();\r\n\t\t\t\tg[e].c = es;\r\n\t\t\t\tys = document.createElement('script');\r\n\t\t\t\tys.async = 1;\r\n\t\t\t\tys.src = n;\r\n\t\t\t\tys.charset = 'utf-8';\r\n\t\t\t\tdocument.head.appendChild(ys);\r\n\t\t\t}\r\n\t\t\tcatch (exception)\r\n\t\t\t{\r\n\t\t\t\t// Do nothing, error expected when logging out quickly.\r\n\t\t\t}\r\n\t\t})(window,\r\n\t\t\t'Genesys',\r\n\t\t\t'https://apps.mypurecloud.com/genesys-bootstrap/genesys.min.js',\r\n\t\t\t{\r\n\t\t\t\tdeploymentId: '{{deploymentId}}',\r\n\t\t\t\tenvironment: '{{environment}}'\r\n\t\t\t});`;\r\n\r\n\t/**\r\n\t * Destroys the instance of the Genesys chat service.\r\n\t * Unsubscribes from all subscriptions.\r\n\t * Completes all subjects.\r\n\t *\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.installSubscription.unsubscribe();\r\n\r\n\t\tthis.installSubject.next();\r\n\t\tthis.installSubject.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the chat.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic async initializeChat(): Promise\r\n\t{\r\n\t\tawait this.installChat();\r\n\r\n\t\tawait new Promise(\r\n\t\t\t(resolve: (value?: boolean) => void) =>\r\n\t\t\t{\r\n\t\t\t\twindow.Genesys(\r\n\t\t\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\t\t\tthis.genesysEvents.messengerReady,\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.handleMessengerEvents();\r\n\t\t\t\t\t\tthis.handleConversationEvents();\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the modal chat.\r\n\t *\r\n\t * @param {boolean} messengerCloseEvent\r\n\t * A boolean signifying whether this event came from a messenger\r\n\t * subscription. This value defaults to false.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic openModalChat(\r\n\t\tmessengerCloseEvent: boolean = false): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(window.Genesys))\r\n\t\t{\r\n\t\t\t// Perform no actions, if not initialized.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (messengerCloseEvent === false)\r\n\t\t{\r\n\t\t\tthis.displayChat(\r\n\t\t\t\ttrue);\r\n\t\t}\r\n\r\n\t\tif (this.chatOpened === true\r\n\t\t\t&& messengerCloseEvent === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.command,\r\n\t\t\tthis.genesysEvents.messengerOpen);\r\n\t}\r\n\r\n\t/**\r\n\t * closes the modal chat.\r\n\t *\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic closeModalChat(): void\r\n\t{\r\n\t\tif (AnyHelper.isNull(window.Genesys))\r\n\t\t{\r\n\t\t\t// Perform no actions, if not initialized.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.displayChat(\r\n\t\t\tfalse);\r\n\t}\r\n\r\n\t/**\r\n\t * Closes any current conversations and resets chat.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic async resetChat(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(window.Genesys))\r\n\t\t{\r\n\t\t\t// Perform no actions, if never installed.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait new Promise(\r\n\t\t\t(resolve: (value?: boolean) => void) =>\r\n\t\t\t{\r\n\t\t\t\twindow.Genesys(\r\n\t\t\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\t\t\tthis.genesysEvents.messengerCleared,\r\n\t\t\t\t\tfunction()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.displayChat(\r\n\t\t\t\t\t\t\tfalse);\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}.bind(this));\r\n\r\n\t\t\t\twindow.Genesys(\r\n\t\t\t\t\tthis.genesysCommands.command,\r\n\t\t\t\t\tthis.genesysEvents.messengerClear);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Positions the modal content.\r\n\t *\r\n\t * @param {number} drawerIndex\r\n\t * The drawer index to position the modal content in.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tpublic positionModalContent(\r\n\t\tdrawerIndex: number): void\r\n\t{\r\n\t\tconst drawerPrefix: string =\r\n\t\t\t'drawer-';\r\n\t\tconst drawerSuffix: string =\r\n\t\t\t'-display';\r\n\t\tconst chatElement: HTMLElement =\r\n\t\t\tdocument.querySelector(\r\n\t\t\t\tthis.messengerElementId);\r\n\r\n\t\tif (AnyHelper.isNull(chatElement))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor(let index = 0;\r\n\t\t\tindex < AppUtilityMenuComponent.maximumPinnableDrawerCount;\r\n\t\t\tindex++)\r\n\t\t{\r\n\t\t\tchatElement.classList.remove(\r\n\t\t\t\tdrawerPrefix\r\n\t\t\t\t\t+ StringHelper.numberToWords(\r\n\t\t\t\t\t\tindex.toString())\r\n\t\t\t\t\t+ drawerSuffix);\r\n\t\t}\r\n\r\n\t\tchatElement.classList.add(\r\n\t\t\tdrawerPrefix\r\n\t\t\t\t+ StringHelper.numberToWords(\r\n\t\t\t\t\tdrawerIndex.toString())\r\n\t\t\t\t+ drawerSuffix);\r\n\t}\r\n\r\n\t/**\r\n\t * Installs the chat.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate async installChat(): Promise\r\n\t{\r\n\t\tconst genesys: Function =\r\n\t\t\twindow.Genesys;\r\n\r\n\t\tif (!AnyHelper.isNull(genesys))\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst script: HTMLScriptElement =\r\n\t\t\tdocument.createElement(\r\n\t\t\t\tAppConstants.documentElementTypes.script);\r\n\t\tscript.type = AppConstants.scriptTypes.javascript;\r\n\t\tscript.text =\r\n\t\t\tthis.genesysScript\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t'{{deploymentId}}',\r\n\t\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t\t.chat\r\n\t\t\t\t\t\t.deploymentId)\r\n\t\t\t\t.replace(\r\n\t\t\t\t\t'{{environment}}',\r\n\t\t\t\t\tthis.sessionService.systemSettings\r\n\t\t\t\t\t\t.chat\r\n\t\t\t\t\t\t.environment);\r\n\t\tdocument.head.appendChild(script);\r\n\r\n\t\tawait new Promise(\r\n\t\t\t(resolve: (value?: unknown) => void) =>\r\n\t\t\t{\r\n\t\t\t\tthis.installSubscription =\r\n\t\t\t\t\tinterval(AppConstants.time.fiftyMilliseconds)\r\n\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\ttakeUntil(this.installSubject))\r\n\t\t\t\t\t\t.subscribe(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnext:\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (AnyHelper.isNull(window.Genesys))\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tthis.installSubject.next();\r\n\t\t\t\t\t\t\t\t\t\tthis.installSubject.complete();\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tcomplete:\r\n\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Displays or hides the chat.\r\n\t *\r\n\t * @param {boolean} display\r\n\t * A boolean signifying whether chat should be displayed. This value\r\n\t * defaults to true.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate displayChat(\r\n\t\tdisplay: boolean = true): void\r\n\t{\r\n\t\tconst elementsToAlter: HTMLElement[] =\r\n\t\t\t[\r\n\t\t\t\tdocument.querySelector(\r\n\t\t\t\t\tthis.messengerElementId)\r\n\t\t\t];\r\n\r\n\t\telementsToAlter.forEach(\r\n\t\t\t(element: HTMLElement) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNull(element))\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\telement.classList.remove(\r\n\t\t\t\t\tdisplay === true\r\n\t\t\t\t\t\t? AppConstants.cssClasses.hidden\r\n\t\t\t\t\t\t: AppConstants.cssClasses.visible);\r\n\t\t\t\telement.classList.add(\r\n\t\t\t\t\tdisplay === true\r\n\t\t\t\t\t\t? AppConstants.cssClasses.visible\r\n\t\t\t\t\t\t: AppConstants.cssClasses.hidden);\r\n\t\t\t});\r\n\r\n\t\tEventHelper.dispatchChatModalDisplayedEvent(\r\n\t\t\tdisplay);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the messenger events.\r\n\t *\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate handleMessengerEvents(): void\r\n\t{\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\tthis.genesysEvents.messengerOpened,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.chatOpened = true;\r\n\t\t\t});\r\n\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\tthis.genesysEvents.messengerClosed,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.chatOpened = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the conversation events.\r\n\t *\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate handleConversationEvents(): void\r\n\t{\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\tthis.genesysEvents.conversationOpened,\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\t// Always set non context based chat data.\r\n\t\t\t\tawait this.setData(\r\n\t\t\t\t\tthis.getInitialChatData());\r\n\t\t\t});\r\n\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\tthis.genesysEvents.conversationStarted,\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\t// Clear existing conversation data.\r\n\t\t\t\tawait this.removeData();\r\n\r\n\t\t\t\t// Update decorated chat data on conversation start.\r\n\t\t\t\tawait this.setData(\r\n\t\t\t\t\tawait this.getDecoratedChatData());\r\n\t\t\t});\r\n\r\n\t\twindow.Genesys(\r\n\t\t\tthis.genesysCommands.subscribe,\r\n\t\t\tthis.genesysEvents.conversationClosed,\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\t// Handle closed conversations from clear chat in the Messenger\r\n\t\t\t\t// by re-opening the messenger.\r\n\t\t\t\tthis.openModalChat(\r\n\t\t\t\t\ttrue);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the data for the chat.\r\n\t *\r\n\t * @async\r\n\t * @param {object} data\r\n\t * The data to set.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate async setData(\r\n\t\tdata: object): Promise\r\n\t{\r\n\t\tawait new Promise(\r\n\t\t\t(resolve: (value?: boolean) => void) =>\r\n\t\t\t{\r\n\t\t\t\twindow.Genesys(\r\n\t\t\t\t\tthis.genesysCommands.command,\r\n\t\t\t\t\tthis.genesysEvents.updateData,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmessaging: {\r\n\t\t\t\t\t\t\tcustomAttributes: data\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes data from the chat.\r\n\t *\r\n\t * @async\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate async removeData(): Promise\r\n\t{\r\n\t\tawait new Promise(\r\n\t\t\t(resolve: (value?: any) => void) =>\r\n\t\t\t{\r\n\t\t\t\twindow.Genesys(\r\n\t\t\t\t\tthis.genesysCommands.command,\r\n\t\t\t\t\tthis.genesysEvents.removeData,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: this.customAttributesDataName\r\n\t\t\t\t\t},\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the chat data to map into the message based on initialization of\r\n\t * chat.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The chat data.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate async getDecoratedChatData(): Promise\r\n\t{\r\n\t\tlet chatData: any =\r\n\t\t\tthis.getInitialChatData();\r\n\r\n\t\tchatData.route = window.location.href;\r\n\r\n\t\tif (AnyHelper.isNull(this.context?.source)\r\n\t\t\t|| !(this.context.source instanceof EntityInstanceComponent))\r\n\t\t{\r\n\t\t\treturn chatData;\r\n\t\t}\r\n\r\n\t\tchatData.entityId = this.context.source.entityInstance.id;\r\n\t\tchatData.entityType = this.context.source.entityType.name;\r\n\r\n\t\tif (AnyHelper.isNull(\r\n\t\t\tthis.context.source.entityDefinition.chatDataPromise))\r\n\t\t{\r\n\t\t\treturn chatData;\r\n\t\t}\r\n\r\n\t\tchatData =\r\n\t\t\t{\r\n\t\t\t\t...chatData,\r\n\t\t\t\t...await StringHelper.transformToDataPromise(\r\n\t\t\t\t\tthis.context.source.entityDefinition.chatDataPromise,\r\n\t\t\t\t\tthis.context)\r\n\t\t\t};\r\n\r\n\t\treturn chatData;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the initial chat data.\r\n\t *\r\n\t * @returns {any}\r\n\t * The initial chat data.\r\n\t * @memberof GenesysChatService\r\n\t */\r\n\tprivate getInitialChatData(): any\r\n\t{\r\n\t\tconst defaultChatData: any =\r\n\t\t\t{\r\n\t\t\t\tname:\r\n\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\tthis.sessionService.user.data.firstName,\r\n\t\t\t\t\t\tthis.sessionService.user.data.lastName)\r\n\t\t\t};\r\n\r\n\t\treturn defaultChatData;\r\n\t}\r\n}","\r\n/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\n\r\n/**\r\n * An abstract class representing a base presentation rule validator.\r\n *\r\n * @export\r\n * @abstract\r\n * @class BaseRuleValidator\r\n */\r\nexport abstract class BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * An validator ready for use in a Formly layout.\r\n\t * @memberof BaseRuleValidator\r\n\t */\r\n\tpublic abstract create(): IValidator;\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\temailValidator,\r\n\temailValidatorMessage\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing an email validator.\r\n *\r\n * @export\r\n * @class EmailValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class EmailValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of an email validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof EmailValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: emailValidator,\r\n\t\t\t\tmessage: emailValidatorMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tmaximumLengthValidator,\r\n\tmaximumStringLengthValidationMessage\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a maximum length validator.\r\n *\r\n * @export\r\n * @class MaximumLengthValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class MaximumLengthValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a maximum length validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof MaximumLengthValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: maximumLengthValidator,\r\n\t\t\t\tmessage: maximumStringLengthValidationMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tmaximumNumberValidationMessage,\r\n\tmaximumNumberValidator\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a maximum number validator.\r\n *\r\n * @export\r\n * @class MaximumNumberValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class MaximumNumberValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a maximum number validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof MaximumNumberValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: maximumNumberValidator,\r\n\t\t\t\tmessage: maximumNumberValidationMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tminimumLengthValidator,\r\n\tminimumStringLengthValidationMessage\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a minimum length validator.\r\n *\r\n * @export\r\n * @class export class MinimumLengthValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class MinimumLengthValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a minimum length validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof MinimumLengthValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: minimumLengthValidator,\r\n\t\t\t\tmessage: minimumStringLengthValidationMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tminimumNumberValidationMessage,\r\n\tminimumNumberValidator\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a minimum number validator.\r\n *\r\n * @export\r\n * @class MinimumNumberValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class MinimumNumberValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a minimum number validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof MinimumNumberValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: minimumNumberValidator,\r\n\t\t\t\tmessage: minimumNumberValidationMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tpasswordValidator,\r\n\tpasswordValidatorMessage\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a password validator.\r\n *\r\n * @export\r\n * @class PasswordValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class PasswordValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a password validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof PasswordValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: passwordValidator,\r\n\t\t\t\tmessage: passwordValidatorMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tinvalidFormatValidationMessage,\r\n\tregularExpressionValidator\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a regular expression validator.\r\n *\r\n * @export\r\n * @class RegularExpressionValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class RegularExpressionValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a regular expression validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof RegularExpressionValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: regularExpressionValidator,\r\n\t\t\t\tmessage: invalidFormatValidationMessage\r\n\t\t\t};\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\trequiredValidator\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tIValidator\r\n} from '@shared/interfaces/application-objects/validator.interface';\r\nimport {\r\n\tBaseRuleValidator\r\n} from '@shared/validators/base-rule-validator.validator';\r\n\r\n/**\r\n * A class representing a required validator.\r\n *\r\n * @export\r\n * @class RequiredValidator\r\n * @extends {BaseRuleValidator}\r\n */\r\nexport class RequiredValidator\r\n\textends BaseRuleValidator\r\n{\r\n\t/**\r\n\t * Creates and returns a unique instance of a required validator.\r\n\t *\r\n\t * @returns {IValidator}\r\n\t * A validator ready for use in a Formly layout.\r\n\t * @memberof RequiredValidator\r\n\t */\r\n\tpublic create(): IValidator\r\n\t{\r\n\t\treturn \r\n\t\t\t{\r\n\t\t\t\texpression: requiredValidator,\r\n\t\t\t\tmessage: 'This value is required.'\r\n\t\t\t};\r\n\t}\r\n}","import * as i0 from '@angular/core';\nimport { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, SecurityContext, Directive, Input, Output, NgModule } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, filter, take, switchMap, tap, EMPTY, catchError, throwError, zip, map, from, animationFrameScheduler } from 'rxjs';\nimport * as i2 from '@angular/platform-browser';\n\nconst HIGHLIGHT_OPTIONS = new InjectionToken('HIGHLIGHT_OPTIONS');\n\n/**\n * Enable usage of the library together with \"trusted-types\" HTTP Content-Security-Policy (CSP)\n *\n * Can be added to angular.json -> serve -> options -> headers to try it out in DEV mode\n * \"Content-Security-Policy\": \"trusted-types ngx-highlightjs; require-trusted-types-for 'script'\"\n *\n * Read more...\n * Angular Security: https://angular.io/guide/security#enforcing-trusted-types\n * Trusted Types: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\n */\nlet policy;\nfunction getPolicy() {\n if (!policy) {\n try {\n policy = window?.trustedTypes?.createPolicy('ngx-highlightjs', {\n createHTML: (s) => s,\n });\n }\n catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n return policy;\n}\nfunction trustedHTMLFromStringBypass(html) {\n return getPolicy()?.createHTML(html) || html;\n}\n\n// @dynamic\nclass HighlightLoader {\n constructor(doc, platformId, _options) {\n this.doc = doc;\n this.platformId = platformId;\n this._options = _options;\n // Stream that emits when hljs library is loaded and ready to use\n this._ready = new BehaviorSubject(null);\n this.ready = this._ready.asObservable().pipe(filter((hljs) => !!hljs), take(1));\n if (isPlatformBrowser(platformId)) {\n // Check if hljs is already available\n if (doc.defaultView.hljs) {\n this._ready.next(doc.defaultView.hljs);\n }\n else {\n // Load hljs library\n this._loadLibrary().pipe(switchMap((hljs) => {\n if (this._options && this._options.lineNumbersLoader) {\n // Make hljs available on window object (required for the line numbers library)\n doc.defaultView.hljs = hljs;\n // Load line numbers library\n return this.loadLineNumbers().pipe(tap((plugin) => {\n plugin.activateLineNumbers();\n this._ready.next(hljs);\n }));\n }\n else {\n this._ready.next(hljs);\n return EMPTY;\n }\n }), catchError((e) => {\n console.error('[HLJS] ', e);\n return EMPTY;\n })).subscribe();\n // Load highlighting theme\n if (this._options?.themePath) {\n this.loadTheme(this._options.themePath);\n }\n }\n }\n }\n /**\n * Lazy-Load highlight.js library\n */\n _loadLibrary() {\n if (this._options) {\n if (this._options.fullLibraryLoader && this._options.coreLibraryLoader) {\n return throwError(() => 'The full library and the core library were imported, only one of them should be imported!');\n }\n if (this._options.fullLibraryLoader && this._options.languages) {\n return throwError(() => 'The highlighting languages were imported they are not needed!');\n }\n if (this._options.coreLibraryLoader && !this._options.languages) {\n return throwError(() => 'The highlighting languages were not imported!');\n }\n if (!this._options.coreLibraryLoader && this._options.languages) {\n return throwError(() => 'The core library was not imported!');\n }\n if (this._options.fullLibraryLoader) {\n return this.loadFullLibrary();\n }\n if (this._options.coreLibraryLoader && this._options.languages && Object.keys(this._options.languages).length) {\n return this.loadCoreLibrary().pipe(switchMap((hljs) => this._loadLanguages(hljs)));\n }\n }\n return throwError(() => 'Highlight.js library was not imported!');\n }\n /**\n * Lazy-load highlight.js languages\n */\n _loadLanguages(hljs) {\n const languages = Object.entries(this._options.languages).map(([langName, langLoader]) => importModule(langLoader()).pipe(tap((langFunc) => hljs.registerLanguage(langName, langFunc))));\n return zip(...languages).pipe(map(() => hljs));\n }\n /**\n * Import highlight.js core library\n */\n loadCoreLibrary() {\n return importModule(this._options.coreLibraryLoader());\n }\n /**\n * Import highlight.js library with all languages\n */\n loadFullLibrary() {\n return importModule(this._options.fullLibraryLoader());\n }\n /**\n * Import line numbers library\n */\n loadLineNumbers() {\n return from(this._options.lineNumbersLoader());\n }\n /**\n * Reload theme styles\n */\n setTheme(path) {\n if (isPlatformBrowser(this.platformId)) {\n if (this._themeLinkElement) {\n this._themeLinkElement.href = path;\n }\n else {\n this.loadTheme(path);\n }\n }\n }\n /**\n * Load theme\n */\n loadTheme(path) {\n this._themeLinkElement = this.doc.createElement('link');\n this._themeLinkElement.href = path;\n this._themeLinkElement.type = 'text/css';\n this._themeLinkElement.rel = 'stylesheet';\n this._themeLinkElement.media = 'screen,print';\n this.doc.head.appendChild(this._themeLinkElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightLoader, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: HIGHLIGHT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightLoader, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HIGHLIGHT_OPTIONS]\n }] }]; } });\n/**\n * Map loader response to module object\n */\nconst importModule = (moduleLoader) => {\n return from(moduleLoader).pipe(filter((module) => !!module?.default), map((module) => module.default));\n};\n\nclass HighlightJS {\n // A reference for hljs library\n get hljs() {\n return this._hljs;\n }\n constructor(_loader, options) {\n this._loader = _loader;\n this._hljs = null;\n // Load highlight.js library on init\n _loader.ready.subscribe((hljs) => {\n this._hljs = hljs;\n if (options && options.config) {\n // Set global config if present\n hljs.configure(options.config);\n if (hljs.listLanguages().length < 1) {\n console.error('[HighlightJS]: No languages were registered!');\n }\n }\n });\n }\n /**\n * Core highlighting function. Accepts the code to highlight (string) and a list of options (object)\n * @param code Accepts the code to highlight\n * @param language must be present and specify the language name or alias of the grammar to be used for highlighting\n * @param ignoreIllegals (optional) when set to true it forces highlighting to finish even in case of detecting illegal syntax for the language instead of throwing an exception.\n */\n highlight(code, { language, ignoreIllegals }) {\n return this._loader.ready.pipe(map((hljs) => hljs.highlight(code, { language, ignoreIllegals })));\n }\n /**\n * Highlighting with language detection.\n * @param value Accepts a string with the code to highlight\n * @param languageSubset An optional array of language names and aliases restricting detection to only those languages.\n * The subset can also be set with configure, but the local parameter overrides the option if set.\n */\n highlightAuto(value, languageSubset) {\n return this._loader.ready.pipe(map((hljs) => hljs.highlightAuto(value, languageSubset)));\n }\n /**\n * Applies highlighting to a DOM node containing code.\n * This function is the one to use to apply highlighting dynamically after page load or within initialization code of third-party JavaScript frameworks.\n * The function uses language detection by default but you can specify the language in the class attribute of the DOM node. See the scopes reference for all available language names and scopes.\n * @param element\n */\n highlightElement(element) {\n return this._loader.ready.pipe(map((hljs) => hljs.highlightElement(element)));\n }\n /**\n * Applies highlighting to all elements on a page matching the configured cssSelector. The default cssSelector value is 'pre code',\n * which highlights all code blocks. This can be called before or after the page’s onload event has fired.\n */\n highlightAll() {\n return this._loader.ready.pipe(map((hljs) => hljs.highlightAll()));\n }\n /**\n * @deprecated in version 12\n * Configures global options:\n * @param config HighlightJs configuration argument\n */\n configure(config) {\n return this._loader.ready.pipe(map((hljs) => hljs.configure(config)));\n }\n /**\n * Adds new language to the library under the specified name. Used mostly internally.\n * @param languageName A string with the name of the language being registered\n * @param languageDefinition A function that returns an object which represents the language definition.\n * The function is passed the hljs object to be able to use common regular expressions defined within it.\n */\n registerLanguage(languageName, languageDefinition) {\n return this._loader.ready.pipe(tap((hljs) => hljs.registerLanguage(languageName, languageDefinition)));\n }\n /**\n * Removes a language and its aliases from the library. Used mostly internall\n * @param languageName: a string with the name of the language being removed.\n */\n unregisterLanguage(languageName) {\n return this._loader.ready.pipe(tap((hljs) => hljs.unregisterLanguage(languageName)));\n }\n /**\n * Adds new language alias or aliases to the library for the specified language name defined under languageName key.\n * @param alias: A string or array with the name of alias being registered\n * @param languageName: the language name as specified by registerLanguage.\n */\n registerAliases(alias, { languageName }) {\n return this._loader.ready.pipe(tap((hljs) => hljs.registerAliases(alias, { languageName })));\n }\n /**\n * @return The languages names list.\n */\n listLanguages() {\n return this._loader.ready.pipe(map((hljs) => hljs.listLanguages()));\n }\n /**\n * Looks up a language by name or alias.\n * @param name Language name\n * @return The language object if found, undefined otherwise.\n */\n getLanguage(name) {\n return this._loader.ready.pipe(map((hljs) => hljs.getLanguage(name)));\n }\n /**\n * Enables safe mode. This is the default mode, providing the most reliable experience for production usage.\n */\n safeMode() {\n return this._loader.ready.pipe(map((hljs) => hljs.safeMode()));\n }\n /**\n * Enables debug/development mode.\n */\n debugMode() {\n return this._loader.ready.pipe(map((hljs) => hljs.debugMode()));\n }\n /**\n * Display line numbers\n * @param el Code element\n */\n lineNumbersBlock(el) {\n return this._loader.ready.pipe(filter((hljs) => !!hljs.lineNumbersBlock), tap((hljs) => hljs.lineNumbersBlock(el)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightJS, deps: [{ token: HighlightLoader }, { token: HIGHLIGHT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightJS, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightJS, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: HighlightLoader }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HIGHLIGHT_OPTIONS]\n }] }]; } });\n\nclass Highlight {\n constructor(el, _hljs, _sanitizer, platformId, _options) {\n this._hljs = _hljs;\n this._sanitizer = _sanitizer;\n this.platformId = platformId;\n this._options = _options;\n // Stream that emits when code string is highlighted\n this.highlighted = new EventEmitter();\n this._nativeElement = el.nativeElement;\n }\n ngOnChanges(changes) {\n if (isPlatformBrowser(this.platformId) &&\n changes?.code?.currentValue !== null &&\n changes.code.currentValue !== changes.code.previousValue) {\n if (this.code) {\n this.highlightElement(this.code, this.languages);\n }\n else {\n // If string is empty, set the text content to empty\n this.setTextContent('');\n }\n }\n }\n /**\n * Highlighting with language detection and fix markup.\n * @param code Accepts a string with the code to highlight\n * @param languages An optional array of language names and aliases restricting detection to only those languages.\n * The subset can also be set with configure, but the local parameter overrides the option if set.\n */\n highlightElement(code, languages) {\n // Set code text before highlighting\n this.setTextContent(code);\n this._hljs.highlightAuto(code, languages).subscribe((res) => {\n // Set highlighted code\n this.setInnerHTML(res?.value);\n // Check if user want to show line numbers\n if (this.lineNumbers && this._options && this._options.lineNumbersLoader) {\n this.addLineNumbers();\n }\n // Forward highlight response to the highlighted output\n this.highlighted.emit(res);\n });\n }\n addLineNumbers() {\n // Clean up line numbers observer\n this.destroyLineNumbersObserver();\n animationFrameScheduler.schedule(() => {\n // Add line numbers\n this._hljs.lineNumbersBlock(this._nativeElement).subscribe();\n // If lines count is 1, the line numbers library will not add numbers\n // Observe changes to add 'hljs-line-numbers' class only when line numbers is added to the code element\n this._lineNumbersObs = new MutationObserver(() => {\n if (this._nativeElement.firstElementChild && this._nativeElement.firstElementChild.tagName.toUpperCase() === 'TABLE') {\n this._nativeElement.classList.add('hljs-line-numbers');\n }\n this.destroyLineNumbersObserver();\n });\n this._lineNumbersObs.observe(this._nativeElement, { childList: true });\n });\n }\n destroyLineNumbersObserver() {\n if (this._lineNumbersObs) {\n this._lineNumbersObs.disconnect();\n this._lineNumbersObs = null;\n }\n }\n setTextContent(content) {\n animationFrameScheduler.schedule(() => this._nativeElement.textContent = content);\n }\n setInnerHTML(content) {\n animationFrameScheduler.schedule(() => this._nativeElement.innerHTML = trustedHTMLFromStringBypass(this._sanitizer.sanitize(SecurityContext.HTML, content) || ''));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: Highlight, deps: [{ token: i0.ElementRef }, { token: HighlightJS }, { token: i2.DomSanitizer }, { token: PLATFORM_ID }, { token: HIGHLIGHT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.2\", type: Highlight, isStandalone: true, selector: \"[highlight]\", inputs: { code: [\"highlight\", \"code\"], languages: \"languages\", lineNumbers: \"lineNumbers\" }, outputs: { highlighted: \"highlighted\" }, host: { properties: { \"class.hljs\": \"true\" } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: Highlight, decorators: [{\n type: Directive,\n args: [{\n host: {\n '[class.hljs]': 'true'\n },\n selector: '[highlight]',\n standalone: true\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: HighlightJS }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HIGHLIGHT_OPTIONS]\n }] }]; }, propDecorators: { code: [{\n type: Input,\n args: ['highlight']\n }], languages: [{\n type: Input\n }], lineNumbers: [{\n type: Input\n }], highlighted: [{\n type: Output\n }] } });\n\nclass HighlightModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightModule, imports: [Highlight], exports: [Highlight] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.2\", ngImport: i0, type: HighlightModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [Highlight],\n exports: [Highlight]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HIGHLIGHT_OPTIONS, Highlight, HighlightJS, HighlightLoader, HighlightModule };\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tFormsModule,\r\n\tReactiveFormsModule\r\n} from '@angular/forms';\r\nimport {\r\n\tBrowserAnimationsModule\r\n} from '@angular/platform-browser/animations';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tApiModule\r\n} from '@api/api.module';\r\nimport {\r\n\tAppContextMenuComponent\r\n} from '@appComponents/app-context-menu/app-context-menu.component';\r\nimport {\r\n\tSlideMenuComponent\r\n} from '@appComponents/app-context-menu/slide-menu/slide-menu.component';\r\nimport {\r\n\tLoginMessageService\r\n} from '@appComponents/login/services/login-message.service';\r\nimport {\r\n\tPolicyDetailsComponent\r\n} from '@claims/dynamic-components/policy-details/policy-details.component';\r\nimport {\r\n\tCloudChatComponent\r\n} from '@dynamicComponents/cloud-chat/cloud-chat.component';\r\nimport {\r\n\tCommissionsListComponent\r\n} from '@dynamicComponents/commissions/commissions-list/commissions-list.component';\r\nimport {\r\n\tCommissionsScheduleUpdateComponent\r\n} from '@dynamicComponents/commissions/commissions-schedule-update/commissions-schedule-update.component';\r\nimport {\r\n\tCommissionsComponent\r\n} from '@dynamicComponents/commissions/commissions.component';\r\nimport {\r\n\tEntityCreateComponent\r\n} from '@dynamicComponents/drawer-entity-components/entity-create-component/entity-create.component';\r\nimport {\r\n\tEntityUpdateComponent\r\n} from '@dynamicComponents/drawer-entity-components/entity-update-component/entity-update.component';\r\nimport {\r\n\tEntityViewComponent\r\n} from '@dynamicComponents/drawer-entity-components/entity-view-component/entity-view.component';\r\nimport {\r\n\tDynamicCommonTableComponent\r\n} from '@dynamicComponents/dynamic-common-table/dynamic-common-table.component';\r\nimport {\r\n\tDynamicFormlyWrapperComponent\r\n} from '@dynamicComponents/dynamic-formly-wrapper/dynamic-formly-wrapper.component';\r\nimport {\r\n\tDynamicReallySimpleSyndicationFeedReaderComponent\r\n} from '@dynamicComponents/dynamic-really-simple-syndication-feed-reader/dynamic-really-simple-syndication-feed-reader.component';\r\nimport {\r\n\tDynamicSummaryCardComponent\r\n} from '@dynamicComponents/dynamic-summary-card/dynamic-summary-card.component';\r\nimport {\r\n\tDynamicWeatherCardComponent\r\n} from '@dynamicComponents/dynamic-weather-card/dynamic-weather-card.component';\r\nimport {\r\n\tDynamicWizardComponent\r\n} from '@dynamicComponents/dynamic-wizard/dynamic-wizard.component';\r\nimport {\r\n\tExternalReportComponent\r\n} from '@dynamicComponents/external-report/external-report.component';\r\nimport {\r\n\tAddFileComponent\r\n} from '@dynamicComponents/files/add-file/add-file.component';\r\nimport {\r\n\tDeleteFileComponent\r\n} from '@dynamicComponents/files/delete-file/delete-file.component';\r\nimport {\r\n\tDownloadFileComponent\r\n} from '@dynamicComponents/files/download-file/download-file.component';\r\nimport {\r\n\tEditFileComponent\r\n} from '@dynamicComponents/files/edit-file/edit-file.component';\r\nimport {\r\n\tFileDetailsComponent\r\n} from '@dynamicComponents/files/file-details/file-details.component';\r\nimport {\r\n\tFileProgressComponent\r\n} from '@dynamicComponents/files/file-progress/file-progress.component';\r\nimport {\r\n\tFileComponent\r\n} from '@dynamicComponents/files/file/file.component';\r\nimport {\r\n\tFilesComponent\r\n} from '@dynamicComponents/files/files.component';\r\nimport {\r\n\tFinalWizardLayoutStepComponent\r\n} from '@dynamicComponents/final-wizard-layout-step/final-wizard-layout-step.component';\r\nimport {\r\n\tHistoryTimelineComponent\r\n} from '@dynamicComponents/history/history-timeline/history-timeline.component';\r\nimport {\r\n\tHistoryComponent\r\n} from '@dynamicComponents/history/history.component';\r\nimport {\r\n\tNoteCreateComponent\r\n} from '@dynamicComponents/notes/note-create/note-create.component';\r\nimport {\r\n\tNoteDeleteComponent\r\n} from '@dynamicComponents/notes/note-delete/note-delete.component';\r\nimport {\r\n\tNoteListComponent\r\n} from '@dynamicComponents/notes/note-list/note-list.component';\r\nimport {\r\n\tNoteViewComponent\r\n} from '@dynamicComponents/notes/note-view/note-view.component';\r\nimport {\r\n\tNoteComponent\r\n} from '@dynamicComponents/notes/note/note.component';\r\nimport {\r\n\tPaymentBatchListComponent\r\n} from '@dynamicComponents/payment-batch/payment-batch-list/payment-batch-list.component';\r\nimport {\r\n\tPaymentBatchComponent\r\n} from '@dynamicComponents/payment-batch/payment-batch.component';\r\nimport {\r\n\tProductSettingActionComponent\r\n} from '@dynamicComponents/product-settings/product-setting-action/product-setting-action.component';\r\nimport {\r\n\tProductSettingListComponent\r\n} from '@dynamicComponents/product-settings/product-setting-list/product-setting-list.component';\r\nimport {\r\n\tProductSettingsComponent\r\n} from '@dynamicComponents/product-settings/product-settings.component';\r\nimport {\r\n\tRuleListItemComponent\r\n} from '@dynamicComponents/rules/rule-list-item/rule-list-item.component';\r\nimport {\r\n\tRuleListComponent\r\n} from '@dynamicComponents/rules/rule-list/rule-list.component';\r\nimport {\r\n\tRuleOverrideDetailsComponent\r\n} from '@dynamicComponents/rules/rule-override-details/rule-override-details.component';\r\nimport {\r\n\tRuleOverrideListComponent\r\n} from '@dynamicComponents/rules/rule-override-list/rule-override-list.component';\r\nimport {\r\n\tRuleOverrideComponent\r\n} from '@dynamicComponents/rules/rule-override/rule-override.component';\r\nimport {\r\n\tStonlyHelpComponent\r\n} from '@dynamicComponents/stonly-help/stonly-help.component';\r\nimport {\r\n\tWorkItemListComponent\r\n} from '@dynamicComponents/work-items/work-item-list/work-item-list.component';\r\nimport {\r\n\tWorkItemsComponent\r\n} from '@dynamicComponents/work-items/work-items.component';\r\nimport {\r\n\tFieldValidationMessageComponent\r\n} from '@entity/components/custom-components/field-validation-message/field-validation-message.component';\r\nimport {\r\n\tCustomRepeaterComponent\r\n} from '@entity/components/custom-components/types/arrays/custom-repeater/custom-repeater.component';\r\nimport {\r\n\tCustomCalendarComponent\r\n} from '@entity/components/custom-components/types/fields/custom-calendar/custom-calendar.component';\r\nimport {\r\n\tCustomCheckboxComponent\r\n} from '@entity/components/custom-components/types/fields/custom-checkbox/custom-checkbox.component';\r\nimport {\r\n\tCustomDashboardComponent\r\n} from '@entity/components/custom-components/types/fields/custom-dashboard/custom-dashboard.component';\r\nimport {\r\n\tCustomDataSelectComponent\r\n} from '@entity/components/custom-components/types/fields/custom-data-select/custom-data-select.component';\r\nimport {\r\n\tCustomIconInputComponent\r\n} from '@entity/components/custom-components/types/fields/custom-icon-input/custom-icon-input.component';\r\nimport {\r\n\tCustomIframeComponent\r\n} from '@entity/components/custom-components/types/fields/custom-iframe/custom-iframe.component';\r\nimport {\r\n\tCustomImageInputComponent\r\n} from '@entity/components/custom-components/types/fields/custom-image-input/custom-image-input.component';\r\nimport {\r\n\tCustomInputNumberComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input-number/custom-input-number.component';\r\nimport {\r\n\tCustomInputPasswordComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input-password/custom-input-password.component';\r\nimport {\r\n\tCustomInputRadioButtonComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input-radio-button/custom-input-radio-button.component';\r\nimport {\r\n\tCustomInputSearchComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input-search/custom-input-search.component';\r\nimport {\r\n\tCustomInputSwitchComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input-switch/custom-input-switch.component';\r\nimport {\r\n\tCustomInputComponent\r\n} from '@entity/components/custom-components/types/fields/custom-input/custom-input.component';\r\nimport {\r\n\tCustomMaskedInputComponent\r\n} from '@entity/components/custom-components/types/fields/custom-masked-input/custom-masked-input.component';\r\nimport {\r\n\tCustomMessageComponent\r\n} from '@entity/components/custom-components/types/fields/custom-message/custom-message.component';\r\nimport {\r\n\tCustomMultiSelectComponent\r\n} from '@entity/components/custom-components/types/fields/custom-multi-select/custom-multi-select.component';\r\nimport {\r\n\tCustomOperationButtonComponent\r\n} from '@entity/components/custom-components/types/fields/custom-operation-button/custom-operation-button.component';\r\nimport {\r\n\tCustomResourceIdentifierComponent\r\n} from '@entity/components/custom-components/types/fields/custom-resource-identifier/custom-resource-identifier.component';\r\nimport {\r\n\tCustomSectionTitleComponent\r\n} from '@entity/components/custom-components/types/fields/custom-section-title/custom-section-title.component';\r\nimport {\r\n\tCustomSelectComponent\r\n} from '@entity/components/custom-components/types/fields/custom-select/custom-select.component';\r\nimport {\r\n\tCustomSummaryCardComponent\r\n} from '@entity/components/custom-components/types/fields/custom-summary-card/custom-summary-card.component';\r\nimport {\r\n\tCustomTableDisplayComponent\r\n} from '@entity/components/custom-components/types/fields/custom-table-display/custom-table-display.component';\r\nimport {\r\n\tCustomInputTextAreaComponent\r\n} from '@entity/components/custom-components/types/fields/custom-text-area/custom-text-area.component';\r\nimport {\r\n\tCustomTextDisplayComponent\r\n} from '@entity/components/custom-components/types/fields/custom-text-display/custom-text-display.component';\r\nimport {\r\n\tCustomEmptyWrapperComponent\r\n} from '@entity/components/custom-components/wrappers/custom-empty-wrapper/custom-empty-wrapper.component';\r\nimport {\r\n\tCustomFieldWrapperComponent\r\n} from '@entity/components/custom-components/wrappers/custom-field-wrapper/custom-field-wrapper.component';\r\nimport {\r\n\tCustomTabContentComponent\r\n} from '@entity/components/custom-components/wrappers/custom-tab-content/custom-tab-content.component';\r\nimport {\r\n\tEntitySelectComponent\r\n} from '@entity/components/entity-select/entity-select.component';\r\nimport {\r\n\tapplyDefaultOptions,\r\n\temailValidator,\r\n\temailValidatorMessage,\r\n\tinvalidFormatValidationMessage,\r\n\tmaximumLengthValidator,\r\n\tmaximumNumberValidationMessage,\r\n\tmaximumNumberValidator,\r\n\tmaximumStringLengthValidationMessage,\r\n\tminimumLengthValidator,\r\n\tminimumNumberValidationMessage,\r\n\tminimumNumberValidator,\r\n\tminimumStringLengthValidationMessage,\r\n\tpasswordValidator,\r\n\tpasswordValidatorMessage,\r\n\tregularExpressionValidator\r\n} from '@entity/entity-formly-definitions';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyModule\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tFormlyPrimeNGModule\r\n} from '@ngx-formly/primeng';\r\nimport {\r\n\tOperationModule\r\n} from '@operation/operation.module';\r\nimport {\r\n\tAngularCdkModule\r\n} from '@shared/angular-cdk.module';\r\nimport {\r\n\tAccessDeniedContentComponent\r\n} from '@shared/components/access-denied-content/access-denied-content.component';\r\nimport {\r\n\tBasePageTabMenuComponent\r\n} from '@shared/components/base-page-tab-menu/base-page-tab-menu.component';\r\nimport {\r\n\tBasePageComponent\r\n} from '@shared/components/base-page/base-page.component';\r\nimport {\r\n\tColorSwatchComponent\r\n} from '@shared/components/color-swatch/color-swatch.component';\r\nimport {\r\n\tCommonDashboardComponent\r\n} from '@shared/components/common-dashboard/common-dashboard.component';\r\nimport {\r\n\tDashboardSectionComponent\r\n} from '@shared/components/common-dashboard/dashboard-section/dashboard-section.component';\r\nimport {\r\n\tDashboardWidgetComponent\r\n} from '@shared/components/common-dashboard/dashboard-section/dashboard-widget/dashboard-widget.component';\r\nimport {\r\n\tCommonIconTooltipComponent\r\n} from '@shared/components/common-icon-tooltip/common-icon-tooltip.component';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tDifferenceDisplayComponent\r\n} from '@shared/components/differences-display/difference-display/difference-display.component';\r\nimport {\r\n\tDifferencesDisplayComponent\r\n} from '@shared/components/differences-display/differences-display.component';\r\nimport {\r\n\tDisplayComponentParameterHeaderComponent\r\n} from '@shared/components/display-component-parameter-header/display-component-parameter-header.component';\r\nimport {\r\n\tDisplayComponentParameterComponent\r\n} from '@shared/components/display-component-parameter/display-component-parameter.component';\r\nimport {\r\n\tDynamicFormlyComponent\r\n} from '@shared/components/dynamic-formly/dynamic-formly.component';\r\nimport {\r\n\tDynamicComponent\r\n} from '@shared/components/dynamic/dynamic.component';\r\nimport {\r\n\tInformationMenuComponent\r\n} from '@shared/components/information-menu/information-menu.component';\r\nimport {\r\n\tQuickFiltersComponent\r\n} from '@shared/components/quick-filters/quick-filters.component';\r\nimport {\r\n\tReallySimpleSyndicationFeedReaderComponent\r\n} from '@shared/components/really-simple-syndication-feed-reader/really-simple-syndication-feed-reader.component';\r\nimport {\r\n\tSearchFilterComponent\r\n} from '@shared/components/search-filter/search-filter.component';\r\nimport {\r\n\tSummaryCardComponent\r\n} from '@shared/components/summary-card/summary-card.component';\r\nimport {\r\n\tWeatherForecastComponent\r\n} from '@shared/components/weather-forecast/weather-forecast.component';\r\nimport {\r\n\tBIReportSettingDirective\r\n} from '@shared/directives/bi-report-setting.directive';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tMobileTooltipDirective\r\n} from '@shared/directives/mobile-tooltip.directive';\r\nimport {\r\n\tPageContextDirective\r\n} from '@shared/directives/page-context.directive';\r\nimport {\r\n\tActivityListComponent\r\n} from '@shared/dynamic-components/activity-list/activity-list.component';\r\nimport {\r\n\tActivityComponent\r\n} from '@shared/dynamic-components/activity-list/activity/activity/activity.component';\r\nimport {\r\n\tAddressListComponent\r\n} from '@shared/dynamic-components/address-list/address-list.component';\r\nimport {\r\n\tApplicationSearchComponent\r\n} from '@shared/dynamic-components/application-search/application-search.component';\r\nimport {\r\n\tBIReportComponent\r\n} from '@shared/dynamic-components/bi-report-settings/bi-report-settings.component';\r\nimport {\r\n\tChartComponent\r\n} from '@shared/dynamic-components/chart/chart.component';\r\nimport {\r\n\tCommonListComponent\r\n} from '@shared/dynamic-components/common-list/common-list.component';\r\nimport {\r\n\tNotesComponent\r\n} from '@shared/dynamic-components/notes/notes.component';\r\nimport {\r\n\tRulesComponent\r\n} from '@shared/dynamic-components/rules/rules.component';\r\nimport {\r\n\tChartFactory\r\n} from '@shared/factories/chart-factory';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tArrayReversePipe\r\n} from '@shared/pipes/array-reverse.pipe';\r\nimport {\r\n\tDateTimeToTrueLocalPipe\r\n} from '@shared/pipes/date-time-to-true-local.pipe';\r\nimport {\r\n\tFormatYesNoPipe\r\n} from '@shared/pipes/format-yes-no.pipe';\r\nimport {\r\n\tNumberToWordsPipe\r\n} from '@shared/pipes/number-to-words.pipe';\r\nimport {\r\n\tPrimeNgModule\r\n} from '@shared/primeng.module';\r\nimport {\r\n\tRuleTokenLookup\r\n} from '@shared/rule-token.lookup';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tGenesysChatService\r\n} from '@shared/services/genesys-chat.service';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tRulePresentationService\r\n} from '@shared/services/rule-presentation.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSettingsService\r\n} from '@shared/services/settings.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tUserService\r\n} from '@shared/services/user.service';\r\nimport {\r\n\tSharedTokenLookup\r\n} from '@shared/shared-token.lookup';\r\nimport {\r\n\tChartTransform\r\n} from '@shared/transforms/chart-transform';\r\nimport {\r\n\tEmailValidator\r\n} from '@shared/validators/email.validator';\r\nimport {\r\n\tMaximumLengthValidator\r\n} from '@shared/validators/maximum-length.validator';\r\nimport {\r\n\tMaximumNumberValidator\r\n} from '@shared/validators/maximum-number.validator';\r\nimport {\r\n\tMinimumLengthValidator\r\n} from '@shared/validators/minimum-length.validator';\r\nimport {\r\n\tMinimumNumberValidator\r\n} from '@shared/validators/minimum-number.validator';\r\nimport {\r\n\tPasswordValidator\r\n} from '@shared/validators/password.validator';\r\nimport {\r\n\tRegularExpressionValidator\r\n} from '@shared/validators/regular-expression.validator';\r\nimport {\r\n\tRequiredValidator\r\n} from '@shared/validators/required.validator';\r\nimport {\r\n\tLuxonModule\r\n} from 'luxon-angular';\r\nimport {\r\n\tHighlightModule\r\n} from 'ngx-highlightjs';\r\nimport {\r\n\tMarkdownModule\r\n} from 'ngx-markdown';\r\nimport {\r\n\tMessageService\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tApiModule,\r\n\t\tAngularCdkModule,\r\n\t\tBrowserAnimationsModule,\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tHighlightModule,\r\n\t\tLuxonModule,\r\n\t\tMarkdownModule.forRoot(),\r\n\t\tOperationModule,\r\n\t\tPrimeNgModule,\r\n\t\tReactiveFormsModule,\r\n\t\tRouterModule,\r\n\t\tFormlyPrimeNGModule,\r\n\t\tFormlyModule.forRoot({\r\n\t\t\textensions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'defaultOptions',\r\n\t\t\t\t\textension: {\r\n\t\t\t\t\t\tprePopulate: applyDefaultOptions\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\textras: {\r\n\t\t\t\tlazyRender: false,\r\n\t\t\t\tresetFieldOnHide: false\r\n\t\t\t},\r\n\t\t\ttypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-calendar',\r\n\t\t\t\t\tcomponent: CustomCalendarComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-checkbox',\r\n\t\t\t\t\tcomponent: CustomCheckboxComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-dashboard',\r\n\t\t\t\t\tcomponent: CustomDashboardComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-data-select',\r\n\t\t\t\t\tcomponent: CustomDataSelectComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-iframe',\r\n\t\t\t\t\tcomponent: CustomIframeComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-icon-input',\r\n\t\t\t\t\tcomponent: CustomIconInputComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-input-switch',\r\n\t\t\t\t\tcomponent: CustomInputSwitchComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-image-input',\r\n\t\t\t\t\tcomponent: CustomImageInputComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-input-radio-button',\r\n\t\t\t\t\tcomponent: CustomInputRadioButtonComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-input-search',\r\n\t\t\t\t\tcomponent: CustomInputSearchComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-input-number',\r\n\t\t\t\t\tcomponent: CustomInputNumberComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-input-password',\r\n\t\t\t\t\tcomponent: CustomInputPasswordComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-masked-input',\r\n\t\t\t\t\tcomponent: CustomMaskedInputComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-message',\r\n\t\t\t\t\tcomponent: CustomMessageComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-multi-select',\r\n\t\t\t\t\tcomponent: CustomMultiSelectComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-operation-button',\r\n\t\t\t\t\tcomponent: CustomOperationButtonComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-repeater',\r\n\t\t\t\t\tcomponent: CustomRepeaterComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-resource-identifier',\r\n\t\t\t\t\tcomponent: CustomResourceIdentifierComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-section-title',\r\n\t\t\t\t\tcomponent: CustomSectionTitleComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-select',\r\n\t\t\t\t\tcomponent: CustomSelectComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-summary-card',\r\n\t\t\t\t\tcomponent: CustomSummaryCardComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-table-display',\r\n\t\t\t\t\tcomponent: CustomTableDisplayComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-textarea',\r\n\t\t\t\t\tcomponent: CustomInputTextAreaComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-text-display',\r\n\t\t\t\t\tcomponent: CustomTextDisplayComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'input',\r\n\t\t\t\t\tcomponent: CustomInputComponent\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\twrappers: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-empty-wrapper',\r\n\t\t\t\t\tcomponent: CustomEmptyWrapperComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-field-wrapper',\r\n\t\t\t\t\tcomponent: CustomFieldWrapperComponent\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'custom-tab-content',\r\n\t\t\t\t\tcomponent: CustomTabContentComponent\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tvalidationMessages: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'required',\r\n\t\t\t\t\tmessage: 'This value is required.'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'minLength',\r\n\t\t\t\t\tmessage: minimumStringLengthValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'minimumLength',\r\n\t\t\t\t\tmessage: minimumStringLengthValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'maxLength',\r\n\t\t\t\t\tmessage: maximumStringLengthValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'maximumLength',\r\n\t\t\t\t\tmessage: maximumStringLengthValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'min',\r\n\t\t\t\t\tmessage: minimumNumberValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'minimumNumber',\r\n\t\t\t\t\tmessage: minimumNumberValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'max',\r\n\t\t\t\t\tmessage: maximumNumberValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'maximumNumber',\r\n\t\t\t\t\tmessage: maximumNumberValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'invalidPassword',\r\n\t\t\t\t\tmessage: passwordValidatorMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'pattern',\r\n\t\t\t\t\tmessage: invalidFormatValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'regularExpression',\r\n\t\t\t\t\tmessage: invalidFormatValidationMessage\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'email',\r\n\t\t\t\t\tmessage: emailValidatorMessage\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tvalidators: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'email',\r\n\t\t\t\t\tvalidation: emailValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'maximumLength',\r\n\t\t\t\t\tvalidation: maximumLengthValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'minimumLength',\r\n\t\t\t\t\tvalidation: minimumLengthValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'maximumNumber',\r\n\t\t\t\t\tvalidation: maximumNumberValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'minimumNumber',\r\n\t\t\t\t\tvalidation: minimumNumberValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'password',\r\n\t\t\t\t\tvalidation: passwordValidator\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'regularExpression',\r\n\t\t\t\t\tvalidation: regularExpressionValidator\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t})\r\n\t],\r\n\texports: [\r\n\t\tAccessDeniedContentComponent,\r\n\t\tCommonTablePageDirective,\r\n\t\tAngularCdkModule,\r\n\t\tApiModule,\r\n\t\tArrayReversePipe,\r\n\t\tBasePageComponent,\r\n\t\tBasePageTabMenuComponent,\r\n\t\tBrowserAnimationsModule,\r\n\t\tColorSwatchComponent,\r\n\t\tCommonDashboardComponent,\r\n\t\tCommonIconTooltipComponent,\r\n\t\tCommonTableComponent,\r\n\t\tCustomCalendarComponent,\r\n\t\tCustomCheckboxComponent,\r\n\t\tCustomDashboardComponent,\r\n\t\tCustomDataSelectComponent,\r\n\t\tCustomTabContentComponent,\r\n\t\tCustomFieldWrapperComponent,\r\n\t\tCustomIconInputComponent,\r\n\t\tCustomInputComponent,\r\n\t\tCustomInputSwitchComponent,\r\n\t\tCustomIframeComponent,\r\n\t\tCustomImageInputComponent,\r\n\t\tCustomMaskedInputComponent,\r\n\t\tCustomMessageComponent,\r\n\t\tCustomMultiSelectComponent,\r\n\t\tCustomOperationButtonComponent,\r\n\t\tCustomRepeaterComponent,\r\n\t\tCustomResourceIdentifierComponent,\r\n\t\tCustomSectionTitleComponent,\r\n\t\tCustomSelectComponent,\r\n\t\tCustomInputRadioButtonComponent,\r\n\t\tCustomInputSearchComponent,\r\n\t\tCustomInputTextAreaComponent,\r\n\t\tCustomInputNumberComponent,\r\n\t\tCustomInputPasswordComponent,\r\n\t\tCustomRepeaterComponent,\r\n\t\tCustomMaskedInputComponent,\r\n\t\tCustomCheckboxComponent,\r\n\t\tCustomSummaryCardComponent,\r\n\t\tCustomTableDisplayComponent,\r\n\t\tCustomTextDisplayComponent,\r\n\t\tCommonListComponent,\r\n\t\tCommonModule,\r\n\t\tChartComponent,\r\n\t\tDashboardSectionComponent,\r\n\t\tDashboardWidgetComponent,\r\n\t\tDifferenceDisplayComponent,\r\n\t\tDifferencesDisplayComponent,\r\n\t\tDateTimeToTrueLocalPipe,\r\n\t\tDisplayComponentParameterComponent,\r\n\t\tDisplayComponentParameterHeaderComponent,\r\n\t\tDynamicCommonTableComponent,\r\n\t\tDynamicReallySimpleSyndicationFeedReaderComponent,\r\n\t\tDynamicSummaryCardComponent,\r\n\t\tDynamicWeatherCardComponent,\r\n\t\tDynamicWizardComponent,\r\n\t\tDynamicComponent,\r\n\t\tDynamicFormlyComponent,\r\n\t\tDynamicFormlyWrapperComponent,\r\n\t\tEntitySelectComponent,\r\n\t\tExternalReportComponent,\r\n\t\tFieldValidationMessageComponent,\r\n\t\tFinalWizardLayoutStepComponent,\r\n\t\tFormatYesNoPipe,\r\n\t\tFormsModule,\r\n\t\tFormlyModule,\r\n\t\tFormlyPrimeNGModule,\r\n\t\tMobileTooltipDirective,\r\n\t\tHighlightModule,\r\n\t\tInformationMenuComponent,\r\n\t\tLuxonModule,\r\n\t\tMarkdownModule,\r\n\t\tNumberToWordsPipe,\r\n\t\tOperationModule,\r\n\t\tPageContextDirective,\r\n\t\tPrimeNgModule,\r\n\t\tQuickFiltersComponent,\r\n\t\tReactiveFormsModule,\r\n\t\tRouterModule,\r\n\t\tReallySimpleSyndicationFeedReaderComponent,\r\n\t\tSearchFilterComponent,\r\n\t\tSlideMenuComponent,\r\n\t\tSummaryCardComponent,\r\n\t\tWeatherForecastComponent\r\n\t],\r\n\tproviders: [\r\n\t\tUserService,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.UserService,\r\n\t\t\tuseClass: UserService\r\n\t\t},\r\n\t\tActivityListComponent,\r\n\t\tAddressListComponent,\r\n\t\tApplicationSearchComponent,\r\n\t\tBIReportComponent,\r\n\t\tBIReportSettingDirective,\r\n\t\tChartTransform,\r\n\t\tChartComponent,\r\n\t\tCloudChatComponent,\r\n\t\tCommissionsComponent,\r\n\t\tCommissionsScheduleUpdateComponent,\r\n\t\tCommonDashboardComponent,\r\n\t\tCommonIconTooltipComponent,\r\n\t\tCommonTableComponent,\r\n\t\tDashboardSectionComponent,\r\n\t\tDashboardWidgetComponent,\r\n\t\tDisplayComponentParameterComponent,\r\n\t\tDisplayComponentParameterHeaderComponent,\r\n\t\tDynamicCommonTableComponent,\r\n\t\tDynamicFormlyWrapperComponent,\r\n\t\tDynamicReallySimpleSyndicationFeedReaderComponent,\r\n\t\tDynamicSummaryCardComponent,\r\n\t\tDynamicWeatherCardComponent,\r\n\t\tDynamicWizardComponent,\r\n\t\tEntitySelectComponent,\r\n\t\tExternalReportComponent,\r\n\t\tFilesComponent,\r\n\t\tFinalWizardLayoutStepComponent,\r\n\t\tGenesysChatService,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.GenesysChatService,\r\n\t\t\tuseClass: GenesysChatService\r\n\t\t},\r\n\t\tHistoryComponent,\r\n\t\tHistoryTimelineComponent,\r\n\t\tLoggerService,\r\n\t\tLoginMessageService,\r\n\t\tMessageService,\r\n\t\tNotesComponent,\r\n\t\tOptionsFactory,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.OptionsFactory,\r\n\t\t\tuseClass: OptionsFactory\r\n\t\t},\r\n\t\tPaymentBatchComponent,\r\n\t\tPolicyDetailsComponent,\r\n\t\tProductSettingsComponent,\r\n\t\tProductSettingActionComponent,\r\n\t\tProductSettingListComponent,\r\n\t\tRulesComponent,\r\n\t\tRuleListItemComponent,\r\n\t\tRulePresentationService,\r\n\t\tSiteLayoutService,\r\n\t\tSessionService,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.SessionService,\r\n\t\t\tuseClass: SessionService\r\n\t\t},\r\n\t\tSettingsService,\r\n\t\tStonlyHelpComponent,\r\n\t\tWorkItemListComponent,\r\n\t\tWorkItemsComponent,\r\n\t\tCommissionsComponent,\r\n\t\tCommissionsListComponent,\r\n\t\tCommissionsScheduleUpdateComponent,\r\n\t\tEmailValidator,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.ActivityService,\r\n\t\t\tuseClass: ActivityService\r\n\t\t},\r\n\t\tEmailValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.Email,\r\n\t\t\tuseClass: EmailValidator\r\n\t\t},\r\n\t\tChartFactory,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.ChartFactory,\r\n\t\t\tuseClass: ChartFactory\r\n\t\t},\r\n\t\tEntityService,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.EntityService,\r\n\t\t\tuseClass: EntityService\r\n\t\t},\r\n\t\tMaximumLengthValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.MaximumLength,\r\n\t\t\tuseClass: MaximumLengthValidator\r\n\t\t},\r\n\t\tMinimumLengthValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.MinimumLength,\r\n\t\t\tuseClass: MinimumLengthValidator\r\n\t\t},\r\n\t\tMaximumNumberValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.MaximumNumber,\r\n\t\t\tuseClass: MaximumNumberValidator\r\n\t\t},\r\n\t\tMinimumNumberValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.MinimumNumber,\r\n\t\t\tuseClass: MinimumNumberValidator\r\n\t\t},\r\n\t\tPasswordValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.Password,\r\n\t\t\tuseClass: PasswordValidator\r\n\t\t},\r\n\t\tRegularExpressionValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.RegularExpressionFormat,\r\n\t\t\tuseClass: RegularExpressionValidator\r\n\t\t},\r\n\t\tRequiredValidator,\r\n\t\t{\r\n\t\t\tprovide: RuleTokenLookup.tokens.Required,\r\n\t\t\tuseClass: RequiredValidator\r\n\t\t},\r\n\t\tRuleService,\r\n\t\t{\r\n\t\t\tprovide: SharedTokenLookup.tokens.RuleService,\r\n\t\t\tuseClass: RuleService\r\n\t\t}\r\n\t],\r\n\tdeclarations: [\r\n\t\tAccessDeniedContentComponent,\r\n\t\tAddFileComponent,\r\n\t\tBIReportSettingDirective,\r\n\t\tCommonTablePageDirective,\r\n\t\tActivityComponent,\r\n\t\tActivityListComponent,\r\n\t\tAddressListComponent,\r\n\t\tAppContextMenuComponent,\r\n\t\tApplicationSearchComponent,\r\n\t\tArrayReversePipe,\r\n\t\tBasePageComponent,\r\n\t\tBasePageTabMenuComponent,\r\n\t\tBIReportComponent,\r\n\t\tChartComponent,\r\n\t\tCloudChatComponent,\r\n\t\tColorSwatchComponent,\r\n\t\tCommissionsComponent,\r\n\t\tCommissionsListComponent,\r\n\t\tCommissionsScheduleUpdateComponent,\r\n\t\tCommonListComponent,\r\n\t\tCommonDashboardComponent,\r\n\t\tCommonIconTooltipComponent,\r\n\t\tCommonTableComponent,\r\n\t\tCustomCalendarComponent,\r\n\t\tCustomCheckboxComponent,\r\n\t\tCustomDashboardComponent,\r\n\t\tCustomDataSelectComponent,\r\n\t\tCustomTabContentComponent,\r\n\t\tCustomFieldWrapperComponent,\r\n\t\tCustomIconInputComponent,\r\n\t\tCustomInputComponent,\r\n\t\tCustomInputSwitchComponent,\r\n\t\tCustomIframeComponent,\r\n\t\tCustomImageInputComponent,\r\n\t\tCustomMaskedInputComponent,\r\n\t\tCustomRepeaterComponent,\r\n\t\tCustomResourceIdentifierComponent,\r\n\t\tCustomInputRadioButtonComponent,\r\n\t\tCustomInputSearchComponent,\r\n\t\tCustomInputTextAreaComponent,\r\n\t\tCustomInputNumberComponent,\r\n\t\tCustomInputPasswordComponent,\r\n\t\tCustomMultiSelectComponent,\r\n\t\tCustomMessageComponent,\r\n\t\tCustomOperationButtonComponent,\r\n\t\tCustomRepeaterComponent,\r\n\t\tCustomSectionTitleComponent,\r\n\t\tCustomSelectComponent,\r\n\t\tCustomMaskedInputComponent,\r\n\t\tCustomCheckboxComponent,\r\n\t\tCustomSummaryCardComponent,\r\n\t\tCustomTableDisplayComponent,\r\n\t\tCustomTextDisplayComponent,\r\n\t\tDashboardSectionComponent,\r\n\t\tDashboardWidgetComponent,\r\n\t\tDeleteFileComponent,\r\n\t\tDifferenceDisplayComponent,\r\n\t\tDifferencesDisplayComponent,\r\n\t\tDateTimeToTrueLocalPipe,\r\n\t\tDisplayComponentParameterComponent,\r\n\t\tDisplayComponentParameterHeaderComponent,\r\n\t\tDynamicCommonTableComponent,\r\n\t\tDynamicFormlyWrapperComponent,\r\n\t\tDynamicReallySimpleSyndicationFeedReaderComponent,\r\n\t\tDynamicSummaryCardComponent,\r\n\t\tDynamicWeatherCardComponent,\r\n\t\tDynamicWizardComponent,\r\n\t\tDownloadFileComponent,\r\n\t\tDynamicComponent,\r\n\t\tDynamicFormlyComponent,\r\n\t\tEditFileComponent,\r\n\t\tEntityCreateComponent,\r\n\t\tEntitySelectComponent,\r\n\t\tEntityUpdateComponent,\r\n\t\tEntityViewComponent,\r\n\t\tExternalReportComponent,\r\n\t\tFieldValidationMessageComponent,\r\n\t\tFileComponent,\r\n\t\tFilesComponent,\r\n\t\tFileDetailsComponent,\r\n\t\tFileProgressComponent,\r\n\t\tFinalWizardLayoutStepComponent,\r\n\t\tFormatYesNoPipe,\r\n\t\tMobileTooltipDirective,\r\n\t\tHistoryComponent,\r\n\t\tHistoryTimelineComponent,\r\n\t\tInformationMenuComponent,\r\n\t\tNumberToWordsPipe,\r\n\t\tNoteComponent,\r\n\t\tNotesComponent,\r\n\t\tNoteListComponent,\r\n\t\tNoteViewComponent,\r\n\t\tNoteCreateComponent,\r\n\t\tNoteDeleteComponent,\r\n\t\tProductSettingsComponent,\r\n\t\tProductSettingListComponent,\r\n\t\tProductSettingActionComponent,\r\n\t\tPageContextDirective,\r\n\t\tQuickFiltersComponent,\r\n\t\tPaymentBatchComponent,\r\n\t\tPaymentBatchListComponent,\r\n\t\tPolicyDetailsComponent,\r\n\t\tReallySimpleSyndicationFeedReaderComponent,\r\n\t\tRulesComponent,\r\n\t\tRuleListComponent,\r\n\t\tRuleOverrideListComponent,\r\n\t\tRuleListItemComponent,\r\n\t\tRuleOverrideComponent,\r\n\t\tRuleOverrideDetailsComponent,\r\n\t\tSearchFilterComponent,\r\n\t\tSlideMenuComponent,\r\n\t\tStonlyHelpComponent,\r\n\t\tSummaryCardComponent,\r\n\t\tWeatherForecastComponent,\r\n\t\tWorkItemListComponent,\r\n\t\tWorkItemsComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module to be shared across the application used\r\n * to hold common shared modules that we want to hand across\r\n * the application.\r\n *\r\n * @export\r\n * @class SharedModule\r\n */\r\nexport class SharedModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAdminComponent\r\n} from '@admin/admin.component';\r\nimport {\r\n\tEntityAccessPoliciesComponent\r\n} from '@admin/components/entity/entity-access-policies/entity-access-policies.component';\r\nimport {\r\n\tEntityAccessPolicyDefinitionComponent\r\n} from '@admin/components/entity/entity-access-policy-definition/entity-access-policy-definition.component';\r\nimport {\r\n\tEntityActionDefinitionComponent\r\n} from '@admin/components/entity/entity-action-definition/entity-action-definition.component';\r\nimport {\r\n\tEntityActionsComponent\r\n} from '@admin/components/entity/entity-actions/entity-actions.component';\r\nimport {\r\n\tEntityDefinitionsComponent\r\n} from '@admin/components/entity/entity-definitions/entity-definitions.component';\r\nimport {\r\n\tEntityLayoutDefinitionComponent\r\n} from '@admin/components/entity/entity-layout-definition/entity-layout-definition.component';\r\nimport {\r\n\tEntityLayoutsComponent\r\n} from '@admin/components/entity/entity-layouts/entity-layouts.component';\r\nimport {\r\n\tEntityOverviewComponent\r\n} from '@admin/components/entity/entity-overview/entity-overview.component';\r\nimport {\r\n\tEntityRuleDefinitionComponent\r\n} from '@admin/components/entity/entity-rule-definition/entity-rule-definition.component';\r\nimport {\r\n\tEntityRulePresentationComponent\r\n} from '@admin/components/entity/entity-rule-presentation/entity-rule-presentation.component';\r\nimport {\r\n\tEntityRuleValidationsComponent\r\n} from '@admin/components/entity/entity-rule-validations/entity-rule-validations.component';\r\nimport {\r\n\tEntityRuleWorkflowComponent\r\n} from '@admin/components/entity/entity-rule-workflow/entity-rule-workflow.component';\r\nimport {\r\n\tEntityRulesComponent\r\n} from '@admin/components/entity/entity-rules/entity-rules.component';\r\nimport {\r\n\tEntityManagerSearchComponent\r\n} from '@admin/components/entity/entity-search/entity-manager-search.component';\r\nimport {\r\n\tApplicationsComponent\r\n} from '@admin/components/security/applications/applications.component';\r\nimport {\r\n\tSessionEventsComponent\r\n} from '@admin/components/security/session-events/session-events.component';\r\nimport {\r\n\tSessionComponent\r\n} from '@admin/components/security/sessions/session-expand/session.component';\r\nimport {\r\n\tSessionsComponent\r\n} from '@admin/components/security/sessions/sessions.component';\r\nimport {\r\n\tManageUserComponent\r\n} from '@admin/components/security/users/manage-user-expand/manage-user-expand.component';\r\nimport {\r\n\tManageUserGroupComponent\r\n} from '@admin/components/security/users/manage-user-group-expand/manage-user-group.component';\r\nimport {\r\n\tManageUserGroupsComponent\r\n} from '@admin/components/security/users/manage-user-groups/manage-user-groups.component';\r\nimport {\r\n\tManageUsersComponent\r\n} from '@admin/components/security/users/manage-users/manage-users.component';\r\nimport {\r\n\tLogComponent\r\n} from '@admin/components/system/logs/log-expand/log.component';\r\nimport {\r\n\tLogsComponent\r\n} from '@admin/components/system/logs/logs.component';\r\nimport {\r\n\tMaintenanceComponent\r\n} from '@admin/components/system/maintenance/maintenance.component';\r\nimport {\r\n\tTestBuilderComponent\r\n} from '@admin/components/system/test-builder/test-builder.component';\r\nimport {\r\n\tDefaultsComponent\r\n} from '@admin/components/user-interface/defaults/defaults.component';\r\nimport {\r\n\tDisplayDefinitionsComponent\r\n} from '@admin/components/user-interface/display-components/display-definitions/display-definitions.component';\r\nimport {\r\n\tDisplayManagementExpandComponent\r\n} from '@admin/components/user-interface/display-components/display-management/display-management-expand/display-management-expand.component';\r\nimport {\r\n\tDisplayManagementComponent\r\n} from '@admin/components/user-interface/display-components/display-management/display-management.component';\r\nimport {\r\n\tLogosComponent\r\n} from '@admin/components/user-interface/logos/logos.component';\r\nimport {\r\n\tOperationDefinitionsComponent\r\n} from '@admin/components/user-interface/operations/operation-definitions/operation-definitions.component';\r\nimport {\r\n\tOperationDefinitionComponent\r\n} from '@admin/components/user-interface/operations/operation-definitions/operation-expand/operation-definition.component';\r\nimport {\r\n\tOperationGroupCreateChildComponent\r\n} from '@admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group-create/operation-group-create-child.component';\r\nimport {\r\n\tOperationGroupComponent\r\n} from '@admin/components/user-interface/operations/operation-groups/operation-group-expand/operation-group.component';\r\nimport {\r\n\tOperationGroupsComponent\r\n} from '@admin/components/user-interface/operations/operation-groups/operation-groups.component';\r\nimport {\r\n\tStylesComponent\r\n} from '@admin/components/user-interface/styles/styles.component';\r\nimport {\r\n\tActionDefinitionRouterComponent\r\n} from '@admin/components/workflow-engine/action-definitions/action-definition-router.component';\r\nimport {\r\n\tActionDefinitionComponent\r\n} from '@admin/components/workflow-engine/action-definitions/action-definition/action-definition.component';\r\nimport {\r\n\tActionDefinitionExpandComponent\r\n} from '@admin/components/workflow-engine/action-definitions/action-definitions/action-definition-expand/action-definition-expand.component';\r\nimport {\r\n\tActionDefinitionsComponent\r\n} from '@admin/components/workflow-engine/action-definitions/action-definitions/action-definitions.component';\r\nimport {\r\n\tActionExecutionHistoryComponent\r\n} from '@admin/components/workflow-engine/action-execution-history/action-execution-history.component';\r\nimport {\r\n\tActionHistoryExpandComponent\r\n} from '@admin/components/workflow-engine/action-execution-history/action-history-expand/action-history-expand.component';\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntitySearchComponent\r\n} from '@entity/components/entity-search/entity-search.component';\r\nimport {\r\n\tEntityComponent\r\n} from '@entity/entity.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tActionDefinitionComponent,\r\n\t\tActionDefinitionExpandComponent,\r\n\t\tActionDefinitionRouterComponent,\r\n\t\tActionDefinitionsComponent,\r\n\t\tActionExecutionHistoryComponent,\r\n\t\tActionHistoryExpandComponent,\r\n\t\tAdminComponent,\r\n\t\tApplicationsComponent,\r\n\t\tDefaultsComponent,\r\n\t\tDisplayDefinitionsComponent,\r\n\t\tDisplayManagementComponent,\r\n\t\tDisplayManagementExpandComponent,\r\n\t\tEntityAccessPoliciesComponent,\r\n\t\tEntityAccessPolicyDefinitionComponent,\r\n\t\tEntityActionsComponent,\r\n\t\tEntityActionDefinitionComponent,\r\n\t\tEntityDefinitionsComponent,\r\n\t\tEntityLayoutsComponent,\r\n\t\tEntityLayoutDefinitionComponent,\r\n\t\tEntityManagerSearchComponent,\r\n\t\tEntityOverviewComponent,\r\n\t\tEntityRulesComponent,\r\n\t\tEntityRuleDefinitionComponent,\r\n\t\tEntityRulePresentationComponent,\r\n\t\tEntityRuleWorkflowComponent,\r\n\t\tEntityRuleValidationsComponent,\r\n\t\tLogComponent,\r\n\t\tLogosComponent,\r\n\t\tLogsComponent,\r\n\t\tMaintenanceComponent,\r\n\t\tManageUserGroupsComponent,\r\n\t\tManageUserGroupComponent,\r\n\t\tManageUsersComponent,\r\n\t\tManageUserComponent,\r\n\t\tOperationDefinitionComponent,\r\n\t\tOperationDefinitionsComponent,\r\n\t\tOperationGroupComponent,\r\n\t\tOperationGroupCreateChildComponent,\r\n\t\tOperationGroupsComponent,\r\n\t\tSessionComponent,\r\n\t\tSessionEventsComponent,\r\n\t\tSessionsComponent,\r\n\t\tStylesComponent,\r\n\t\tTestBuilderComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'admin',\r\n\t\t\t\tcomponent: AdminComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.adminModuleAccess,\r\n\t\t\t\t\t\tAppConstants.securityGroups.administrators\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.users,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.administrators\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'entities',\r\n\t\t\t\t\t\tcomponent: EntityComponent,\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/view/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: ':displayComponent/create',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\tcomponent: EntitySearchComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'entity',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'search',\r\n\t\t\t\t\t\t\t\tcomponent: EntityManagerSearchComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'definition/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityDefinitionsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'definition/overview/view/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityOverviewComponent,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'layouts/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityLayoutsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'layoutDefinition/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityLayoutDefinitionComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'actions/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityActionsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'actionDefinition/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityActionDefinitionComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'accessPolicies/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityAccessPoliciesComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'accessPolicyDefinition/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityAccessPolicyDefinitionComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'rules/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityRulesComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'ruleDefinition/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityRuleDefinitionComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'ruleWorkflow/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityRuleWorkflowComponent,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'ruleValidations/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityRuleValidationsComponent,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'rulePresentation/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityRulePresentationComponent,\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'security',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'applications',\r\n\t\t\t\t\t\t\t\tcomponent: ApplicationsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'sessionEvents',\r\n\t\t\t\t\t\t\t\tcomponent: SessionEventsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'sessions',\r\n\t\t\t\t\t\t\t\tcomponent: SessionsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'users',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'groups',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: ManageUserGroupsComponent\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'manage',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: ManageUsersComponent\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'system',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'logs',\r\n\t\t\t\t\t\t\t\tcomponent: LogsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'maintenance',\r\n\t\t\t\t\t\t\t\tcomponent: MaintenanceComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'testBuilder',\r\n\t\t\t\t\t\t\t\tcomponent: TestBuilderComponent\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'userInterface',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'defaults',\r\n\t\t\t\t\t\t\t\tcomponent: DefaultsComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'logos',\r\n\t\t\t\t\t\t\t\tcomponent: LogosComponent\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'operations',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'definitions',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: OperationDefinitionsComponent\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'groups',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: OperationGroupsComponent\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'displayComponents',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'definitions',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: DisplayDefinitionsComponent\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'management',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: DisplayManagementComponent\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'styles',\r\n\t\t\t\t\t\t\t\tcomponent: StylesComponent\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'workflowEngine',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'actions',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'definitions',\r\n\t\t\t\t\t\t\t\t\t\tcomponent:\r\n\t\t\t\t\t\t\t\t\t\t\tActionDefinitionRouterComponent,\r\n\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpath: ':id',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tActionDefinitionComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tActionDefinitionsComponent\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tActionDefinitionsComponent\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: 'executionHistory',\r\n\t\t\t\t\t\t\t\t\t\tcomponent:\r\n\t\t\t\t\t\t\t\t\t\t\tActionExecutionHistoryComponent\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold admin route specific\r\n * logic and display resources.\r\n *\r\n * @export\r\n * @class AdminModule\r\n */\r\nexport class AdminModule\r\n{\r\n}","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport const NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n","import { Subject } from '../Subject';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\nconst DEFAULT_CONFIG = {\n connector: () => new Subject(),\n};\nexport function connect(selector, config = DEFAULT_CONFIG) {\n const { connector } = config;\n return operate((source, subscriber) => {\n const subject = connector();\n innerFrom(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n","import { Observable } from '../Observable';\nexport function fromSubscribable(subscribable) {\n return new Observable((subscriber) => subscribable.subscribe(subscriber));\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, NgZone, ApplicationRef, makeEnvironmentProviders, PLATFORM_ID, APP_INITIALIZER, Injector, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { defer, throwError, fromEvent, of, concat, Subject, NEVER, merge } from 'rxjs';\nimport { map, filter, switchMap, publish, take, tap, delay } from 'rxjs/operators';\n\nconst ERR_SW_NOT_SUPPORTED = 'Service workers are disabled or not supported by this browser';\nfunction errorObservable(message) {\n return defer(() => throwError(new Error(message)));\n}\n/**\n * @publicApi\n */\nclass NgswCommChannel {\n constructor(serviceWorker) {\n this.serviceWorker = serviceWorker;\n if (!serviceWorker) {\n this.worker = this.events = this.registration = errorObservable(ERR_SW_NOT_SUPPORTED);\n }\n else {\n const controllerChangeEvents = fromEvent(serviceWorker, 'controllerchange');\n const controllerChanges = controllerChangeEvents.pipe(map(() => serviceWorker.controller));\n const currentController = defer(() => of(serviceWorker.controller));\n const controllerWithChanges = concat(currentController, controllerChanges);\n this.worker = controllerWithChanges.pipe(filter((c) => !!c));\n this.registration = (this.worker.pipe(switchMap(() => serviceWorker.getRegistration())));\n const rawEvents = fromEvent(serviceWorker, 'message');\n const rawEventPayload = rawEvents.pipe(map(event => event.data));\n const eventsUnconnected = rawEventPayload.pipe(filter(event => event && event.type));\n const events = eventsUnconnected.pipe(publish());\n events.connect();\n this.events = events;\n }\n }\n postMessage(action, payload) {\n return this.worker\n .pipe(take(1), tap((sw) => {\n sw.postMessage({\n action,\n ...payload,\n });\n }))\n .toPromise()\n .then(() => undefined);\n }\n postMessageWithOperation(type, payload, operationNonce) {\n const waitForOperationCompleted = this.waitForOperationCompleted(operationNonce);\n const postMessage = this.postMessage(type, payload);\n return Promise.all([postMessage, waitForOperationCompleted]).then(([, result]) => result);\n }\n generateNonce() {\n return Math.round(Math.random() * 10000000);\n }\n eventsOfType(type) {\n let filterFn;\n if (typeof type === 'string') {\n filterFn = (event) => event.type === type;\n }\n else {\n filterFn = (event) => type.includes(event.type);\n }\n return this.events.pipe(filter(filterFn));\n }\n nextEventOfType(type) {\n return this.eventsOfType(type).pipe(take(1));\n }\n waitForOperationCompleted(nonce) {\n return this.eventsOfType('OPERATION_COMPLETED')\n .pipe(filter(event => event.nonce === nonce), take(1), map(event => {\n if (event.result !== undefined) {\n return event.result;\n }\n throw new Error(event.error);\n }))\n .toPromise();\n }\n get isEnabled() {\n return !!this.serviceWorker;\n }\n}\n\n/**\n * Subscribe and listen to\n * [Web Push\n * Notifications](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices) through\n * Angular Service Worker.\n *\n * @usageNotes\n *\n * You can inject a `SwPush` instance into any component or service\n * as a dependency.\n *\n * \n *\n * To subscribe, call `SwPush.requestSubscription()`, which asks the user for permission.\n * The call returns a `Promise` with a new\n * [`PushSubscription`](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)\n * instance.\n *\n * \n *\n * A request is rejected if the user denies permission, or if the browser\n * blocks or does not support the Push API or ServiceWorkers.\n * Check `SwPush.isEnabled` to confirm status.\n *\n * Invoke Push Notifications by pushing a message with the following payload.\n *\n * ```ts\n * {\n * \"notification\": {\n * \"actions\": NotificationAction[],\n * \"badge\": USVString,\n * \"body\": DOMString,\n * \"data\": any,\n * \"dir\": \"auto\"|\"ltr\"|\"rtl\",\n * \"icon\": USVString,\n * \"image\": USVString,\n * \"lang\": DOMString,\n * \"renotify\": boolean,\n * \"requireInteraction\": boolean,\n * \"silent\": boolean,\n * \"tag\": DOMString,\n * \"timestamp\": DOMTimeStamp,\n * \"title\": DOMString,\n * \"vibrate\": number[]\n * }\n * }\n * ```\n *\n * Only `title` is required. See `Notification`\n * [instance\n * properties](https://developer.mozilla.org/en-US/docs/Web/API/Notification#Instance_properties).\n *\n * While the subscription is active, Service Worker listens for\n * [PushEvent](https://developer.mozilla.org/en-US/docs/Web/API/PushEvent)\n * occurrences and creates\n * [Notification](https://developer.mozilla.org/en-US/docs/Web/API/Notification)\n * instances in response.\n *\n * Unsubscribe using `SwPush.unsubscribe()`.\n *\n * An application can subscribe to `SwPush.notificationClicks` observable to be notified when a user\n * clicks on a notification. For example:\n *\n * \n *\n * You can read more on handling notification clicks in the [Service worker notifications\n * guide](guide/service-worker-notifications).\n *\n * @see [Push Notifications](https://developers.google.com/web/fundamentals/codelabs/push-notifications/)\n * @see [Angular Push Notifications](https://blog.angular-university.io/angular-push-notifications/)\n * @see [MDN: Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API)\n * @see [MDN: Notifications API](https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API)\n * @see [MDN: Web Push API Notifications best practices](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices)\n *\n * @publicApi\n */\nclass SwPush {\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n constructor(sw) {\n this.sw = sw;\n this.pushManager = null;\n this.subscriptionChanges = new Subject();\n if (!sw.isEnabled) {\n this.messages = NEVER;\n this.notificationClicks = NEVER;\n this.subscription = NEVER;\n return;\n }\n this.messages = this.sw.eventsOfType('PUSH').pipe(map(message => message.data));\n this.notificationClicks =\n this.sw.eventsOfType('NOTIFICATION_CLICK').pipe(map((message) => message.data));\n this.pushManager = this.sw.registration.pipe(map(registration => registration.pushManager));\n const workerDrivenSubscriptions = this.pushManager.pipe(switchMap(pm => pm.getSubscription()));\n this.subscription = merge(workerDrivenSubscriptions, this.subscriptionChanges);\n }\n /**\n * Subscribes to Web Push Notifications,\n * after requesting and receiving user permission.\n *\n * @param options An object containing the `serverPublicKey` string.\n * @returns A Promise that resolves to the new subscription object.\n */\n requestSubscription(options) {\n if (!this.sw.isEnabled || this.pushManager === null) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const pushOptions = { userVisibleOnly: true };\n let key = this.decodeBase64(options.serverPublicKey.replace(/_/g, '/').replace(/-/g, '+'));\n let applicationServerKey = new Uint8Array(new ArrayBuffer(key.length));\n for (let i = 0; i < key.length; i++) {\n applicationServerKey[i] = key.charCodeAt(i);\n }\n pushOptions.applicationServerKey = applicationServerKey;\n return this.pushManager.pipe(switchMap(pm => pm.subscribe(pushOptions)), take(1))\n .toPromise()\n .then(sub => {\n this.subscriptionChanges.next(sub);\n return sub;\n });\n }\n /**\n * Unsubscribes from Service Worker push notifications.\n *\n * @returns A Promise that is resolved when the operation succeeds, or is rejected if there is no\n * active subscription or the unsubscribe operation fails.\n */\n unsubscribe() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const doUnsubscribe = (sub) => {\n if (sub === null) {\n throw new Error('Not subscribed to push notifications.');\n }\n return sub.unsubscribe().then(success => {\n if (!success) {\n throw new Error('Unsubscribe failed!');\n }\n this.subscriptionChanges.next(null);\n });\n };\n return this.subscription.pipe(take(1), switchMap(doUnsubscribe)).toPromise();\n }\n decodeBase64(input) {\n return atob(input);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwPush, deps: [{ token: NgswCommChannel }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwPush, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: NgswCommChannel }] });\n\n/**\n * Subscribe to update notifications from the Service Worker, trigger update\n * checks, and forcibly activate updates.\n *\n * @see {@link guide/service-worker-communications Service worker communication guide}\n *\n * @publicApi\n */\nclass SwUpdate {\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n constructor(sw) {\n this.sw = sw;\n if (!sw.isEnabled) {\n this.versionUpdates = NEVER;\n this.unrecoverable = NEVER;\n return;\n }\n this.versionUpdates = this.sw.eventsOfType([\n 'VERSION_DETECTED',\n 'VERSION_INSTALLATION_FAILED',\n 'VERSION_READY',\n 'NO_NEW_VERSION_DETECTED',\n ]);\n this.unrecoverable = this.sw.eventsOfType('UNRECOVERABLE_STATE');\n }\n /**\n * Checks for an update and waits until the new version is downloaded from the server and ready\n * for activation.\n *\n * @returns a promise that\n * - resolves to `true` if a new version was found and is ready to be activated.\n * - resolves to `false` if no new version was found\n * - rejects if any error occurs\n */\n checkForUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('CHECK_FOR_UPDATES', { nonce }, nonce);\n }\n /**\n * Updates the current client (i.e. browser tab) to the latest version that is ready for\n * activation.\n *\n * In most cases, you should not use this method and instead should update a client by reloading\n * the page.\n *\n *
    \n *\n * Updating a client without reloading can easily result in a broken application due to a version\n * mismatch between the [application shell](guide/glossary#app-shell) and other page resources,\n * such as [lazy-loaded chunks](guide/glossary#lazy-loading), whose filenames may change between\n * versions.\n *\n * Only use this method, if you are certain it is safe for your specific use case.\n *\n *
    \n *\n * @returns a promise that\n * - resolves to `true` if an update was activated successfully\n * - resolves to `false` if no update was available (for example, the client was already on the\n * latest version).\n * - rejects if any error occurs\n */\n activateUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('ACTIVATE_UPDATE', { nonce }, nonce);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwUpdate, deps: [{ token: NgswCommChannel }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwUpdate }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: SwUpdate, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: NgswCommChannel }] });\n\n/*!\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SCRIPT = new InjectionToken('NGSW_REGISTER_SCRIPT');\nfunction ngswAppInitializer(injector, script, options, platformId) {\n return () => {\n if (!(isPlatformBrowser(platformId) && ('serviceWorker' in navigator) &&\n options.enabled !== false)) {\n return;\n }\n // Wait for service worker controller changes, and fire an INITIALIZE action when a new SW\n // becomes active. This allows the SW to initialize itself even if there is no application\n // traffic.\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n if (navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({ action: 'INITIALIZE' });\n }\n });\n let readyToRegister$;\n if (typeof options.registrationStrategy === 'function') {\n readyToRegister$ = options.registrationStrategy();\n }\n else {\n const [strategy, ...args] = (options.registrationStrategy || 'registerWhenStable:30000').split(':');\n switch (strategy) {\n case 'registerImmediately':\n readyToRegister$ = of(null);\n break;\n case 'registerWithDelay':\n readyToRegister$ = delayWithTimeout(+args[0] || 0);\n break;\n case 'registerWhenStable':\n readyToRegister$ = !args[0] ? whenStable(injector) :\n merge(whenStable(injector), delayWithTimeout(+args[0]));\n break;\n default:\n // Unknown strategy.\n throw new Error(`Unknown ServiceWorker registration strategy: ${options.registrationStrategy}`);\n }\n }\n // Don't return anything to avoid blocking the application until the SW is registered.\n // Also, run outside the Angular zone to avoid preventing the app from stabilizing (especially\n // given that some registration strategies wait for the app to stabilize).\n // Catch and log the error if SW registration fails to avoid uncaught rejection warning.\n const ngZone = injector.get(NgZone);\n ngZone.runOutsideAngular(() => readyToRegister$.pipe(take(1)).subscribe(() => navigator.serviceWorker.register(script, { scope: options.scope })\n .catch(err => console.error('Service worker registration failed with:', err))));\n };\n}\nfunction delayWithTimeout(timeout) {\n return of(null).pipe(delay(timeout));\n}\nfunction whenStable(injector) {\n const appRef = injector.get(ApplicationRef);\n return appRef.isStable.pipe(filter(stable => stable));\n}\nfunction ngswCommChannelFactory(opts, platformId) {\n return new NgswCommChannel(isPlatformBrowser(platformId) && opts.enabled !== false ? navigator.serviceWorker :\n undefined);\n}\n/**\n * Token that can be used to provide options for `ServiceWorkerModule` outside of\n * `ServiceWorkerModule.register()`.\n *\n * You can use this token to define a provider that generates the registration options at runtime,\n * for example via a function call:\n *\n * {@example service-worker/registration-options/module.ts region=\"registration-options\"\n * header=\"app.module.ts\"}\n *\n * @publicApi\n */\nclass SwRegistrationOptions {\n}\n/**\n * @publicApi\n *\n * Sets up providers to register the given Angular Service Worker script.\n *\n * If `enabled` is set to `false` in the given options, the module will behave as if service\n * workers are not supported by the browser, and the service worker will not be registered.\n *\n * Example usage:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideServiceWorker('ngsw-worker.js')\n * ],\n * });\n * ```\n */\nfunction provideServiceWorker(script, options = {}) {\n return makeEnvironmentProviders([\n SwPush,\n SwUpdate,\n { provide: SCRIPT, useValue: script },\n { provide: SwRegistrationOptions, useValue: options },\n {\n provide: NgswCommChannel,\n useFactory: ngswCommChannelFactory,\n deps: [SwRegistrationOptions, PLATFORM_ID]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: ngswAppInitializer,\n deps: [Injector, SCRIPT, SwRegistrationOptions, PLATFORM_ID],\n multi: true,\n },\n ]);\n}\n\n/**\n * @publicApi\n */\nclass ServiceWorkerModule {\n /**\n * Register the given Angular Service Worker script.\n *\n * If `enabled` is set to `false` in the given options, the module will behave as if service\n * workers are not supported by the browser, and the service worker will not be registered.\n */\n static register(script, options = {}) {\n return {\n ngModule: ServiceWorkerModule,\n providers: [provideServiceWorker(script, options)],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: ServiceWorkerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.7\", ngImport: i0, type: ServiceWorkerModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: ServiceWorkerModule, providers: [SwPush, SwUpdate] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.7\", ngImport: i0, type: ServiceWorkerModule, decorators: [{\n type: NgModule,\n args: [{ providers: [SwPush, SwUpdate] }]\n }] });\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ServiceWorkerModule, SwPush, SwRegistrationOptions, SwUpdate, provideServiceWorker };\n","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { connect } from './connect';\nexport function publish(selector) {\n return selector ? (source) => connect(selector)(source) : (source) => multicast(new Subject())(source);\n}\n","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\nexport function multicast(subjectOrSubjectFactory, selector) {\n const subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : () => subjectOrSubjectFactory;\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n return (source) => new ConnectableObservable(source, subjectFactory);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable,\r\n\tOnDestroy,\r\n\tRendererFactory2\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIIntervalService\r\n} from '@shared/interfaces/application-objects/interval-service.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tObservable,\r\n\tSubject,\r\n\tSubscription,\r\n\tinterval,\r\n\tthrottleTime\r\n} from 'rxjs';\r\n\r\n/**\r\n * A singleton class that handles session refresh interactions with a logged\r\n * in user.\r\n *\r\n * @export\r\n * @class SessionRefreshService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SessionRefreshService implements IIntervalService, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of a session refresh service.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service used to refresh a server connection.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used to track server settings for timeouts.\r\n\t * @param {RendererFactory2} rendererFactory\r\n\t * The renderer factory used to insert an inline script.\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly rendererFactory: RendererFactory2)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the final url characters used for a session refresh query.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tpublic static readonly refreshApiEndpoint: string =\r\n\t\t'/entityInstances/Systems/1';\r\n\r\n\t/**\r\n\t * Gets or sets the subject that will watch for debounced and throttled\r\n\t * reset calls to limit API queries.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate resetIntervalsCalled: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the server refresh session interval.\r\n\t *\r\n\t * @type {Observable}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate serverRefreshInterval: Observable;\r\n\r\n\t/**\r\n\t * Gets or sets the client refresh interval.\r\n\t *\r\n\t * @type {Observable}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate clientLogoutInterval: Observable;\r\n\r\n\t/**\r\n\t * Gets or sets the client notification interval.\r\n\t *\r\n\t * @type {Observable}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate clientNotificationInterval: Observable;\r\n\r\n\t/**\r\n\t * Gets or sets the server refresh session subscriber.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate serverRefreshSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets the client refresh session subscriber.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate clientLogoutSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets the client notification subscription that will send\r\n\t * the client session refresh message.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate clientNotificationSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Gets or sets the length of a server session before a timeout in\r\n\t * milliseconds.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate serverExpirationInterval: number;\r\n\r\n\t/**\r\n\t * Gets or sets the length of a clent session before a timeout in\r\n\t * milliseconds.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate clientExpirationInterval: number;\r\n\r\n\t/**\r\n\t * Gets the number of milliseconds before the server refresh timer\r\n\t * will fire a refresh API call.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\t private readonly serverRefreshTime: number =\r\n\t\t60 * AppConstants.time.oneSecond;\r\n\r\n\t/**\r\n\t * Gets the number of seconds before the client refresh timer\r\n\t * will expire to show an idle notification.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate readonly clientNotificationTime: number =\r\n\t\t120 * AppConstants.time.oneSecond;\r\n\r\n\t/**\r\n\t * Gets the number of seconds to throttle between reset interval\r\n\t * actions to limit api queries.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate readonly resetThrottleTime: number =\r\n\t\t30 * AppConstants.time.oneSecond;\r\n\r\n\t/**\r\n\t * Gets an inline javascript function that will handle the timer portion\r\n\t * of the notification message.\r\n\t * See: https://www.w3schools.com/howto/howto_js_countdown.asp\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate readonly inlineTimerScript: string =\r\n\t\t`\r\n\t\tvar offset = 2 * 60000;\r\n\t\tvar countDownDate = new Date(new Date().getTime() + offset);\r\n\r\n\t\tvar interval =\r\n\t\t\tsetInterval(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tvar now = new Date().getTime();\r\n\t\t\t\t\tvar distance = countDownDate - now;\r\n\r\n\t\t\t\t\tvar minutes = Math.floor(\r\n\t\t\t\t\t\t(distance % (1000 * 60 * 60)) / (1000 * 60));\r\n\t\t\t\t\tvar seconds = Math.floor(\r\n\t\t\t\t\t\t(distance % (1000 * 60)) / 1000);\r\n\r\n\t\t\t\t\tvar timerElement = document.getElementById(\"timer\");\r\n\t\t\t\t\tif (timerElement != null)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttimerElement.innerHTML =\r\n\t\t\t\t\t\t\tminutes + \" minute\"\r\n\t\t\t\t\t\t\t\t+ ((minutes > 1)\r\n\t\t\t\t\t\t\t\t\t? \"s\"\r\n\t\t\t\t\t\t\t\t\t: \"\")\r\n\t\t\t\t\t\t\t\t+ ((seconds > 0)\r\n\t\t\t\t\t\t\t\t\t? \" and \" + seconds + \" seconds\"\r\n\t\t\t\t\t\t\t\t\t: \"\")\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t1000);\r\n\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tclearInterval(interval);\r\n\t\t\t\t},\r\n\t\t\t\toffset);\r\n\t\t`;\r\n\r\n\t/**\r\n\t * Gets the parsed system id used when querying the entity instance\r\n\t * api service.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate get systemId(): number\r\n\t{\r\n\t\treturn parseInt(\r\n\t\t\tAppConstants.systemId,\r\n\t\t\tAppConstants.parseRadix);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy interface.\r\n\t * This completes any intervals and subscriptions.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.resetIntervalsCalled.complete();\r\n\t\tthis.stop();\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the session refresh service.\r\n\t *\r\n\t * @param {number} serviceInterval\r\n\t * The interval in milliseconds to wait between checking for a client\r\n\t * side session refresh.\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tpublic start(\r\n\t\tserviceInterval: number): void\r\n\t{\r\n\t\tthis.stop();\r\n\r\n\t\tthis.serverExpirationInterval =\r\n\t\t\tthis.sessionService.expiry.totalMilliSeconds;\r\n\t\tthis.clientExpirationInterval = serviceInterval;\r\n\r\n\t\tif (this.clientExpirationInterval <= this.clientNotificationTime)\r\n\t\t{\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'The value of the \\'clientExirationInterval\\' in settings '\r\n\t\t\t\t\t+ 'is less than the interval for refresh notifications. '\r\n\t\t\t\t\t+ 'Please increase the client expiration interval to a '\r\n\t\t\t\t\t+ 'value greater than two minutes.');\r\n\t\t}\r\n\r\n\t\tthis.setupRefreshConditions();\r\n\r\n\t\t// Handle calls from external sources signifying that the interval\r\n\t\t// timers can be reset.\r\n\t\tthis.resetIntervalsCalled?.complete();\r\n\t\tthis.resetIntervalsCalled = new Subject();\r\n\t\tthis.resetIntervalsCalled.pipe(\r\n\t\t\tthrottleTime(this.resetThrottleTime))\r\n\t\t\t.subscribe(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t\tthis.setupRefreshConditions();\r\n\t\t\t\t});\r\n\r\n\t\t// Force a clean interval timer on start.\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.get(this.systemId)\r\n\t\t\t.then(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.resetIntervalsCalled.next();\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Stops the service.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tpublic stop(): void\r\n\t{\r\n\t\tthis.serverRefreshSubscription?.unsubscribe();\r\n\t\tthis.clientLogoutSubscription?.unsubscribe();\r\n\t\tthis.clientNotificationSubscription?.unsubscribe();\r\n\t\tthis.serverRefreshInterval = null;\r\n\t\tthis.clientLogoutInterval = null;\r\n\t\tthis.clientNotificationInterval = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a call to reset intervals from outside sources that update\r\n\t * server and client timeout intervals.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tpublic resetIntervals(): void\r\n\t{\r\n\t\tthis.resetIntervalsCalled.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Queries the API service to refresh the current expiration token.\r\n\t * @note This particular API request will not call reset intervals as\r\n\t * the selected refresh query call. See: Http Interceptor.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate refreshServerConnection(): void\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\tthis.entityInstanceApiService.get(\r\n\t\t\tthis.systemId);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles setting up refresh conditions based on the server, client, and\r\n\t * notification timers.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate setupRefreshConditions(): void\r\n\t{\r\n\t\tthis.serverRefreshInterval =\r\n\t\t\tinterval(\r\n\t\t\t\tthis.serverExpirationInterval - this.serverRefreshTime);\r\n\t\tthis.serverRefreshSubscription =\r\n\t\t\tthis.serverRefreshInterval\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.handleServerRefresh();\r\n\t\t\t\t\t});\r\n\r\n\t\tthis.clientNotificationInterval =\r\n\t\t\tinterval(\r\n\t\t\t\tthis.clientExpirationInterval - this.clientNotificationTime);\r\n\t\tthis.clientNotificationSubscription =\r\n\t\t\tthis.clientNotificationInterval\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.handleClientNotification();\r\n\t\t\t\t\t});\r\n\r\n\t\tthis.clientLogoutInterval =\r\n\t\t\tinterval(this.clientExpirationInterval);\r\n\t\tthis.clientLogoutSubscription =\r\n\t\t\tthis.clientLogoutInterval\r\n\t\t\t\t.subscribe(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.handleClientExpiration();\r\n\t\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks conditional logic to determine if a server refresh is required.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate handleServerRefresh(): void\r\n\t{\r\n\t\tthis.refreshServerConnection();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks conditional logic to determine actions if the client keep alive\r\n\t * has expired.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate handleClientExpiration(): void\r\n\t{\r\n\t\tthis.stop();\r\n\t\tthis.sessionService.logOut();\r\n\r\n\t\tEventHelper.dispatchLoginMessageEvent(\r\n\t\t\tAppConstants.messages.sessionExpired,\r\n\t\t\tAppConstants.messages.pleaseEnterCredentials,\r\n\t\t\tAppConstants.messageLevel.error);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks conditional logic to determine if a client notification\r\n\t * is required due to an approaching timeout.\r\n\t *\r\n\t * @memberof SessionRefreshService\r\n\t */\r\n\tprivate handleClientNotification(): void\r\n\t{\r\n\t\tEventHelper.dispatchFullScreenBannerEvent(\r\n\t\t\t'Session Expiring',\r\n\t\t\t'Please click here '\r\n\t\t\t\t+ 'to confirm you are still '\r\n\t\t\t\t+ 'active. This session will expire in '\r\n\t\t\t\t+ 'two minutes.',\r\n\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t[\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Session Refreshed.',\r\n\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\tdetails: 'Thank you for confirming your activity.'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.handleServerRefresh();\r\n\t\t\t\t\t\t\tthis.resetIntervals();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t]);\r\n\r\n\t\tconst renderer =\r\n\t\t\tthis.rendererFactory\r\n\t\t\t\t.createRenderer(\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull);\r\n\t\tconst inlineScript =\r\n\t\t\trenderer.createElement(\r\n\t\t\t\tAppConstants.documentElementTypes.script);\r\n\t\tinlineScript.type = AppConstants.scriptTypes.javascript;\r\n\t\tinlineScript.text = this.inlineTimerScript;\r\n\t\trenderer.appendChild(\r\n\t\t\tdocument.body,\r\n\t\t\tinlineScript);\r\n\t}\r\n}","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler = asyncScheduler, config) {\n const duration$ = timer(duration, scheduler);\n return throttle(() => duration$, config);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate((source, subscriber) => {\n const { leading = true, trailing = false } = config !== null && config !== void 0 ? config : {};\n let hasValue = false;\n let sendValue = null;\n let throttled = null;\n let isComplete = false;\n const endThrottling = () => {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n const cleanupThrottling = () => {\n throttled = null;\n isComplete && subscriber.complete();\n };\n const startThrottle = (value) => (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n const send = () => {\n if (hasValue) {\n hasValue = false;\n const value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, () => {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n","
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener,\r\n\tInjectable,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tClientMessage\r\n} from '@shared/implementations/application-data/client-message';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tReallySimpleSyndicationFeedReaderService\r\n} from '@shared/services/really-simple-syndication-feed-reader.service';\r\nimport {\r\n\tRuleService\r\n} from '@shared/services/rule.service';\r\nimport {\r\n\tSessionRefreshService\r\n} from '@shared/services/session-refresh.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tWeatherForecastService\r\n} from '@shared/services/weather-forecast.service';\r\nimport {\r\n\tDateTime,\r\n\tSettings\r\n} from 'luxon';\r\nimport {\r\n\tMessage\r\n} from 'primeng/api';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n@Component({\r\n\tselector: 'app-login',\r\n\ttemplateUrl: './login.component.html',\r\n\tstyleUrls: [\r\n\t\t'./login.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class instance of the login component.\r\n *\r\n * @export\r\n * @class LoginComponent\r\n * @implements {OnInit}\r\n */\r\n@Injectable()\r\nexport class LoginComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of LoginComponent.\r\n\t *\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used in this login component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {StorageMap} storageMap\r\n\t * The storage map that is cleared on logout and login.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service that is cleared on logout and login.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service that is cleared on logout and login.\r\n\t * @param {OperationService} operationService\r\n\t * The operation service that is cleared on logout and login.\r\n\t * @param {RuleService} ruleService\r\n\t * The rule service that is cleared on logout and login.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service that is cleared on logout and login.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service that is cleared on logout and login.\r\n\t * @param {SessionService} sessionService\r\n\t * The sessions service used in this login component.\r\n\t * @param {SessionRefreshService} sessionRefreshService\r\n\t * The service that monitors for application updates.\r\n\t * @param {Router} router\r\n\t * The router used in this login component.\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic constructor (\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tprotected storageMap: StorageMap,\r\n\t\tprotected cacheService: CacheService,\r\n\t\tprotected displayComponentService: DisplayComponentService,\r\n\t\tprotected operationService: OperationService,\r\n\t\tprotected reallySimpleSindicationFeedReaderService:\r\n\t\t\tReallySimpleSyndicationFeedReaderService,\r\n\t\tprotected ruleService: RuleService,\r\n\t\tprotected entityService: EntityService,\r\n\t\tprotected powerBiApiService: PowerBiApiService,\r\n\t\tprotected weatherForecastService: WeatherForecastService,\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly sessionRefreshService: SessionRefreshService,\r\n\t\tprivate readonly router: Router)\r\n\t{\r\n\t\tthis.visible = true;\r\n\r\n\t\tif (this.sessionService.isValidLoggedInAndReady)\r\n\t\t{\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.router.navigate(\r\n\t\t\t\t[AppConstants.route.dashboardPage]);\r\n\r\n\t\t\t// Start interval based services.\r\n\t\t\tthis.sessionRefreshService\r\n\t\t\t\t.start(AppConfig.settings\r\n\t\t\t\t\t.clientExpirationInterval);\r\n\r\n\t\t\tSettings.defaultZone = this.sessionService.systemTimeZone;\r\n\t\t}\r\n\t\telse if (this.sessionService.shouldChangePassword)\r\n\t\t{\r\n\t\t\tthis.displayChangePassword();\r\n\r\n\t\t\t// Start interval based services.\r\n\t\t\tthis.sessionRefreshService\r\n\t\t\t\t.start(AppConfig.settings\r\n\t\t\t\t\t.clientExpirationInterval);\r\n\r\n\t\t\tSettings.defaultZone = this.sessionService.systemTimeZone;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.storageMap\r\n\t\t\t\t.clear()\r\n\t\t\t\t.subscribe(() => {\r\n\t\t\t\t\t// No implementation.\r\n\t\t\t\t});\r\n\t\t\tthis.cacheService\r\n\t\t\t\t.clearAllCaches();\r\n\t\t\tthis.powerBiApiService.accessTokenExpiry = DateTime.local();\r\n\t\t\tthis.powerBiApiService.accessTokenPromise = null;\r\n\r\n\t\t\tthis.displayComponentService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.operationService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.reallySimpleSindicationFeedReaderService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.ruleService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.entityService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.weatherForecastService\r\n\t\t\t\t.clearStoredVariables();\r\n\t\t\tthis.activityService\r\n\t\t\t\t.dismissAllActivities();\r\n\r\n\t\t\t// Stop interval based services.\r\n\t\t\tthis.sessionRefreshService.stop();\r\n\r\n\t\t\tSettings.defaultZone = DateHelper.getLocalTimeZone();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the current username context.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic userName: string;\r\n\r\n\t/**\r\n\t * Gets or sets the current visible value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic visible: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether to show the login dialog.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic showLogin: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether to show the verification page.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic showVerify: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether to show the reset user page.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic showResetUser: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether to show the change password page.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic showChangePassword: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets a collection of {Message} for login messaging.\r\n\t *\r\n\t * @public\r\n\t * @type {Message[]}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic loginMessages: Message[] = [];\r\n\r\n\t/**\r\n\t * Gets the message returned when clearing cookies and local storage\r\n\t * via the browser. This will log out the user and require a refresh and\r\n\t * login.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tprivate readonly clearedSiteDataMessage: string =\r\n\t\t'Failed to execute \\'transaction\\' on \\'IDBDatabase\\': '\r\n\t\t\t+ 'The database connection is closing.';\r\n\r\n\t/**\r\n\t * Adds a {Message} to the login messaging component from an\r\n\t * external source.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to display.\r\n\t * @memberof LoginComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.addLoginMessageEvent,\r\n\t\t[AppEventParameterConstants.clientMessage])\r\n\tpublic addLoginMessageEvent(\r\n\t\tclientMessage: ClientMessage): void\r\n\t{\r\n\t\tthis.addMessage(\r\n\t\t\tclientMessage.status,\r\n\t\t\tclientMessage.title,\r\n\t\t\tclientMessage.content);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Verifies the user if not in a valid session state.\r\n\t *\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\t// Waiting for session to be validated. Show verify page.\r\n\t\tif (this.sessionService.isLoggedIn\r\n\t\t\t&& !this.sessionService.isValid)\r\n\t\t{\r\n\t\t\tthis.displayVerify();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// User needs to change password. Show change password page.\r\n\t\tif (this.sessionService.shouldChangePassword)\r\n\t\t{\r\n\t\t\tthis.displayChangePassword();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a {Message} to the login messaging component.\r\n\t *\r\n\t * @param {string} level\r\n\t * The message level to display.\r\n\t * @param {string} title\r\n\t * The title to display.\r\n\t * @param {string} description\r\n\t * The description of the login message.\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic addMessage(\r\n\t\tlevel: string,\r\n\t\ttitle: string,\r\n\t\tdescription: string): void\r\n\t{\r\n\t\tthis.clearMessages();\r\n\r\n\t\tconst message: Message =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tseverity: level,\r\n\t\t\t\tsummary: title,\r\n\t\t\t\tdetail: description\r\n\t\t\t};\r\n\r\n\t\t// Handle cookie/local storage clears requiring a refresh.\r\n\t\tif (message.detail === this.clearedSiteDataMessage)\r\n\t\t{\r\n\t\t\tmessage.summary = 'Refresh Required';\r\n\t\t\tmessage.detail = 'Please refresh and login again.';\r\n\t\t}\r\n\r\n\t\tthis.loginMessages.push(message);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all {Message} from the login messaging component.\r\n\t *\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic clearMessages(): void\r\n\t{\r\n\t\tthis.loginMessages = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Display's the login dialog page.\r\n\t *\r\n\t * @param {string} [userName]\r\n\t * @param {string} [message]\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic displayLogin(\r\n\t\tuserName?: string,\r\n\t\tmessage: string = null): void\r\n\t{\r\n\t\tthis.userName = userName;\r\n\r\n\t\tthis.clearMessages();\r\n\r\n\t\tif (message)\r\n\t\t{\r\n\t\t\tthis.addMessage(\r\n\t\t\t\tAppConstants.messageLevel.success,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tmessage);\r\n\t\t}\r\n\r\n\t\tthis.showLogin = true;\r\n\t\tthis.showVerify = false;\r\n\t\tthis.showResetUser = false;\r\n\t\tthis.showChangePassword = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Display's the verification page.\r\n\t *\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic displayVerify(): void\r\n\t{\r\n\t\tthis.clearMessages();\r\n\r\n\t\tthis.showLogin = false;\r\n\t\tthis.showVerify = true;\r\n\t\tthis.showResetUser = false;\r\n\t\tthis.showChangePassword = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Display's the reset user page.\r\n\t *\r\n\t * @param {string} [userName]\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic displayResetUser(userName?: string): void\r\n\t{\r\n\t\tif (userName)\r\n\t\t{\r\n\t\t\tthis.userName = userName;\r\n\t\t}\r\n\r\n\t\tthis.clearMessages();\r\n\r\n\t\tthis.showLogin = false;\r\n\t\tthis.showVerify = false;\r\n\t\tthis.showResetUser = true;\r\n\t\tthis.showChangePassword = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Display's the change password page.\r\n\t *\r\n\t * @memberof LoginComponent\r\n\t */\r\n\tpublic displayChangePassword(): void\r\n\t{\r\n\t\tthis.clearMessages();\r\n\r\n\t\tthis.showLogin = false;\r\n\t\tthis.showVerify = false;\r\n\t\tthis.showResetUser = false;\r\n\t\tthis.showChangePassword = true;\r\n\t}\r\n}","\r\n\t\r\n\t\r\n\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t

    \r\n\t\t\t\t\tWelcome ({{this.userName()}})\r\n\t\t\t\t

    \r\n\t\t\t\t\r\n\t\t\t\t\tChange Password\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\tYour new password must contain at least:
    • At least {{getSecurityRestrictions()?.lowercase}} lowercase
    • At least {{getSecurityRestrictions()?.uppercase}} uppercase
    • At least {{getSecurityRestrictions()?.number}} numeric
    • At least{{getSecurityRestrictions()?.special}} special {{getPasswordSpecialCharacters()}}
    • Minimum {{getSecurityRestrictions()?.minimumLength}} characters
    • Maximum {{getSecurityRestrictions()?.maximumLength}} characters
    • Allowed Password Reuse: {{getSecurityRestrictions()?.allowPasswordReuse}}
    \"\r\n\t\t\t\t\t[escape]=\"false\">\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tPassword is invalid.\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInjectable,\r\n\tOnInit,\r\n\tViewChild,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tUntypedFormBuilder,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tShakeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tpasswordValidatorReactiveForms\r\n} from '@entity/entity-formly-definitions';\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n@Component({\r\n\tselector: 'app-login-change-password',\r\n\ttemplateUrl: './login-change-password.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tanimations: [\r\n\t\tShakeAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing an instance of the login change password component.\r\n *\r\n * @export\r\n * @class LoginChangePasswordComponent\r\n * @implements {OnInit}\r\n */\r\n@Injectable()\r\nexport class LoginChangePasswordComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of LoginChangePasswordComponent.\r\n\t *\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {SessionService} sessionService\r\n\t * The sessions service used in this login component.\r\n\t * @param {Router} router\r\n\t * The router used in this login component.\r\n\t * @param {LoginComponent} loginComponent\r\n\t * The primary login component.\r\n\t * @param {FormBuilder} formBuilder\r\n\t * Builds a form object.\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic loginComponent: LoginComponent,\r\n\t\tpublic readonly formBuilder: UntypedFormBuilder)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the new password element.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\t@ViewChild('newPassword', { static: false })\r\n\tpublic newPasswordElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the confirm password element.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\t@ViewChild('confirmPassword', { static: false })\r\n\tpublic confirmPasswordElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the user logged in.\r\n\t *\r\n\t * @type {IUser}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic user: IUser;\r\n\r\n\t/**\r\n\t * Gets or sets the system security object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic systemSecurity: any;\r\n\r\n\t/**\r\n\t * Gets or sets the system security object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the change password form group.\r\n\t *\r\n\t * @type {FormGroup}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic changePasswordForm: UntypedFormGroup;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether a form submit is in progress.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic submitInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets a {AbstractControl} representing the new password from the form.\r\n\t *\r\n\t * @public\r\n\t * @type {AbstractControl}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic get newPassword(): AbstractControl\r\n\t{\r\n\t\treturn this.changePasswordForm?.controls?.newPassword;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {AbstractControl} representing the confirm password from the form.\r\n\t *\r\n\t * @type {AbstractControl}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic get confirmPassword(): AbstractControl\r\n\t{\r\n\t\treturn this.changePasswordForm?.controls?.confirmPassword;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the system security restrictions to define a password.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic getSecurityRestrictions(): any\r\n\t{\r\n\t\treturn SecurityHelper.getSecurityRestrictions(\r\n\t\t\tthis.systemSecurity);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the allowed password special characters.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic getPasswordSpecialCharacters(): any\r\n\t{\r\n\t\treturn AppConstants.passwordSpecialCharacters;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the new password control has an invalid password value.\r\n\t *\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic hasInvalidPassword(): boolean\r\n\t{\r\n\t\treturn this.newPassword?.hasError('invalidPassword')\r\n\t\t\t&& this.newPassword?.touched;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines id the confirm button should be disabled.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic confirmIsDisabled(): boolean\r\n\t{\r\n\t\treturn !this.changePasswordForm.valid\r\n\t\t\t|| this.submitInProgress\r\n\t\t\t|| this.newPassword?.value !== this.confirmPassword?.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the userName from the user logged in.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic userName(): string\r\n\t{\r\n\t\treturn this.user.data.userName;\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tthis.user =\r\n\t\t\tthis.sessionService.user;\r\n\r\n\t\tawait this.setSystemSecurity();\r\n\r\n\t\tthis.changePasswordForm = this.formBuilder.group(\r\n\t\t\t{\r\n\t\t\t\t'newPassword':\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\tpasswordValidatorReactiveForms(\r\n\t\t\t\t\t\t\t\tthis.getSecurityRestrictions())\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t],\r\n\t\t\t\t'confirmPassword':\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t]\r\n\t\t\t});\r\n\r\n\t\tthis.loading = false;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.newPasswordElement.nativeElement.focus();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * On form cancel event.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic async cancel(): Promise\r\n\t{\r\n\t\tthis.sessionService.logOut();\r\n\t\tthis.loginComponent.displayLogin(this.userName());\r\n\t}\r\n\r\n\t/**\r\n\t * On form submit event.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic async changePassword(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.submitInProgress = true;\r\n\r\n\t\t\tawait this.sessionService.changePassword(\r\n\t\t\t\tthis.newPassword.value);\r\n\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\t\tconst user: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService.get(\r\n\t\t\t\t\tthis.sessionService.user.id);\r\n\r\n\t\t\tthis.sessionService.logOut();\r\n\r\n\t\t\tthis.loginComponent.displayLogin(\r\n\t\t\t\tuser.data.userName,\r\n\t\t\t\t'Your change password request was successful.');\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tif (exception.status === 404)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.warn,\r\n\t\t\t\t\tAppConstants.loginStatus.invalid,\r\n\t\t\t\t\t`Username '${this.userName}' not found.`);\r\n\r\n\t\t\t\tthis.changePasswordForm.controls.newPassword.reset();\r\n\t\t\t\tthis.changePasswordForm.controls.confirmPassword.reset();\r\n\r\n\t\t\t\tthis.newPasswordElement.nativeElement.focus();\r\n\t\t\t}\r\n\t\t\telse if (exception instanceof ApiError)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\texception.message,\r\n\t\t\t\t\texception.messages[0].messages[0]?.description);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\tAppConstants.loginStatus.failure,\r\n\t\t\t\t\texception.message);\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.submitInProgress = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the system security information.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof LoginChangePasswordComponent\r\n\t */\r\n\tpublic async setSystemSecurity(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.systemSecurity))\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\t\tconst systemEntityInstance: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.get(\r\n\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\t\tthis.systemSecurity =\r\n\t\t\t\tsystemEntityInstance.data.security;\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t

    \r\n\t\t\t\tWelcome Guest\r\n\t\t\t

    \r\n\t\t\t\r\n\t\t\t\tLog in to {{brandingName}}\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t\r\n\t\r\n
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInjectable,\r\n\tOnInit,\r\n\tViewChild,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormBuilder,\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tLoginMessageService\r\n} from '@appComponents/login/services/login-message.service';\r\nimport {\r\n\tShakeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSessionRefreshService\r\n} from '@shared/services/session-refresh.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n@Component({\r\n\tselector: 'app-login-dialog',\r\n\ttemplateUrl: './login-dialog.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tanimations: [\r\n\t\tShakeAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing an instance of the login dialog component.\r\n *\r\n * @export\r\n * @class LoginDialogComponent\r\n * @implements {OnInit}\r\n */\r\n@Injectable()\r\nexport class LoginDialogComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of LoginDialogComponent.\r\n\t *\r\n\t * @param {FormBuilder} formBuilder\r\n\t * The form builder for this component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service for this component.\r\n\t * @param {Router} router\r\n\t * The router for this component.\r\n\t * @param {LoggerService} logger\r\n\t * The logger service for this component.\r\n\t * @param {LoginComponent} loginComponent\r\n\t * The primary login component.\r\n\t * @param {LoginMessageService} loginMessageService\r\n\t * The login message service for this component.\r\n\t * @param {SessionRefreshService} sessionRefreshService\r\n\t * The session refresh service for this component.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly formBuilder: UntypedFormBuilder,\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly logger: LoggerService,\r\n\t\tprivate readonly loginComponent: LoginComponent,\r\n\t\tprivate readonly loginMessageService: LoginMessageService,\r\n\t\tprivate readonly sessionRefreshService: SessionRefreshService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the login form group.\r\n\t *\r\n\t * @public\r\n\t * @type {FormGroup}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic loginForm: UntypedFormGroup;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether a form submit is in progress.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic submitInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the branding name to be displayed on the login dialog.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic brandingName: string = AppConfig.settings.branding.name\r\n\t\t?? 'System';\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the login button is disabled.\r\n\t *\r\n\t * @type {boolean} A combination of status of whether the loginForm is valid\r\n\t * and submitInProgress.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic get loginIsDisabled(): boolean\r\n\t{\r\n\t\treturn !this.loginForm.valid || this.submitInProgress;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the userName element.\r\n\t *\r\n\t * @protected\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\t@ViewChild('userName', { static: true })\r\n\tprotected userNameElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets the password element.\r\n\t *\r\n\t * @protected\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\t@ViewChild('password')\r\n\tprotected passwordElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets the user name.\r\n\t *\r\n\t * @type {string} The current user name.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tprotected get userName(): string\r\n\t{\r\n\t\treturn this.loginForm.controls.userName.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the user name.\r\n\t *\r\n\t * @type {string} The current user name.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\t protected set userName(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tthis.loginForm.controls.userName.setValue(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the password.\r\n\t *\r\n\t * @type {string} The current password.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tprotected get password(): string\r\n\t{\r\n\t\treturn this.loginForm.controls.password.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the password.\r\n\t *\r\n\t * @type {string} The current password.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tprotected set password(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tthis.loginForm.controls.password.setValue(value);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Configures the login dialog.\r\n\t *\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.loginForm = this.formBuilder.group(\r\n\t\t\t{\r\n\t\t\t\t'userName': new UntypedFormControl(''),\r\n\t\t\t\t'password': new UntypedFormControl('')\r\n\t\t\t});\r\n\r\n\t\tif (this.loginComponent.userName)\r\n\t\t{\r\n\t\t\tthis.userName = this.loginComponent.userName;\r\n\t\t}\r\n\r\n\t\tthis.userNameElement.nativeElement.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Delegates to the LoginComponent to display the ResetUserComponent.\r\n\t *\r\n\t * @public\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic displayResetUser(): void\r\n\t{\r\n\t\tthis.loginComponent.displayResetUser(this.userName);\r\n\t}\r\n\r\n\t/**\r\n\t * Attempts to login via the API.\r\n\t *\r\n\t * @public\r\n\t * @returns {void}\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic async login(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.submitInProgress = true;\r\n\t\t\tawait this.sessionService.login(\r\n\t\t\t\tthis.userName,\r\n\t\t\t\tthis.password);\r\n\r\n\t\t\tthis.password = '';\r\n\t\t\tthis.loginMessageService.clear();\r\n\r\n\t\t\tif (this.sessionService.isMultiFactorEnabled\r\n\t\t\t\t&& !this.sessionService.isValid)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.displayVerify();\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.sessionRefreshService\r\n\t\t\t\t.start(AppConfig.settings\r\n\t\t\t\t\t.clientExpirationInterval);\r\n\r\n\t\t\tconst user: IUser = this.sessionService.user;\r\n\r\n\t\t\tif (user.data.security?.forcePasswordChange)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.displayChangePassword();\r\n\r\n\t\t\t\tthis.router.navigate([AppConstants.route.loginPage]);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.router.navigate([AppConstants.route.dashboardPage]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tconst apiError = exception;\r\n\t\t\tthis.logger.logWarning(\r\n\t\t\t\t`Login failure for user ${this.userName}.${apiError?.message}`);\r\n\r\n\t\t\tif (apiError)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.warn,\r\n\t\t\t\t\tapiError.status ===\r\n\t\t\t\t\t\tAppConstants.httpStatusCodes.unauthorized\r\n\t\t\t\t\t\t? AppConstants.loginStatus.invalid\r\n\t\t\t\t\t\t: AppConstants.loginStatus.failure,\r\n\t\t\t\t\tapiError.message);\r\n\t\t\t}\r\n\r\n\t\t\t// Reset password and provide focus for the user\r\n\t\t\t// To re-enter password\r\n\t\t\tthis.password = AppConstants.empty;\r\n\t\t\tthis.passwordElement.nativeElement.focus();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.submitInProgress = false;\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t

    \r\n\t\t\t\tWelcome Guest\r\n\t\t\t

    \r\n\t\t\t\r\n\t\t\t\tReset your account\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\tUpon resetting your account, a new temporary password will be sent to\r\n\t\t\tyour registered e-mail.\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInjectable,\r\n\tOnInit,\r\n\tViewChild,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormBuilder,\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tShakeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-login-reset',\r\n\ttemplateUrl: './login-reset.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tanimations: [\r\n\t\tShakeAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A class representing an instance of the login reset component.\r\n *\r\n * @export\r\n * @class LoginResetComponent\r\n * @implements {OnInit}\r\n */\r\n@Injectable()\r\nexport class LoginResetComponent\r\nimplements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of LoginResetComponent.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * @param {Router} router\r\n\t * @param {LoginComponent} loginComponent\r\n\t * @param {FormBuilder} formBuilder\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly loginComponent: LoginComponent,\r\n\t\tprivate readonly formBuilder: UntypedFormBuilder)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the reset form group.\r\n\t *\r\n\t * @public\r\n\t * @type {FormGroup}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic resetForm: UntypedFormGroup;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether a form submit is in progress.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic submitInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the login button is disabled.\r\n\t *\r\n\t * @type {boolean} A combination of status of whether the resetForm is valid\r\n\t * and submitInProgress.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic get resetIsDisabled(): boolean\r\n\t{\r\n\t\treturn !this.resetForm.valid || this.submitInProgress;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the userName element.\r\n\t *\r\n\t * @protected\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\t@ViewChild('userName', { static: true })\r\n\tprotected userNameElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the userName from the form.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tprivate get userName(): string\r\n\t{\r\n\t\treturn this.resetForm.controls.userName.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} value representing the userName to the form.\r\n\t *\r\n\t * @private\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tprivate set userName(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tthis.resetForm.controls.userName.setValue(value);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Resets the login component.\r\n\t *\r\n\t * @returns {void}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.resetForm = this.formBuilder.group(\r\n\t\t\t{\r\n\t\t\t\t'userName': new UntypedFormControl('')\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tif (this.loginComponent.userName)\r\n\t\t{\r\n\t\t\tthis.userName = this.loginComponent.userName;\r\n\t\t}\r\n\r\n\t\tthis.userNameElement.nativeElement.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * On form cancel event.\r\n\t *\r\n\t * @returns {void}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic async cancel(): Promise\r\n\t{\r\n\t\tthis.sessionService.logOut();\r\n\t\tthis.loginComponent.displayLogin(this.userName);\r\n\t}\r\n\r\n\t/**\r\n\t * On form submit event.\r\n\t *\r\n\t * @returns {void}\r\n\t * @memberof LoginResetComponent\r\n\t */\r\n\tpublic async reset(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.submitInProgress = true;\r\n\t\t\tawait this.sessionService.resetUser(\r\n\t\t\t\tthis.userName);\r\n\r\n\t\t\tthis.loginComponent.displayLogin(\r\n\t\t\t\tthis.userName,\r\n\t\t\t\t'Your account reset request was successful.');\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tif (exception.status === 404)\r\n\t\t\t{\r\n\t\t\t\t// User specified is not found\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.warn,\r\n\t\t\t\t\tAppConstants.loginStatus.invalid,\r\n\t\t\t\t\t`Username '${this.userName}' not found.`);\r\n\r\n\t\t\t\tthis.resetForm.controls.userName.reset();\r\n\t\t\t\tthis.userNameElement.nativeElement.focus();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (exception instanceof ApiError)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\t\texception.message,\r\n\t\t\t\t\t\texception.messages[0].description);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\t\tAppConstants.loginStatus.failure,\r\n\t\t\t\t\t\texception.message);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.submitInProgress = false;\r\n\t\t}\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t

    \r\n\t\t\t\tWelcome {{displayName()}}\r\n\t\t\t

    \r\n\t\t\t\r\n\t\t\t\tVerify your session\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\tAn authentication code has been sent to your\r\n\t\t\t{{verifyMethod()}} ({{maskedVerifyDestination()}}). Use the code you recieve\r\n\t\t\tto verify your login.\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInjectable,\r\n\tOnInit,\r\n\tViewChild,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormBuilder,\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup\r\n} from '@angular/forms';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tShakeAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSessionRefreshService\r\n} from '@shared/services/session-refresh.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing an instance of the login verify component.\r\n *\r\n * @export\r\n * @class LoginResetComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n\tselector: 'app-login-verify',\r\n\ttemplateUrl: './login-verify.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tanimations: [\r\n\t\tShakeAnimation\r\n\t]\r\n})\r\n@Injectable()\r\nexport class LoginVerifyComponent implements OnInit\r\n{\r\n\t/**\r\n\t * Creates an instance of LoginVerifyComponent.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service for this component.\r\n\t * @param {Router} router\r\n\t * The router for this component.\r\n\t * @param {LoggerService} logger\r\n\t * The logger service for this component.\r\n\t * @param {LoginComponent} loginComponent\r\n\t * The primary login component.\r\n\t * @param {FormBuilder} formBuilder\r\n\t * The form builder for this component.\r\n\t * @param {SessionRefreshService} sessionRefreshService\r\n\t * The session refresh service for this component.\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly logger: LoggerService,\r\n\t\tprivate readonly loginComponent: LoginComponent,\r\n\t\tprivate readonly formBuilder: UntypedFormBuilder,\r\n\t\tprivate readonly sessionRefreshService: SessionRefreshService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the verify form group.\r\n\t *\r\n\t * @public\r\n\t * @type {FormGroup}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic verifyForm: UntypedFormGroup;\r\n\r\n\t/**\r\n\t * Gets or sets a value indicating whether a form submit is in progress.\r\n\t *\r\n\t * @public\r\n\t * @type {boolean}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic submitInProgress: boolean = false;\r\n\r\n\t/**\r\n\t * Gets a value indicating whether the login button is disabled.\r\n\t *\r\n\t * @type {boolean} A combination of status of whether the verifyForm is\r\n\t * valid and submitInProgress.\r\n\t * @memberof LoginDialogComponent\r\n\t */\r\n\tpublic get verifyIsDisabled(): boolean\r\n\t{\r\n\t\treturn !this.verifyForm.valid || this.submitInProgress;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the code element.\r\n\t *\r\n\t * @protected\r\n\t * @type {ElementRef}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\t@ViewChild('code', { static: true })\r\n\tprotected codeElement: ElementRef;\r\n\r\n\t/**\r\n\t * Gets a {string} value representing the code from the form.\r\n\t *\r\n\t * @private\r\n\t * @type {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tprivate get code(): string\r\n\t{\r\n\t\treturn this.verifyForm.controls.code.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a {string} value representing the code to the form.\r\n\t *\r\n\t * @private\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tprivate set code(\r\n\t\tvalue: string)\r\n\t{\r\n\t\tthis.verifyForm.controls.code.setValue(value);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Configures the verify component.\r\n\t *\r\n\t * @returns {void}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.verifyForm = this.formBuilder.group(\r\n\t\t\t{\r\n\t\t\t\t'code': new UntypedFormControl('')\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tthis.codeElement.nativeElement.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the currently logged in user first name or user name.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic displayName(): string\r\n\t{\r\n\t\treturn this.sessionService.user.data.firstName\r\n\t\t\t|| this.sessionService.user.data.userName;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the verification method for the user.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic verifyMethod(): string\r\n\t{\r\n\t\tswitch (this.sessionService.multiFactorMethod)\r\n\t\t{\r\n\t\t\tcase 'email':\r\n\t\t\t\treturn 'e-mail';\r\n\t\t\tcase 'cellphone':\r\n\t\t\t\treturn 'cell phone';\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.sessionService.multiFactorMethod;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the masked verification destination value.\r\n\t *\r\n\t * @returns {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic maskedVerifyDestination(): string\r\n\t{\r\n\t\tswitch (this.sessionService.multiFactorMethod)\r\n\t\t{\r\n\t\t\tcase 'email':\r\n\t\t\t\treturn this.getMaskedEmail(\r\n\t\t\t\t\tthis.sessionService.user.data.email);\r\n\t\t\tcase 'cellphone':\r\n\t\t\t\treturn this.getMaskedPhone(\r\n\t\t\t\t\tthis.sessionService.user.data.cellphone);\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs the cancellation event.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic async cancel(): Promise\r\n\t{\r\n\t\tthis.sessionService.logOut();\r\n\t\tthis.loginComponent.displayLogin();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs the verify event.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tpublic async verify(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.submitInProgress = true;\r\n\t\t\tawait this.sessionService.verify(\r\n\t\t\t\tthis.sessionService.token,\r\n\t\t\t\tthis.code);\r\n\t\t}\r\n\t\tcatch (exception)\r\n\t\t{\r\n\t\t\tthis.logger.logWarning(\r\n\t\t\t\t`Verification failure for code ${this.code}`);\r\n\t\t\tif (exception.status === AppConstants.httpStatusCodes.unauthorized)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.warn,\r\n\t\t\t\t\tAppConstants.loginStatus.invalid,\r\n\t\t\t\t\t'The verification code is incorrect.');\r\n\r\n\t\t\t\tthis.code = AppConstants.empty;\r\n\t\t\t\tthis.codeElement.nativeElement.focus();\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (exception instanceof ApiError)\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\texception.message,\r\n\t\t\t\t\texception.messages[0].description);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.loginComponent.addMessage(\r\n\t\t\t\t\tAppConstants.messageLevel.error,\r\n\t\t\t\t\tAppConstants.loginStatus.failure,\r\n\t\t\t\t\texception.message);\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.submitInProgress = false;\r\n\t\t}\r\n\r\n\t\tthis.sessionRefreshService\r\n\t\t\t.start(AppConfig.settings\r\n\t\t\t\t.clientExpirationInterval);\r\n\r\n\t\tthis.router.navigate([AppConstants.route.dashboardPage]);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a masked phone number from a {string} value.\r\n\t *\r\n\t * @private\r\n\t * @param {string} value\r\n\t * @returns {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tprivate getMaskedPhone(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\treturn '***-***-**'\r\n\t\t\t+ value[value.length - 2]\r\n\t\t\t+ value[value.length - 1];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a masked email from a {string} value.\r\n\t *\r\n\t * @private\r\n\t * @param {string} value\r\n\t * @returns {string}\r\n\t * @memberof LoginVerifyComponent\r\n\t */\r\n\tprivate getMaskedEmail(\r\n\t\tvalue: string): string\r\n\t{\r\n\t\tconst parts = value.split('@');\r\n\t\tconst firstPart = parts[0];\r\n\r\n\t\treturn firstPart[0]\r\n\t\t\t+ firstPart[1]\r\n\t\t\t+ '*****'\r\n\t\t\t+ firstPart[firstPart.length - 2]\r\n\t\t\t+ firstPart[firstPart.length - 1]\r\n\t\t\t+ '@'\r\n\t\t\t+ parts[1];\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-bi',\r\n\ttemplateUrl: './bi.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main\r\n * bi page.\r\n *\r\n * @export\r\n * @class BiComponent\r\n */\r\nexport class BiComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tDisplayComponentDefinitionApiService\r\n} from '@api/services/display-components/display-component-definition.api.service';\r\nimport {\r\n\tDisplayComponentInstanceApiService\r\n} from '@api/services/display-components/display-component-instance.api.service';\r\nimport {\r\n\tDisplayComponentTypeApiService\r\n} from '@api/services/display-components/display-component-type.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tIReportListItem\r\n} from '@bi/interfaces/report-list-item';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tBIReportSettingDirective\r\n} from '@shared/directives/bi-report-setting.directive';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tDisplayComponentInstance\r\n} from '@shared/implementations/display-components/display-component-instance';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIDisplayComponentDefinition\r\n} from '@shared/interfaces/display-components/display-component-definition.interface';\r\nimport {\r\n\tIDisplayComponentInstance\r\n} from '@shared/interfaces/display-components/display-component-instance.interface';\r\nimport {\r\n\tIDisplayComponentType\r\n} from '@shared/interfaces/display-components/display-component-type.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIPowerBiCommandArguments\r\n} from '@shared/interfaces/reports/power-bi/power-bi-command-arguments.interface';\r\nimport {\r\n\tIPowerBiReportDefinition\r\n} from '@shared/interfaces/reports/power-bi/power-bi-report-definition.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tPowerBiApiService\r\n} from '@shared/services/power-bi-api.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tisEqual\r\n} from 'lodash';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-reports',\r\n\ttemplateUrl: './reports.component.html',\r\n\tstyleUrls: [\r\n\t\t'./reports.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a list of display component\r\n * defined reports.\r\n *\r\n * @export\r\n * @class ReportsComponent\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class ReportsComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit, IOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the reports component.\r\n\t *\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service used to populate full data sets.\r\n\t * @param {DisplayComponentInstanceApiService}\r\n\t * displayComponentInstanceApiService\r\n\t * The display component instance api service used for list lookups.\r\n\t * @param {DisplayComponentTypeApiService} displayComponentTypeApiService\r\n\t * The display component type api service used for list lookups.\r\n\t * @param {DisplayComponentDefinitionApiService}\r\n\t * displayComponentDefinitionApiService\r\n\t * The display component definition api service used for list lookups.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service user for created by lookups.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for display.\r\n\t * @param {Router} router\r\n\t * The router used in this component for site navigation.\r\n\t * @param {ActivatedRoute} route\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used in this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used in this component.\r\n\t * @param {PowerBiApiService} powerBiApiService\r\n\t * The power bi api service used in this component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {Location} location\r\n\t * The location used for route mapping.\r\n\t * @param {BIReportSettingDirective} bIReportSettingDirective\r\n\t * The location used for route mapping.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentInstanceApiService:\r\n\t\t\tDisplayComponentInstanceApiService,\r\n\t\tpublic displayComponentTypeApiService:\r\n\t\t\tDisplayComponentTypeApiService,\r\n\t\tpublic displayComponentDefinitionApiService:\r\n\t\t\tDisplayComponentDefinitionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic powerBiApiService: PowerBiApiService,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic location: Location,\r\n\t\tpublic bIReportSettingDirective: BIReportSettingDirective)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\t@ViewChild('Tooltip')\r\n\tpublic tooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the search report filter element.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic SearchReportsFilter: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the search input element.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchInput: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the layout schema object to be used in the\r\n\t * dynamic formly form fields.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic layoutSchema: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the validity of the form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic validForm: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the search report options.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchReportsOptions: IDropdownOption[];\r\n\r\n\t/**\r\n\t * icon action id constants.\r\n\t *\r\n\t * @type {{navigateToEditReport: string;\r\n\t *\tnavigateToViewReport: string;\r\n\t *\tdeleteReport: string;}}\r\n\t *\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic iconActionIds: {\r\n\t\tnavigateToEditReport: string;\r\n\t\tnavigateToViewReport: string;\r\n\t\tdeleteReport: string;\r\n\t\t} = {\r\n\t\t\tnavigateToEditReport: 'NavigateToEditReport',\r\n\t\t\tnavigateToViewReport: 'NavigateToViewReport',\r\n\t\t\tdeleteReport: 'DeleteReport'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this table display.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic tableDefinition: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic availableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic selectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected delete row action item.\r\n\t *\r\n\t * @type {IReportListItem[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic itemsInDeleteMode: IReportListItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the selected filter criteria.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic selectedFilterCriteria: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the selected filter criteria.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic selectedRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets or sets the selected reports Filter.\r\n\t *\r\n\t * @type {IDropdownOption}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic selectedReports: IDropdownOption;\r\n\r\n\t/**\r\n\t * Gets or sets the all Types Filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic allTypesFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the custom Type Filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic customTypeFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the standard Type Filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic standardTypeFilter: string;\r\n\r\n\t/**\r\n\t * Gets or sets the route url entity order by parameter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic entityOrderByParam: string;\r\n\r\n\t/**\r\n\t * Gets or sets the search input value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchInputValue: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the search report filter value.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchReportFilterValue: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the keyword tooltip from the constants file.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic readonly keywordTooltip: string = AppConstants.keywordTooltip;\r\n\r\n\t/**\r\n\t * Captures validity changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valid\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic formValidityChange(\r\n\t\tvalid: boolean): void\r\n\t{\r\n\t\tthis.validForm = valid;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the row Selected Info data.\r\n\t *\r\n\t * @param {string} displayComponentInstanceName\r\n\t * The display component instance name.\r\n\t * @param {string} navigateAction\r\n\t * Provided navigation action, null as default value\r\n\t * Whether or not the current form is valid.\r\n\t * @returns {IPowerBiCommandArguments}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic getItemSelectedInfo(\r\n\t\tdisplayComponentInstanceName: string,\r\n\t\tnavigateAction: string = null): IPowerBiCommandArguments\r\n\t{\r\n\t\treturn {\r\n\t\t\tselectedItem:\r\n\t\t\t\t{\r\n\t\t\t\t\tdisplayComponentInstanceName: displayComponentInstanceName\r\n\t\t\t\t},\r\n\t\t\titem:\r\n\t\t\t\t{\r\n\t\t\t\t\tid: AnyHelper.isNullOrEmpty(navigateAction)\r\n\t\t\t\t\t\t? this.iconActionIds.navigateToViewReport\r\n\t\t\t\t\t\t: navigateAction\r\n\t\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * This will handle the change event in the search reports filter.\r\n\t *\r\n\t * @param {string} filterValue\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic change(\r\n\t\tfilterValue: string): void\r\n\t{\r\n\t\tthis.searchInput =\r\n\t\t\tAnyHelper.isNullOrEmpty(\r\n\t\t\t\tthis.layoutSchema[1].form.value.data.filter)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.layoutSchema[1].form.value.data.filter;\r\n\r\n\t\tthis.searchCriteria();\r\n\r\n\t\tthis.SearchReportsFilter =\r\n\t\t\tAnyHelper.isNullOrEmpty(filterValue)\r\n\t\t\t\t? this.allTypesFilter\r\n\t\t\t\t: filterValue;\r\n\r\n\t\tif (this.SearchReportsFilter ===\r\n\t\t\tthis.selectedFilterCriteria)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedFilterCriteria = this.SearchReportsFilter;\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tthis.selectedFilterCriteria);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delete statement.\r\n\t *\r\n\t * @returns {string}\r\n\t * The delete statement string.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic getDeleteStatement(): string\r\n\t{\r\n\t\treturn `Confirm you want to delete Report\r\n\t\t\t${this.commonTableContext.source.selectedItem.reportName}.`;\r\n\t}\r\n\r\n\t/**\r\n\t * Get filtered Report list by Keyword.\r\n\t *\r\n\t * @param {IReportListItem[]} reports\r\n\t * Provides report list item.\r\n\t * @param {string} keyword\r\n\t * Provides keyword.\r\n\t *\r\n\t * @returns {IReportListItem[]}\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchReportsByKeyword(\r\n\t\treports: IReportListItem[],\r\n\t\tkeyword: string): IReportListItem[]\r\n\t{\r\n\t\tconst lowerKeyword: string = keyword.toLowerCase();\r\n\r\n\t\treturn reports.filter(\r\n\t\t\treport => (\r\n\t\t\t\t[\r\n\t\t\t\t\treport.reportName,\r\n\t\t\t\t\treport.reportType,\r\n\t\t\t\t\treport.workspaceType,\r\n\t\t\t\t\treport.createdByName\r\n\t\t\t\t]\r\n\t\t\t\t\t.map(field =>\r\n\t\t\t\t\t\t(typeof field === AppConstants.propertyTypes.string\r\n\t\t\t\t\t\t\t? field\r\n\t\t\t\t\t\t\t: AppConstants.empty)\r\n\t\t\t\t\t\t\t.toLowerCase())\r\n\t\t\t\t\t.join(AppConstants.characters.space)\r\n\t\t\t\t\t.includes(lowerKeyword)));\r\n\t}\r\n\r\n\t/**\r\n\t * Searches for the input criteria value from the\r\n\t * dynamic form search field.\r\n\t *\r\n\t * @memberof ReportsComponent\r\n\t*/\r\n\tpublic searchCriteria(): void\r\n\t{\r\n\t\tif (this.searchInput ===\r\n\t\t\tthis.searchInputValue)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.searchInputValue = this.searchInput;\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tthis.selectedFilterCriteria);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the Enter key press event to excecution the search accion.\r\n\t *\r\n\t * @param {FormlyFieldConfig} field\r\n\t * The key press event data object.\r\n\t * @param {KeyboardEvent} event\r\n\t * The key press event data object.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic searchOnEnterKeyPress(\r\n\t\tfield: FormlyFieldConfig,\r\n\t\tevent: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key !== AppConstants.keyBoardKeyConstants.enter)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.searchInput =\r\n\t\t\tAnyHelper.isNullOrEmpty(field.form.value.data.filter)\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: field.form.value.data.filter;\r\n\r\n\t\tthis.searchCriteria();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will setup the table definitions for the reports search page.\r\n\t *\r\n\t * @async\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\tAppConstants.displayComponentTypes.reportPowerBiStandard,\r\n\t\t\t\t\tAppConstants.displayComponentTypes.reportPowerBiCustom\r\n\t\t\t\t]);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.setFilterTypes();\r\n\r\n\t\tthis.searchReportsOptions =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'All Reports',\r\n\t\t\t\t\tvalue: this.allTypesFilter\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Custom Reports',\r\n\t\t\t\t\tvalue: this.customTypeFilter\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Standard Reports',\r\n\t\t\t\t\tvalue: this.standardTypeFilter\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.setupTableDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate page ownership permissions.\r\n\t *\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this page.\r\n\t * @async\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst displayTypes: IDisplayComponentType[] =\r\n\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'Name eq \\''\r\n\t\t\t\t\t\t+ AppConstants.displayComponentTypes\r\n\t\t\t\t\t\t\t.reportPowerBiStandard\r\n\t\t\t\t\t\t+ '\\' or Name eq \\''\r\n\t\t\t\t\t\t+ AppConstants.displayComponentTypes\r\n\t\t\t\t\t\t\t.reportPowerBiCustom\r\n\t\t\t\t\t\t+ '\\'',\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (displayTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst displayDefinitions: IDisplayComponentDefinition[] =\r\n\t\t\tawait this.displayComponentDefinitionApiService.query(\r\n\t\t\t\tthis.getTypeFilter(\r\n\t\t\t\t\tdisplayTypes),\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn displayDefinitions.length !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the filter types.\r\n\t *\r\n\t * @async\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic async setFilterTypes(): Promise\r\n\t{\r\n\t\tconst displayTypes: IDisplayComponentType[] =\r\n\t\t\tawait this.displayComponentTypeApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\t'Name.StartsWith(\\'Report\\') eq true',\r\n\t\t\t\t\tAppConstants.empty);\r\n\t\tthis.allTypesFilter =\r\n\t\t\tthis.getTypeFilter(\r\n\t\t\t\tdisplayTypes);\r\n\t\tthis.customTypeFilter =\r\n\t\t\tthis.getTypeFilter(\r\n\t\t\t\tdisplayTypes,\r\n\t\t\t\tAppConstants.displayComponentTypes.reportPowerBiCustom);\r\n\t\tthis.standardTypeFilter =\r\n\t\t\tthis.getTypeFilter(\r\n\t\t\t\tdisplayTypes,\r\n\t\t\t\tAppConstants.displayComponentTypes.reportPowerBiStandard);\r\n\r\n\t\tthis.selectedFilterCriteria = this.allTypesFilter;\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'reportName',\r\n\t\t\t\t\tcolumnHeader: 'Report Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'reportType',\r\n\t\t\t\t\tcolumnHeader: 'Report Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'workspaceType',\r\n\t\t\t\t\tcolumnHeader: 'Workspace',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'createdByName',\r\n\t\t\t\t\tcolumnHeader: 'Created By',\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns =\r\n\t\t\tthis.availableColumns;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the list column definitions for the current reports object\r\n\t * list.\r\n\t *\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.entityOrderByParam =\r\n\t\t\tthis.entityOrderByParam\r\n\t\t\t?? `${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t+ `${AppConstants.sortDirections.ascending}`;\r\n\r\n\t\tthis.tableDefinition =\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Reports',\r\n\t\t\t\tfullPageReservedHeight:\r\n\t\t\t\t\tAppConstants.staticLayoutSizes.tableSearchHeight,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.selectedFilterCriteria,\r\n\t\t\t\t\torderBy: `${AppConstants.commonProperties.name} `\r\n\t\t\t\t\t\t+ `${AppConstants.sortDirections.ascending}`,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: 200,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.selectedRowCount\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst data: IDisplayComponentInstance[] =\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t\t.query(\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.offset,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\t\t\t\tif (AnyHelper.isNullOrEmpty(data)\r\n\t\t\t\t\t\t\t|| data.length === 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\t\t\t\t\tdata.forEach(\r\n\t\t\t\t\t\t\t(iDisplayComponentInstance:\r\n\t\t\t\t\t\t\t\t\t\tIDisplayComponentInstance) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\t\t\t\t\tthis.displayComponentService\r\n\t\t\t\t\t\t\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\t\t\t\t\t\t\tiDisplayComponentInstance.name,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t\t\t\t\tiDisplayComponentInstance,\r\n\t\t\t\t\t\t\t\t\t\t\ttrue));\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tconst displayComponentInstances:\r\n\t\t\t\t\t\t\tDisplayComponentInstance[] =\r\n\t\t\t\t\t\t\t\tawait Promise.all(\r\n\t\t\t\t\t\t\t\t\tinitialPromiseArray);\r\n\r\n\t\t\t\t\t\tconst mappedData: IReportListItem[] =\r\n\t\t\t\t\t\t\tawait this.mapDisplayComponents(\r\n\t\t\t\t\t\t\t\tdisplayComponentInstances);\r\n\r\n\t\t\t\t\t\tlet filteredReports: IReportListItem[] =\r\n\t\t\t\t\t\t\tmappedData;\r\n\r\n\t\t\t\t\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\tthis.searchInputValue))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfilteredReports =\r\n\t\t\t\t\t\t\t\tthis.searchReportsByKeyword(\r\n\t\t\t\t\t\t\t\t\tmappedData,\r\n\t\t\t\t\t\t\t\t\tthis.searchInputValue);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn filteredReports;\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\t\tconst selectedItem: any =\r\n\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t.source.selectedItem;\r\n\t\t\t\t\t\t\t\t\tconst displayComponentInstanceName: string =\r\n\t\t\t\t\t\t\t\t\t\tselectedItem\r\n\t\t\t\t\t\t\t\t\t\t\t.displayComponentInstanceName;\r\n\r\n\t\t\t\t\t\t\t\t\tthis.bIReportSettingDirective\r\n\t\t\t\t\t\t\t\t\t\t.navigateToDisplay(\r\n\t\t\t\t\t\t\t\t\t\t\tthis.router,\r\n\t\t\t\t\t\t\t\t\t\t\tthis.getItemSelectedInfo(\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplayComponentInstanceName));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.setDynamicFormlyDefinitions();\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps a list of display component instances into the expected\r\n\t * set of report list items.\r\n\t *\r\n\t * @param {DisplayComponentInstance[]} displayComponentInstances\r\n\t * The set of display component instances to map into the expected\r\n\t * list item type.\r\n\t * @returns {Promise}\r\n\t * The mapped set of list items to display in this common table.\r\n\t * @async\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic async mapDisplayComponents(\r\n\t\tdisplayComponentInstances:\r\n\t\t\tDisplayComponentInstance[]): Promise\r\n\t{\r\n\t\tconst creatorIds: string[] =\r\n\t\t\t[...new Set(\r\n\t\t\t\tdisplayComponentInstances\r\n\t\t\t\t\t.map(\r\n\t\t\t\t\t\t(displayComponent: IDisplayComponentInstance) =>\r\n\t\t\t\t\t\t\tdisplayComponent.createdById.toString()))];\r\n\r\n\t\tconst createdByFilter: string =\r\n\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t+ ' in ('\r\n\t\t\t\t+ ApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\t\tcreatorIds,\r\n\t\t\t\t\tAppConstants.empty)\r\n\t\t\t\t+ ')';\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tconst creators: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tcreatedByFilter,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst mappedData: IReportListItem[] = [];\r\n\t\tfor (const displayComponent of displayComponentInstances)\r\n\t\t{\r\n\t\t\tconst creator: IEntityInstance =\r\n\t\t\t\tcreators.filter(\r\n\t\t\t\t\t(user: IEntityInstance) =>\r\n\t\t\t\t\t\tuser.id === displayComponent.createdById)[0];\r\n\r\n\t\t\tconst reportDefinition: any =\r\n\t\t\t\tdisplayComponent.displayComponentDefinition.jsonDefinition;\r\n\t\t\tmappedData.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: displayComponent.id,\r\n\t\t\t\t\tdisplayComponentDefinition:\r\n\t\t\t\t\t\tdisplayComponent.displayComponentDefinition,\r\n\t\t\t\t\tdisplayComponentInstance: displayComponent,\r\n\t\t\t\t\tdisplayComponentInstanceName: displayComponent.name,\r\n\t\t\t\t\treportDefinition: reportDefinition,\r\n\t\t\t\t\treportName: reportDefinition.reportName,\r\n\t\t\t\t\treportType: reportDefinition.reportType,\r\n\t\t\t\t\tworkspaceType: reportDefinition.workspaceType,\r\n\t\t\t\t\tcreatedByName:\r\n\t\t\t\t\t\tStringHelper.toNameString(\r\n\t\t\t\t\t\t\tcreator.data.firstName,\r\n\t\t\t\t\t\t\tcreator.data.lastName)\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn mappedData;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a report from this list of available reports.\r\n\t *\r\n\t * @async\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic async deleteReport(): Promise\r\n\t{\r\n\t\tconst selectedItem: any = this.commonTableContext.source.selectedItem;\r\n\r\n\t\tconst basePageReportDisplayComponentName: string =\r\n\t\t\t`${AppConstants.displayComponentTypes.basePage}.`\r\n\t\t\t\t+ selectedItem.displayComponentInstanceName;\r\n\r\n\t\tthis.itemsInDeleteMode.push(selectedItem);\r\n\r\n\t\tconst reportDisplayComponentInstance: IDisplayComponentInstance =\r\n\t\tselectedItem.displayComponentInstance;\r\n\t\tconst reportDefinition: IPowerBiReportDefinition =\r\n\t\t\t{\r\n\t\t\t\t...selectedItem.reportDefinition\r\n\t\t\t};\r\n\r\n\t\tconst basePageReportDisplayComponentInstance:\r\n\t\t\tIDisplayComponentInstance =\r\n\t\t\t\t\r\n\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t.getSingleQueryResult(\r\n\t\t\t\t\t\t`Name Eq '${basePageReportDisplayComponentName}'`,\r\n\t\t\t\t\t\t`${AppConstants.commonProperties.id}`);\r\n\r\n\t\tconst basePageReportDisplayComponentInstanceId: number =\r\n\t\t\tbasePageReportDisplayComponentInstance.id;\r\n\t\tconst reportDisplayComponentInstanceId: number =\r\n\t\t\treportDisplayComponentInstance.id;\r\n\r\n\t\tconst basePageSecurityGroupIdentifiers: number[] =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.getSecurityGroups(basePageReportDisplayComponentInstanceId);\r\n\t\tconst reportSecurityGroupIdentifiers: number[] =\r\n\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t.getSecurityGroups(reportDisplayComponentInstanceId);\r\n\r\n\t\tconst initialPromiseArray: Promise[] = [];\r\n\t\tbasePageSecurityGroupIdentifiers.forEach(\r\n\t\t\t(securityGroupId: number) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\t\t\tbasePageReportDisplayComponentInstanceId,\r\n\t\t\t\t\t\t\tsecurityGroupId));\r\n\t\t\t});\r\n\t\treportSecurityGroupIdentifiers.forEach(\r\n\t\t\t(securityGroupId: number) =>\r\n\t\t\t{\r\n\t\t\t\tinitialPromiseArray.push(\r\n\t\t\t\t\tthis.displayComponentInstanceApiService\r\n\t\t\t\t\t\t.deleteSecurityGroupMap(\r\n\t\t\t\t\t\t\treportDisplayComponentInstanceId,\r\n\t\t\t\t\t\t\tsecurityGroupId));\r\n\t\t\t});\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(\r\n\t\t\t\t\tasync(resolve) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait Promise.all(\r\n\t\t\t\t\t\t\tinitialPromiseArray);\r\n\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.delete(reportDisplayComponentInstanceId);\r\n\t\t\t\t\t\tawait this.displayComponentInstanceApiService\r\n\t\t\t\t\t\t\t.delete(basePageReportDisplayComponentInstanceId);\r\n\r\n\t\t\t\t\t\tconst tableContextSource: CommonTableComponent =\r\n\t\t\t\t\t\t\t\tthis.commonTableContext.source;\r\n\t\t\t\t\t\tawait this.powerBiApiService\r\n\t\t\t\t\t\t\t.deleteReport(\r\n\t\t\t\t\t\t\t\treportDefinition);\r\n\r\n\t\t\t\t\t\tconst persistedData: any =\r\n\t\t\t\t\t\t\tawait tableContextSource.tableDefinitions\r\n\t\t\t\t\t\t\t\t.apiPromise(\r\n\t\t\t\t\t\t\t\t\ttableContextSource\r\n\t\t\t\t\t\t\t\t\t\t.tableDefinitions.objectSearch);\r\n\r\n\t\t\t\t\t\tconst lastItem: IReportListItem =\r\n\t\t\t\t\t\t\tpersistedData[\r\n\t\t\t\t\t\t\t\ttableContextSource.tableData.length - 1];\r\n\t\t\t\t\t\tconst lastItemExists: boolean =\r\n\t\t\t\t\t\t\ttableContextSource.tableData.filter(\r\n\t\t\t\t\t\t\t\t(reportListItem: IReportListItem) =>\r\n\t\t\t\t\t\t\t\t\t!isEqual(\r\n\t\t\t\t\t\t\t\t\t\treportListItem,\r\n\t\t\t\t\t\t\t\t\t\tlastItem)).length > 0;\r\n\r\n\t\t\t\t\t\ttableContextSource.tableData =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...this.filterListItems(\r\n\t\t\t\t\t\t\t\t\ttableContextSource.tableData,\r\n\t\t\t\t\t\t\t\t\treportDefinition)\r\n\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\ttableContextSource.virtualData =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...this.filterListItems(\r\n\t\t\t\t\t\t\t\t\ttableContextSource.virtualData,\r\n\t\t\t\t\t\t\t\t\treportDefinition)\r\n\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\tif (!lastItemExists)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttableContextSource.virtualData\r\n\t\t\t\t\t\t\t\t.push(lastItem);\r\n\t\t\t\t\t\t\ttableContextSource.tableData\r\n\t\t\t\t\t\t\t\t.push(lastItem);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttableContextSource.scrollTableToTop();\r\n\r\n\t\t\t\t\t\tthis.itemsInDeleteMode =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...this.filterListItems(\r\n\t\t\t\t\t\t\t\t\tthis.itemsInDeleteMode,\r\n\t\t\t\t\t\t\t\t\treportDefinition)\r\n\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}),\r\n\t\t\t\t'Deleting Report',\r\n\t\t\t\t'Deleted A Report',\r\n\t\t\t\t`${reportDefinition.reportName} was deleted.`,\r\n\t\t\t\t`${reportDefinition.reportName} was not deleted.`));\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a filter for use in api calls using specific type ids. If a\r\n\t * specific display type is sent, this will only include matches of display\r\n\t * component types with that same name.\r\n\t *\r\n\t * @param {IDisplayComponentType[]} displayTypes\r\n\t * The array of available display types to create filter for.\r\n\t * @param {string} displayType\r\n\t * If sent this will return a filter for matching only the sent specific\r\n\t * display type. This defaults to null and will return a filter for the\r\n\t * full display types array.\r\n\t * @returns {string}\r\n\t * A string for use as a display type filter when querying display\r\n\t * component instances.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tpublic getTypeFilter(\r\n\t\tdisplayTypes: IDisplayComponentType[],\r\n\t\tdisplayType: string = null): string\r\n\t{\r\n\t\treturn ApiFilterHelper.getEnumerationFilter(\r\n\t\t\tAppConstants.commonProperties.typeId,\r\n\t\t\tdisplayTypes\r\n\t\t\t\t.filter((displayComponentType: IDisplayComponentType) =>\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(displayType)\r\n\t\t\t\t\t\t|| displayComponentType.name === displayType)\r\n\t\t\t\t.map((displayComponentType: IDisplayComponentType) =>\r\n\t\t\t\t\t`${displayComponentType.id}`));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list of filtered list items with the sent report list item\r\n\t * with a matching report definition removed.\r\n\t *\r\n\t * @param {IReportListItem[]} arrayToClean\r\n\t * The array of report list items that will be filtered.\r\n\t * @param {IPowerBiReportDefinition} reportDefinitionToRemove\r\n\t * The report definition to match for list item removal.\r\n\t * @returns {IReportListItem[]}\r\n\t * The list of items with the filtered list item removed.\r\n\t * @memberof ReportsComponent\r\n\t */\r\n\tprivate filterListItems(\r\n\t\tarrayToClean: IReportListItem[],\r\n\t\treportDefinitionToRemove: IPowerBiReportDefinition): IReportListItem[]\r\n\t{\r\n\t\treturn arrayToClean.filter(\r\n\t\t\t(reportListItem: IReportListItem) =>\r\n\t\t\t\treportListItem.reportDefinition.reportName !==\r\n\t\t\t\t\treportDefinitionToRemove.reportName\r\n\t\t\t\t\t|| reportListItem.reportDefinition.groupId !==\r\n\t\t\t\t\t\treportDefinitionToRemove.groupId);\r\n\t}\r\n\r\n\t/**\r\n\t * Defines the dynamic formly properties.\r\n\t *\r\n\t * @memberof ReportsComponent\r\n\t*/\r\n\tprivate setDynamicFormlyDefinitions(): void\r\n\t{\r\n\t\tthis.layoutSchema =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.search',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tplaceholder: 'Select a Category',\r\n\t\t\t\t\t\toptions: this.searchReportsOptions,\r\n\t\t\t\t\t\tchange: (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.change(field.formControl.value);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\tlabel: 'searchCategories'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.filter',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\tid: 'Search',\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tplaceholder: 'Filter',\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\ttitle: AppConstants.commonTableActions.filterInput\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tkeypress:\r\n\t\t\t\t\t\t\t(_field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\tevent: KeyboardEvent) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.searchOnEnterKeyPress(\r\n\t\t\t\t\t\t\t\t\t_field,\r\n\t\t\t\t\t\t\t\t\tevent);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tBiComponent\r\n} from '@bi/bi.component';\r\nimport {\r\n\tReportsComponent\r\n} from '@bi/components/reports/reports.component';\r\nimport {\r\n\tClonePowerBiReportComponent\r\n} from '@bi/components/wizard-steps/clone-power-bi-report/clone-power-bi-report.component';\r\nimport {\r\n\tSelectExistingPowerBiReportComponent\r\n} from '@bi/components/wizard-steps/select-existing-power-bi-report/select-existing-power-bi-report.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tBiComponent,\r\n\t\tClonePowerBiReportComponent,\r\n\t\tReportsComponent,\r\n\t\tSelectExistingPowerBiReportComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'bi',\r\n\t\t\t\tcomponent: BiComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.biModuleAccess\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.biModuleAccess\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'reports',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\tcomponent: ReportsComponent\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t\tClonePowerBiReportComponent,\r\n\t\tSelectExistingPowerBiReportComponent\r\n\t],\r\n\tproviders: [\r\n\t\tClonePowerBiReportComponent,\r\n\t\tSelectExistingPowerBiReportComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold bi route specific\r\n * logic and display resources.\r\n *\r\n * @export\r\n * @class BiModule\r\n */\r\nexport class BiModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-claims',\r\n\ttemplateUrl: './claims.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main claims page.\r\n *\r\n * @export\r\n * @class ClaimsComponent\r\n */\r\nexport class ClaimsComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tUntypedFormControl\r\n} from '@angular/forms';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityLayoutTypeApiService\r\n} from '@api/services/entities/entity-layout-type.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tCommonTablePageDirective\r\n} from '@shared/directives/common-table-page.directive';\r\nimport {\r\n\tOptionsFactory\r\n} from '@shared/factories/options-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIKeyValuePair\r\n} from '@shared/interfaces/application-objects/key-value-pair.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityLayoutType\r\n} from '@shared/interfaces/entities/entity-layout-type.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTimeUnit\r\n} from 'luxon';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'insurance-policy-search',\r\n\ttemplateUrl: './insurance-policy-search.component.html',\r\n\tstyleUrls: [\r\n\t\t'./insurance-policy-search.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an insurance level policy search.\r\n *\r\n * @export\r\n * @extends {CommonTablePageDirective}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {IOwnershipGuardComponent}\r\n * @implements {IDynamicComponent}\r\n * @class InsurancePolicySearchComponent\r\n */\r\nexport class InsurancePolicySearchComponent\r\n\textends CommonTablePageDirective\r\n\timplements OnInit, IOwnershipGuardComponent,\r\n\t\tOnInit, IDynamicComponent\r\n{\r\n\t/**\r\n\t * Creates an instance of the insurance policy search component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router to use for naviation.\r\n\t * @param {Location} location\r\n\t * The location service used to create and populate the url tree.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service used for data lookups.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used for user lookups.\r\n\t * @param {OptionsFactory} optionsFactory\r\n\t * The options factory used for dropdown option creation.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service used for dynamic displays.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to load the entity instance data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to load the entity instance data.\r\n\t * @param {EntityLayoutTypeApiService} entityLayoutTypeApiService\r\n\t * The entity layout type api service used for layout lookups.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\t public constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic optionsFactory: OptionsFactory,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityLayoutTypeApiService: EntityLayoutTypeApiService)\r\n\t{\r\n\t\tsuper(resolver);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the tooltip element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\t@ViewChild('Tooltip')\r\n\tpublic tooltip: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the context of this dynamic component that will be set\r\n\t * during initialization. The source is the content component and\r\n\t * the data will be associated data that we desire to pass explicitly.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof DrawerListDirective\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table row count.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic tableRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets or sets the data limit for the api promise.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic dataLimit: number = 30;\r\n\r\n\t/**\r\n\t * Gets or sets the list of all transaction entity types.\r\n\t *\r\n\t * @type {IEntityType[]}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic availableTransactionEntityTypes: IEntityType[];\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of transaction entity types.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic loadingTransactionTypes: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the sort order by.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic orderBy: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the full length sort order by.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic exactPropertyOrderBy: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the sort field.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic sortField: string = AppConstants.commonProperties.effectiveDate;\r\n\r\n\t/**\r\n\t * Gets or sets the sort order.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic sortOrder: number = 1;\r\n\r\n\t/**\r\n\t * Gets or sets the full page reserved height used to display the filter\r\n\t * layout.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic fullPageReservedHeight: number = 282;\r\n\r\n\t/**\r\n\t * Gets or sets the table definitions for the standard table view.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic policySearchTableDefinitions: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the formly definition for the policy search.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic dynamicFormly: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the validity of the form.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic validForm: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the mode of the table. When in search mode, this will\r\n\t * execute the API promise to gather data. This is enabled by using\r\n\t * the search action on the API to request filtered data.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic searchMode: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the latest transaction set by product.\r\n\t *\r\n\t * @type {IKeyValuePair[]}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic latestTransactionsByProduct: IKeyValuePair[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the default filters.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic defaultFilters: object =\r\n\t\t{\r\n\t\t\tselectedTransactionEntityTypes: [],\r\n\t\t\tcreatedDate: AppConstants.dateLimits.pastThirtyDays,\r\n\t\t\tstatus: AppConstants.any,\r\n\t\t\ttype: AppConstants.any,\r\n\t\t\tkeywordFilter: AppConstants.empty\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the formly definition for the policy search data values.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic dataSet: { data: any } =\r\n\t\t<{ data: any }>\r\n\t\t{\r\n\t\t\tdata: {\r\n\t\t\t\t...this.defaultFilters\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the reserved filter form height when displaying this page\r\n\t * in a tablet or smaller screen.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate readonly tabletReservedScreenHeight: number = 550;\r\n\r\n\t/**\r\n\t * Gets the reserved filter form height when displaying this page\r\n\t * in a screen larger than a tablet.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate readonly desktopReservedScreenHeight: number = 282;\r\n\r\n\t/**\r\n\t * Gets the available url parameters.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate readonly parameters:\r\n\t{\r\n\t\tselectedTransactionEntityTypes: string;\r\n\t\tcreatedDate: string;\r\n\t\tstatus: string;\r\n\t\ttype: string;\r\n\t\tchangedBy: string;\r\n\t\tcreatedBy: string;\r\n\t\tkeywordFilter: string;\r\n\t\torderBy: string;\r\n\t\texactPropertyOrderBy: string;\r\n\t\tsearchMode: string;\r\n\t} = {\r\n\t\t\tselectedTransactionEntityTypes: 'selectedTransactionEntityTypes',\r\n\t\t\tcreatedDate:'createdDate',\r\n\t\t\tstatus: 'status',\r\n\t\t\ttype: 'type',\r\n\t\t\tchangedBy: 'changedBy',\r\n\t\t\tcreatedBy: 'createdBy',\r\n\t\t\tkeywordFilter: 'keywordFilter',\r\n\t\t\torderBy: 'orderBy',\r\n\t\t\texactPropertyOrderBy: 'exactPropertyOrderBy',\r\n\t\t\tsearchMode: 'searchMode'\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets the set of policy term data required columns.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate readonly termColumnKeys: Set =\r\n\t\tnew Set(\r\n\t\t\t[\r\n\t\t\t\t'data.termEffectiveDate',\r\n\t\t\t\t'data.paymentPlanId',\r\n\t\t\t\t'data.renewalTerm',\r\n\t\t\t\t'data.writtenTotal'\r\n\t\t\t]);\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.loadingTableDefinitions === true\r\n\t\t\t|| this.searchMode === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet reservedHeight: number =\r\n\t\t\tthis.policySearchTableDefinitions.fullPageReservedHeight;\r\n\r\n\t\tif (this.siteLayoutService.breakpointWidth <=\r\n\t\t\tAppConstants.layoutBreakpoints.tablet\r\n\t\t\t&& reservedHeight !== this.tabletReservedScreenHeight)\r\n\t\t{\r\n\t\t\treservedHeight = this.tabletReservedScreenHeight;\r\n\t\t}\r\n\t\telse if (this.siteLayoutService.breakpointWidth >\r\n\t\t\tAppConstants.layoutBreakpoints.tablet\r\n\t\t\t&& reservedHeight !== this.desktopReservedScreenHeight)\r\n\t\t{\r\n\t\t\treservedHeight = this.desktopReservedScreenHeight;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loadingTableDefinitions = true;\r\n\r\n\t\tthis.policySearchTableDefinitions.fullPageReservedHeight =\r\n\t\t\treservedHeight;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t\tthis.loadingTableDefinitions = false,\r\n\t\t\tAppConstants.time.fiftyMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will setup the table definitions and parameter handling\r\n\t * for the policy search page.\r\n\t *\r\n\t * @async\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\t'Entity.Type',\r\n\t\t\t\t\t'Entity.Version',\r\n\t\t\t\t\t'Entity.Layout'\r\n\t\t\t\t],\r\n\t\t\t\t'Access is required to at least one policy entity type '\r\n\t\t\t\t\t+ 'and version.');\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.route.queryParams.subscribe(\r\n\t\t\tasync(parameters: Params) =>\r\n\t\t\t{\r\n\t\t\t\tconst mappedRouteData: any =\r\n\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\tparameters);\r\n\r\n\t\t\t\tthis.dataSet.data.selectedTransactionEntityTypes =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[\r\n\t\t\t\t\t\t\tthis.parameters.selectedTransactionEntityTypes])\r\n\t\t\t\t\t\t? mappedRouteData[\r\n\t\t\t\t\t\t\tthis.parameters.selectedTransactionEntityTypes]\r\n\t\t\t\t\t\t: this.dataSet.data.selectedTransactionEntityTypes;\r\n\t\t\t\tthis.dataSet.data.createdDate =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.createdDate])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.createdDate]\r\n\t\t\t\t\t\t: this.dataSet.data.createdDate;\r\n\t\t\t\tthis.dataSet.data.status =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.status])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.status]\r\n\t\t\t\t\t\t: this.dataSet.data.status;\r\n\t\t\t\tthis.dataSet.data.type =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.type])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.type]\r\n\t\t\t\t\t\t: this.dataSet.data.type;\r\n\t\t\t\tthis.dataSet.data.keywordFilter =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.keywordFilter])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.keywordFilter]\r\n\t\t\t\t\t\t: this.dataSet.data.keywordFilter;\r\n\t\t\t\tthis.orderBy =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.orderBy])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.orderBy]\r\n\t\t\t\t\t\t: `${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`;\r\n\t\t\t\tthis.exactPropertyOrderBy =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.exactPropertyOrderBy])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.exactPropertyOrderBy]\r\n\t\t\t\t\t\t: `${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t+ `${AppConstants.sortDirections.descending}`;\r\n\t\t\t\tthis.searchMode =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.searchMode])\r\n\t\t\t\t\t\t? JSON.parse(mappedRouteData[\r\n\t\t\t\t\t\t\tthis.parameters.searchMode])\r\n\t\t\t\t\t\t: false;\r\n\r\n\t\t\t\tthis.dataSet.data.changedBy =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.changedBy])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.changedBy]\r\n\t\t\t\t\t\t: StringHelper.fromNameObject(\r\n\t\t\t\t\t\t\tthis.sessionService.user.data);\r\n\t\t\t\tthis.dataSet.data.createdBy =\r\n\t\t\t\t\t!AnyHelper.isNullOrEmpty(\r\n\t\t\t\t\t\tmappedRouteData[this.parameters.createdBy])\r\n\t\t\t\t\t\t? mappedRouteData[this.parameters.createdBy]\r\n\t\t\t\t\t\t: StringHelper.fromNameObject(\r\n\t\t\t\t\t\t\tthis.sessionService.user.data);\r\n\t\t\t});\r\n\r\n\t\tthis.sortField =\r\n\t\t\tthis.orderBy.split(\r\n\t\t\t\tAppConstants.characters.space)[0];\r\n\r\n\t\tthis.sortOrder =\r\n\t\t\tthis.orderBy.split(\r\n\t\t\t\tAppConstants.characters.space)[1] ===\r\n\t\t\t\t\tAppConstants.sortDirections.ascending\r\n\t\t\t\t? 1\r\n\t\t\t\t: -1;\r\n\r\n\t\tthis.context =\r\n\t\t\t>\r\n\t\t\t{\r\n\t\t\t\tsource: this,\r\n\t\t\t\tdata: {}\r\n\t\t\t};\r\n\r\n\t\tawait this.setupPageVariables();\r\n\t\tthis.setupTableDefinitions();\r\n\t\tthis.updateUrlQuery();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate page ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this page.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst fullEntityLayoutType: IEntityLayoutType =\r\n\t\t\tawait this.entityLayoutTypeApiService.getSingleQueryResult(\r\n\t\t\t\tAppConstants.commonProperties.name\r\n\t\t\t\t\t+ ` eq '${AppConstants.layoutTypes.full}'`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue);\r\n\r\n\t\tif (AnyHelper.isNull(fullEntityLayoutType))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.entityService.verifyWildcardEntityTypeAccess(\r\n\t\t\tAppConstants.commonProperties.group\r\n\t\t\t\t+ '.StartsWith(\\''\r\n\t\t\t\t+ InsuranceConstants.policyTermTransactionPrefix\r\n\t\t\t\t+ '\\') eq true',\r\n\t\t\tfullEntityLayoutType);\r\n\t}\r\n\r\n\t/**\r\n\t * Captures validity changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valid\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\t public formValidityChange(\r\n\t\tvalid: boolean): void\r\n\t{\r\n\t\tthis.validForm = valid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a click of the search action.\r\n\t *\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic search(): void\r\n\t{\r\n\t\tconst filter: string =\r\n\t\t\tthis.compilePrimaryFilter();\r\n\r\n\t\tthis.searchMode = true;\r\n\t\tthis.updateUrlQuery();\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t.filterCriteriaChanged(filter),\r\n\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the page level variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tconst assetCharacteristics: string =\r\n\t\t\t'data.assets[0].characteristics';\r\n\t\tconst interestCharacteristics: string =\r\n\t\t\t'data.interests[0].characteristics';\r\n\t\tconst userDisplayName: string =\r\n\t\t\tStringHelper.fromNameObject(\r\n\t\t\t\tthis.sessionService.user.data);\r\n\r\n\t\tthis.availableTransactionEntityTypes =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\t'name.StartsWith('\r\n\t\t\t\t\t+ `'${InsuranceConstants\r\n\t\t\t\t\t\t.policyTermTransactionPrefix}')`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tthis.dynamicFormly =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.selectedTransactionEntityTypes',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Products',\r\n\t\t\t\t\t\tplaceholder: 'Select product(s)',\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.availableTransactionEntityTypes\r\n\t\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t\t(entityType: IEntityType) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tconst splitEntitType: string[] =\r\n\t\t\t\t\t\t\t\t\t\t\tentityType.name.split(\r\n\t\t\t\t\t\t\t\t\t\t\t\tAppConstants.characters.period);\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: splitEntitType[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsplitEntitType.length - 1],\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: entityType.group\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidators: {\r\n\t\t\t\t\t\tvalidProductSelection: {\r\n\t\t\t\t\t\t\texpression: ((\r\n\t\t\t\t\t\t\t\tcontrol: UntypedFormControl,\r\n\t\t\t\t\t\t\t\t_field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t\tcontrol.value.length > 0),\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\tAppConstants.empty\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.createdDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Created Date',\r\n\t\t\t\t\t\tplaceholder: 'Select date range',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\toptions: this.optionsFactory.mapStringOptions(\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\tAppConstants.dateLimits\r\n\t\t\t\t\t\t\t\t\t.pastThirtyDays,\r\n\t\t\t\t\t\t\t\tAppConstants.dateLimits\r\n\t\t\t\t\t\t\t\t\t.pastNinetyDays,\r\n\t\t\t\t\t\t\t\tAppConstants.dateLimits\r\n\t\t\t\t\t\t\t\t\t.pastOneHundredAndEightyDays\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.type',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Type',\r\n\t\t\t\t\t\tplaceholder: 'Select transaction type',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.optionsFactory.mapStringOptions(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes\r\n\t\t\t\t\t\t\t\t\t\t.newBusiness,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes\r\n\t\t\t\t\t\t\t\t\t\t.renewal,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes\r\n\t\t\t\t\t\t\t\t\t\t.endorsement,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes\r\n\t\t\t\t\t\t\t\t\t\t.reinstatement,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionTypes\r\n\t\t\t\t\t\t\t\t\t\t.cancellation\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.status',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Status',\r\n\t\t\t\t\t\tplaceholder: 'Select transaction status',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.optionsFactory.mapStringOptions(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.pending,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.application,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.bound,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.issued,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.submitted,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.declined,\r\n\t\t\t\t\t\t\t\t\tInsuranceConstants.transactionStatusTypes\r\n\t\t\t\t\t\t\t\t\t\t.archived,\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.createdBy',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Created By',\r\n\t\t\t\t\t\tplaceholder: 'Select users',\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'Created by and Changed by selections will include '\r\n\t\t\t\t\t\t\t\t+ 'both result sets.',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.optionsFactory.mapStringOptions(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\tuserDisplayName\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.changedBy',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Changed By',\r\n\t\t\t\t\t\tplaceholder: 'Select users',\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'Created by and Changed by selections will include '\r\n\t\t\t\t\t\t\t\t+ 'both result sets.',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\tthis.optionsFactory.mapStringOptions(\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\tuserDisplayName\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\ttrue)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.keywordFilter',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\tid: AppConstants.commonTableActions.filterInput,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Search',\r\n\t\t\t\t\t\tplaceholder: 'Search insured or policy data',\r\n\t\t\t\t\t\ttooltip: AppConstants.keywordTooltip,\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\ttitle: AppConstants.commonTableActions.filterInput\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tkeypress:\r\n\t\t\t\t\t\t\t(_field: FormlyFieldConfig,\r\n\t\t\t\t\t\t\t\tevent: KeyboardEvent) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (event.key ===\r\n\t\t\t\t\t\t\t\t\tAppConstants.keyBoardKeyConstants.enter)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.search();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tfor (const transactionEntityType of\r\n\t\t\tthis.availableTransactionEntityTypes)\r\n\t\t{\r\n\t\t\tthis.latestTransactionsByProduct.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: transactionEntityType.group,\r\n\t\t\t\t\tvalue: null\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\t// If this is the first load, select all.\r\n\t\tif (this.dataSet.data.selectedTransactionEntityTypes.length === 0)\r\n\t\t{\r\n\t\t\tthis.dataSet.data.selectedTransactionEntityTypes =\r\n\t\t\t\tthis.availableTransactionEntityTypes.map(\r\n\t\t\t\t\t(transactionEntityType: IEntityType) =>\r\n\t\t\t\t\t\ttransactionEntityType.group);\r\n\t\t}\r\n\r\n\t\tthis.tableFilterQuery = this.compilePrimaryFilter();\r\n\r\n\t\tthis.loadingTransactionTypes = false;\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.type',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.status',\r\n\t\t\t\t\tcolumnHeader: 'Status',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.productName',\r\n\t\t\t\t\tcolumnHeader: 'Product',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.policyNumber',\r\n\t\t\t\t\tcolumnHeader: 'Policy Number',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tinterestCharacteristics\r\n\t\t\t\t\t\t\t+ '.name.displayName',\r\n\t\t\t\t\tcolumnHeader: 'Insured Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tassetCharacteristics\r\n\t\t\t\t\t\t\t+ '.addresses[0].address',\r\n\t\t\t\t\tcolumnHeader: 'Address',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tassetCharacteristics\r\n\t\t\t\t\t\t\t+ '.addresses[0].city',\r\n\t\t\t\t\tcolumnHeader: 'City',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tassetCharacteristics\r\n\t\t\t\t\t\t\t+ '.addresses[0].state',\r\n\t\t\t\t\tcolumnHeader: 'State',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tinterestCharacteristics\r\n\t\t\t\t\t\t\t+ '.phones[0].number',\r\n\t\t\t\t\tcolumnHeader: 'Mobile Phone',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tinterestCharacteristics\r\n\t\t\t\t\t\t\t+ '.emails[0].address',\r\n\t\t\t\t\tcolumnHeader: 'Email',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\t'data.termEffectiveDate',\r\n\t\t\t\t\tcolumnHeader: 'Term Effective Date',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.date,\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\t'data.paymentPlanId',\r\n\t\t\t\t\tcolumnHeader: 'Payment Plan',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\t'data.renewalTerm',\r\n\t\t\t\t\tcolumnHeader: 'Renewal Term',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\t'data.writtenTotal',\r\n\t\t\t\t\tcolumnHeader: 'Written Total',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.currency,\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tthis.selectedColumns =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.policyNumber',\r\n\t\t\t\t\tcolumnHeader: 'Policy Number',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tinterestCharacteristics\r\n\t\t\t\t\t\t\t+ '.name.displayName',\r\n\t\t\t\t\tcolumnHeader: 'Insured Name',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey:\r\n\t\t\t\t\t\tassetCharacteristics\r\n\t\t\t\t\t\t\t+ '.addresses[0].address',\r\n\t\t\t\t\tcolumnHeader: 'Address',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.productName',\r\n\t\t\t\t\tcolumnHeader: 'Product',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.type',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.status',\r\n\t\t\t\t\tcolumnHeader: 'Status',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the list column definitions for the current\r\n\t * operation definition object list.\r\n\t *\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tpublic setupTableDefinitions(): void\r\n\t{\r\n\t\tthis.policySearchTableDefinitions =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Policies',\r\n\t\t\t\texportable: true,\r\n\t\t\t\tenableFullDatasetExport: false,\r\n\t\t\t\texportMappingDataPromise:\r\n\t\t\t\t\tasync(selectedColumns: ICommonTableColumn[]) =>\r\n\t\t\t\t\t\tthis.decoratePolicyTermColumns(\r\n\t\t\t\t\t\t\tthis.commonTableContext.source.tableData,\r\n\t\t\t\t\t\t\tselectedColumns),\r\n\t\t\t\tfullPageReservedHeight: this.fullPageReservedHeight,\r\n\t\t\t\tobjectSearch: {\r\n\t\t\t\t\tfilter: this.tableFilterQuery,\r\n\t\t\t\t\torderBy: this.orderBy,\r\n\t\t\t\t\toffset: 0,\r\n\t\t\t\t\tlimit: this.dataLimit,\r\n\t\t\t\t\tvirtualIndex: 0,\r\n\t\t\t\t\tvirtualPageSize: this.tableRowCount,\r\n\t\t\t\t\tsortField: this.sortField,\r\n\t\t\t\t\tsortOrder: this.sortOrder\r\n\t\t\t\t},\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t\tthis.searchMode === true\r\n\t\t\t\t\t\t\t? this.apiPromise.bind(this)(objectSearch)\r\n\t\t\t\t\t\t\t: [],\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext: (commonTableContext:\r\n\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t},\r\n\t\t\t\tactions: {\r\n\t\t\t\t\tfilter: {\r\n\t\t\t\t\t\tconsiderFilteringResults: () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdocument.getElementById(\r\n\t\t\t\t\t\t\t\tAppConstants.commonTableActions.filterInput)\r\n\t\t\t\t\t\t\t\t.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tview: {\r\n\t\t\t\t\t\tdisabledExpandItem: true,\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcommand: () =>\r\n\t\t\t\t\t\t\t\t\tthis.navigateToParent()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinitions = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers accurate paged and sorted data matching the selected search\r\n\t * filters.\r\n\t *\r\n\t * @async\r\n\t * @param {IObjectSearch} objectSearch\r\n\t * The object search to gather data for.\r\n\t * @returns {IEntityInstance[]}\r\n\t * An awaitable array of policy level data rows matching the current\r\n\t * object search.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate async apiPromise(\r\n\t\tobjectSearch: IObjectSearch): Promise\r\n\t{\r\n\t\tconst selectedTransactionEntityTypes: string[] =\r\n\t\t\tthis.dataSet.data.selectedTransactionEntityTypes;\r\n\t\tlet overallTransactionInstances: IEntityInstance[] = [];\r\n\t\tconst existingPolicies: IEntityInstance[] =\r\n\t\t\tAnyHelper.isNull(this.commonTableContext)\r\n\t\t\t\t? []\r\n\t\t\t\t: this.commonTableContext.source.tableData;\r\n\r\n\t\tif (existingPolicies.length === 0)\r\n\t\t{\r\n\t\t\tthis.clearLatestTransactionsByProduct();\r\n\t\t}\r\n\r\n\t\tconst existingPolicyNumbers: string[] =\r\n\t\t\texistingPolicies.map(\r\n\t\t\t\t(listItem: IEntityInstance) =>\r\n\t\t\t\t\tlistItem.data.policyNumber);\r\n\r\n\t\tfor (const selectedEntityType of\r\n\t\t\tselectedTransactionEntityTypes)\r\n\t\t{\r\n\t\t\tconst splitGroups: string[] =\r\n\t\t\t\tselectedEntityType\r\n\t\t\t\t\t.split(AppConstants.characters.period);\r\n\t\t\tconst productName =\r\n\t\t\t\tsplitGroups[splitGroups.length - 1];\r\n\r\n\t\t\tconst latestTransactionFilter: string =\r\n\t\t\t\tthis.compileLatestTransactionFilter(\r\n\t\t\t\t\tselectedEntityType,\r\n\t\t\t\t\texistingPolicies);\r\n\r\n\t\t\tlet combinedFilter: string = AppConstants.empty;\r\n\t\t\tswitch (true)\r\n\t\t\t{\r\n\t\t\t\tcase AnyHelper.isNullOrWhitespace(objectSearch.filter)\r\n\t\t\t\t\t&& AnyHelper.isNullOrWhitespace(latestTransactionFilter):\r\n\t\t\t\t\tcombinedFilter = AppConstants.empty;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase AnyHelper.isNullOrWhitespace(objectSearch.filter)\r\n\t\t\t\t\t&& !AnyHelper.isNullOrWhitespace(latestTransactionFilter):\r\n\t\t\t\t\tcombinedFilter = latestTransactionFilter;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase !AnyHelper.isNullOrWhitespace(objectSearch.filter)\r\n\t\t\t\t\t&& AnyHelper.isNullOrWhitespace(latestTransactionFilter):\r\n\t\t\t\t\tcombinedFilter = objectSearch.filter;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase !AnyHelper.isNullOrWhitespace(objectSearch.filter)\r\n\t\t\t\t\t&& !AnyHelper.isNullOrWhitespace(latestTransactionFilter):\r\n\t\t\t\t\tcombinedFilter =\r\n\t\t\t\t\t\t`(${objectSearch.filter}) and `\r\n\t\t\t\t\t\t\t+ `(${latestTransactionFilter})`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet transactionInstances: IEntityInstance[] =\r\n\t\t\t\tawait this.loadRecursiveUniqueValues(\r\n\t\t\t\t\tselectedEntityType,\r\n\t\t\t\t\texistingPolicyNumbers,\r\n\t\t\t\t\tcombinedFilter,\r\n\t\t\t\t\tthis.exactPropertyOrderBy,\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\ttransactionInstances =\r\n\t\t\t\ttransactionInstances.slice(\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\t\ttransactionInstances\r\n\t\t\t\t.forEach(\r\n\t\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttransaction.data.productName =\r\n\t\t\t\t\t\t\tproductName;\r\n\r\n\t\t\t\t\t\ttransaction.data.entityTypeGroup =\r\n\t\t\t\t\t\t\tproductName;\r\n\t\t\t\t\t});\r\n\r\n\t\t\ttransactionInstances =\r\n\t\t\t\tawait this.decoratePolicyTermColumns(\r\n\t\t\t\t\ttransactionInstances);\r\n\r\n\t\t\toverallTransactionInstances =\r\n\t\t\t\toverallTransactionInstances.concat(\r\n\t\t\t\t\ttransactionInstances);\r\n\t\t}\r\n\r\n\t\toverallTransactionInstances =\r\n\t\t\tObjectHelper.handleOrderBySort(\r\n\t\t\t\toverallTransactionInstances,\r\n\t\t\t\tthis.exactPropertyOrderBy)\r\n\t\t\t\t.slice(\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tobjectSearch.limit);\r\n\r\n\t\tfor (const selectedEntityType of\r\n\t\t\tselectedTransactionEntityTypes)\r\n\t\t{\r\n\t\t\tthis.updateLatestTransactionsByProduct(\r\n\t\t\t\tselectedEntityType,\r\n\t\t\t\toverallTransactionInstances.filter(\r\n\t\t\t\t\t(entityInstance: IEntityInstance) =>\r\n\t\t\t\t\t\tentityInstance.entityType ===\r\n\t\t\t\t\t\t\tselectedEntityType));\r\n\t\t}\r\n\r\n\t\treturn overallTransactionInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Given a set of transaction instances, this will confirm if there are\r\n\t * policy term columns that require separate data loads. If any term\r\n\t * columns are selected, this will load the policy term data and decorate\r\n\t * the transaction instances.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance[]} transactionInstances\r\n\t * The set of transaction instances to be decorated with term data if\r\n\t * required.\r\n\t * @param {ICommonTableColumn[]} selectedColumns\r\n\t * TIf sent, this will be the set of columns that are being displayed or\r\n\t * exported. If not sent, this will default to the visible columns of the\r\n\t * source table.\r\n\t * @returns {IEntityInstance[]}\r\n\t * An awaitable array of transaction instances with decorated policy term\r\n\t * data.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate async decoratePolicyTermColumns(\r\n\t\ttransactionInstances: IEntityInstance[],\r\n\t\tselectedColumns: ICommonTableColumn[] = null):\r\n\t\tPromise\r\n\t{\r\n\t\tif (transactionInstances.length === 0\r\n\t\t\t|| !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\ttransactionInstances[0]?.data.renewalTerm))\r\n\t\t{\r\n\t\t\treturn transactionInstances;\r\n\t\t}\r\n\r\n\t\tconst columnsToDecorate: ICommonTableColumn[] =\r\n\t\t\tselectedColumns\r\n\t\t\t\t?? this.commonTableContext.source\r\n\t\t\t\t\t?.visibleColumns;\r\n\t\tconst needsParentTerm: boolean =\r\n\t\t\tcolumnsToDecorate\r\n\t\t\t\t?.some(\r\n\t\t\t\t\t(column: any) =>\r\n\t\t\t\t\t\tthis.termColumnKeys.has(column.dataKey));\r\n\r\n\t\tif (needsParentTerm === false)\r\n\t\t{\r\n\t\t\treturn transactionInstances;\r\n\t\t}\r\n\r\n\t\tconst transactionIds: number[] =\r\n\t\t\ttransactionInstances.map(\r\n\t\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t\t\ttransaction.id);\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms;\r\n\t\tconst filterString: string =\r\n\t\t\t`Children.Any(ChildInstanceId in (${transactionIds}))`;\r\n\t\tconst policyTerms: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tfilterString,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policyTerms);\r\n\r\n\t\ttransactionInstances.forEach(\r\n\t\t\t(transaction: IEntityInstance) =>\r\n\t\t\t{\r\n\t\t\t\tconst matchingTerm: IEntityInstance =\r\n\t\t\t\t\tpolicyTerms.find((term: any) =>\r\n\t\t\t\t\t\tterm.data.policyNumber ===\r\n\t\t\t\t\t\t\ttransaction.data.policyNumber);\r\n\r\n\t\t\t\tif (matchingTerm)\r\n\t\t\t\t{\r\n\t\t\t\t\ttransaction.data.termEffectiveDate =\r\n\t\t\t\t\t\t\tmatchingTerm.data?.effectiveDate;\r\n\r\n\t\t\t\t\ttransaction.data.renewalTerm =\r\n\t\t\t\t\t\t\tmatchingTerm.data?.renewalTerm;\r\n\r\n\t\t\t\t\ttransaction.data.writtenTotal =\r\n\t\t\t\t\t\t\tmatchingTerm.data?.accounting\r\n\t\t\t\t\t\t\t\t?.writtenTotal;\r\n\r\n\t\t\t\t\ttransaction.data.paymentPlanId =\r\n\t\t\t\t\t\t\tStringHelper.splitNumbersAndWords(\r\n\t\t\t\t\t\t\t\tmatchingTerm.data?.accounting\r\n\t\t\t\t\t\t\t\t\t?.paymentSchedule?.paymentPlan?.id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn transactionInstances;\r\n\t}\r\n\r\n\t/**\r\n\t * Recursively queries for values matching the object search specific\r\n\t * against the sent entity type. This will load values recursively until\r\n\t * the full limit worth of values are both found and unique.\r\n\t *\r\n\t * @async\r\n\t * @param {string} selectedEntityType\r\n\t * The entity type to gather object search filtered values for.\r\n\t * @param {string[]} existingPolicyNumbers\r\n\t * The currently loaded and displayed unique policy numbers.\r\n\t * @param {string} filter\r\n\t * The filter to limit possible returned data results.\r\n\t * @param {string} orderBy\r\n\t * The order by used for returning these paged data results.\r\n\t * @param {string} offset\r\n\t * The offset to start from when returning data values.\r\n\t * @param {string} limit\r\n\t * The limit to gather data for.\r\n\t * @param {IEntityInstance[]} existingPolicies\r\n\t * If sent, this will be the current recursive set of unique policy number\r\n\t * based data rows. This should only be sent inside of this method.\r\n\t * @returns {IEntityInstance[]}\r\n\t * An awaitable array of policy level data rows matching the current\r\n\t * object search, unique by policy number.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate async loadRecursiveUniqueValues(\r\n\t\tselectedEntityType: string,\r\n\t\texistingPolicyNumbers: string[],\r\n\t\tfilter: string,\r\n\t\torderBy: string,\r\n\t\toffset: number,\r\n\t\tlimit: number,\r\n\t\texistingPolicies: IEntityInstance[] = []): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup = selectedEntityType;\r\n\t\tconst policies: IEntityInstance[] =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\torderBy,\r\n\t\t\t\t\toffset,\r\n\t\t\t\t\tlimit);\r\n\r\n\t\tconst uniquePolicies: IEntityInstance[] =\r\n\t\t\tpolicies\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(item: IEntityInstance) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst policyNumber: string =\r\n\t\t\t\t\t\t\titem.data.policyNumber;\r\n\t\t\t\t\t\tconst firstInstance: boolean =\r\n\t\t\t\t\t\t\texistingPolicyNumbers.indexOf(\r\n\t\t\t\t\t\t\t\tpolicyNumber) === -1;\r\n\r\n\t\t\t\t\t\tif (firstInstance === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texistingPolicyNumbers.push(\r\n\t\t\t\t\t\t\t\tpolicyNumber);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn firstInstance;\r\n\t\t\t\t\t});\r\n\r\n\t\t// Handle a partial load or a fully loaded original limit request.\r\n\t\tif (policies.length < limit\r\n\t\t\t|| existingPolicies.concat(\r\n\t\t\t\tuniquePolicies).length >= limit)\r\n\t\t{\r\n\t\t\treturn existingPolicies\r\n\t\t\t\t.concat(uniquePolicies);\r\n\t\t}\r\n\r\n\t\tuniquePolicies.forEach(\r\n\t\t\t(item: IEntityInstance) =>\r\n\t\t\t{\r\n\t\t\t\texistingPolicyNumbers.push(\r\n\t\t\t\t\titem.data.policyNumber);\r\n\t\t\t});\r\n\r\n\t\treturn await this.loadRecursiveUniqueValues(\r\n\t\t\tselectedEntityType,\r\n\t\t\texistingPolicyNumbers,\r\n\t\t\tfilter,\r\n\t\t\torderBy,\r\n\t\t\toffset + policies.length,\r\n\t\t\tlimit,\r\n\t\t\texistingPolicies\r\n\t\t\t\t.concat(uniquePolicies));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the matching latest transaction by product key value pair.\r\n\t *\r\n\t * @param {string} entityType\r\n\t * The entity type to find the latest transaction by product for.\r\n\t * @returns {IKeyValuePair}\r\n\t * The existing latest transaction by product key value pair matching the\r\n\t * sent entity type.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate getLatestTransactionByProduct(\r\n\t\tentityType: string): IKeyValuePair\r\n\t{\r\n\t\treturn this.latestTransactionsByProduct.filter(\r\n\t\t\t(item: IKeyValuePair) =>\r\n\t\t\t\titem.key === entityType)[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Resets any storage based data for this common table which is used when\r\n\t * we change the order by, filter set, or selected transaction\r\n\t * entity types.\r\n\t *\r\n\t * @param {string} entityType\r\n\t * The entity type to update the latest transaction by product for.\r\n\t * @param {IEntityInstance[]} transactionInstances\r\n\t * The set of existing transaction instances that match this sent entity\r\n\t * type.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate updateLatestTransactionsByProduct(\r\n\t\tentityType: string,\r\n\t\ttransactionInstances: IEntityInstance[]): void\r\n\t{\r\n\t\tconst latestTransactionByProduct: IKeyValuePair =\r\n\t\t\tthis.getLatestTransactionByProduct(\r\n\t\t\t\tentityType);\r\n\r\n\t\tif (transactionInstances.length > 0)\r\n\t\t{\r\n\t\t\tlatestTransactionByProduct.value =\r\n\t\t\t\ttransactionInstances[\r\n\t\t\t\t\ttransactionInstances.length - 1].id;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlatestTransactionByProduct.value = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the latest transaction for all products. This ensures that\r\n\t * when the API Promise is called again, it will not use the previous\r\n\t * latest transaction ID as a filter.\r\n\t *\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate clearLatestTransactionsByProduct(): void\r\n\t{\r\n\t\tconst selectedTransactionEntityTypes: string[] =\r\n\t\t\tthis.dataSet.data.selectedTransactionEntityTypes;\r\n\r\n\t\tfor (const selectedEntityType of\r\n\t\t\tselectedTransactionEntityTypes)\r\n\t\t{\r\n\t\t\tconst latestTransactionByProduct: IKeyValuePair =\r\n\t\t\t\tthis.getLatestTransactionByProduct(\r\n\t\t\t\t\tselectedEntityType);\r\n\r\n\t\t\tlatestTransactionByProduct.value = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the primary filter for the policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The primary search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compilePrimaryFilter(): string\r\n\t{\r\n\t\tconst activeFilters: string[] =\r\n\t\t\t[\r\n\t\t\t\tthis.compileCreatedOrChangedByFilter(),\r\n\t\t\t\tthis.compileTypeFilter(),\r\n\t\t\t\tthis.compileStatusFilter(),\r\n\t\t\t\tthis.compileKeywordsFilter(),\r\n\t\t\t\tthis.compileDateRangeFilter()\r\n\t\t\t].filter(\r\n\t\t\t\t(filterItem: string) =>\r\n\t\t\t\t\t!AnyHelper.isNullOrWhitespace(filterItem));\r\n\r\n\t\tlet overallFilter: string = AppConstants.empty;\r\n\t\tfor (const filter of activeFilters)\r\n\t\t{\r\n\t\t\toverallFilter +=\r\n\t\t\t\tAnyHelper.isNullOrWhitespace(overallFilter)\r\n\t\t\t\t\t? `(${filter})`\r\n\t\t\t\t\t: ` and (${filter})`;\r\n\t\t}\r\n\r\n\t\treturn overallFilter;\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the date range filter for the policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The date range search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileDateRangeFilter(): string\r\n\t{\r\n\t\tlet numberOfDays: number = 0;\r\n\t\tswitch (this.dataSet.data.createdDate)\r\n\t\t{\r\n\t\t\tcase AppConstants.dateLimits.pastThirtyDays:\r\n\t\t\t\tnumberOfDays = 30;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.dateLimits.pastNinetyDays:\r\n\t\t\t\tnumberOfDays = 90;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AppConstants.dateLimits.pastOneHundredAndEightyDays:\r\n\t\t\t\tnumberOfDays = 180;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn this.getFilterValue(\r\n\t\t\tthis.dataSet.data.createdDate,\r\n\t\t\t`${AppConstants.commonProperties.createDate} ge `\r\n\t\t\t\t+ `'${DateHelper\r\n\t\t\t\t\t.getSystemDateTime()\r\n\t\t\t\t\t.minus({ day: numberOfDays })\r\n\t\t\t\t\t.startOf(DateHelper.timeUnits.day)\r\n\t\t\t\t\t.toISO()}'`);\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the type filter for the policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The type search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileTypeFilter(): string\r\n\t{\r\n\t\treturn this.getFilterValue(\r\n\t\t\tthis.dataSet.data.type,\r\n\t\t\t`${AppConstants.commonProperties.type} eq `\r\n\t\t\t\t+ `'${this.dataSet.data.type}'`);\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the status filter for the policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The status search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileStatusFilter(): string\r\n\t{\r\n\t\treturn this.getFilterValue(\r\n\t\t\tthis.dataSet.data.status,\r\n\t\t\t`${AppConstants.commonProperties.status} eq `\r\n\t\t\t\t+ `'${this.dataSet.data.status}'`);\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the created by or changed by filter for the\r\n\t * policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The created by or changed by range search filter matching current\r\n\t * selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileCreatedOrChangedByFilter(): string\r\n\t{\r\n\t\tconst createdByFilter: string =\r\n\t\t\tthis.getFilterValue(\r\n\t\t\t\tthis.dataSet.data.createdBy,\r\n\t\t\t\t`${AppConstants.commonProperties.createdById} eq `\r\n\t\t\t\t\t+ `${this.sessionService.user.id}`);\r\n\t\tconst changedByFilter: string =\r\n\t\t\tthis.getFilterValue(\r\n\t\t\t\tthis.dataSet.data.changedBy,\r\n\t\t\t\t`${AppConstants.commonProperties.changedById} eq `\r\n\t\t\t\t\t+ `${this.sessionService.user.id}`);\r\n\r\n\t\tswitch (true)\r\n\t\t{\r\n\t\t\tcase AnyHelper.isNullOrWhitespace(createdByFilter)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(changedByFilter):\r\n\t\t\t\treturn AppConstants.empty;\r\n\t\t\tcase AnyHelper.isNullOrWhitespace(createdByFilter)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(changedByFilter):\r\n\t\t\t\treturn changedByFilter;\r\n\t\t\tcase !AnyHelper.isNullOrWhitespace(createdByFilter)\r\n\t\t\t\t&& AnyHelper.isNullOrWhitespace(changedByFilter):\r\n\t\t\t\treturn createdByFilter;\r\n\t\t\tcase !AnyHelper.isNullOrWhitespace(createdByFilter)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(changedByFilter):\r\n\t\t\t\treturn `${createdByFilter} or ${changedByFilter}`;\r\n\t\t}\r\n\r\n\t\treturn AppConstants.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the keywords filter for the policy search.\r\n\t *\r\n\t * @returns {string}\r\n\t * The keywords search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileKeywordsFilter(): string\r\n\t{\r\n\t\tconst keywordFilter: string =\r\n\t\t\tthis.dataSet.data.keywordFilter;\r\n\r\n\t\tif (AnyHelper.isNullOrWhitespace(keywordFilter))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tlet searchArray: string[] =\r\n\t\t\tkeywordFilter.split(\r\n\t\t\t\tAppConstants.characters.space);\r\n\t\tsearchArray =\r\n\t\t\tsearchArray.map(\r\n\t\t\t\t(word: string) =>\r\n\t\t\t\t\tAppConstants.commonProperties.keywords\r\n\t\t\t\t\t\t+ `.Contains('${word}')`);\r\n\r\n\t\treturn searchArray.join(' and ');\r\n\t}\r\n\r\n\t/**\r\n\t * Compiles and returns the latest transaction filter for the policy search.\r\n\t *\r\n\t * @param {string} entityType\r\n\t * The entity type to compile a latest transaction filter for.\r\n\t * @param {IEntityInstance[]} existingPolicies\r\n\t * The set of existing policies used to ensure we filter for latest.\r\n\t * @returns {string}\r\n\t * The latest transaction search filter matching current selection values.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate compileLatestTransactionFilter(\r\n\t\tentityType: string,\r\n\t\texistingPolicies: IEntityInstance[]): string\r\n\t{\r\n\t\tconst latestTransactionByProduct: IKeyValuePair =\r\n\t\t\tthis.getLatestTransactionByProduct(\r\n\t\t\t\tentityType);\r\n\r\n\t\tif (AnyHelper.isNull(latestTransactionByProduct.value))\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tif (this.sortField !== AppConstants.commonProperties.id)\r\n\t\t{\r\n\t\t\tconst apiSortField: string =\r\n\t\t\t\tthis.sortField.replace(\r\n\t\t\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tconst latestPolicyTransaction: IEntityInstance =\r\n\t\t\t\texistingPolicies.find(\r\n\t\t\t\t\t(item: IEntityInstance) =>\r\n\t\t\t\t\t\titem.id === latestTransactionByProduct.value);\r\n\r\n\t\t\tconst sortValue: string =\r\n\t\t\t\tget(\r\n\t\t\t\t\tlatestPolicyTransaction,\r\n\t\t\t\t\t'data.' + this.sortField);\r\n\r\n\t\t\tconst sortComparator: string =\r\n\t\t\t\tthis.sortOrder === -1\r\n\t\t\t\t\t? AppConstants.filterQueryOperators.lessThan\r\n\t\t\t\t\t: AppConstants.filterQueryOperators.greaterThan;\r\n\r\n\t\t\treturn `(${apiSortField} eq '${sortValue}' `\r\n\t\t\t\t+ `and id lt ${latestTransactionByProduct.value}) or `\r\n\t\t\t\t+ `(${apiSortField} ${sortComparator} '${sortValue}')`;\r\n\t\t}\r\n\r\n\t\treturn `id lt ${latestTransactionByProduct.value}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the filter value or an empty string if the sent value is null,\r\n\t * whitespace, or any.\r\n\t *\r\n\t * @param {any} value\r\n\t * The value to check for a required filter string.\r\n\t * @param {string} filterValue\r\n\t * The filter value to return if the sent value is not null, whitespace,\r\n\t * or any.\r\n\t * @returns {string}\r\n\t * The calculated filter value.\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate getFilterValue(\r\n\t\tvalue: any,\r\n\t\tfilterValue: string): string\r\n\t{\r\n\t\treturn AnyHelper.isNullOrWhitespace(value)\r\n\t\t\t|| value === AppConstants.any\r\n\t\t\t? AppConstants.empty\r\n\t\t\t: filterValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the url query string to store currently selected transaction\r\n\t * entity types, the keyword filter, and order by values.\r\n\t *\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate updateUrlQuery(): void\r\n\t{\r\n\t\tconst queryParameters: any =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\tselectedTransactionEntityTypes:\r\n\t\t\t\t\tthis.dataSet.data.selectedTransactionEntityTypes,\r\n\t\t\t\tcreatedDate:\r\n\t\t\t\t\tthis.dataSet.data.createdDate,\r\n\t\t\t\tstatus:\r\n\t\t\t\t\tthis.dataSet.data.status,\r\n\t\t\t\ttype:\r\n\t\t\t\t\tthis.dataSet.data.type,\r\n\t\t\t\tchangedBy:\r\n\t\t\t\t\tthis.dataSet.data.changedBy,\r\n\t\t\t\tcreatedBy:\r\n\t\t\t\t\tthis.dataSet.data.createdBy,\r\n\t\t\t\tkeywordFilter:\r\n\t\t\t\t\tthis.dataSet.data.keywordFilter,\r\n\t\t\t\torderBy:\r\n\t\t\t\t\tthis.orderBy,\r\n\t\t\t\texactPropertyOrderBy:\r\n\t\t\t\t\tthis.exactPropertyOrderBy,\r\n\t\t\t\tsearchMode:\r\n\t\t\t\t\t this.searchMode\r\n\t\t\t};\r\n\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(queryParameters)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the selected data row policy term page.\r\n\t *\r\n\t * @async\r\n\t * @memberof InsurancePolicySearchComponent\r\n\t */\r\n\tprivate async navigateToParent(): Promise\r\n\t{\r\n\t\tconst transactionInstance: IEntityInstance =\r\n\t\t\tthis.commonTableContext.source.selectedItem;\r\n\t\tthis.entityInstanceApiService\r\n\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\ttransactionInstance.entityType;\r\n\t\tconst routeModule: string =\r\n\t\t\tAppConstants.moduleNames.policy\r\n\t\t\t\t+ '/entities';\r\n\t\tconst routeType: string = AppConstants.viewTypes.edit;\r\n\t\tconst routeLayoutType: string =\r\n\t\t\ttransactionInstance.data.status ===\r\n\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t.transactionStatusTypes.quote\r\n\t\t\t\t|| (transactionInstance.data.status ===\r\n\t\t\t\t\tInsuranceConstants.transactionStatusTypes.pending\r\n\t\t\t\t\t\t&& transactionInstance.data.type !==\r\n\t\t\t\t\t\t\tInsuranceConstants.transactionTypes.renewal)\r\n\t\t\t\t? AppConstants\r\n\t\t\t\t\t.layoutTypes\r\n\t\t\t\t\t.quickQuote\r\n\t\t\t\t: AppConstants\r\n\t\t\t\t\t.layoutTypes\r\n\t\t\t\t\t.full;\r\n\t\tlet routeId: number;\r\n\t\tlet routeTypeGroup: string;\r\n\r\n\t\tif (transactionInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.quote\r\n\t\t\t&& transactionInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.pending\r\n\t\t\t&& transactionInstance.data.status !==\r\n\t\t\t\tInsuranceConstants.transactionStatusTypes.application)\r\n\t\t{\r\n\t\t\tconst policyTermParents: IEntityInstance[] =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.getParents(\r\n\t\t\t\t\t\ttransactionInstance.id,\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tInsuranceConstants\r\n\t\t\t\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t\t\t\t.policyTerms);\r\n\r\n\t\t\trouteId = policyTermParents[0].id;\r\n\t\t\trouteTypeGroup = InsuranceConstants\r\n\t\t\t\t.insuranceEntityTypeGroups\r\n\t\t\t\t.policyTerms;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\trouteId = transactionInstance.id;\r\n\t\t\trouteTypeGroup = transactionInstance.entityType;\r\n\t\t}\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\trouteModule,\r\n\t\t\t\trouteTypeGroup,\r\n\t\t\t\trouteType,\r\n\t\t\t\trouteId\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tqueryParams:\r\n\t\t\t\t{\r\n\t\t\t\t\trouteData:\r\n\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlayoutType: routeLayoutType\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-insurance',\r\n\ttemplateUrl: './insurance.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main\r\n * insurance page.\r\n *\r\n * @export\r\n * @class InsuranceComponent\r\n */\r\nexport class InsuranceComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tInsuranceConstants\r\n} from '@insurance/constants/insurance-constants';\r\nimport {\r\n\tIInsuranceEntityHierarchy\r\n} from '@insurance/interfaces/insurance-entity-hierarchy';\r\nimport {\r\n\tIInsuranceKeyContacts\r\n} from '@insurance/interfaces/insurance-key-contacts.interface';\r\nimport {\r\n\tIInsuranceServiceProvider\r\n} from '@insurance/interfaces/insurance-service-provider.interface';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIProductSetting\r\n} from '@shared/interfaces/application-objects/product-setting.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\n\r\n/**\r\n * A class representing a common interface to gather fully populated\r\n * service provider information.\r\n *\r\n * @export\r\n * @class ServiceProviderService\r\n */\r\n@Injectable()\r\nexport class ServiceProviderService\r\n{\r\n\t/**\r\n\t * Creates an instance of an ServiceProviderService.\r\n\t *\r\n\t * @param {InsuranceService} insuranceService\r\n\t * The insurance service for this component.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service for this component.\r\n\t * @param {Router} router\r\n\t * The router service for this component.\r\n\t * @param {ResolverService} resolverService\r\n\t * The resolver service for this component.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service for this component.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic readonly insuranceService: InsuranceService,\r\n\t\tpublic readonly entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic readonly router: Router,\r\n\t\tpublic readonly resolverService: ResolverService,\r\n\t\tpublic readonly activityService: ActivityService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the service provider description matching the\r\n\t * service provider identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {string} serviceProviderId\r\n\t * The resource identifier of the service provider.\r\n\t * @param {string} serviceProviderType\r\n\t * The type of the service provider.\r\n\t * @param {string} serviceProviderEffectiveDate\r\n\t * The effective date of the service provider.\r\n\t * @returns {Promise}\r\n\t * An awaitable description used to display a service provider.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getServiceProviderDescription(\r\n\t\tserviceProviderId: string,\r\n\t\tserviceProviderType: string,\r\n\t\tserviceProviderEffectiveDate: string): Promise\r\n\t{\r\n\t\tconst serviceProviderInstance: IEntityInstance =\r\n\t\t\tawait this.getServiceProviderInstance(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: serviceProviderId,\r\n\t\t\t\t\ttype: serviceProviderType\r\n\t\t\t\t});\r\n\r\n\t\tconst serviceProviderDisplayName: string =\r\n\t\t\tthis.getEntityDisplayName(\r\n\t\t\t\tserviceProviderInstance);\r\n\r\n\t\tif (AnyHelper.isNull(serviceProviderDisplayName))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn serviceProviderDisplayName\r\n\t\t\t+ ' - Effective: '\r\n\t\t\t+ StringHelper.format(\r\n\t\t\t\tserviceProviderEffectiveDate,\r\n\t\t\t\tAppConstants.formatTypes.shortDate);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets a detailed list of service providers living under\r\n\t * a determined policy instance.\r\n\t *\r\n\t * @param {number} policyId\r\n\t * The policy identifier.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The detailed policy service providers, including the\r\n\t * systematically created display name.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getDetailedServiceProviders(\r\n\t\tpolicyId: number): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\tconst policy: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.get(policyId);\r\n\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tpolicy.data.serviceProviders;\r\n\r\n\t\tconst detailedServiceProviders: IInsuranceServiceProvider[] = [];\r\n\r\n\t\tfor (const serviceProvider of serviceProviders)\r\n\t\t{\r\n\t\t\tconst serviceProviderInstance: IEntityInstance =\r\n\t\t\t\tawait this.getServiceProviderInstance(\r\n\t\t\t\t\tserviceProvider);\r\n\r\n\t\t\tconst serviceProviderDisplayName: string =\r\n\t\t\t\tthis.getEntityDisplayName(serviceProviderInstance)\r\n\r\n\t\t\tdetailedServiceProviders.push(\r\n\t\t\t\t{\r\n\t\t\t\t\t...serviceProvider,\r\n\t\t\t\t\t...{\r\n\t\t\t\t\t\tdisplayName:\r\n\t\t\t\t\t\t\tserviceProviderDisplayName,\r\n\t\t\t\t\t\tinstanceId:\r\n\t\t\t\t\t\t\tserviceProviderInstance.id,\r\n\t\t\t\t\t\tentityType:\r\n\t\t\t\t\t\t\tserviceProviderInstance.entityType\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn detailedServiceProviders;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an activity to executes the ManageServiceProvider\r\n\t * workflow action to add a new service provider to the policy.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {IInsuranceServiceProvider} serviceProvider\r\n\t * The new service provider object.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async addServiceProvider(\r\n\t\tpolicyId: number,\r\n\t\tserviceProvider: IInsuranceServiceProvider): Promise\r\n\t{\r\n\t\tconst addServiceProviderPromise: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst queryString: string =\r\n\t\t\t\t\tthis.entityInstanceApiService.formUrlParam(\r\n\t\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tserviceProviderAction:\r\n\t\t\t\t\t\t\t\tInsuranceConstants.serviceProviderActionNames.add,\r\n\t\t\t\t\t\t\tserviceProviderId: serviceProvider.id,\r\n\t\t\t\t\t\t\tserviceProviderType: serviceProvider.type,\r\n\t\t\t\t\t\t\tserviceProviderSubtype: serviceProvider.subtype,\r\n\t\t\t\t\t\t\tserviceProviderEffectiveDate:\r\n\t\t\t\t\t\t\t\tserviceProvider.effectiveDate\r\n\t\t\t\t\t\t});\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.policies;\r\n\r\n\t\t\t\tawait this.entityInstanceApiService.executeAction(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\t'ManageServiceProvider',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t`${queryString}`);\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\taddServiceProviderPromise(),\r\n\t\t\t\t'Adding Service Provider',\r\n\t\t\t\t'Added Service Provider',\r\n\t\t\t\t'Service Provider was successfully added.',\r\n\t\t\t\t'Service Provider was not added.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy id and/or set of policy service providers\r\n\t * this method will get all the available instances split by\r\n\t * type and subtype when applicable.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {string} type\r\n\t * The service provider type.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype.\r\n\t * @param {string[]} parentAgencyResourceIds\r\n\t * A list of resource ids representing the agencies as parents of\r\n\t * the users that may be available to be added as a service provider.\r\n\t * @param {string} apiFilter\r\n\t * A custom api filter.\r\n\t * @param {string} apiOrderBy\r\n\t * A custom api order by.\r\n\t * @param {boolean} excludeEffective\r\n\t * whether to exclude the effective service providers from\r\n\t * the results or not. Defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable group of entity instances representing the\r\n\t * service providers of type Agency and or Producer,\r\n\t * available to add to the policy.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getAvailableServiceProviderInstances(\r\n\t\tpolicyId: number,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[] = null,\r\n\t\ttype: string = null,\r\n\t\tsubtype: string = null,\r\n\t\tparentAgencyResourceIds: string[] = null,\r\n\t\tapiFilter: string = AppConstants.empty,\r\n\t\tapiOrderBy: string = AppConstants.empty,\r\n\t\texcludeEffective: boolean = true): Promise\r\n\t{\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNullOrEmptyArray(policyServiceProviders)\r\n\t\t\t\t? await this.getDetailedServiceProviders(policyId)\r\n\t\t\t\t: policyServiceProviders;\r\n\r\n\t\tconst agencyInstances: IEntityInstance[] =\r\n\t\t\tAnyHelper.isNull(type)\r\n\t\t\t\t|| type === InsuranceConstants.serviceProviderTypes.agency\r\n\t\t\t\t? await this.getAvailableAgencyServiceProviderInstances(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tsubtype,\r\n\t\t\t\t\tserviceProviders,\r\n\t\t\t\t\tapiFilter,\r\n\t\t\t\t\tapiOrderBy,\r\n\t\t\t\t\texcludeEffective)\r\n\t\t\t\t: [];\r\n\r\n\t\tconst producerInstances: IEntityInstance[] =\r\n\t\t\tAnyHelper.isNull(type)\r\n\t\t\t\t|| type === InsuranceConstants.serviceProviderTypes.producer\r\n\t\t\t\t? await this.getAvailableProducerServiceProviderInstances(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tparentAgencyResourceIds,\r\n\t\t\t\t\tserviceProviders,\r\n\t\t\t\t\tapiFilter,\r\n\t\t\t\t\tapiOrderBy,\r\n\t\t\t\t\texcludeEffective)\r\n\t\t\t\t: [];\r\n\r\n\t\treturn [\r\n\t\t\t... agencyInstances,\r\n\t\t\t... producerInstances\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the matching service providers by resource identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string[]} resourceIdentifiers\r\n\t * A list of resource identifiers deteremined to find\r\n\t * matching service providers.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of insurance service providers\r\n\t * matching the list of provided resource identifiers.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getMatchingServiceProvidersByResourceId(\r\n\t\tpolicyId: number,\r\n\t\tresourceIdentifiers: string[],\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[] = null)\r\n\t\t\t: Promise\r\n\t{\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNullOrEmptyArray(policyServiceProviders)\r\n\t\t\t\t? await this.getDetailedServiceProviders(policyId)\r\n\t\t\t\t: policyServiceProviders;\r\n\r\n\t\treturn serviceProviders\r\n\t\t\t.filter(\r\n\t\t\t\t(serviceProvider: IInsuranceServiceProvider) =>\r\n\t\t\t\t\tresourceIdentifiers.some(\r\n\t\t\t\t\t\t(resourceId: string) =>\r\n\t\t\t\t\t\t\tserviceProvider.id === resourceId));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the policy effective service providers.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string} type\r\n\t * The service provider type. If null or not set it will get all\r\n\t * effective items from the array no matter the type.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {boolean} includeFutureEffective\r\n\t * Whether to include any future effective service provider or not.\r\n\t * Defaults to false.\r\n\t * @returns {Promise}\r\n\t * The policy effective service providers.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getEffectiveServiceProviders(\r\n\t\tpolicyId: number,\r\n\t\ttype: string = null,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[] = null,\r\n\t\tincludeFutureEffective: boolean = false): Promise\r\n\t{\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNullOrEmptyArray(policyServiceProviders)\r\n\t\t\t\t? await this.getDetailedServiceProviders(policyId)\r\n\t\t\t\t: policyServiceProviders;\r\n\r\n\t\tconst agencyEffectiveServiceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNull(type)\r\n\t\t\t\t|| type\r\n\t\t\t\t\t=== InsuranceConstants.serviceProviderTypes.agency\r\n\t\t\t\t? await this.getAgencyEffectiveServiceProviders(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tserviceProviders)\r\n\t\t\t\t: [];\r\n\r\n\t\tconst producerEffectiveServiceProvider: IInsuranceServiceProvider =\r\n\t\t\tAnyHelper.isNull(type)\r\n\t\t\t\t|| type\r\n\t\t\t\t\t=== InsuranceConstants.serviceProviderTypes.producer\r\n\t\t\t\t? await this.getEffectiveServiceProvider(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.producer,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tserviceProviders)\r\n\t\t\t\t: null;\r\n\r\n\t\tconst futureEffectiveServiceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tincludeFutureEffective\r\n\t\t\t\t? await this.getFutureEffectiveServiceProviders(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tserviceProviders)\r\n\t\t\t\t: [];\r\n\r\n\t\treturn [\r\n\t\t\t... agencyEffectiveServiceProviders,\r\n\t\t\t... !AnyHelper.isNull(producerEffectiveServiceProvider)\r\n\t\t\t\t? [producerEffectiveServiceProvider]\r\n\t\t\t\t: [],\r\n\t\t\t... futureEffectiveServiceProviders\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the effective service provider.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string} type\r\n\t * The service provider type.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype. If null or not set it will get all\r\n\t * effective items from the array no matter the subtype.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t *\r\n\t * @returns {IInsuranceServiceProvider}\r\n\t * The effective service provider.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getEffectiveServiceProvider(\r\n\t\tpolicyId: number,\r\n\t\ttype: string,\r\n\t\tsubtype: string = null,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[] = null)\r\n\t\t\t: Promise\r\n\t{\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNullOrEmptyArray(policyServiceProviders)\r\n\t\t\t\t? await this.getDetailedServiceProviders(policyId)\r\n\t\t\t\t: policyServiceProviders;\r\n\r\n\t\tconst serviceProvidersByType: IInsuranceServiceProvider[] =\r\n\t\t\tthis.getServiceProvidersByType(\r\n\t\t\t\tserviceProviders,\r\n\t\t\t\ttype,\r\n\t\t\t\tsubtype);\r\n\r\n\t\tconst pastServiceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tserviceProvidersByType.filter(\r\n\t\t\t\t(serviceProvider: IInsuranceServiceProvider) =>\r\n\t\t\t\tDateHelper.fromUtcIso(serviceProvider.effectiveDate)\r\n\t\t\t\t\t<= DateHelper.getSystemDateTime());\r\n\r\n\t\tconst reduceToMostRecent: Function =\r\n\t\t\t(previous: IInsuranceServiceProvider,\r\n\t\t\t\tcurrent: IInsuranceServiceProvider) =>\r\n\t\t\t\t+DateHelper.fromUtcIso(current.effectiveDate)\r\n\t\t\t\t\t> +DateHelper.fromUtcIso(previous.effectiveDate)\r\n\t\t\t\t\t? current\r\n\t\t\t\t\t: previous;\r\n\r\n\t\treturn !AnyHelper.isNullOrEmptyArray(pastServiceProviders)\r\n\t\t\t\t? pastServiceProviders\r\n\t\t\t\t\t.reduce(\r\n\t\t\t\t\t\t(previous: IInsuranceServiceProvider,\r\n\t\t\t\t\t\tcurrent: IInsuranceServiceProvider) =>\r\n\t\t\t\t\t\t\treduceToMostRecent(previous, current))\r\n\t\t\t\t: null;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the future effective service providers.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string} type\r\n\t * The service provider type. If null or not set it will get all\r\n\t * effective items from the array no matter the type.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype. If null or not set it will get all\r\n\t * effective items from the array no matter the subtype.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @returns {Promise}\r\n\t * The policy future effective service providers.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getFutureEffectiveServiceProviders(\r\n\t\tpolicyId: number,\r\n\t\ttype: string = null,\r\n\t\tsubtype: string = null,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[] = null)\r\n\t\t\t: Promise\r\n\t{\r\n\t\tconst serviceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tAnyHelper.isNullOrEmptyArray(policyServiceProviders)\r\n\t\t\t\t? await this.getDetailedServiceProviders(policyId)\r\n\t\t\t\t: policyServiceProviders;\r\n\r\n\t\tconst serviceProvidersByType: IInsuranceServiceProvider[] =\r\n\t\t\tthis.getServiceProvidersByType(\r\n\t\t\t\tserviceProviders,\r\n\t\t\t\ttype,\r\n\t\t\t\tsubtype);\r\n\r\n\t\treturn serviceProvidersByType.filter(\r\n\t\t\t(serviceProvider: IInsuranceServiceProvider) =>\r\n\t\t\tDateHelper.fromUtcIso(serviceProvider.effectiveDate)\r\n\t\t\t\t> DateHelper.getSystemDateTime());\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Service Provider Instance\r\n\t * by querying the resource identifier and finding\r\n\t * a single query result matching.\r\n\t *\r\n\t * @param {IInsuranceServiceProvider} serviceProvider\r\n\t * The service provider object.\r\n\t * @param {string} entityTypeGroup\r\n\t * The entity type group. This is null by default.\r\n\t * When null it will systematically set the right type group\r\n\t * based on the service provider type.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * The service provider entity instance.\r\n\t * Will return null when no results were found.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getServiceProviderInstance(\r\n\t\tserviceProvider: IInsuranceServiceProvider,\r\n\t\tentityTypeGroup: string = null): Promise\r\n\t{\r\n\t\tconst serviceProviderEntityTypeGroup: string =\r\n\t\t\tserviceProvider.type\r\n\t\t\t\t=== InsuranceConstants.serviceProviderTypes.agency\r\n\t\t\t\t? InsuranceConstants.insuranceEntityTypeGroups.agencies\r\n\t\t\t\t: InsuranceConstants.insuranceEntityTypeGroups.users;\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAnyHelper.isNull(entityTypeGroup)\r\n\t\t\t\t? serviceProviderEntityTypeGroup\r\n\t\t\t\t: entityTypeGroup;\r\n\r\n\t\treturn this.entityInstanceApiService\r\n\t\t\t.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.resourceIdentifier} `\r\n\t\t\t\t\t+ `${AppConstants.filterQueryOperators.equal} `\r\n\t\t\t\t\t+ `'${serviceProvider.id}'`,\r\n\t\t\t\tAppConstants.empty,\r\n\t\t\t\ttrue);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the entity display name.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} entityInstance\r\n\t * The entity instance.\r\n\t * @returns {string}\r\n\t * The display name.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic getEntityDisplayName(\r\n\t\tentityInstance: IEntityInstance): string\r\n\t{\r\n\t\tif (AnyHelper.isNull(entityInstance?.data))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn entityInstance.entityType\r\n\t\t\t=== InsuranceConstants.insuranceEntityTypes.user\r\n\t\t\t? StringHelper.toNameString(\r\n\t\t\t\tentityInstance.data.firstName,\r\n\t\t\t\tentityInstance.data.lastName)\r\n\t\t\t: StringHelper.fromNameObject(entityInstance.data.name);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets whether a product setting is active or service existing by product.\r\n\t *\r\n\t * @async\r\n\t * @param {IProductSetting[]} productSetting\r\n\t * The product settings.\r\n\t * @param {IEntityInstance} product\r\n\t * The product instance.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic isActiveProductSettingByProduct(\r\n\t\tproductSetting: IProductSetting,\r\n\t\tproduct: IEntityInstance): boolean\r\n\t{\r\n\t\treturn productSetting.name === product.data.name\r\n\t\t\t&& (productSetting.authority\r\n\t\t\t\t=== InsuranceConstants.productSettingAuthorities.active\r\n\t\t\t\t|| productSetting.authority\r\n\t\t\t\t\t=== InsuranceConstants.productSettingAuthorities\r\n\t\t\t\t\t\t.serviceExisting);\r\n\t}\r\n\r\n\t/**\r\n\t * Given a policy id, service provider type, and a service\r\n\t * provider subtype this will load and return the active(effective)\r\n\t * associated entity instance matching the provider type and id.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy data holding service providers.\r\n\t * @param {string} serviceProviderType\r\n\t * The policyTermTransaction data holding transaction type.\r\n\t * @param {string} serviceProviderSubtype\r\n\t * The service provider type to load an entity instance for.\r\n\t * @returns {Promise}\r\n\t * An awaitable entity instance that represents the currently active\r\n\t * service provider.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getActiveServiceProviderInstance(\r\n\t\tpolicyId: number,\r\n\t\tserviceProviderType: string,\r\n\t\tserviceProviderSubtype: string = null): Promise\r\n\t{\r\n\t\tconst subtype: string =\r\n\t\t\tAnyHelper.isNullOrEmpty(serviceProviderSubtype)\r\n\t\t\t\t&& serviceProviderType ===\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.agency\r\n\t\t\t\t? InsuranceConstants.serviceProviderSubtypes.retail\r\n\t\t\t\t: null;\r\n\r\n\t\tconst effectiveServiceProvider =\r\n\t\t\tawait this.getEffectiveServiceProvider(\r\n\t\t\t\tpolicyId,\r\n\t\t\t\tserviceProviderType,\r\n\t\t\t\tsubtype);\r\n\r\n\t\treturn this.getServiceProviderInstance(\r\n\t\t\teffectiveServiceProvider);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets key contacts data from a transaction, term, or policy instance.\r\n\t *\r\n\t * @async\r\n\t * @param {IEntityInstance} entity\r\n\t * The entity to get key contacts for.\r\n\t * @returns {Promise}\r\n\t * An awaitable key contacts object holding product, agency, and\r\n\t * primary insured information.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tpublic async getKeyContacts(\r\n\t\tentity: IEntityInstance): Promise\r\n\t{\r\n\t\tconst insuranceEntityHierarchy: IInsuranceEntityHierarchy =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getInsuranceEntityHierarchy(\r\n\t\t\t\t\tentity.id,\r\n\t\t\t\t\tentity.entityType)\r\n\r\n\t\tconst insuranceKeyContacts: any =\r\n\t\t\t{\r\n\t\t\t\tagency:\r\n\t\t\t\t\tawait this.getActiveServiceProviderInstance(\r\n\t\t\t\t\t\tinsuranceEntityHierarchy.policy.id,\r\n\t\t\t\t\t\tInsuranceConstants.serviceProviderTypes.agency),\r\n\t\t\t\tproducer:\r\n\t\t\t\t\tawait this.getActiveServiceProviderInstance(\r\n\t\t\t\t\t\tinsuranceEntityHierarchy.policy.id,\r\n\t\t\t\t\t\tInsuranceConstants.serviceProviderTypes.producer),\r\n\t\t\t\tprimaryInsured:\r\n\t\t\t\t\tinsuranceEntityHierarchy\r\n\t\t\t\t\t\t.policyTermTransaction.data.interests[0]\r\n\t\t\t};\r\n\r\n\t\treturn insuranceKeyContacts;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the agency effective service providers.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {IInsuranceServiceProvider[]} serviceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @returns {Promise}\r\n\t * The effective service providers split by subtype.\r\n\t * Applicable to Agency.\r\n\t * type only\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate async getAgencyEffectiveServiceProviders(\r\n\t\tpolicyId: number,\r\n\t\tserviceProviders: IInsuranceServiceProvider[])\r\n\t\t\t: Promise\r\n\t{\r\n\t\tconst effectiveServiceProviders: IInsuranceServiceProvider[] = [];\r\n\t\tfor(const subtype\r\n\t\t\tof Object.keys(InsuranceConstants.serviceProviderSubtypes))\r\n\t\t{\r\n\t\t\tconst effectiveServiceProviderBySubType =\r\n\t\t\t\tawait this.getEffectiveServiceProvider(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.agency,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderSubtypes[subtype],\r\n\t\t\t\t\tserviceProviders)\r\n\r\n\t\t\tif (!AnyHelper.isNull(effectiveServiceProviderBySubType))\r\n\t\t\t{\r\n\t\t\t\teffectiveServiceProviders.push(\r\n\t\t\t\t\teffectiveServiceProviderBySubType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn effectiveServiceProviders;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the exclude service providers filter.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string} type\r\n\t * The service provider type.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @returns {Promise}\r\n\t * The service providers query that will filter from an api call\r\n\t * those ids that need to be excluded as are already effective.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate async getExcludeEffectiveProvidersFilter(\r\n\t\tpolicyId: number,\r\n\t\ttype: string,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[]): Promise\r\n\t{\r\n\t\tconst effectiveServiceProviders: IInsuranceServiceProvider[] =\r\n\t\t\tawait this.getEffectiveServiceProviders(\r\n\t\t\t\tpolicyId,\r\n\t\t\t\ttype,\r\n\t\t\t\tpolicyServiceProviders);\r\n\r\n\t\tlet excludeEffectiveFilter: string = AppConstants.empty;\r\n\t\teffectiveServiceProviders.forEach(\r\n\t\t\t(effectiveProvider: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst serviceProviderInstanceId: number =\r\n\t\t\t\t\teffectiveProvider.instanceId;\r\n\t\t\t\tconst commonFilterPart: string =\r\n\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t+ `${AppConstants.filterQueryOperators.notEqual} `\r\n\t\t\t\t\t\t\t+ `${serviceProviderInstanceId}`;\r\n\t\t\t\texcludeEffectiveFilter =\r\n\t\t\t\t\tAnyHelper.isNullOrEmpty(excludeEffectiveFilter)\r\n\t\t\t\t\t\t? commonFilterPart\r\n\t\t\t\t\t\t: `${excludeEffectiveFilter} `\r\n\t\t\t\t\t\t\t+ `${AppConstants.filterQueryOperators.and} `\r\n\t\t\t\t\t\t\t+ commonFilterPart;\r\n\t\t\t});\r\n\r\n\t\treturn excludeEffectiveFilter;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the service providers by type.\r\n\t *\r\n\t * @async\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {string} type\r\n\t * The service provider type. If null or not set it will get all\r\n\t * effective items from the array no matter the type.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype. If null or not set it will get all\r\n\t * effective items from the array no matter the subtype.\r\n\t *\r\n\t * @returns {IInsuranceServiceProvider}\r\n\t * A set of insurance service providers split by type.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate getServiceProvidersByType(\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[],\r\n\t\ttype: string,\r\n\t\tsubtype: string): IInsuranceServiceProvider[]\r\n\t{\r\n\t\treturn policyServiceProviders\r\n\t\t\t.filter((serviceProvider: IInsuranceServiceProvider) =>\r\n\t\t\t\t(AnyHelper.isNull(type)\r\n\t\t\t\t\t|| serviceProvider.type === type)\r\n\t\t\t\t\t&& (AnyHelper.isNull(subtype)\r\n\t\t\t\t\t\t|| serviceProvider.subtype === subtype));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the matching service providers by resource identifier.\r\n\t *\r\n\t * @async\r\n\t * @param {IInsuranceServiceProvider[]} agencyServiceProviders\r\n\t * The policy agency service providers used to get the user children from.\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {string} apiFilter\r\n\t * A custom api filter.\r\n\t * @param {string} apiOrderBy\r\n\t * A custom api order by.\r\n\t * @param {boolean} excludeEffective\r\n\t * whether to exclude the effective service providers from\r\n\t * the results or not. Defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable set of producer(user) entity instances that are children\r\n\t * of a set of agencies.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate async getProducersInstancesAsAgencyChildren(\r\n\t\tagencyServiceProviders: IInsuranceServiceProvider[],\r\n\t\tpolicyId: number,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[],\r\n\t\tapiFilter: string,\r\n\t\tapiOrderBy: string,\r\n\t\texcludeEffective: boolean): Promise\r\n\t{\r\n\t\tconst parentIds: number[] =\r\n\t\t\t[\r\n\t\t\t\t...new Set(agencyServiceProviders.map(\r\n\t\t\t\t\t(serviceProvider: any) =>\r\n\t\t\t\t\t\tserviceProvider.instanceId))\r\n\t\t\t];\r\n\r\n\t\tlet filterQuery: string =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(parentIds)\r\n\t\t\t\t? `Parents.Any(ParentInstanceId in (${parentIds})) `\r\n\t\t\t\t: AppConstants.empty;\r\n\r\n\t\tfilterQuery =\r\n\t\t\t!AnyHelper.isNullOrEmpty(apiFilter)\r\n\t\t\t\t? filterQuery\r\n\t\t\t\t\t+ ` AND ${apiFilter}`\r\n\t\t\t\t: filterQuery\r\n\r\n\t\tif(excludeEffective)\r\n\t\t{\r\n\t\t\tconst excludeEffectiveFilter: string =\r\n\t\t\t\tawait this.getExcludeEffectiveProvidersFilter(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.producer,\r\n\t\t\t\t\tpolicyServiceProviders);\r\n\r\n\t\t\tfilterQuery =\r\n\t\t\t\t!AnyHelper.isNullOrEmpty(excludeEffectiveFilter)\r\n\t\t\t\t\t?\texcludeEffectiveFilter\r\n\t\t\t\t\t\t+ ` AND ${filterQuery}`\r\n\t\t\t\t\t: filterQuery;\r\n\t\t}\r\n\r\n\t\treturn ApiHelper.getFullDataSet(\r\n\t\t\tthis.entityInstanceApiService,\r\n\t\t\tfilterQuery,\r\n\t\t\tapiOrderBy,\r\n\t\t\tInsuranceConstants.insuranceEntityTypeGroups.users,\r\n\t\t\tAppConstants.dataLimits.small);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the agency instances available to be added\r\n\t * as a service provider to the policy\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {string} subtype\r\n\t * The service provider subtype.\r\n\t * @param {string} apiFilter\r\n\t * A custom api filter.\r\n\t * @param {string} apiOrderBy\r\n\t * A custom api order by.\r\n\t * @param {boolean} excludeEffective\r\n\t * whether to exclude the effective service providers from\r\n\t * the results or not. Defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable group of entity instances representing the\r\n\t * service providers of type Agency, available to add to the policy.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate async getAvailableAgencyServiceProviderInstances(\r\n\t\tpolicyId: number,\r\n\t\tsubtype: string,\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[],\r\n\t\tapiFilter: string,\r\n\t\tapiOrderBy: string,\r\n\t\texcludeEffective: boolean): Promise\r\n\t{\r\n\t\tconst transaction: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getLatestPolicyTermTransactionByPolicy(policyId);\r\n\t\tconst product: IEntityInstance =\r\n\t\t\tawait this.insuranceService\r\n\t\t\t\t.getProductByTransaction(transaction);\r\n\r\n\t\tlet filterQuery: string = \"status eq 'Active' \";\r\n\r\n\t\tfilterQuery =\r\n\t\t\t!AnyHelper.isNull(subtype)\r\n\t\t\t\t? filterQuery\r\n\t\t\t\t\t+ `AND type eq '${subtype}' `\r\n\t\t\t\t: filterQuery;\r\n\r\n\t\tfilterQuery =\r\n\t\t\t!AnyHelper.isNullOrEmpty(apiFilter)\r\n\t\t\t\t? filterQuery\r\n\t\t\t\t\t+ ` AND ${apiFilter}`\r\n\t\t\t\t: filterQuery;\r\n\r\n\t\tif(excludeEffective)\r\n\t\t{\r\n\t\t\tconst excludeEffectiveFilter: string =\r\n\t\t\t\tawait this.getExcludeEffectiveProvidersFilter(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.agency,\r\n\t\t\t\t\tpolicyServiceProviders);\r\n\r\n\t\t\tfilterQuery =\r\n\t\t\t\t!AnyHelper.isNullOrEmpty(excludeEffectiveFilter)\r\n\t\t\t\t\t?\texcludeEffectiveFilter\r\n\t\t\t\t\t\t+ ` AND ${filterQuery}`\r\n\t\t\t\t\t: filterQuery;\r\n\t\t}\r\n\r\n\t\tconst agencies: IEntityInstance[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityInstanceApiService,\r\n\t\t\t\tfilterQuery,\r\n\t\t\t\tapiOrderBy,\r\n\t\t\t\tInsuranceConstants.insuranceEntityTypeGroups.agencies);\r\n\r\n\t\treturn agencies.filter(\r\n\t\t\t(agency: IEntityInstance) =>\r\n\t\t\t\tagency.data.productSettings.some(\r\n\t\t\t\t\t(productSetting: IProductSetting) =>\r\n\t\t\t\t\t\tthis.isActiveProductSettingByProduct(\r\n\t\t\t\t\t\t\t\tproductSetting,\r\n\t\t\t\t\t\t\t\tproduct)));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the producer(user) instances available to be added\r\n\t * as a service provider to the policy.\r\n\t *\r\n\t * @async\r\n\t * @param {number} policyId\r\n\t * The policy id.\r\n\t * @param {string[]} parentAgencyResourceIds\r\n\t * A list of resource ids representing the agencies as parents of\r\n\t * the users that may be available to be added as a service provider.\r\n\t * @param {IInsuranceServiceProvider[]} policyServiceProviders\r\n\t * The set of policy service providers. If null or not provided then\r\n\t * it will go and get the data from the policy id.\r\n\t * @param {string} apiFilter\r\n\t * A custom api filter.\r\n\t * @param {string} apiOrderBy\r\n\t * A custom api order by.\r\n\t * @param {boolean} excludeEffective\r\n\t * whether to exclude the effective service providers from\r\n\t * the results or not. Defaults to true.\r\n\t * @returns {Promise}\r\n\t * An awaitable group of entity instances representing the\r\n\t * service providers of type Producer(user), available to add to the policy.\r\n\t * @memberof ServiceProviderService\r\n\t */\r\n\tprivate async getAvailableProducerServiceProviderInstances(\r\n\t\tpolicyId: number,\r\n\t\tparentAgencyResourceIds: string[],\r\n\t\tpolicyServiceProviders: IInsuranceServiceProvider[],\r\n\t\tapiFilter: string,\r\n\t\tapiOrderBy: string,\r\n\t\texcludeEffective: boolean): Promise\r\n\t{\r\n\t\tconst parentAgencyServiceProviders: IInsuranceServiceProvider[] =\r\n\t\t\t!AnyHelper.isNullOrEmptyArray(parentAgencyResourceIds)\r\n\t\t\t\t? await this.getMatchingServiceProvidersByResourceId(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tparentAgencyResourceIds,\r\n\t\t\t\t\tpolicyServiceProviders)\r\n\t\t\t\t: await this.getEffectiveServiceProviders(\r\n\t\t\t\t\tpolicyId,\r\n\t\t\t\t\tInsuranceConstants.serviceProviderTypes.agency,\r\n\t\t\t\t\tpolicyServiceProviders);\r\n\r\n\t\treturn this.getProducersInstancesAsAgencyChildren(\r\n\t\t\tparentAgencyServiceProviders,\r\n\t\t\tpolicyId,\r\n\t\t\tpolicyServiceProviders,\r\n\t\t\tapiFilter,\r\n\t\t\tapiOrderBy,\r\n\t\t\texcludeEffective);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tInsurancePolicySearchComponent\r\n} from '@insurance/components/insurance-policy-search/insurance-policy-search.component';\r\nimport {\r\n\tMakePaymentDetailsComponent\r\n} from '@insurance/components/make-payment-details/make-payment-details.component';\r\nimport {\r\n\tStatusReasonsComponent\r\n} from '@insurance/components/status-reasons/status-reasons.component';\r\nimport {\r\n\tAdjustmentDetailsComponent\r\n} from '@insurance/components/wizard-steps/organization/commissions/adjustment-details/adjustment-details.component';\r\nimport {\r\n\tAdjustmentSummaryComponent\r\n} from '@insurance/components/wizard-steps/organization/commissions/adjustment-summary/adjustment-summary.component';\r\nimport {\r\n\tSelectDisbursementOrganizationsComponent\r\n} from '@insurance/components/wizard-steps/organization/commissions/select-disbursement-organizations/select-disbursement-organizations.component';\r\nimport {\r\n\tAdjustmentWriteOffAmountComponent\r\n} from '@insurance/components/wizard-steps/policy/adjustment-write-off-amount/adjustment-write-off-amount.component';\r\nimport {\r\n\tAdjustmentWriteOffCommentsComponent\r\n} from '@insurance/components/wizard-steps/policy/adjustment-write-off-comments/adjustment-write-off-comments.component';\r\nimport {\r\n\tBindTransactionComponent\r\n} from '@insurance/components/wizard-steps/policy/bind-transaction/bind-transaction.component';\r\nimport {\r\n\tCreateTransactionComponent\r\n} from '@insurance/components/wizard-steps/policy/create-transaction/create-transaction.component';\r\nimport {\r\n\tRefundConfirmationComponent\r\n} from '@insurance/components/wizard-steps/policy/generate-refund/refund-confirmation.component';\r\nimport {\r\n\tMakePaymentReceiptComponent\r\n} from '@insurance/components/wizard-steps/policy/make-payment-receipt/make-payment-receipt.component';\r\nimport {\r\n\tMakePaymentComponent\r\n} from '@insurance/components/wizard-steps/policy/make-payment/make-payment.component';\r\nimport {\r\n\tFortePaymentMethodComponent\r\n} from '@insurance/components/wizard-steps/policy/manage-payment-method/forte/forte-payment-method.component';\r\nimport {\r\n\tManagePaymentMethodComponent\r\n} from '@insurance/components/wizard-steps/policy/manage-payment-method/manage-payment-method.component';\r\nimport {\r\n\tPaymentMethodProcessorComponent\r\n} from '@insurance/components/wizard-steps/policy/manage-payment-method/payment-method-processor.component';\r\nimport {\r\n\tProcessOnePaymentMethodComponent\r\n} from '@insurance/components/wizard-steps/policy/manage-payment-method/process-one/process-one-payment-method.component';\r\nimport {\r\n\tNonRenewPolicyComponent\r\n} from '@insurance/components/wizard-steps/policy/non-renew-policy/non-renew-policy.component';\r\nimport {\r\n\tPaymentBatchApproveComponent\r\n} from '@insurance/components/wizard-steps/policy/payment-batch-approve/payment-batch-approve.component';\r\nimport {\r\n\tPaymentBatchCreateComponent\r\n} from '@insurance/components/wizard-steps/policy/payment-batch-create/payment-batch-create.component';\r\nimport {\r\n\tPaymentDetailsComponent\r\n} from '@insurance/components/wizard-steps/policy/payment-details/payment-details.component';\r\nimport {\r\n\tPaymentReversalConfirmationComponent\r\n} from '@insurance/components/wizard-steps/policy/payment-reversal/payment-reversal-confirmation.component';\r\nimport {\r\n\tPaymentReversalSelectionComponent\r\n} from '@insurance/components/wizard-steps/policy/payment-reversal/payment-reversal-selection.component';\r\nimport {\r\n\tRescindNonRenewPolicyComponent\r\n} from '@insurance/components/wizard-steps/policy/rescind-non-renew-policy/rescind-non-renew-policy.component';\r\nimport {\r\n\tTermAlterPaymentPlanComponent\r\n} from '@insurance/components/wizard-steps/policy/term-alter-payment-plan/term-alter-payment-plan.component';\r\nimport {\r\n\tTransactionCancelEffectiveDateComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-cancel-effective-date/transaction-cancel-effective-date.component';\r\nimport {\r\n\tTransactionCancelReasonsComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-cancel-reasons/transaction-cancel-reasons.component';\r\nimport {\r\n\tTransactionCancelReinstateCommentsComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-cancel-reinstate-comments/transaction-cancel-reinstate-comments.component';\r\nimport {\r\n\tTransactionDeclineReasonsComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-decline-reasons/transaction-decline-reasons.component';\r\nimport {\r\n\tTransactionEndorseIssueDifferencesComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-endorse-issue-differences/transaction-endorse-issue-differences.component';\r\nimport {\r\n\tTransactionEndorseIssueSummaryComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-endorse-issue-summary/transaction-endorse-issue-summary.component';\r\nimport {\r\n\tTransactionEndorseReasonsComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-endorse-reasons/transaction-endorse-reasons.component';\r\nimport {\r\n\tTransactionEndorseStatusEffectiveDateComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-endorse-status-effective-date/transaction-endorse-status-effective-date.component';\r\nimport {\r\n\tTransactionRescindCancelComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-rescind-cancel/transaction-rescind-cancel.component';\r\nimport {\r\n\tTransactionRescindEndorseComponent\r\n} from '@insurance/components/wizard-steps/policy/transaction-rescind-endorse/transaction-rescind-endorse.component';\r\nimport {\r\n\tStatusReasonsDirective\r\n} from '@insurance/directives/status-reasons.directive';\r\nimport {\r\n\tAssociatedEntityListComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/associated-entity-list.component';\r\nimport {\r\n\tAssociatedKeyContactsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/associated-key-contacts/associated-key-contacts.component';\r\nimport {\r\n\tAssociatedOrganizationComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/associated-organization/associated-organization.component';\r\nimport {\r\n\tTransactionAccountingDetailsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-accounting-details/transaction-accounting-details.component';\r\nimport {\r\n\tTransactionAssetsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-assets/transaction-assets.component';\r\nimport {\r\n\tTransactionCoveragesDeductiblesComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-coverages-deductibles/transaction-coverages-deductibles.component';\r\nimport {\r\n\tTransactionFormsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-forms/transaction-forms.component';\r\nimport {\r\n\tTransactionInterestsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-interests/transaction-interests.component';\r\nimport {\r\n\tTransactionReasonsComponent\r\n} from '@insurance/dynamic-components/associated-entity-list/transaction-reasons/transaction-reasons.component';\r\nimport {\r\n\tCommissionDisbursementDetailsComponent\r\n} from '@insurance/dynamic-components/commission-disbursement-list/commission-disbursement-details.component';\r\nimport {\r\n\tCommissionDisbursementListExpandComponent\r\n} from '@insurance/dynamic-components/commission-disbursement-list/commission-disbursement-list-expand/commission-disbursement-list-expand.component';\r\nimport {\r\n\tCommissionDisbursementSummaryComponent\r\n} from '@insurance/dynamic-components/commission-disbursement-list/commission-disbursement-summary.component';\r\nimport {\r\n\tCreateQuoteOrClaimComponent\r\n} from '@insurance/dynamic-components/create-quote-or-claim/create-quote-or-claim.component';\r\nimport {\r\n\tNextPaymentInstallmentDetailsComponent\r\n} from '@insurance/dynamic-components/next-payment-installment-details/next-payment-installment-details.component';\r\nimport {\r\n\tPolicyAndClaimQuickSearchComponent\r\n} from '@insurance/dynamic-components/policy-and-claim-quick-search/policy-and-claim-quick-search.component';\r\nimport {\r\n\tInsuranceComponent\r\n} from '@insurance/insurance.component';\r\nimport {\r\n\tInsuranceTokenLookup\r\n} from '@insurance/insurance.token-lookup';\r\nimport {\r\n\tInsuranceService\r\n} from '@insurance/services/insurance.service';\r\nimport {\r\n\tServiceProviderService\r\n} from '@insurance/services/service-provider.service';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAdjustmentDetailsComponent,\r\n\t\tAdjustmentSummaryComponent,\r\n\t\tAdjustmentWriteOffAmountComponent,\r\n\t\tAdjustmentWriteOffCommentsComponent,\r\n\t\tAssociatedEntityListComponent,\r\n\t\tAssociatedKeyContactsComponent,\r\n\t\tAssociatedOrganizationComponent,\r\n\t\tInsuranceComponent,\r\n\t\tBindTransactionComponent,\r\n\t\tCommissionDisbursementSummaryComponent,\r\n\t\tCommissionDisbursementDetailsComponent,\r\n\t\tCommissionDisbursementListExpandComponent,\r\n\t\tCreateQuoteOrClaimComponent,\r\n\t\tCreateTransactionComponent,\r\n\t\tFortePaymentMethodComponent,\r\n\t\tInsurancePolicySearchComponent,\r\n\t\tMakePaymentComponent,\r\n\t\tMakePaymentDetailsComponent,\r\n\t\tMakePaymentReceiptComponent,\r\n\t\tNextPaymentInstallmentDetailsComponent,\r\n\t\tNonRenewPolicyComponent,\r\n\t\tPaymentBatchApproveComponent,\r\n\t\tPaymentBatchCreateComponent,\r\n\t\tPaymentDetailsComponent,\r\n\t\tManagePaymentMethodComponent,\r\n\t\tPaymentMethodProcessorComponent,\r\n\t\tPaymentReversalConfirmationComponent,\r\n\t\tRefundConfirmationComponent,\r\n\t\tPaymentReversalSelectionComponent,\r\n\t\tPolicyAndClaimQuickSearchComponent,\r\n\t\tProcessOnePaymentMethodComponent,\r\n\t\tRescindNonRenewPolicyComponent,\r\n\t\tSelectDisbursementOrganizationsComponent,\r\n\t\tStatusReasonsComponent,\r\n\t\tStatusReasonsDirective,\r\n\t\tTransactionAccountingDetailsComponent,\r\n\t\tTransactionAssetsComponent,\r\n\t\tTransactionCancelEffectiveDateComponent,\r\n\t\tTransactionCancelReasonsComponent,\r\n\t\tTransactionCancelReinstateCommentsComponent,\r\n\t\tTransactionCoveragesDeductiblesComponent,\r\n\t\tTransactionFormsComponent,\r\n\t\tTransactionEndorseIssueDifferencesComponent,\r\n\t\tTransactionEndorseIssueSummaryComponent,\r\n\t\tTransactionEndorseReasonsComponent,\r\n\t\tTransactionInterestsComponent,\r\n\t\tTransactionReasonsComponent,\r\n\t\tTransactionRescindCancelComponent,\r\n\t\tTransactionRescindEndorseComponent,\r\n\t\tTransactionEndorseStatusEffectiveDateComponent,\r\n\t\tTransactionDeclineReasonsComponent,\r\n\t\tTermAlterPaymentPlanComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'insurance',\r\n\t\t\t\tcomponent: InsuranceComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.users,\r\n\t\t\t\t\t\tAppConstants.securityGroups.administrators,\r\n\t\t\t\t\t\tAppConstants.securityGroups.supportUsers\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.administrators,\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.supportUsers\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t\tAdjustmentDetailsComponent,\r\n\t\tAdjustmentSummaryComponent,\r\n\t\tAdjustmentWriteOffAmountComponent,\r\n\t\tAdjustmentWriteOffCommentsComponent,\r\n\t\tBindTransactionComponent,\r\n\t\tCommissionDisbursementSummaryComponent,\r\n\t\tCommissionDisbursementDetailsComponent,\r\n\t\tCommissionDisbursementListExpandComponent,\r\n\t\tCreateQuoteOrClaimComponent,\r\n\t\tCreateTransactionComponent,\r\n\t\tInsurancePolicySearchComponent,\r\n\t\tMakePaymentComponent,\r\n\t\tMakePaymentDetailsComponent,\r\n\t\tMakePaymentReceiptComponent,\r\n\t\tNextPaymentInstallmentDetailsComponent,\r\n\t\tNonRenewPolicyComponent,\r\n\t\tPaymentBatchApproveComponent,\r\n\t\tPaymentBatchCreateComponent,\r\n\t\tPaymentDetailsComponent,\r\n\t\tPolicyAndClaimQuickSearchComponent,\r\n\t\tRescindNonRenewPolicyComponent,\r\n\t\tStatusReasonsComponent,\r\n\t\tSelectDisbursementOrganizationsComponent,\r\n\t\tTransactionCancelEffectiveDateComponent,\r\n\t\tTransactionCancelReasonsComponent,\r\n\t\tTransactionCancelReinstateCommentsComponent,\r\n\t\tTransactionEndorseIssueDifferencesComponent,\r\n\t\tTransactionEndorseIssueSummaryComponent,\r\n\t\tTransactionEndorseReasonsComponent,\r\n\t\tTransactionEndorseStatusEffectiveDateComponent,\r\n\t\tTransactionRescindCancelComponent,\r\n\t\tTransactionRescindEndorseComponent,\r\n\t\tTransactionDeclineReasonsComponent\r\n\t],\r\n\tproviders: [\r\n\t\tAdjustmentDetailsComponent,\r\n\t\tAdjustmentSummaryComponent,\r\n\t\tAdjustmentWriteOffAmountComponent,\r\n\t\tAdjustmentWriteOffCommentsComponent,\r\n\t\tAssociatedEntityListComponent,\r\n\t\tAssociatedKeyContactsComponent,\r\n\t\tAssociatedOrganizationComponent,\r\n\t\tBindTransactionComponent,\r\n\t\tCommissionDisbursementSummaryComponent,\r\n\t\tCommissionDisbursementDetailsComponent,\r\n\t\tCommissionDisbursementListExpandComponent,\r\n\t\tCreateQuoteOrClaimComponent,\r\n\t\tCreateTransactionComponent,\r\n\t\tInsurancePolicySearchComponent,\r\n\t\tInsuranceService,\r\n\t\t{\r\n\t\t\tprovide: InsuranceTokenLookup.tokens.InsuranceService,\r\n\t\t\tuseClass: InsuranceService\r\n\t\t},\r\n\t\tServiceProviderService,\r\n\t\t{\r\n\t\t\tprovide: InsuranceTokenLookup.tokens.ServiceProviderService,\r\n\t\t\tuseClass: ServiceProviderService\r\n\t\t},\r\n\t\tMakePaymentComponent,\r\n\t\tMakePaymentReceiptComponent,\r\n\t\tNextPaymentInstallmentDetailsComponent,\r\n\t\tNonRenewPolicyComponent,\r\n\t\tPaymentBatchApproveComponent,\r\n\t\tPaymentBatchCreateComponent,\r\n\t\tPaymentDetailsComponent,\r\n\t\tPolicyAndClaimQuickSearchComponent,\r\n\t\tRescindNonRenewPolicyComponent,\r\n\t\tSelectDisbursementOrganizationsComponent,\r\n\t\tStatusReasonsComponent,\r\n\t\tStatusReasonsDirective,\r\n\t\tTransactionAccountingDetailsComponent,\r\n\t\tTransactionAssetsComponent,\r\n\t\tTransactionCancelEffectiveDateComponent,\r\n\t\tTransactionCancelReasonsComponent,\r\n\t\tTransactionCancelReinstateCommentsComponent,\r\n\t\tTransactionCoveragesDeductiblesComponent,\r\n\t\tTransactionFormsComponent,\r\n\t\tTransactionEndorseIssueDifferencesComponent,\r\n\t\tTransactionEndorseIssueSummaryComponent,\r\n\t\tTransactionEndorseReasonsComponent,\r\n\t\tTransactionInterestsComponent,\r\n\t\tTransactionReasonsComponent,\r\n\t\tTransactionEndorseStatusEffectiveDateComponent,\r\n\t\tTransactionRescindCancelComponent,\r\n\t\tTransactionRescindEndorseComponent,\r\n\t\tTransactionDeclineReasonsComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold insurance route specific\r\n * logic and display resources.\r\n *\r\n * @export\r\n * @class InsuranceModule\r\n */\r\nexport class InsuranceModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tClaimsComponent\r\n} from '@claims/claims.component';\r\nimport {\r\n\tClaimsTokenLookup\r\n} from '@claims/claims.token-lookup';\r\nimport {\r\n\tAddClaimPaymentComponent\r\n} from '@claims/components/wizard-steps/claim/add-claim-payment/add-claim-payment.component';\r\nimport {\r\n\tAddExposureClaimComponent\r\n} from '@claims/components/wizard-steps/claim/add-exposure-claim/add-exposure-claim.component';\r\nimport {\r\n\tAdjustReservesClaimComponent\r\n} from '@claims/components/wizard-steps/claim/adjust-reserves-claim/adjust-reserves-claim.component';\r\nimport {\r\n\tApproveClaimPaymentClaimComponent\r\n} from '@claims/components/wizard-steps/claim/approve-claim-payment/approve-claim-payment-claim.component';\r\nimport {\r\n\tCreateClaimComponent\r\n} from '@claims/components/wizard-steps/claim/create-claim/create-claim.component';\r\nimport {\r\n\tManageAdditionalPayeesClaimComponent\r\n} from '@claims/components/wizard-steps/claim/manage-additional-payees-claim/manage-additional-payees-claim.component';\r\nimport {\r\n\tManageClaimOwnerClaimComponent\r\n} from '@claims/components/wizard-steps/claim/manage-claim-owner/manage-claim-owner-claim.component';\r\nimport {\r\n\tManageExposurePartiesClaimComponent\r\n} from '@claims/components/wizard-steps/claim/manage-exposure-parties-claim/manage-exposure-parties-claim.component';\r\nimport {\r\n\tManagePartiesConfirmationClaimComponent\r\n} from '@claims/components/wizard-steps/claim/manage-parties-confirmation-claim/manage-parties-confirmation-claim.component';\r\nimport {\r\n\tRejectClaimPaymentClaimComponent\r\n} from '@claims/components/wizard-steps/claim/reject-claim-payment/reject-claim-payment-claim.component';\r\nimport {\r\n\tSelectClaimTypeComponent\r\n} from '@claims/components/wizard-steps/claim/select-claim-type/select-claim-type.component';\r\nimport {\r\n\tUpdateClaimExposureStatusClaimComponent\r\n} from '@claims/components/wizard-steps/claim/update-claim-exposure-status/update-claim-exposure-status-claim.component';\r\nimport {\r\n\tUpdateClaimStatusClaimComponent\r\n} from '@claims/components/wizard-steps/claim/update-claim-status/update-claim-status-claim.component';\r\nimport {\r\n\tVerifyCoverageClaimComponent\r\n} from '@claims/components/wizard-steps/claim/verify-coverage-claim/verify-coverage-claim.component';\r\nimport {\r\n\tClaimPaymentAdditionalPayeesComponent\r\n} from '@claims/dynamic-components/claim-payment-additional-payees/claim-payment-additional-payees.component';\r\nimport {\r\n\tClaimPaymentPayeeComponent\r\n} from '@claims/dynamic-components/claim-payment-payee/claim-payment-payee.component';\r\nimport {\r\n\tExposureOutstandingReservesComponent\r\n} from '@claims/dynamic-components/exposure-outstanding-reserves/exposure-outstanding-reserves.component';\r\nimport {\r\n\tExposurePaymentsComponent\r\n} from '@claims/dynamic-components/exposure-payments/exposure-payments.component';\r\nimport {\r\n\tExposureRecoveriesComponent\r\n} from '@claims/dynamic-components/exposure-recoveries/exposure-recoveries.component';\r\nimport {\r\n\tClaimsService\r\n} from '@claims/services/claims.service';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntitySearchComponent\r\n} from '@entity/components/entity-search/entity-search.component';\r\nimport {\r\n\tEntityComponent\r\n} from '@entity/entity.component';\r\nimport {\r\n\tInsuranceModule\r\n} from '@insurance/insurance.module';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\n\r\n/* eslint-disable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAddClaimPaymentComponent,\r\n\t\tAddExposureClaimComponent,\r\n\t\tAdjustReservesClaimComponent,\r\n\t\tApproveClaimPaymentClaimComponent,\r\n\t\tClaimsComponent,\r\n\t\tClaimPaymentAdditionalPayeesComponent,\r\n\t\tClaimPaymentPayeeComponent,\r\n\t\tCreateClaimComponent,\r\n\t\tExposureOutstandingReservesComponent,\r\n\t\tExposurePaymentsComponent,\r\n\t\tExposureRecoveriesComponent,\r\n\t\tManageAdditionalPayeesClaimComponent,\r\n\t\tManageClaimOwnerClaimComponent,\r\n\t\tManageExposurePartiesClaimComponent,\r\n\t\tManagePartiesConfirmationClaimComponent,\r\n\t\tRejectClaimPaymentClaimComponent,\r\n\t\tSelectClaimTypeComponent,\r\n\t\tUpdateClaimExposureStatusClaimComponent,\r\n\t\tUpdateClaimStatusClaimComponent,\r\n\t\tVerifyCoverageClaimComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tInsuranceModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'claim',\r\n\t\t\t\tcomponent: ClaimsComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.claimModuleAccess\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups.claimModuleAccess\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'entities',\r\n\t\t\t\t\t\tcomponent: EntityComponent,\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/view/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: ':displayComponent/create',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\tcomponent: EntitySearchComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t\tAddClaimPaymentComponent,\r\n\t\tAddExposureClaimComponent,\r\n\t\tAdjustReservesClaimComponent,\r\n\t\tApproveClaimPaymentClaimComponent,\r\n\t\tClaimPaymentAdditionalPayeesComponent,\r\n\t\tClaimPaymentPayeeComponent,\r\n\t\tCreateClaimComponent,\r\n\t\tExposureOutstandingReservesComponent,\r\n\t\tExposurePaymentsComponent,\r\n\t\tExposureRecoveriesComponent,\r\n\t\tManageAdditionalPayeesClaimComponent,\r\n\t\tManageClaimOwnerClaimComponent,\r\n\t\tManageExposurePartiesClaimComponent,\r\n\t\tManagePartiesConfirmationClaimComponent,\r\n\t\tRejectClaimPaymentClaimComponent,\r\n\t\tSelectClaimTypeComponent,\r\n\t\tUpdateClaimExposureStatusClaimComponent,\r\n\t\tUpdateClaimStatusClaimComponent,\r\n\t\tVerifyCoverageClaimComponent\r\n\t],\r\n\tproviders: [\r\n\t\tAddClaimPaymentComponent,\r\n\t\tAddExposureClaimComponent,\r\n\t\tAdjustReservesClaimComponent,\r\n\t\tApproveClaimPaymentClaimComponent,\r\n\t\tClaimPaymentAdditionalPayeesComponent,\r\n\t\tClaimPaymentPayeeComponent,\r\n\t\tClaimsService,\r\n\t\t{\r\n\t\t\tprovide: ClaimsTokenLookup.tokens.ClaimsService,\r\n\t\t\tuseClass: ClaimsService\r\n\t\t},\r\n\t\tCreateClaimComponent,\r\n\t\tExposureOutstandingReservesComponent,\r\n\t\tExposurePaymentsComponent,\r\n\t\tExposureRecoveriesComponent,\r\n\t\tManageAdditionalPayeesClaimComponent,\r\n\t\tManageClaimOwnerClaimComponent,\r\n\t\tManageExposurePartiesClaimComponent,\r\n\t\tManagePartiesConfirmationClaimComponent,\r\n\t\tRejectClaimPaymentClaimComponent,\r\n\t\tSelectClaimTypeComponent,\r\n\t\tUpdateClaimExposureStatusClaimComponent,\r\n\t\tUpdateClaimStatusClaimComponent,\r\n\t\tVerifyCoverageClaimComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold claims route specific logic and display resources.\r\n *\r\n * @export\r\n * @class ClaimsModule\r\n */\r\nexport class ClaimsModule\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tInjector,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tApiTokenLookup\r\n} from '@api/api-token.lookup';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityEventParameterConstants\r\n} from '@entity/shared/entity-event-parameter.constants';\r\nimport {\r\n\tEntityEventConstants\r\n} from '@entity/shared/entity-event.constants';\r\nimport {\r\n\tFormlyFieldConfig,\r\n\tFormlyFormOptions\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tFormlyHelper\r\n} from '@shared/helpers/formly.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tEntityLayout\r\n} from '@shared/implementations/entities/entity-layout';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityInstanceRuleViolation\r\n} from '@shared/interfaces/entities/entity-instance-rule-violation.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tObservable\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'entity-form',\r\n\ttemplateUrl: './entity-form.component.html',\r\n\tstyleUrls: ['./entity-form.component.scss'],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing the form view a formly displayed entity instance.\r\n * https://ngx-formly.github.io/ngx-formly/guide\r\n *\r\n * @export\r\n * @class EntityFormComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {AppCanDeactivateGuard}\r\n */\r\nexport class EntityFormComponent\r\nimplements OnInit, AppCanDeactivateGuard\r\n{\r\n\t/**\r\n\t * Creates an instance of an EntityFormComponent.\r\n\t *\r\n\t * @param {Injector} injector\r\n\t * The injector that can be used for methods in the layout.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service used to save or delete and notify the user.\r\n\t * @param {Location} location\r\n\t * The location used for navigation following a delete.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance api service used to handle crud actions\r\n\t * for the entity instance.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for display component providers.\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic injector: Injector,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic location: Location,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public pageContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the entity display identifier. This is used\r\n\t * for the page title and for messaging systems.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityIdentifier: string;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type.\r\n\t *\r\n\t * @type {EntityType}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityType: EntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the entity version.\r\n\t *\r\n\t * @type {IEntityVersion}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityVersion: IEntityVersion;\r\n\r\n\t/**\r\n\t * Gets or sets the entity type group.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityTypeGroup: string;\r\n\r\n\t/**\r\n\t * Gets or sets the formly form options.\r\n\t *\r\n\t * @type {FormlyFormOptions}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public formlyOptions: FormlyFormOptions;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input()public entityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the entity definition.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input()public entityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the entity layout.\r\n\t *\r\n\t * @type {EntityLayout}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityLayout: EntityLayout;\r\n\r\n\t/**\r\n\t * Gets or sets the entity instance rule violations.\r\n\t *\r\n\t * @type {IEntityInstanceRuleViolation[]}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public entityInstanceRuleViolations:\r\n\t\tIEntityInstanceRuleViolation[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the formly entity layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public formlyEntityLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the data for the entity as it exists\r\n\t * in the database.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public databaseEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the show content animation.\r\n\t * Defaults true.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public showContentAnimation: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets active tab index.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Input() public activeTabIndex: number;\r\n\r\n\t/**\r\n\t * Gets or sets the event emitter to send this component instance to\r\n\t * listening components.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\t@Output() public componentInstance: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the shared api token lookup\r\n\t * for injected services in formly layout functions.\r\n\t *\r\n\t * @type {ApiTokenLookup}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic apiTokenLookup: ApiTokenLookup = ApiTokenLookup;\r\n\r\n\t/**\r\n\t * Gets or sets the is saving value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Handles the before unload event sent from the current window based\r\n\t * on any action that will change the page.\r\n\t *\r\n\t * @memberof EntityFormComponent\r\n\t * @returns {Observable | boolean}\r\n\t * The value that will allow the router to know if the data in this form\r\n\t * is altered or not saved to the database. This implements the\r\n\t * AppCanDeactivateGuard interface.\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.beforeUnloadEvent)\r\n\tpublic canDeactivate(): Observable | boolean\r\n\t{\r\n\t\treturn this.saving === false\r\n\t\t\t&& ObjectHelper.getBusinessLogicDifferences(\r\n\t\t\t\t'EntityFormCanDeactivate',\r\n\t\t\t\tthis.databaseEntityInstance,\r\n\t\t\t\tthis.entityInstance).length === 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the enable/disable save entity event. This will\r\n\t * fire via form based entity validation.\r\n\t *\r\n\t * @param {boolean} enabled\r\n\t * If true, this will enable the entity save button otherwise\r\n\t * it will be disabled.\r\n\t * @memberof OperationButtonBarComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tEntityEventConstants.calculateEntityGridEvent,\r\n\t\t[\r\n\t\t\tEntityEventParameterConstants.gridColumns,\r\n\t\t\tEntityEventParameterConstants.sectionIndex\r\n\r\n\t\t])\r\n\tpublic calculateSectionGridColumns(\r\n\t\tgridColumns: string,\r\n\t\tsectionIndex: number): void\r\n\t{\r\n\t\tthis.setNestedDynamicGridColumns(\r\n\t\t\tthis.formlyEntityLayout,\r\n\t\t\tsectionIndex,\r\n\t\t\tgridColumns);\r\n\r\n\t\tthis.componentInstance.emit(this);\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Configures this components display based on the sent entity\r\n\t * information from the consuming component.\r\n\t *\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.entityInstance.resourceIdentifier)\r\n\t\t\t&& this.formlyEntityLayout.length > 0\r\n\t\t\t&& this.formlyEntityLayout[0].type !==\r\n\t\t\t\tFormlyConstants.customControls.customResourceIdentifier)\r\n\t\t{\r\n\t\t\tthis.formlyEntityLayout =\r\n\t\t\t\t[\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkey: AppConstants.commonProperties.resourceIdentifier,\r\n\t\t\t\t\t\ttype: FormlyConstants.customControls\r\n\t\t\t\t\t\t\t.customResourceIdentifier,\r\n\t\t\t\t\t\tprops: {}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t...this.formlyEntityLayout\r\n\t\t\t\t];\r\n\t\t}\r\n\r\n\t\tthis.componentInstance.emit(this);\r\n\t\tthis.loading = false;\r\n\r\n\t\t// Allow Formly to implement defaults and display values.\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the nested dynamic grid columns.\r\n\t *\r\n\t * @param {FormlyFieldConfig[]} formlyLayout\r\n\t * The formly layout.\r\n\t * @param {number} sectionIndex\r\n\t * The section index to be updated.\r\n\t * @param {string} dynamicGridColumns\r\n\t * The dynamic grid columns to be set.\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tpublic setNestedDynamicGridColumns(\r\n\t\tformlyLayout: FormlyFieldConfig[],\r\n\t\tsectionIndex: number,\r\n\t\tdynamicGridColumns: string): void\r\n\t{\r\n\t\tif (formlyLayout.length === 0)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tformlyLayout.forEach(\r\n\t\t\t(formlyField: FormlyFieldConfig) =>\r\n\t\t\t{\r\n\t\t\t\tif ((!FormlyHelper.isCustomFieldWrapper(formlyField)\r\n\t\t\t\t\t&& FormlyHelper.hasNestedFieldGroup(formlyField))\r\n\t\t\t\t\t|| FormlyHelper.isTabWrapper(formlyField))\r\n\t\t\t\t{\r\n\t\t\t\t\tformlyField.fieldGroup.forEach(\r\n\t\t\t\t\t\t(nestedField: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (AnyHelper.isNullOrEmptyArray(\r\n\t\t\t\t\t\t\t\tnestedField.fieldGroup))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.setDynamicGridColumns(\r\n\t\t\t\t\t\t\t\t\tnestedField,\r\n\t\t\t\t\t\t\t\t\tsectionIndex,\r\n\t\t\t\t\t\t\t\t\tdynamicGridColumns);\r\n\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.setNestedDynamicGridColumns(\r\n\t\t\t\t\t\t\t\tnestedField.fieldGroup,\r\n\t\t\t\t\t\t\t\tsectionIndex,\r\n\t\t\t\t\t\t\t\tdynamicGridColumns);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setDynamicGridColumns(\r\n\t\t\t\t\tformlyField,\r\n\t\t\t\t\tsectionIndex,\r\n\t\t\t\t\tdynamicGridColumns);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the dynamic grid columns of a field on a determined\r\n\t * section index.\r\n\t *\r\n\t * @param {FormlyFieldConfig} formlyField\r\n\t * The formly field.\r\n\t * @param {number} sectionIndex\r\n\t * The section index that requires update.\r\n\t * @param {string} dynamicGridColumns\r\n\t * The dynamic grid columns to be set.\r\n\t * @memberof EntityFormComponent\r\n\t */\r\n\tprivate setDynamicGridColumns(\r\n\t\tformlyField: FormlyFieldConfig,\r\n\t\tsectionIndex: number,\r\n\t\tdynamicGridColumns: string): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(formlyField.props.attributes)\r\n\t\t\t&& formlyField.props.attributes[\r\n\t\t\t\tFormlyConstants.attributeKeys.sectionIndex] === sectionIndex\r\n\t\t\t&& AnyHelper.isNullOrEmpty(formlyField.props.gridColumns))\r\n\t\t{\r\n\t\t\tformlyField.props.dynamicGridColumns = dynamicGridColumns;\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tEntityFormComponent\r\n} from '@entity/components/entity-form/entity-form.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntitySearchComponent\r\n} from '@entity/components/entity-search/entity-search.component';\r\nimport {\r\n\tParentSelectionComponent\r\n} from '@entity/components/wizard-steps/parent-selection/parent-selection.component';\r\nimport {\r\n\tEntityComponent\r\n} from '@entity/entity.component';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tAppCanDeactivateGuard\r\n} from '@shared/guards/app-can-deactivate.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\nimport {\r\n\tMarkdownModule\r\n} from 'ngx-markdown';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tEntityComponent,\r\n\t\tEntityFormComponent,\r\n\t\tEntityInstanceComponent,\r\n\t\tEntitySearchComponent,\r\n\t\tEntityComponent,\r\n\t\tEntityFormComponent,\r\n\t\tEntityInstanceComponent,\r\n\t\tEntitySearchComponent,\r\n\t\tParentSelectionComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMarkdownModule.forChild(),\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: ':moduleName/entities',\r\n\t\t\t\tcomponent: EntityComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':entityType/view/:id',\r\n\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':entityType/edit/:id',\r\n\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/create',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tcomponent: EntitySearchComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t\tParentSelectionComponent\r\n\t],\r\n\tproviders: [\r\n\t\tAppCanDeactivateGuard,\r\n\t\tEntityService,\r\n\t\tParentSelectionComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold entity route specific\r\n * logic and display resources.\r\n *\r\n * @export\r\n * @class EntityModule\r\n */\r\nexport class EntityModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpClient,\r\n\tHttpErrorResponse,\r\n\tHttpEvent,\r\n\tHttpHandler,\r\n\tHttpHeaders,\r\n\tHttpInterceptor,\r\n\tHttpRequest,\r\n\tHttpResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tStorageMap\r\n} from '@ngx-pwa/local-storage';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tCacheService\r\n} from '@shared/services/cache.service';\r\nimport {\r\n\tcatchError,\r\n\tconcatAll,\r\n\tfrom,\r\n\tinterval,\r\n\tlastValueFrom,\r\n\tmap,\r\n\tmergeMap,\r\n\tObservable,\r\n\tof,\r\n\tSubscription,\r\n\ttake,\r\n\ttap\r\n} from 'rxjs';\r\n\r\n/**\r\n * A class representing the middleware logic to intercept and modify\r\n * API requests in regards to the cache and ETag validations.\r\n *\r\n * @export\r\n * @class AppCacheHttpInterceptor\r\n * @implements {HttpInterceptor}\r\n */\r\n@Injectable()\r\nexport class AppCacheHttpInterceptor implements HttpInterceptor\r\n{\r\n\t/**\r\n\t * Creates an instance of an AppCacheHttpInterceptor.\r\n\t *\r\n\t * @param {StorageMap} storageMap\r\n\t * The local storage map used for ETag handling.\r\n\t * @param {CacheService} cacheService\r\n\t * The cache service used application wide.\r\n\t * @param {HttpClient} httpClient\r\n\t * The http client used to update the cache post modify.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly storageMap: StorageMap,\r\n\t\tprivate readonly cacheService: CacheService,\r\n\t\tprivate readonly httpClient: HttpClient)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the delay used to show a modified refresh message over\r\n\t * the existing expected error message from the failed activity.\r\n\t *\r\n\t * @Type {number}\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate readonly displayModifiedRefreshBannerDebounceDelay: number = 250;\r\n\r\n\t/**\r\n\t * Intercepts and handles all XHR requests.\r\n\t * This logic handles ETag validations and keeping the application\r\n\t * cache in sync sitewide.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tpublic intercept(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\t// If caches are not available, insecure, or the controller\r\n\t\t// handles critical data, this interceptor is not used.\r\n\t\tif (this.cacheService.cachesAreNullOrInsecure() === true\r\n\t\t\t|| request.url.indexOf(\r\n\t\t\t\t`/${AppConstants.apiControllers.authenticate}`) !== -1)\r\n\t\t{\r\n\t\t\treturn next.handle(request);\r\n\t\t}\r\n\r\n\t\tswitch (request.method)\r\n\t\t{\r\n\t\t\tcase AppConstants.httpRequestTypes.get:\r\n\t\t\tcase AppConstants.httpRequestTypes.patch:\r\n\t\t\tcase AppConstants.httpRequestTypes.post:\r\n\t\t\tcase AppConstants.httpRequestTypes.put:\r\n\t\t\t\treturn this.storageMap.get(request.url)\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tmergeMap((cachedETagValue: string) =>\r\n\t\t\t\t\t\t\trequest.method ===\r\n\t\t\t\t\t\t\t\tAppConstants.httpRequestTypes.get\r\n\t\t\t\t\t\t\t\t? this.interceptGet(\r\n\t\t\t\t\t\t\t\t\trequest,\r\n\t\t\t\t\t\t\t\t\tnext,\r\n\t\t\t\t\t\t\t\t\tcachedETagValue)\r\n\t\t\t\t\t\t\t\t: this.interceptModify(\r\n\t\t\t\t\t\t\t\t\trequest,\r\n\t\t\t\t\t\t\t\t\tnext,\r\n\t\t\t\t\t\t\t\t\tcachedETagValue)));\r\n\t\t\tcase AppConstants.httpRequestTypes.delete:\r\n\t\t\t\treturn this.interceptDelete(\r\n\t\t\t\t\trequest,\r\n\t\t\t\t\tnext);\r\n\t\t\tdefault:\r\n\t\t\t\treturn next.handle(request);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Intercepts and handles all get XHR requests.\r\n\t * This logic handles ETag validations and keeping the application\r\n\t * cache in sync sitewide for a get request.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @param {string} cachedETagValue\r\n\t * The current local stored etag value for this request.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tpublic interceptGet(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler,\r\n\t\tcachedETagValue: string): Observable>\r\n\t{\r\n\t\tconst requestWithETag: HttpRequest =\r\n\t\t\tthis.getRequestWithETag(\r\n\t\t\t\trequest,\r\n\t\t\t\tcachedETagValue,\r\n\t\t\t\tAppConstants.webApi.ifNoneMatch);\r\n\r\n\t\treturn next.handle(requestWithETag)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(async(response: HttpEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.handleGetResponse(\r\n\t\t\t\t\t\tresponse,\r\n\t\t\t\t\t\trequestWithETag,\r\n\t\t\t\t\t\tcachedETagValue);\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError((error: HttpErrorResponse) =>\r\n\t\t\t\t\tthis.handleGetError(\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\trequestWithETag,\r\n\t\t\t\t\t\tnext)));\r\n\t}\r\n\r\n\t/**\r\n\t * Intercepts and handles all put, post, and patch XHR requests.\r\n\t * This logic handles ETag validations to ensure a modification or\r\n\t * action is not being performed against an altered object and handles\r\n\t * background syncs.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @param {string} cachedETagValue\r\n\t * The current local stored etag value for this request.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tpublic interceptModify(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler,\r\n\t\tcachedETagValue: string): Observable>\r\n\t{\r\n\t\tconst requestWithETag: HttpRequest =\r\n\t\t\tthis.getRequestWithETag(\r\n\t\t\t\trequest,\r\n\t\t\t\tcachedETagValue,\r\n\t\t\t\tAppConstants.webApi.ifMatch);\r\n\r\n\t\treturn next.handle(requestWithETag)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(async(response: HttpEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (!(response instanceof HttpResponse)\r\n\t\t\t\t\t\t|| !await this.cacheService\r\n\t\t\t\t\t\t\t.isCachedRequest(\r\n\t\t\t\t\t\t\t\trequestWithETag))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tawait this.resetAssociatedCaches(\r\n\t\t\t\t\t\trequest);\r\n\r\n\t\t\t\t\tconst queryOnlyGetHeader: string =\r\n\t\t\t\t\t\trequestWithETag.headers.get(\r\n\t\t\t\t\t\t\tAppConstants.httpHeaders.queryOnlyGet);\r\n\r\n\t\t\t\t\t// If there is no matching get by id, do not call\r\n\t\t\t\t\t// the update for this modified item.\r\n\t\t\t\t\tif (!AnyHelper.isNullOrWhitespace(queryOnlyGetHeader)\r\n\t\t\t\t\t\t&& queryOnlyGetHeader === 'true')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tawait lastValueFrom(\r\n\t\t\t\t\t\tthis.httpClient.get(request.url));\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError((\r\n\t\t\t\t\terror: HttpErrorResponse) =>\r\n\t\t\t\t\tthis.handleModifyError(\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\trequestWithETag)));\r\n\t}\r\n\r\n\t/**\r\n\t * Intercepts and handles all delete XHR requests.\r\n\t * This logic handles keeping the application cache in sync\r\n\t * sitewide for a delete request.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tpublic interceptDelete(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\treturn next.handle(request)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(async(response: HttpEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (!(response instanceof HttpResponse))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tawait this.resetAssociatedCaches(\r\n\t\t\t\t\t\trequest);\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * This logic handles responses for a get http call and synchronizes\r\n\t * the application cache with this data.\r\n\t * If an ETag alters during a stale while revalidate session call in the\r\n\t * cache service, this will display a banner that the displayed cache\r\n\t * loaded data is not up to date.\r\n\t * If a status alters during a stale while revalidate session call in the\r\n\t * cache service to a 401-unauthorized, this will log out the user.\r\n\t *\r\n\t * @param {HttpEvent} response\r\n\t * The get response found in the get interceptor.\r\n\t * @param {HttpRequest} requestWithETag\r\n\t * The request sent for this get response.\r\n\t * @param {string} cachedETagValue\r\n\t * The ETag value that currently exists in local storage matching this\r\n\t * request.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate async handleGetResponse(\r\n\t\tresponse: HttpEvent,\r\n\t\trequestWithETag: HttpRequest,\r\n\t\tcachedETagValue: string): Promise\r\n\t{\r\n\t\tif (!(response instanceof HttpResponse))\r\n\t\t{\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst promiseArray: Promise[] =\r\n\t\t\t[\r\n\t\t\t\tthis.cacheService.isCachedRequest(requestWithETag),\r\n\t\t\t\tthis.cacheService.isFreshnessRequest(requestWithETag)\r\n\t\t\t];\r\n\r\n\t\treturn Promise.all(\r\n\t\t\tpromiseArray)\r\n\t\t\t.then(([ cachedRequest, freshnessRequest ]) =>\r\n\t\t\t{\r\n\t\t\t\tif (cachedRequest === false\r\n\t\t\t\t\t|| freshnessRequest === false)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.storageMap.set(\r\n\t\t\t\t\trequestWithETag.url,\r\n\t\t\t\t\tresponse.headers.get(AppConstants.webApi.eTag))\r\n\t\t\t\t\t.subscribe(() => {\r\n\t\t\t\t\t\t// No implementation.\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tconst subscription: Subscription = from([2.5, 5, 10, 30])\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\tmap((intervalTime: number) =>\r\n\t\t\t\t\t\t\tinterval(intervalTime * 1000)\r\n\t\t\t\t\t\t\t\t.pipe(take(1))),\r\n\t\t\t\t\t\tconcatAll())\r\n\t\t\t\t\t.subscribe(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.cacheService.getCachedETag(requestWithETag)\r\n\t\t\t\t\t\t\t.then((eTagValue: string) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// If eTagValue is now null, then we\r\n\t\t\t\t\t\t\t\t// are mid-clear due to an inflight crud\r\n\t\t\t\t\t\t\t\t// operation. No refresh is required.\r\n\t\t\t\t\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\teTagValue)\r\n\t\t\t\t\t\t\t\t\t&& !AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\t\tcachedETagValue)\r\n\t\t\t\t\t\t\t\t\t&& cachedETagValue ===\r\n\t\t\t\t\t\t\t\t\t\tresponse.headers.get(\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.webApi.eTag)\r\n\t\t\t\t\t\t\t\t\t&& cachedETagValue !== eTagValue)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tsubscription.unsubscribe();\r\n\r\n\t\t\t\t\t\t\t\t\tthis.storageMap.set(\r\n\t\t\t\t\t\t\t\t\t\trequestWithETag.url,\r\n\t\t\t\t\t\t\t\t\t\teTagValue)\r\n\t\t\t\t\t\t\t\t\t\t.subscribe(() =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.displayAlteredData();\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.cacheService.currentSubscriptions.push(subscription);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * This logic handles error http responses for a get http call and if it\r\n\t * displays as not modified via an etag match, this will load the data from\r\n\t * cache.\r\n\t *\r\n\t * @param {HttpEvent} response\r\n\t * The get error response found in the get interceptor.\r\n\t * @param {HttpRequest} requestWithETag\r\n\t * The request sent for this get response.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The observable http event that will either load fresh data\r\n\t * or load from the cache if that data exists on a not modified\r\n\t * return.\r\n\t * @throws {HttpErrorResponse}\r\n\t * The original error will be thrown if it is created other than\r\n\t * from a not modified response.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate handleGetError(\r\n\t\terror: HttpErrorResponse,\r\n\t\trequestWithETag: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\tif (error.status !== AppConstants.httpStatusCodes.notModified)\r\n\t\t{\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\treturn from(this.cacheService\r\n\t\t\t.getCachedResponse(requestWithETag))\r\n\t\t\t.pipe(\r\n\t\t\t\tmergeMap((cachedResponse: HttpResponse) =>\r\n\t\t\t\t\tAnyHelper.isNull(cachedResponse)\r\n\t\t\t\t\t\t? this.getRefreshRequest(\r\n\t\t\t\t\t\t\trequestWithETag,\r\n\t\t\t\t\t\t\tnext)\r\n\t\t\t\t\t\t: of(cachedResponse.clone())));\r\n\t}\r\n\r\n\t/**\r\n\t * This logic handles error http responses for a get http call and if it\r\n\t * displays as not modified via an etag match, this will clear the cache\r\n\t * data for this item to force a reload and display a message to the\r\n\t * user that they need to refresh before performing this modify action.\r\n\t *\r\n\t * @param {HttpEvent} response\r\n\t * The error response found in the put, post, or patch interceptor.\r\n\t * @param {HttpRequest} requestWithETag\r\n\t * The request sent for this modify response.\r\n\t * @throws {HttpErrorResponse}\r\n\t * The original error will be thrown after completing conditional\r\n\t * cache clean up.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate handleModifyError(\r\n\t\terror: HttpErrorResponse,\r\n\t\trequestWithETag: HttpRequest): Observable>\r\n\t{\r\n\t\tif (error.status !== AppConstants.httpStatusCodes.preconditionFailed)\r\n\t\t{\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\t// Ensure we force a reload on refresh.\r\n\t\tthis.cacheService.clearExistingResponse(\r\n\t\t\trequestWithETag);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.displayModifiedData();\r\n\t\t\t},\r\n\t\t\tthis.displayModifiedRefreshBannerDebounceDelay);\r\n\r\n\t\tthrow error;\r\n\t}\r\n\r\n\t/**\r\n\t * This logic handles clearing cache items on a modify.\r\n\t * If the request is in the performance set, all caches associated\r\n\t * with that including queries will be cleared.\r\n\t * If the request is in the freshness set, just the altered item will\r\n\t * be cleared.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request that requires data in the cache to be cleared.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate async resetAssociatedCaches(\r\n\t\trequest: HttpRequest): Promise\r\n\t{\r\n\t\tconst matchingPerformanceCacheIdentifier: string =\r\n\t\t\tawait this.cacheService\r\n\t\t\t\t.getRequestConfigurationIdentifier(\r\n\t\t\t\t\trequest);\r\n\r\n\t\t// If this is a performance modify, then we need to\r\n\t\t// force reloads on all associated queries.\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tmatchingPerformanceCacheIdentifier))\r\n\t\t{\r\n\t\t\tawait this.cacheService\r\n\t\t\t\t.clearExistingStartsWithResponses(\r\n\t\t\t\t\tmatchingPerformanceCacheIdentifier);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Otherwise clear only the existing item and allow\r\n\t\t\t// freshness requests to handle updated queries.\r\n\t\t\tawait this.cacheService\r\n\t\t\t\t.clearExistingResponse(\r\n\t\t\t\t\trequest);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Displays an informational banner when the stale while revalidate\r\n\t * workflow returns an updated entity that does not match what\r\n\t * we have cached and displayed.\r\n\t *\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate displayAlteredData(): void\r\n\t{\r\n\t\tthis.cacheService.clearAllSubscriptions();\r\n\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t'Displaying outdated data.',\r\n\t\t\t'Please '\r\n\t\t\t\t+ 'refresh to update to the latest.',\r\n\t\t\tAppConstants.activityStatus.info);\r\n\t}\r\n\r\n\t/**\r\n\t * Displays an informational banner when the stale while revalidate\r\n\t * workflow returns an updated entity that does not match what\r\n\t * we have cached and displayed.\r\n\t *\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate displayModifiedData(): void\r\n\t{\r\n\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t'Updating or performing an action on outdated data.',\r\n\t\t\t'Please '\r\n\t\t\t\t+ 'refresh to update to the latest.',\r\n\t\t\tAppConstants.activityStatus.info);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and clones a request with an attached etag value and a\r\n\t * match type depending on the request type.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {string} cachedETagValue\r\n\t * The current local stored etag value for this request.\r\n\t * @param {string} eTagMatchIdentifier\r\n\t * The if match or if none match identifier to attach to this request.\r\n\t * @returns {HttpRequest}\r\n\t * A request holding conditional eTag logic for gets or modifies.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate getRequestWithETag(\r\n\t\trequest: HttpRequest,\r\n\t\tcachedETagValue: string,\r\n\t\teTagMatchIdentifier: string): HttpRequest\r\n\t{\r\n\t\tconst headerETagValue: string =\r\n\t\t\tcachedETagValue || AppConstants.empty;\r\n\r\n\t\tconst headers: HttpHeaders =\r\n\t\t\trequest\r\n\t\t\t\t.headers\r\n\t\t\t\t.append(\r\n\t\t\t\t\tAppConstants.webApi.eTag,\r\n\t\t\t\t\theaderETagValue)\r\n\t\t\t\t.append(\r\n\t\t\t\t\teTagMatchIdentifier,\r\n\t\t\t\t\t[headerETagValue]);\r\n\r\n\t\treturn request.clone(\r\n\t\t\t{\r\n\t\t\t\theaders: headers\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Alters and returns the existing requests without an etag value\r\n\t * to request new data. This is called when cached data is no longer\r\n\t * available due to a service worker cache timeout.\r\n\t *\r\n\t * @param {HttpRequest} currentRequest\r\n\t * The request to be altered and returned.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The updated request with the etag idenitifiers stripped forcing a fresh\r\n\t * data load.\r\n\t * @memberof AppCacheHttpInterceptor\r\n\t */\r\n\tprivate getRefreshRequest(\r\n\t\tcurrentRequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\tconst errorHeaders: HttpHeaders =\r\n\t\t\tcurrentRequest\r\n\t\t\t\t.headers\r\n\t\t\t\t.delete(\r\n\t\t\t\t\tAppConstants.webApi.eTag)\r\n\t\t\t\t.delete(\r\n\t\t\t\t\tAppConstants.webApi.ifNoneMatch);\r\n\r\n\t\tconst refreshRequest =\r\n\t\t\tcurrentRequest.clone(\r\n\t\t\t\t{\r\n\t\t\t\t\theaders: errorHeaders\r\n\t\t\t\t});\r\n\r\n\t\t// Call again for fresh data\r\n\t\treturn next.handle(refreshRequest);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tHttpEvent,\r\n\tHttpHandler,\r\n\tHttpInterceptor,\r\n\tHttpRequest,\r\n\tHttpResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tfilter,\r\n\tmergeMap,\r\n\tObservable\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/**\r\n * A class representing a data transform interceptor that will allow business\r\n * logic based data updates following get calls.\r\n *\r\n * @export\r\n * @class AppDataTransformHttpInterceptor\r\n * @implements {HttpInterceptor}\r\n */\r\n@Injectable()\r\nexport class AppDataTransformHttpInterceptor implements HttpInterceptor\r\n{\r\n\t/**\r\n\t * Intercepts and handles all XHR requests.\r\n\t * This logic handles data transforms of API objects to business logic\r\n\t * based values.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppDataTransformHttpInterceptor\r\n\t */\r\n\tpublic intercept(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\tif (request.method !== AppConstants.httpRequestTypes.get\r\n\t\t\t|| request.url.indexOf(AppConfig.settings.webApi.rootUrl) !== 0)\r\n\t\t{\r\n\t\t\treturn next.handle(request);\r\n\t\t}\r\n\r\n\t\treturn this.interceptGet(\r\n\t\t\trequest,\r\n\t\t\tnext);\r\n\t}\r\n\r\n\t/**\r\n\t * Intercepts and handles all get XHR requests.\r\n\t * This logic handles the business logic data transform before\r\n\t * returning the response.\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppDataTransformHttpInterceptor\r\n\t */\r\n\tpublic interceptGet(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\treturn next.handle(request)\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter(\r\n\t\t\t\t\t(event: HttpEvent) =>\r\n\t\t\t\t\t\tevent instanceof HttpResponse\r\n\t\t\t\t\t\t\t&& !AnyHelper.isNull(event.body)),\r\n\t\t\t\tmergeMap(\r\n\t\t\t\t\tasync(response: HttpResponse) =>\r\n\t\t\t\t\t\tresponse.clone(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbody:\r\n\t\t\t\t\t\t\t\t\tApiHelper.transformBusinessLogicData(\r\n\t\t\t\t\t\t\t\t\t\t(response).body)\r\n\t\t\t\t\t\t\t})));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tHttpErrorResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tErrorHandler,\r\n\tInjectable,\r\n\tInjector\r\n} from '@angular/core';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tReportConstants\r\n} from '@shared/constants/report.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tErrorHelper\r\n} from '@shared/helpers/error.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tILogEntry\r\n} from '@shared/interfaces/logs/log-entry.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\n\r\n/**\r\n * A class representing an instance of the application\r\n * global error handler.\r\n *\r\n * @export\r\n * @class AppErrorHandler\r\n * @implements {ErrorHandler}\r\n */\r\n@Injectable()\r\nexport class AppErrorHandler\r\nimplements ErrorHandler\r\n{\r\n\t/**\r\n\t * Creates an instance of an AppErrorHandler.\r\n\t *\r\n\t * @param {Injector} injector\r\n\t * The injection service used in this component.\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly injector: Injector)\r\n\t{\r\n\t\t// Window must be used here to ensure this event\r\n\t\t// is captured prior to the element handler.\r\n\t\twindow.addEventListener(\r\n\t\t\tWindowEventConstants.message,\r\n\t\t\tthis.handlePowerBiMessageEvent,\r\n\t\t\tfalse);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the message displayed to the user\r\n\t * for application errors caught in this error handler.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppErrorHandler\r\n\t */\r\n\tprivate readonly userMessage: string = 'Please contact support.';\r\n\r\n\t/**\r\n\t * Handles errors via the angular routing system for errors\r\n\t * and gives a single point of contact for any error thrown\r\n\t * in our system.\r\n\t *\r\n\t * @async\r\n\t * @param {ApiError | Error | HttpErrorResponse} error\r\n\t * The error being thrown.\r\n\t * @memberof AppErrorHandler\r\n\t */\r\n\tpublic async handleError(\r\n\t\terror: ApiError | Error | HttpErrorResponse): Promise\r\n\t{\r\n\t\tconsole.error(error);\r\n\r\n\t\tconst logger = this.injector.get(LoggerService);\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst logEntry: ILogEntry =\r\n\t\t\t\tawait ErrorHelper.getGenericErrorLogEntry(error);\r\n\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\tAppConstants.messages.genericErrorMessage,\r\n\t\t\t\tthis.userMessage,\r\n\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\terror);\r\n\r\n\t\t\tlogger.logError(logEntry);\r\n\t\t}\r\n\t\tcatch (handlerError)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tconst errorMessage =\r\n\t\t\t\t\t`Error handler exception: ${handlerError.message}.`;\r\n\r\n\t\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\t\terrorMessage,\r\n\t\t\t\t\tthis.userMessage,\r\n\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\thandlerError);\r\n\r\n\t\t\t\tlogger.logError(errorMessage);\r\n\t\t\t}\r\n\t\t\tcatch (loggerError)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(\r\n\t\t\t\t\t'Logger exception in the error handler: '\r\n\t\t\t\t\t\t+ `${handlerError.message}, ${loggerError.message}.`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the message event that can be sent from power bi\r\n\t * to a no longer existing source element. This is found\r\n\t * on page navigation and on rapid redraws on occasion.\r\n\t * @note This cannot be called with Angular's host listener\r\n\t * functionality as this occurs too late in the workflow.\r\n\t * @note As newer versions of PowerBi-Javascript are brought in\r\n\t * we will want to confirm this code is still required.\r\n\t *\r\n\t * @param {MessageEvent} event\r\n\t * The message event sent to the window message event handler.\r\n\t * @memberof AppErrorHandler\r\n\t */\r\n\tpublic handlePowerBiMessageEvent(\r\n\t\tevent: MessageEvent): boolean\r\n\t{\r\n\t\tif (event.origin === ReportConstants.powerBiEmbedEndpoint\r\n\t\t\t&& AnyHelper.isNull(event.source))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tconsole.log(\r\n\t\t\t\t'Expected Exception: Rapid PowerBI embeds can create '\r\n\t\t\t\t\t+ 'out of sync messages to a redrawn report.');\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tHammerGestureConfig\r\n} from '@angular/platform-browser';\r\n\r\n/**\r\n * The primary hammer config for mobile and touch\r\n * gesture overrides from default.\r\n * https://hammerjs.github.io/getting-started/\r\n *\r\n * @export\r\n * @class AppHammerConfig\r\n * @extends {HammerGestureConfig}\r\n */\r\n@Injectable()\r\nexport class AppHammerConfig\r\n\textends HammerGestureConfig\r\n{\r\n\tpublic overrides: any =\r\n\t\t{\r\n\t\t\tswipe: {\r\n\t\t\t\tvelocity: 0.15\r\n\t\t\t},\r\n\t\t\tpress: {\r\n\t\t\t\ttime: 5\r\n\t\t\t}\r\n\t\t};\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tHttpErrorResponse,\r\n\tHttpEvent,\r\n\tHttpHandler,\r\n\tHttpHeaders,\r\n\tHttpInterceptor,\r\n\tHttpRequest,\r\n\tHttpResponse\r\n} from '@angular/common/http';\r\nimport {\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tApiError\r\n} from '@api/errors/api.error';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tIApplicationMessage\r\n} from '@shared/interfaces/application-messages/application-message.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSessionRefreshService\r\n} from '@shared/services/session-refresh.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tcatchError,\r\n\tObservable,\r\n\ttap\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n/**\r\n * A class representing the middleware logic to intercept and modify\r\n * API requests.\r\n *\r\n * @export\r\n * @class AppSecurityHttpInterceptor\r\n * @implements {HttpInterceptor}\r\n */\r\n@Injectable()\r\nexport class AppSecurityHttpInterceptor\r\nimplements HttpInterceptor\r\n{\r\n\t/**\r\n\t * Creates an instance of a AppSecurityHttpInterceptor.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service used for sesion validation.\r\n\t * @param {SessionRefreshService} sessionService\r\n\t * The session refresh service used for keep alive and session refresh\r\n\t * functionality.\r\n\t * @param {loggerService} loggerService\r\n\t * The logger service used to log api actions.\r\n\t * @memberof AppSecurityHttpInterceptor\r\n\t */\r\n\tpublic constructor(\r\n\t\tprivate readonly sessionService: SessionService,\r\n\t\tprivate readonly sessionRefreshService: SessionRefreshService,\r\n\t\tprivate readonly loggerService: LoggerService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * intercepts and handles all XHR request\r\n\t *\r\n\t * @param {HttpRequest} request\r\n\t * The request to be sent.\r\n\t * @param {HttpHandler} next\r\n\t * The http handler for synchronizing the requests.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppSecurityHttpInterceptor\r\n\t */\r\n\tpublic intercept(\r\n\t\trequest: HttpRequest,\r\n\t\tnext: HttpHandler): Observable>\r\n\t{\r\n\t\tif (this.sessionService.expiryDate <= new Date()\r\n\t\t\t&& this.sessionService.isValid)\r\n\t\t{\r\n\t\t\tthis.sessionService.logOut();\r\n\r\n\t\t\tEventHelper.dispatchLoginMessageEvent(\r\n\t\t\t\tAppConstants.messages.sessionExpired,\r\n\t\t\t\tAppConstants.messages.pleaseEnterCredentials,\r\n\t\t\t\tAppConstants.messageLevel.error);\r\n\t\t}\r\n\r\n\t\tconst token: string = this.sessionService.token;\r\n\t\tlet headers: HttpHeaders = request.headers;\r\n\r\n\t\tif (!AnyHelper.isNull(token)\r\n\t\t\t&& token !== AppConstants.empty)\r\n\t\t{\r\n\t\t\tthis.sessionService.resetExpiryDate();\r\n\r\n\t\t\theaders =\r\n\t\t\t\theaders.append(\r\n\t\t\t\t\tAppConstants.webApi.tokenKey,\r\n\t\t\t\t\ttoken);\r\n\t\t}\r\n\r\n\t\tconst requestWithCredentials =\r\n\t\t\trequest.clone(\r\n\t\t\t\t{\r\n\t\t\t\t\twithCredentials: true,\r\n\t\t\t\t\theaders: headers\r\n\t\t\t\t});\r\n\r\n\t\tif (!requestWithCredentials.urlWithParams.endsWith('/Logs'))\r\n\t\t{\r\n\t\t\tthis.loggerService.logTrace(\r\n\t\t\t\t`Calling api: ${requestWithCredentials.method} `\r\n\t\t\t\t\t+ '\\r\\n\twith the url '\r\n\t\t\t\t\t+ requestWithCredentials.urlWithParams + '.');\r\n\t\t}\r\n\r\n\t\treturn next.handle(requestWithCredentials)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((response: HttpEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (response instanceof HttpResponse\r\n\t\t\t\t\t\t&& requestWithCredentials.url.indexOf(\r\n\t\t\t\t\t\t\tAppConfig.settings.webApi.rootUrl) !== -1\r\n\t\t\t\t\t\t&& !requestWithCredentials.url.endsWith(\r\n\t\t\t\t\t\t\tSessionRefreshService.refreshApiEndpoint))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.sessionRefreshService.resetIntervals();\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError((error: HttpErrorResponse) =>\r\n\t\t\t\t\tthis.handleError(\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\trequestWithCredentials)));\r\n\t}\r\n\r\n\t/**\r\n\t * intercepts and handles an error from an XHR request.\r\n\t *\r\n\t * @param {HttpErrorResponse} error\r\n\t * The http error response to be handled.\r\n\t * @param {HttpRequest} request\r\n\t * The request that threw this error.\r\n\t * @returns {Observable>}\r\n\t * The return of event of this intercepted http action.\r\n\t * @memberof AppSecurityHttpInterceptor\r\n\t */\r\n\tprivate handleError(\r\n\t\terror: HttpErrorResponse,\r\n\t\trequest: HttpRequest): Observable>\r\n\t{\r\n\t\tlet apiError: ApiError;\r\n\r\n\t\tif (error.status ===\r\n\t\t\tAppConstants.httpStatusCodes.unauthorized\r\n\t\t\t&& request.url.indexOf(\r\n\t\t\t\t`/${AppConstants.apiControllers.authenticate}`) === -1\r\n\t\t\t&& request.url.indexOf(AppConfig.settings.webApi.rootUrl) !== -1)\r\n\t\t{\r\n\t\t\t// If not authenticated and not authenticate controller.\r\n\t\t\tthis.sessionService.clear();\r\n\t\t\tthis.sessionService.logOut();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!AnyHelper.isNull(error.error)\r\n\t\t\t&& !AnyHelper.isNull(error.error.constructor)\r\n\t\t\t&& typeof error.error === 'object'\r\n\t\t\t&& error.error.constructor.name === 'Array')\r\n\t\t{\r\n\t\t\t// Likely this return is an array of application\r\n\t\t\t// messages.\r\n\t\t\tapiError =\r\n\t\t\t\tnew ApiError(\r\n\t\t\t\t\t'Api Error',\r\n\t\t\t\t\terror.error);\r\n\t\t\tapiError.status = error.status;\r\n\t\t}\r\n\r\n\t\tif (apiError)\r\n\t\t{\r\n\t\t\tthrow apiError;\r\n\t\t}\r\n\r\n\t\tthrow error;\r\n\t}\r\n}","
    \r\n\t\r\n\t\r\n
    \r\n\r\n
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\r\n\t\t
    0\r\n\t\t\t\t&& parentEntityInstance != null\">\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tBaseOperationGroupDirective\r\n} from '@operation/directives/base-operation-group.directive';\r\nimport {\r\n\tOperationExecutionService\r\n} from '@operation/services/operation-execution.service';\r\nimport {\r\n\tOperationService\r\n} from '@operation/services/operation.service';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tEntityDefinition\r\n} from '@shared/implementations/entities/entity-definition';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicComponent\r\n} from '@shared/interfaces/application-objects/dynamic-component.interface';\r\nimport {\r\n\tIEntityDefinition\r\n} from '@shared/interfaces/entities/entity-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-work-item-expand',\r\n\ttemplateUrl: './work-item-expand.component.html',\r\n\tstyleUrls: [\r\n\t\t'./work-item-expand.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the work item expand component.\r\n *\r\n * @export\r\n * @class WorkItemExpandComponent\r\n * @implements {IDynamicComponent}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class WorkItemExpandComponent\r\n\textends BaseOperationGroupDirective\r\n\timplements IDynamicComponent, OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work bench expand component.\r\n\t *\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {ActivityService} activityService\r\n\t * The activity service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {LoggerService} loggerService\r\n\t * The logger service.\r\n\t * @param {OperationService} operationService\r\n\t * The oepration service.\r\n\t * @param {operationExecutionService} OperationExecutionService\r\n\t * The operation execution service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic loggerService: LoggerService,\r\n\t\tpublic operationService: OperationService,\r\n\t\tpublic operationExecutionService: OperationExecutionService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tloggerService,\r\n\t\t\toperationService,\r\n\t\t\toperationExecutionService,\r\n\t\t\tsiteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the context that will be set when implementing this\r\n\t * as a dynamic component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic context: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this component is loading.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not this component is saving.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the operation group which will be displayed in\r\n\t * the action menu for this work item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic operationGroupName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the work item that has been expanded.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic selectedItem: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the work item entity type.\r\n\t *\r\n\t * @type {IEntityType}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic selectedEntityType: IEntityType;\r\n\r\n\t/**\r\n\t * Gets or sets the work item entity definition.\r\n\t *\r\n\t * @type {EntityDefinition}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic selectedEntityDefinition: EntityDefinition;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout for the work item.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic formlyEntityLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the summary formly layout for the work item.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic summaryFormlyLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the work item's primary parent entity instance.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic parentEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the work item parent's formly layout.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic parentFormlyEntityLayout: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the operation group which will be displayed in\r\n\t * the action menu for this work item.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic assigneeName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets or sets the created on date.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic createdOn: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t\t * Gets or sets the created by name.\r\n\t\t *\r\n\t\t * @type {string}\r\n\t\t * @memberof WorkItemExpandComponent\r\n\t\t */\r\n\tpublic createdByName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the identifier to display when the work item is not assigned.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tprivate readonly unassigned: string = 'Unassigned';\r\n\r\n\t/**\r\n\t * Gets the organization type wildcard.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tprivate readonly organizationTypeWildcard: string = 'Organization.';\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will initialize data, layouts, and actions for use in this\r\n\t * expand component.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\t// Hide the navigate to entity expand action while loading.\r\n\t\tthis.context.source.expandActions[\r\n\t\t\tthis.context.source.expandActions.length - 1]\r\n\t\t\t.visible = false;\r\n\t\tthis.context.source.updateExpandActions();\r\n\r\n\t\t// Set context level items for calculated operation group functions.\r\n\t\tthis.selectedItem = this.context.source.selectedItem;\r\n\t\tthis.selectedEntityType =\r\n\t\t\tawait this.getEntityType(\r\n\t\t\t\tthis.selectedItem.entityType);\r\n\t\tthis.context.data =\r\n\t\t\t{\r\n\t\t\t\t...this.context.data,\r\n\t\t\t\titemDisplayComponent: this\r\n\t\t\t};\r\n\r\n\t\t// Gather the assignee full name.\r\n\t\tthis.assigneeName = await this.getAssigneeDisplayName();\r\n\r\n\t\t// Gather the creator name.\r\n\t\tthis.createdByName = await this.getCreatedByName();\r\n\r\n\t\tthis.createdOn =\r\n\t\t\tnew Date(this.context.source.selectedItem.createDate)\r\n\t\t\t\t.toLocaleString();\r\n\r\n\t\t// Set up the primary parent data and layout if applicable.\r\n\t\tconst parentNavigationReference: any =\r\n\t\t\tthis.selectedItem.data.references.find(\r\n\t\t\t\t(reference: any) =>\r\n\t\t\t\t\treference.type ===\r\n\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t.parentNavigationEntityIdentifer);\r\n\r\n\t\tconst parentEntityTypeReference: any =\r\n\t\t\t\tthis.selectedItem.data.references.find(\r\n\t\t\t\t\t(reference: any) =>\r\n\t\t\t\t\t\treference.type ===\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemIdentifiers\r\n\t\t\t\t\t\t\t\t.parentNavigationEntityType);\r\n\r\n\t\tif (!AnyHelper.isNull(parentNavigationReference)\r\n\t\t\t&& !AnyHelper.isNull(parentEntityTypeReference))\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tconst parentId: number =\r\n\t\t\t\t\tNumber(parentNavigationReference.identifier);\r\n\r\n\t\t\t\tconst parentEntityType: IEntityType =\r\n\t\t\t\t\tawait this.getEntityType(\r\n\t\t\t\t\t\t`${parentEntityTypeReference.identifier}`);\r\n\r\n\t\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\t\tparentEntityType.group;\r\n\r\n\t\t\t\tthis.parentEntityInstance =\r\n\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t.get(parentId);\r\n\r\n\t\t\t\tthis.parentFormlyEntityLayout =\r\n\t\t\t\t\tawait this.entityService.getFormlyLayout(\r\n\t\t\t\t\t\tthis.pageContext,\r\n\t\t\t\t\t\tparentEntityType,\r\n\t\t\t\t\t\tAppConstants.layoutTypes.summary,\r\n\t\t\t\t\t\tthis.parentEntityInstance.id,\r\n\t\t\t\t\t\ttrue);\r\n\t\t\t}\r\n\t\t\tcatch (error)\r\n\t\t\t{\r\n\t\t\t\t// Hide the link and summary layout without access policies.\r\n\t\t\t\tif (!error.message.indexOf('access policies for entity'))\r\n\t\t\t\t{\r\n\t\t\t\t\tthrow error;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Set up the layout for the selected entity type.\r\n\t\tthis.formlyEntityLayout =\r\n\t\t\tawait this.entityService.getFormlyLayout(\r\n\t\t\t\tthis.pageContext,\r\n\t\t\t\tthis.selectedEntityType,\r\n\t\t\t\tAppConstants.layoutTypes.summary,\r\n\t\t\t\tthis.selectedItem.id,\r\n\t\t\t\ttrue);\r\n\r\n\t\tthis.summaryFormlyLayout =\r\n\t\t\tawait this.getSummaryFormlyLayout();\r\n\r\n\t\t// Load the operation group via the shared directive.\r\n\t\tthis.pageContext =\r\n\t\t\t>this.context;\r\n\r\n\t\tconst entityDefinition: IEntityDefinition =\r\n\t\t\tawait this.entityService.getEntityDefinition(\r\n\t\t\t\tthis.selectedEntityType.id,\r\n\t\t\t\tthis.selectedItem.versionNumber);\r\n\t\tthis.selectedEntityDefinition =\r\n\t\t\tnew EntityDefinition(entityDefinition);\r\n\t\tthis.operationGroupName =\r\n\t\t\tthis.selectedEntityDefinition.actionMenuOperationGroupName;\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This method will clean up an awaited perform post operation load action\r\n\t * so that delayed loads will not effect the expand component actions.\r\n\t *\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.performPostOperationLoadActions = () => {};\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actions after the operation group has loaded. This operation\r\n\t * group is added as an action menu if applicable to the standard\r\n\t * expand actions.\r\n\t *\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic performPostOperationLoadActions(): void\r\n\t{\r\n\t\tthis.context.source.expandActions =\r\n\t\t\t[\r\n\t\t\t\t...this.model,\r\n\t\t\t\t...this.context.source.expandActions\r\n\t\t\t];\r\n\r\n\t\tif (!AnyHelper.isNull(this.parentEntityInstance))\r\n\t\t{\r\n\t\t\tconst lastExpandAction: MenuItem =\r\n\t\t\t\tthis.context.source.expandActions[\r\n\t\t\t\t\tthis.context.source.expandActions.length - 1];\r\n\r\n\t\t\tlastExpandAction.label =\r\n\t\t\t\t`View ${this.getDisplayName(\r\n\t\t\t\t\tthis.parentEntityInstance.entityType)}`;\r\n\t\t\tlastExpandAction.visible =\r\n\t\t\t\ttrue;\r\n\t\t}\r\n\r\n\t\tthis.context.source.updateExpandActions();\r\n\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an entity displayed in the work item expand component. This value\r\n\t * is used in operation actions such as mark as complete.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async updateEntity(): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\r\n\t\tconst updateEntity: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tawait this.entityInstanceApiService.update(\r\n\t\t\t\t\tthis.selectedItem.id,\r\n\t\t\t\t\tthis.selectedItem);\r\n\r\n\t\t\t\tthis.context.source.selectedItem = this.selectedItem;\r\n\t\t\t\tthis.context.source.updateSelectedItem();\r\n\t\t\t};\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tthis.selectedEntityType.group;\r\n\r\n\t\tlet createDisplayName: string =\r\n\t\t\tStringHelper.beforeCapitalSpaces(\r\n\t\t\t\tStringHelper.getLastSplitValue(\r\n\t\t\t\t\tthis.selectedEntityType.name,\r\n\t\t\t\t\tAppConstants.characters.period));\r\n\r\n\t\tcreateDisplayName =\r\n\t\t\tcreateDisplayName + ' entity';\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tupdateEntity(),\r\n\t\t\t\t`Updating ${createDisplayName}`,\r\n\t\t\t\t`Updated ${createDisplayName}`,\r\n\t\t\t\t`${createDisplayName} was updated.`,\r\n\t\t\t\t`${createDisplayName} was not updated.`));\r\n\r\n\t\tthis.saving = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets an entity type matching the sent name from api service.\r\n\t *\r\n\t * @async\r\n\t * @param {string} entityTypeName\r\n\t * The name of the entity type to gather data for.\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will hold the entity type matching the sent\r\n\t * name.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async getEntityType(\r\n\t\tentityTypeName: string): Promise\r\n\t{\r\n\t\treturn this.entityTypeApiService\r\n\t\t\t.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.name} eq `\r\n\t\t\t\t\t+ `'${entityTypeName}'`,\r\n\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t+ AppConstants.sortDirections.descending);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will calculate a display name based on a period delimited\r\n\t * name of an entity type.\r\n\t *\r\n\t * @async\r\n\t * @param {string} input\r\n\t * The value to get a display name for.\r\n\t * @returns {string}\r\n\t * A display name ready for use in the user interface.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic getDisplayName(\r\n\t\tinput: string): string\r\n\t{\r\n\t\treturn StringHelper.getLongEntityDisplayName(\r\n\t\t\tinput,\r\n\t\t\tthis.organizationTypeWildcard);\r\n\t}\r\n\r\n\t/**\r\n\t * This method will calculate an assignee display name based on the selected\r\n\t * user.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A string holding the assignee display name.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async getAssigneeDisplayName(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNullOrWhitespace(this.selectedItem.data.assignedTo))\r\n\t\t{\r\n\t\t\treturn this.unassigned;\r\n\t\t}\r\n\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tconst user: IEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\t`${AppConstants.commonProperties.userName} eq ` +\r\n\t\t\t\t\t`'${this.selectedItem.data.assignedTo}'`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn AnyHelper.isNullOrEmpty(user)\r\n\t\t\t? `User ${this.selectedItem.data.assignedTo} not found`\r\n\t\t\t: `${user.data.firstName} ${user.data.lastName}`;\r\n\t}\r\n\r\n\t/**\r\n\t * This method will calculate a creator display name based\r\n\t * on the selected workitem.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A string holding the creator display name.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async getCreatedByName()\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\tconst user: IEntityInstance =\r\n\t\t\tAnyHelper.isNullOrWhitespace(this.selectedItem.createdById)\r\n\t\t\t\t? null\r\n\t\t\t\t: await this.entityInstanceApiService\r\n\t\t\t\t\t.get(this.selectedItem.createdById);\r\n\r\n\t\treturn AnyHelper.isNullOrEmpty(user)\r\n\t\t\t? `User ${this.selectedItem.createdById} not found`\r\n\t\t\t: `${user.data.firstName} ${user.data.lastName}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an update of the current item given an update promise. This\r\n\t * is used in operation functions that have multiple update methods\r\n\t * for different entities.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An empty promise.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tpublic async handleUpdate(\r\n\t\tupdatePromise: Promise): Promise\r\n\t{\r\n\t\tthis.saving = true;\r\n\t\tawait updatePromise;\r\n\r\n\t\t// Force a reload to re-apply the filter to altered data.\r\n\t\tthis.context.source.displayTable();\r\n\t\tthis.context.source.filterCriteriaChanged(\r\n\t\t\tthis.context.source.tableDefinitions.objectSearch.filter);\r\n\r\n\t\tthis.saving = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns the summary formly layout for this expanded\r\n\t * work item.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A layout based summary of the work item ready for display.\r\n\t * @memberof WorkItemExpandComponent\r\n\t */\r\n\tprivate async getSummaryFormlyLayout(): Promise\r\n\t{\r\n\t\tconst subtextContainer: string =\r\n\t\t\t'
    ';\r\n\t\tconst subtextContainerClose: string = '
    ';\r\n\r\n\t\tconst drawerSummaryLayout: FormlyFieldConfig[] =\r\n\t\t\tawait this.entityService.getFormlyLayout(\r\n\t\t\t\tthis.pageContext,\r\n\t\t\t\tthis.selectedEntityType,\r\n\t\t\t\tAppConstants.layoutTypes.drawer,\r\n\t\t\t\tthis.selectedItem.id,\r\n\t\t\t\ttrue);\r\n\r\n\t\tconst summaryLayout: FormlyFieldConfig[] =\r\n\t\t\t[\r\n\t\t\t\tdrawerSummaryLayout[0],\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customTextDisplay,\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tcontent: AppConstants.empty,\r\n\t\t\t\t\t\tuseMarkdown: true,\r\n\t\t\t\t\t\tusePanelDisplay: false,\r\n\t\t\t\t\t\tcenterText: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\texpressions: {\r\n\t\t\t\t\t\t'props.content':\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst createdDate: string =\r\n\t\t\t\t\t\t\t\t\tDateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\tfield.model.createDate),\r\n\t\t\t\t\t\t\t\t\t\tDateHelper.presetFormats\r\n\t\t\t\t\t\t\t\t\t\t\t.dayOfWeekAndTimeFormat);\r\n\r\n\t\t\t\t\t\t\t\tconst completed: boolean =\r\n\t\t\t\t\t\t\t\t\tfield.model.data.status ===\r\n\t\t\t\t\t\t\t\t\t\tWorkItemConstants.workItemStatus.done;\r\n\r\n\t\t\t\t\t\t\t\tconst completeDate: string =\r\n\t\t\t\t\t\t\t\t\tcompleted === true\r\n\t\t\t\t\t\t\t\t\t\t? DateHelper.formatDate(\r\n\t\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield.model.data\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.keyDates.doneDate),\r\n\t\t\t\t\t\t\t\t\t\t\tDateHelper.presetFormats\r\n\t\t\t\t\t\t\t\t\t\t\t\t.dayOfWeekAndTimeFormat)\r\n\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\tconst completedBy: string =\r\n\t\t\t\t\t\t\t\t\tcompleted === true\r\n\t\t\t\t\t\t\t\t\t\t? `Completed on ${completeDate} `\r\n\t\t\t\t\t\t\t\t\t\t\t+ `by ${this.assigneeName}`\r\n\t\t\t\t\t\t\t\t\t\t\t+ '
    '\r\n\t\t\t\t\t\t\t\t\t\t: AppConstants.empty;\r\n\r\n\t\t\t\t\t\t\t\treturn subtextContainer\r\n\t\t\t\t\t\t\t\t\t+ `${completedBy}`\r\n\t\t\t\t\t\t\t\t\t+ `Created on ${createdDate} `\r\n\t\t\t\t\t\t\t\t\t+ `by ${this.createdByName}`\r\n\t\t\t\t\t\t\t\t\t+ subtextContainerClose;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\treturn summaryLayout;\r\n\t}\r\n}","\r\n\r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{item.props.label}}:\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{getChipValue(item)}}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tWorkbench Table Filters\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tLocation\r\n} from '@angular/common';\r\nimport {\r\n\tAfterViewInit,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tActivatedRoute,\r\n\tParams,\r\n\tRouter,\r\n\tUrlCreationOptions\r\n} from '@angular/router';\r\nimport {\r\n\tEntityDefinitionApiService\r\n} from '@api/services/entities/entity-definition.api.service';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tEntityVersionApiService\r\n} from '@api/services/entities/entity-version.api.service';\r\nimport {\r\n\tOperationGroupApiService\r\n} from '@api/services/operations/operation-group.api.service';\r\nimport {\r\n\tEntityService\r\n} from '@entity/services/entity.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tIOperationGroup\r\n} from '@operation/interfaces/operation-group.interface';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tCommonTableComponent\r\n} from '@shared/components/common-table/common-table.component';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tMouseEventConstants\r\n} from '@shared/constants/mouse-event.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tWorkItemConstants\r\n} from '@shared/constants/work-item-constants';\r\nimport {\r\n\tDisplayComponentFactory\r\n} from '@shared/factories/display-component-factory';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tApiFilterHelper\r\n} from '@shared/helpers/api-filter.helper';\r\nimport {\r\n\tApiHelper\r\n} from '@shared/helpers/api.helper';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tTableHelper\r\n} from '@shared/helpers/table.helper';\r\nimport {\r\n\tEntityType\r\n} from '@shared/implementations/entities/entity-type';\r\nimport {\r\n\tIActionTableConfiguration\r\n} from '@shared/interfaces/application-objects/actions-table-configuration.interface';\r\nimport {\r\n\tICommonTableColumn\r\n} from '@shared/interfaces/application-objects/common-table-column.interface';\r\nimport {\r\n\tICommonTable\r\n} from '@shared/interfaces/application-objects/common-table.interface';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIDynamicLayoutConfiguration\r\n} from '@shared/interfaces/application-objects/dynamic-layout-configuration.interface';\r\nimport {\r\n\tIObjectSearch\r\n} from '@shared/interfaces/application-objects/object-search.interface';\r\nimport {\r\n\tIOwnershipGuardComponent\r\n} from '@shared/interfaces/application-objects/ownership-guard-component';\r\nimport {\r\n\tITableExpandDefinition\r\n} from '@shared/interfaces/application-objects/table-expand-definition.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tIEntityType\r\n} from '@shared/interfaces/entities/entity-type.interface';\r\nimport {\r\n\tIEntityVersion\r\n} from '@shared/interfaces/entities/entity-version.interface';\r\nimport {\r\n\tDisplayComponentService\r\n} from '@shared/services/display-component.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tWorkItemExpandComponent\r\n} from '@workItems/components/workbench/work-item-expand/work-item-expand.component';\r\nimport {\r\n\tWorkItemService\r\n} from '@workItems/services/work-item.service';\r\nimport {\r\n\tget\r\n} from 'lodash-es';\r\nimport {\r\n\tDateTime\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\nimport {\r\n\tSubscription\r\n} from 'rxjs';\r\nimport {\r\n\tIEventHandler\r\n} from 'service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-workbench',\r\n\ttemplateUrl: './workbench.component.html',\r\n\tstyleUrls: [\r\n\t\t'./workbench.component.scss'\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a work items workbench view.\r\n *\r\n * @export\r\n * @class WorkbenchComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n * @implements {AfterViewInit}\r\n * @implements {IOwnershipGuardComponent}\r\n */\r\nexport class WorkbenchComponent\r\nimplements OnInit, OnDestroy, AfterViewInit, IOwnershipGuardComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the work bench component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for navigation in this component.\r\n\t * @param {Location} location\r\n\t * The Angular common location service used for url interaction.\r\n\t * @param {ActivatedRoute} route\r\n\t * The route used for url parameters in this component.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service.\r\n\t * @param {DisplayComponentService} displayComponentService\r\n\t * The display component service.\r\n\t * @param {DisplayComponentFactory} displayComponentFactory\r\n\t * The display component factory.\r\n\t * @param {EntityService} entityService\r\n\t * The entity service.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The entity type API service.\r\n\t * @param {EntityVersionApiService} entityVersionApiService\r\n\t * The entity version API service.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The entity instance API service.\r\n\t * @param {EntityDefinitionApiService} entityDefinitionApiService\r\n\t * The entity definition API service.\r\n\t * @param {OperationGroupApiService} operationGroupApiService\r\n\t * The operation group API service.\r\n\t * @param {WorkItemService} workItemService\r\n\t * The work item service.\r\n\t * @param {ChangeDetectorRef} changeDetectorReference\r\n\t * The change detector for this component.\r\n\t * @memberof EntityViewComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic location: Location,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic resolver: ResolverService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic displayComponentService: DisplayComponentService,\r\n\t\tpublic displayComponentFactory: DisplayComponentFactory,\r\n\t\tpublic entityService: EntityService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic entityVersionApiService: EntityVersionApiService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityDefinitionApiService: EntityDefinitionApiService,\r\n\t\tpublic operationGroupApiService: OperationGroupApiService,\r\n\t\tpublic workItemService: WorkItemService,\r\n\t\tpublic changeDetectorReference: ChangeDetectorRef)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the scroll panel element reference.\r\n\t *\r\n\t * @type {ElementRef}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t@ViewChild('ScrollPanel')\r\n\tpublic scrollPanel: ElementRef;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of the table definition.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic loadingTableDefinition: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of the table filters.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic loadingTableFilters: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the loading value of the page guard.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic loadingPageGuard: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the common table definition.\r\n\t *\r\n\t * @type {ICommonTable}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic workbenchTableDefinition: ICommonTable;\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic availableColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table columns.\r\n\t *\r\n\t * @type {ICommonTableColumn[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic selectedColumns: ICommonTableColumn[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the menu items for page actions that will be\r\n\t * displayed in the page.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic pageActions: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the common table context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic commonTableContext:\r\n\t\tIDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the table row count.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic tableRowCount: number = 15;\r\n\r\n\t/**\r\n\t * Gets or sets the table filter query.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic tableFilterQuery: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the available route parameter values.\r\n\t *\r\n\t * @type {object}\r\n\t * @memberof GenericBasePageComponent\r\n\t */\r\n\tpublic routeData:\r\n\t\t{\r\n\t\t\tdata: object;\r\n\t\t} = {\r\n\t\t\tdata: {}\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the active value of the filter panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterActive: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not the validity changed in the filter panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterValidityChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets whether or not the values changed in the filter panel.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterValuesChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the subscriptions used in this component.\r\n\t *\r\n\t * @type {Subscription}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic subscriptions: Subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Gets or sets the data displayed in the filter panel.\r\n\t *\r\n\t * @type {{ data: any }}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterLayoutData: { data: any } =\r\n\t\t{ data: { metadata: {} }};\r\n\r\n\t/**\r\n\t * Gets or sets the initial data displayed in the filter panel.\r\n\t *\r\n\t * @type {{ data: any }}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic archivedFilterLayoutData: { data: any } =\r\n\t\t{ data: { metadata: {} }};\r\n\r\n\t/**\r\n\t * Gets or sets the layout displayed in the filter panel.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterLayoutSchema: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic layout displayed in the filter panel based on\r\n\t * module selects.\r\n\t *\r\n\t * @type {FormlyFieldConfig[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic dynamicFilterLayoutSchema: FormlyFieldConfig[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the allowed modules that the user has access to.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic moduleOptions: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the dynamic layout collection associated to each allowed\r\n\t * module in the filter panel.\r\n\t *\r\n\t * @type {{\r\n\t * module: string,\r\n\t * layoutConfiguration: IDynamicLayoutConfiguration\r\n\t * }[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic moduleLayoutConfigurations:\r\n\t\t{\r\n\t\t\tmodule: string;\r\n\t\t\tlayoutConfiguration: IDynamicLayoutConfiguration;\r\n\t\t}[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the available users which is used to display chip outputs.\r\n\t *\r\n\t * @type {IDropdownOption[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic availableUsers: IDropdownOption[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the initial object search displayed in this component's\r\n\t * common table.\r\n\t *\r\n\t * @type {IObjectSearch}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic objectSearch: IObjectSearch =\r\n\t\t\r\n\t\t{\r\n\t\t\tfilter: AppConstants.empty,\r\n\t\t\torderBy: `${AppConstants.commonProperties.id} `\r\n\t\t\t\t+ AppConstants.sortDirections.descending,\r\n\t\t\toffset: 0,\r\n\t\t\tlimit: AppConstants.dataLimits.large,\r\n\t\t\tvirtualIndex: 0,\r\n\t\t\tvirtualPageSize: this.tableRowCount,\r\n\t\t\tsortField: AppConstants.commonProperties.id,\r\n\t\t\tsortOrder: -1\r\n\t\t};\r\n\r\n\t/**\r\n\t * Gets or sets the interval timer reference returned when\r\n\t * applicable dashboard timers are running.\r\n\t *\r\n\t * @type {NodeJS.Timeout}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic dashboardRefreshTimeout: NodeJS.Timeout;\r\n\r\n\t/**\r\n\t * Gets or sets loading dashboard state.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic loadingDashboard: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets assigned to name last loaded into the chip display.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic assignedToName: string = AppConstants.empty;\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn > {\r\n\t\t\tsource: this,\r\n\t\t\tdata: {}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the number of fields that will exist in the filter panel at all\r\n\t * times.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate readonly staticLayoutFieldCount: number = 9;\r\n\r\n\t/**\r\n\t * Gets the identifier used to find an overlay of a workbench filter.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate readonly overlayIdentifier: string = 'workbench-filter';\r\n\r\n\t/**\r\n\t * Gets the list of formly control types that use a dropdown\r\n\t * option/label dataset.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate readonly dropdownTypes: string[] =\r\n\t\t[\r\n\t\t\tFormlyConstants.customControls.customSelect,\r\n\t\t\tFormlyConstants.customControls.customDataSelect\r\n\t\t];\r\n\r\n\t/**\r\n\t * Gets the list of formly control types that use a calendar\r\n\t * option/label dataset.\r\n\t *\r\n\t * @type {string[]}\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate readonly calendarTypes: string[] =\r\n\t\t[\r\n\t\t\tFormlyConstants.customControls.customCalendar\r\n\t\t];\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t@HostListener(AppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tif (this.filterActive === true)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.cancelFilterChanges();\r\n\t\t\t\t\tthis.filterActive = false;\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this setting display when a non bubbled\r\n\t * click event occurs outside of this element.\r\n\t *\r\n\t * @param {string} controlIdentifer\r\n\t * The control identifier sent with this event.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\tcontrolIdentifer: string): void\r\n\t{\r\n\t\tif (controlIdentifer !== this.overlayIdentifier)\r\n\t\t{\r\n\t\t\tthis.siteLayoutChanged();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This method will setup the table definitions and the filter panel.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tif (!await this.isPageOwnershipAllowed())\r\n\t\t{\r\n\t\t\tEventHelper.dispatchNavigateToAccessDeniedEvent(\r\n\t\t\t\tthis.location.path(),\r\n\t\t\t\t[\r\n\t\t\t\t\t'WorkItem.*'\r\n\t\t\t\t],\r\n\t\t\t\t'Access is required to at least one work item '\r\n\t\t\t\t\t+ 'entity type and version.');\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loadingPageGuard = false;\r\n\r\n\t\tlet displayOrder: number = 1;\r\n\t\tthis.availableColumns =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.queue',\r\n\t\t\t\t\tcolumnHeader: 'Queue',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.entityTypeName',\r\n\t\t\t\t\tcolumnHeader: 'Type',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.subType',\r\n\t\t\t\t\tcolumnHeader: 'Subtype',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.priority',\r\n\t\t\t\t\tcolumnHeader: 'Priority',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.keyDates.dueDate',\r\n\t\t\t\t\tcolumnHeader: 'Due Date',\r\n\t\t\t\t\tdataFormatType: AppConstants.dataFormatTypes.shortDate,\r\n\t\t\t\t\tdisplayOrder: displayOrder\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.status',\r\n\t\t\t\t\tcolumnHeader: 'Status',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tdataKey: 'data.description',\r\n\t\t\t\t\tcolumnHeader: 'Description',\r\n\t\t\t\t\tdisplayOrder: displayOrder++\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\tthis.selectedColumns = this.availableColumns;\r\n\r\n\t\tthis.subscriptions.add(\r\n\t\t\tthis.route.queryParams.subscribe(\r\n\t\t\t\t(parameters: Params) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.filterLayoutData =\r\n\t\t\t\t\t\tthis.mapRouteDataFromUrlStorage(\r\n\t\t\t\t\t\t\tObjectHelper.mapFromRouteData(\r\n\t\t\t\t\t\t\t\tparameters));\r\n\t\t\t\t\tthis.updateRouteData();\r\n\r\n\t\t\t\t\tthis.setupTableFilters()\r\n\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\tasync() =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tawait this.handleModuleChange(\r\n\t\t\t\t\t\t\t\t\tthis.filterLayoutData.data.module);\r\n\t\t\t\t\t\t\t\tthis.objectSearch.filter =\r\n\t\t\t\t\t\t\t\t\tthis.calculateFilter();\r\n\r\n\t\t\t\t\t\t\t\tthis.setupTableDefinitions();\r\n\t\t\t\t\t\t\t\tthis.loadingDashboard = false;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * On after view initialization event.\r\n\t * Handles workbench dashboard updates.\r\n\t *\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tthis.updateDashboard();\r\n\t}\r\n\r\n\t/**\r\n\t * Implements the ownership guard interface.\r\n\t * This will calculate page ownership permissions.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * A value signifying whether or not access is allowed to this page.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic async isPageOwnershipAllowed(): Promise\r\n\t{\r\n\t\tconst workItemTypes: IEntityType[] =\r\n\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\tAppConstants.commonProperties.group\r\n\t\t\t\t\t+ '.StartsWith(\\'WorkItem.\\') eq true',\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tif (workItemTypes.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst workItemTypeIds: string =\r\n\t\t\tApiFilterHelper.commaSeparatedStringValues(\r\n\t\t\t\tworkItemTypes.map(\r\n\t\t\t\t\t(workItemType: IEntityType) =>\r\n\t\t\t\t\t\tworkItemType.id.toString()),\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\tconst workItemVersions: IEntityVersion[] =\r\n\t\t\tawait this.entityVersionApiService.query(\r\n\t\t\t\tAppConstants.commonProperties.id\r\n\t\t\t\t\t+ ` in (${workItemTypeIds})`,\r\n\t\t\t\tAppConstants.empty);\r\n\r\n\t\treturn workItemVersions.length !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Maps route data into a filter layout data object with defaults if\r\n\t * applicable.\r\n\t *\r\n\t * @param {any} routeData\r\n\t * The route data parameter defined in the url.\r\n\t * @returns {{ data: {} }}\r\n\t * A filter layout data object ready for an applied filter.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic mapRouteDataFromUrlStorage(\r\n\t\trouteData: any): { data: {} }\r\n\t{\r\n\t\tif (AnyHelper.isNullOrEmpty(routeData.data))\r\n\t\t{\r\n\t\t\trouteData.data = {};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tdata: {\r\n\t\t\t\tassignedTo:\r\n\t\t\t\t\t!routeData.data.hasOwnProperty('assignedTo')\r\n\t\t\t\t\t\t? this.sessionService.user.data.userName\r\n\t\t\t\t\t\t: routeData.data.assignedTo,\r\n\t\t\t\ttype:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.type)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.type,\r\n\t\t\t\tsubType:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.subType)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.subType,\r\n\t\t\t\tpriority:\r\n\t\t\t\t\tAnyHelper.isNull(routeData.data.priority)\r\n\t\t\t\t\t\t? [\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemPriority.high,\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemPriority.normal,\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemPriority.low\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t\t: routeData.data.priority,\r\n\t\t\t\tstatus:\r\n\t\t\t\t\tAnyHelper.isNull(routeData.data.status)\r\n\t\t\t\t\t\t? [\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemStatus.active,\r\n\t\t\t\t\t\t\tWorkItemConstants.workItemStatus.overdue\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t\t: routeData.data.status,\r\n\t\t\t\tqueue:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.queue)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.queue,\r\n\t\t\t\tmodule:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.module)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.module,\r\n\t\t\t\tcreateDate:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.createDate)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.createDate,\r\n\t\t\t\tdueDate:\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(routeData.data.dueDate)\r\n\t\t\t\t\t\t? AppConstants.empty\r\n\t\t\t\t\t\t: routeData.data.dueDate,\r\n\t\t\t\tmetadata:\r\n\t\t\t\t\tAnyHelper.isNull(routeData.data.metadata)\r\n\t\t\t\t\t\t? {}\r\n\t\t\t\t\t\t: routeData.data.metadata,\r\n\t\t\t\tworkItemId:\r\n\t\t\t\t\tAnyHelper.isNull(routeData.data.workItemId)\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: routeData.data.workItemId\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Adds the current display component parameter set to the URL\r\n\t * when data changes are applied.\r\n\t *\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic updateRouteData(): void\r\n\t{\r\n\t\tthis.location\r\n\t\t\t.replaceState(\r\n\t\t\t\tthis.router\r\n\t\t\t\t\t.createUrlTree(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trelativeTo: this.route,\r\n\t\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t\t\tthis.filterLayoutData)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t.toString());\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This method will unsubscribe from any existing subscriptions.\r\n\t *\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.subscriptions.unsubscribe();\r\n\t\tclearTimeout(\r\n\t\t\tthis.dashboardRefreshTimeout);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table definition for the table displayed in this component.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic async setupTableDefinitions(): Promise\r\n\t{\r\n\t\tthis.loadingTableDefinition = true;\r\n\r\n\t\tthis.workbenchTableDefinition =\r\n\t\t\t\r\n\t\t\t{\r\n\t\t\t\ttableTitle: 'Work Items',\r\n\t\t\t\texpandTitle: () =>\r\n\t\t\t\t\tTableHelper.getExpandTitle(\r\n\t\t\t\t\t\tthis.commonTableContext,\r\n\t\t\t\t\t\tthis.getTitle()),\r\n\t\t\t\tobjectSearch: this.objectSearch,\r\n\t\t\t\ttableHeight: {\r\n\t\t\t\t\tvirtualPageSizeBased: true,\r\n\t\t\t\t\tminimumDrawerItemHeight: 12\r\n\t\t\t\t},\r\n\t\t\t\tfullPageReservedHeight: 178,\r\n\t\t\t\tapiPromise:\r\n\t\t\t\t\tasync(objectSearch: IObjectSearch) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst workItemTypes: IEntityType[] =\r\n\t\t\t\t\t\t\tawait this.entityTypeApiService.query(\r\n\t\t\t\t\t\t\t\tAppConstants.commonProperties.group\r\n\t\t\t\t\t\t\t\t\t+ '.Contains(\\'WorkItem.\\') eq true',\r\n\t\t\t\t\t\t\t\t`${AppConstants.commonProperties.id} `\r\n\t\t\t\t\t\t\t\t\t+ AppConstants.sortDirections.descending);\r\n\r\n\t\t\t\t\t\tconst workItems: IEntityInstance[] =\r\n\t\t\t\t\t\t\tawait this.entityService\r\n\t\t\t\t\t\t\t\t.queryMultipleEntityTypes(\r\n\t\t\t\t\t\t\t\t\tworkItemTypes,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.filter,\r\n\t\t\t\t\t\t\t\t\tobjectSearch.orderBy);\r\n\r\n\t\t\t\t\t\treturn workItems\r\n\t\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t\t(workItem: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tworkItem.data.entityTypeName =\r\n\t\t\t\t\t\t\t\t\t\tStringHelper.getLongEntityDisplayName(\r\n\t\t\t\t\t\t\t\t\t\t\tworkItem.entityType,\r\n\t\t\t\t\t\t\t\t\t\t\tWorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t\t\t.workItemEntityTypePrefix);\r\n\r\n\t\t\t\t\t\t\t\t\tif (!AnyHelper.isNull(\r\n\t\t\t\t\t\t\t\t\t\tthis.filterLayoutData.data.workItemId)\r\n\t\t\t\t\t\t\t\t\t\t&& workItem.id ===\r\n\t\t\t\t\t\t\t\t\t\t\tthis.filterLayoutData.data\r\n\t\t\t\t\t\t\t\t\t\t\t\t.workItemId)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t// Select route data selected items.\r\n\t\t\t\t\t\t\t\t\t\tthis.commonTableContext.source\r\n\t\t\t\t\t\t\t\t\t\t\t.selectItem(workItem);\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Clear this behavior after first open.\r\n\t\t\t\t\t\t\t\t\t\tthis.filterLayoutData.data\r\n\t\t\t\t\t\t\t\t\t\t\t.workItemId = null;\r\n\t\t\t\t\t\t\t\t\t\tthis.updateRouteData();\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn workItem;\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.sort(\r\n\t\t\t\t\t\t\t\t(itemOne: IEntityInstance,\r\n\t\t\t\t\t\t\t\t\titemTwo: IEntityInstance) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst itemOneDueDate: DateTime =\r\n\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\titemOne.data.keyDates.dueDate);\r\n\t\t\t\t\t\t\t\t\tconst itemTwoDueDate: DateTime =\r\n\t\t\t\t\t\t\t\t\t\tDateHelper.fromUtcIso(\r\n\t\t\t\t\t\t\t\t\t\t\titemTwo.data.keyDates.dueDate);\r\n\r\n\t\t\t\t\t\t\t\t\tif (itemOneDueDate < itemTwoDueDate)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\telse if (itemOneDueDate > itemTwoDueDate)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t},\r\n\t\t\t\tavailableColumns: this.availableColumns,\r\n\t\t\t\tselectedColumns: this.selectedColumns,\r\n\t\t\t\tcommonTableContext:\r\n\t\t\t\t\t(commonTableContext:\r\n\t\t\t\t\t\tIDynamicComponentContext) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.commonTableContext = commonTableContext;\r\n\t\t\t\t\t},\r\n\t\t\t\tactions:\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tview:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcomponent: WorkItemExpandComponent,\r\n\t\t\t\t\t\t\t\tcustomContext: this.pageContext,\r\n\t\t\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: 'View Entity',\r\n\t\t\t\t\t\t\t\t\t\tstyleClass:\r\n\t\t\t\t\t\t\t\t\t\t\tAppConstants.cssClasses\r\n\t\t\t\t\t\t\t\t\t\t\t\t.pButtonPrimary,\r\n\t\t\t\t\t\t\t\t\t\tvisible: false,\r\n\t\t\t\t\t\t\t\t\t\tcommand:\r\n\t\t\t\t\t\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.workItemService\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.NavigateToWorkitemParent(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commonTableContext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.source\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.selectedItem)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.loadingTableDefinition = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the table filter display in the filter panel.\r\n\t *\r\n\t * @async\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic async setupTableFilters(): Promise\r\n\t{\r\n\t\tthis.moduleOptions =\r\n\t\t\tawait this.loadAllowedModules();\r\n\r\n\t\tconst userPromise: string =\r\n\t\t\t'return async function() { '\r\n\t\t\t\t+ 'const workItemService = '\r\n\t\t\t\t+ 'this.source.resolver.resolveWorkItems(\"WorkItemService\"); '\r\n\t\t\t\t+ 'const workItemUsers = '\r\n\t\t\t\t+ 'await workItemService.getAvailableAssignedToUsers('\r\n\t\t\t\t+ '\"\", this.source.filterLayoutData.data.assignedTo, '\r\n\t\t\t\t+ 'this.data?.dataSelectOptions?.filterValue); '\r\n\t\t\t\t+ 'return workItemUsers; }';\r\n\r\n\t\tthis.archivedFilterLayoutData.data =\r\n\t\t\t{...this.filterLayoutData.data};\r\n\t\tthis.archivedFilterLayoutData.data.metadata =\r\n\t\t\t{...this.filterLayoutData.data.metadata};\r\n\r\n\t\tthis.filterLayoutSchema =\r\n\t\t\t\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.status',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Status',\r\n\t\t\t\t\t\tplaceholder: 'Select a status',\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'Changes in status will not alter the summary card '\r\n\t\t\t\t\t\t\t\t+ 'results, all other filters are applied.',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.active,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.active,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.done,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.done,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.ignored,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.ignored,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.overdue,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemStatus.overdue\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.priority',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customMultiSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Priority',\r\n\t\t\t\t\t\tplaceholder: 'Select a priority',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.high,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.high,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.normal,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.normal\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.low,\r\n\t\t\t\t\t\t\t\t\tlabel: WorkItemConstants\r\n\t\t\t\t\t\t\t\t\t\t.workItemPriority.low\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.assignedTo',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customDataSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Assigned To',\r\n\t\t\t\t\t\tplaceholder: 'Select a user',\r\n\t\t\t\t\t\ttooltip:\r\n\t\t\t\t\t\t\t'The filter will load users based on full word '\r\n\t\t\t\t\t\t\t\t+ 'matches found in their first name, '\r\n\t\t\t\t\t\t\t\t+ 'last name, username, or email.',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tdataPromise: userPromise,\r\n\t\t\t\t\t\tlabelTemplate:\r\n\t\t\t\t\t\t\t'${item.data.firstName} ${item.data.lastName}',\r\n\t\t\t\t\t\tvalueTemplate:\r\n\t\t\t\t\t\t\t'${item.data.userName}',\r\n\t\t\t\t\t\tuseApiFilter: true,\r\n\t\t\t\t\t\tfilter: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.queue',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Queue',\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.typeId',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Work Item Type',\r\n\t\t\t\t\t\tplaceholder: 'Select a Work Item Type',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions: await this.loadFilterEntityTypes(),\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.subType',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Subtype'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.module',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Module',\r\n\t\t\t\t\t\tplaceholder: 'Select a module for additional filters',\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\toptions: this.moduleOptions,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body,\r\n\t\t\t\t\t\tchange:\r\n\t\t\t\t\t\t\t(field: FormlyFieldConfig, event: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.handleModuleChange(\r\n\t\t\t\t\t\t\t\t\tfield.formControl?.value,\r\n\t\t\t\t\t\t\t\t\t!AnyHelper.isNull(event));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.createDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Created Date',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tkey: 'data.dueDate',\r\n\t\t\t\t\ttype: FormlyConstants.customControls.customCalendar,\r\n\t\t\t\t\twrappers: [\r\n\t\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t\t],\r\n\t\t\t\t\tprops: {\r\n\t\t\t\t\t\tlabel: 'Due Date',\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\tshowClear: true,\r\n\t\t\t\t\t\tappendTo: FormlyConstants.appendToTargets.body\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t];\r\n\r\n\t\tif (!AnyHelper.isNullOrWhitespace(\r\n\t\t\tthis.filterLayoutData.data.assignedTo))\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.users;\r\n\t\t\tconst user: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService.getSingleQueryResult(\r\n\t\t\t\t\t`${AppConstants.commonProperties.userName} eq `\r\n\t\t\t\t\t\t+ `'${this.filterLayoutData.data.assignedTo}'`,\r\n\t\t\t\t\tAppConstants.empty,\r\n\t\t\t\t\ttrue);\r\n\r\n\t\t\tconst userChipValue: string =\r\n\t\t\t\tAnyHelper.isNull(user)\r\n\t\t\t\t\t? this.filterLayoutData.data.assignedTo\r\n\t\t\t\t\t: `${user.data.firstName} ${user.data.lastName}`;\r\n\r\n\t\t\tthis.assignedToName = userChipValue;\r\n\t\t}\r\n\r\n\t\tthis.loadingTableFilters = false;\r\n\r\n\t\t// Allow Formly to implement defaults and display values.\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.archivedFilterLayoutData.data =\r\n\t\t\t\t\t{...this.filterLayoutData.data};\r\n\t\t\t\tthis.archivedFilterLayoutData.data.metadata =\r\n\t\t\t\t\t{...this.filterLayoutData.data.metadata};\r\n\t\t\t},\r\n\t\t\tAppConstants.time.quarterSecond);\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the active filter value which defines if the filter panel\r\n\t * is displayed.\r\n\t *\r\n\t * @param {boolean} active\r\n\t * If sent this will set the filter display as the active value. This\r\n\t * value defaults to null and will instead toggle the active value.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t public toggleFilterDisplay(\r\n\t\tactive: boolean = null)\r\n\t{\r\n\t\tthis.filterActive =\r\n\t\t\t!AnyHelper.isNull(active)\r\n\t\t\t\t? active\r\n\t\t\t\t: !this.filterActive;\r\n\r\n\t\tif (this.filterActive === true)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.setScrollActions();\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.quarterSecond);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the validity changed event sent from the child dynamic\r\n\t * formly component. This will update the validity of the form for\r\n\t * action buttons.\r\n\t *\r\n\t * @param {boolean} isValid\r\n\t * The validity of the current displayed filter set.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t public filterValidityChange(\r\n\t\tisValid: boolean): void\r\n\t{\r\n\t\tthis.filterValidityChanged = isValid;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the filter changed event sent from the child dynamic\r\n\t * formly component. This will notify the component of changes to\r\n\t * data in the formly display.\r\n\t *\r\n\t * @param {boolean} changed\r\n\t * The changed truthy of the current displayed filter set.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic filterValuesChange(\r\n\t\tchanged: boolean): void\r\n\t{\r\n\t\tthis.filterValuesChanged = changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies values from the filter panel into a filter string that will\r\n\t * then be applied on the table results.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that sent this apply filters call.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic applyFilters(\r\n\t\tevent: any = null): void\r\n\t{\r\n\t\tthis.loadingDashboard = true;\r\n\t\tthis.changeDetectorReference.detectChanges();\r\n\r\n\t\tconst filter: string =\r\n\t\t\tthis.calculateFilter();\r\n\r\n\t\tthis.commonTableContext.source.filterCriteriaChanged(\r\n\t\t\tfilter);\r\n\r\n\t\t// If successful, update the archive data.\r\n\t\tthis.archivedFilterLayoutData.data =\r\n\t\t\t{...this.filterLayoutData?.data};\r\n\t\tthis.archivedFilterLayoutData.data.metadata =\r\n\t\t\t{...this.filterLayoutData.data.metadata};\r\n\r\n\t\tthis.updateRouteData();\r\n\t\tthis.filterActive = false;\r\n\t\tthis.loadingDashboard = false;\r\n\r\n\t\tevent?.preventDefault();\r\n\t\tevent?.stopPropagation();\r\n\r\n\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\tthis.overlayIdentifier);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all values in the filter panel.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that sent this clear filters call.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic clearFilters(\r\n\t\tevent: any = null): void\r\n\t{\r\n\t\tfor (const field of this.filterLayoutSchema)\r\n\t\t{\r\n\t\t\tif (field.props.disabled === true)\r\n\t\t\t{\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Set values.\r\n\t\t\tfield.formControl?.setValue(\r\n\t\t\t\t(this.dropdownTypes.indexOf(field?.type.toString()) !== - 1)\r\n\t\t\t\t\t? null\r\n\t\t\t\t\t: AppConstants.empty);\r\n\t\t\tfield.formControl?.updateValueAndValidity();\r\n\r\n\t\t\tif (this.calendarTypes.indexOf(field?.type.toString()) !== - 1)\r\n\t\t\t{\r\n\t\t\t\tfield.props?.setDisplayDate(null);\r\n\t\t\t}\r\n\r\n\t\t\t// Handle remnant clear icons on now empty dropdowns.\r\n\t\t\tconst dropdownClearIcons: Element[] =\r\n\t\t\t\tthis.scrollPanel.nativeElement.querySelectorAll(\r\n\t\t\t\t\t'.p-dropdown-clear-icon');\r\n\t\t\tfor (const dropdownClearIcon of dropdownClearIcons)\r\n\t\t\t{\r\n\t\t\t\tdropdownClearIcon.dispatchEvent(\r\n\t\t\t\t\tnew MouseEvent(\r\n\t\t\t\t\t\tMouseEventConstants.click));\r\n\t\t\t}\r\n\r\n\t\t\t// Fire the change event if applicable.\r\n\t\t\tif (AnyHelper.isFunction(field.props.change))\r\n\t\t\t{\r\n\t\t\t\tfield.props.change(field);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tevent?.preventDefault();\r\n\t\tevent?.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Cancels changes in the filter panel by resetting to the previously called\r\n\t * filter set.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event that sent this cancel filter changes call.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic cancelFilterChanges(\r\n\t\tevent: any = null): void\r\n\t{\r\n\t\t// Revert to the archive data.\r\n\t\tthis.filterLayoutData.data =\r\n\t\t\t{...this.archivedFilterLayoutData.data};\r\n\t\tthis.filterLayoutData.data.metadata =\r\n\t\t\t{...this.archivedFilterLayoutData.data.metadata};\r\n\r\n\t\tthis.filterActive = false;\r\n\r\n\t\tevent?.preventDefault();\r\n\t\tevent?.stopPropagation();\r\n\r\n\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\tthis.overlayIdentifier);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates a display value for the associated set of filters\r\n\t * to this component.\r\n\t *\r\n\t * @param {FormlyFieldConfig} fieldConfig\r\n\t * The field configuration to get a value for.\r\n\t * @returns {string}\r\n\t * A value ready for display in the parameter based chip set.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tpublic getChipValue(\r\n\t\tfieldConfig: FormlyFieldConfig): string\r\n\t{\r\n\t\tlet value: any =\r\n\t\t\tget(\r\n\t\t\t\tthis.filterLayoutData,\r\n\t\t\t\tfieldConfig.key.toString());\r\n\r\n\t\tif (DateTime.fromISO(value).isValid)\r\n\t\t{\r\n\t\t\tvalue = DateHelper.formatDate(\r\n\t\t\t\tDateTime.fromISO(value));\r\n\t\t}\r\n\r\n\t\tif (this.dropdownTypes.indexOf(fieldConfig.type.toString()) !== -1)\r\n\t\t{\r\n\t\t\tconst availableOptions: IDropdownOption[] =\r\n\t\t\t\t(fieldConfig.props.options);\r\n\r\n\t\t\t// Handle the data select of assigned to as a one off.\r\n\t\t\tif ((AnyHelper.isNull(availableOptions)\r\n\t\t\t\t|| availableOptions.length === 0)\r\n\t\t\t\t&& !AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\tthis.assignedToName))\r\n\t\t\t{\r\n\t\t\t\tvalue = this.assignedToName;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvalue =\r\n\t\t\t\t\tavailableOptions\r\n\t\t\t\t\t\t?.find(\r\n\t\t\t\t\t\t\t(selectOption: IDropdownOption) =>\r\n\t\t\t\t\t\t\t\tvalue === selectOption.value)\r\n\t\t\t\t\t\t?.label;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on load event of the worbench dashboard.\r\n\t *\r\n\t * @returns {IEventHandler}\r\n\t * A handled event response.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t public updateDashboard(): IEventHandler\r\n\t {\r\n\t\t// Clear any existing timers.\r\n\t\tthis.ngOnDestroy();\r\n\r\n\t\t// On expiration, refresh the dashboard.\r\n\t\tthis.dashboardRefreshTimeout =\r\n\t\t\tsetTimeout(\r\n\t\t\t\tasync() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.loadingDashboard = true;\r\n\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.loadingDashboard = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tAppConstants.time.twentyFiveMilliseconds);\r\n\t\t\t\t\tthis.updateDashboard();\r\n\t\t\t\t},\r\n\t\t\t\tAppConstants.time.fiveMinutes);\r\n\r\n\t\treturn null;\r\n\t }\r\n\r\n\t/**\r\n\t * Handles a change in the filter panel module control.\r\n\t *\r\n\t * @async\r\n\t * @param {selectedModule} selectedModule\r\n\t * The module currently selected or null if no values are selected.\r\n\t * @param {boolean} scrollToNewLayout\r\n\t * If sent and false this will not scroll to the new layout. This value\r\n\t * defaults to false and will scroll to the new layout.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate async handleModuleChange(\r\n\t\tselectedModule: string,\r\n\t\tscrollToNewLayout: boolean = true): Promise\r\n\t{\r\n\t\treturn new Promise(\r\n\t\t\t(resolve: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (AnyHelper.isNullOrWhitespace(selectedModule))\r\n\t\t\t\t{\r\n\t\t\t\t\tconst staticLayoutFields: FormlyFieldConfig[] =\r\n\t\t\t\t\t\tthis.filterLayoutSchema.slice(\r\n\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\tthis.staticLayoutFieldCount);\r\n\t\t\t\t\tconst dynamicLayoutFields: FormlyFieldConfig[] =\r\n\t\t\t\t\t\tthis.filterLayoutSchema.slice(\r\n\t\t\t\t\t\t\tthis.staticLayoutFieldCount);\r\n\r\n\t\t\t\t\tfor (const dynamicField of dynamicLayoutFields)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdynamicField.formControl?.setValue(null);\r\n\t\t\t\t\t\tdynamicField.formControl?.updateValueAndValidity();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.filterLayoutSchema =\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t...staticLayoutFields\r\n\t\t\t\t\t\t\t\t];\r\n\t\t\t\t\t\t\tthis.filterLayoutData.data.metadata = {};\r\n\r\n\t\t\t\t\t\t\tthis.scrollFilterPanel(0);\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst additionalLayoutSchema: FormlyFieldConfig[] =\r\n\t\t\t\t\tthis.moduleLayoutConfigurations.find(\r\n\t\t\t\t\t\t(configuration: any) =>\r\n\t\t\t\t\t\t\tconfiguration.module ===\r\n\t\t\t\t\t\t\t\tselectedModule)\r\n\t\t\t\t\t\t?.layoutConfiguration.layout ?? [];\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.filterLayoutSchema =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t...this.filterLayoutSchema.slice(\r\n\t\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\t\tthis.staticLayoutFieldCount),\r\n\t\t\t\t\t\t\t\t...additionalLayoutSchema\r\n\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\tif (scrollToNewLayout === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.scrollFilterPanel();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the filter panel to the desired scroll location.\r\n\t *\r\n\t * @param {number} scrollTo\r\n\t * If sent this value will scroll to the sent location. If not sent, this\r\n\t * will scroll to the bottom of the filter panel.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate scrollFilterPanel(\r\n\t\tscrollTo?: number): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tconst scrollpanelContent: Element =\r\n\t\t\t\t\tthis.scrollPanel?.nativeElement.querySelector(\r\n\t\t\t\t\t\t`.${AppConstants.cssClasses.scrollPanelContent}`);\r\n\r\n\t\t\t\tif (!AnyHelper.isNull(scrollpanelContent))\r\n\t\t\t\t{\r\n\t\t\t\t\t// If this is removing the scroll panel, remove the bar.\r\n\t\t\t\t\tif (scrollTo === 0\r\n\t\t\t\t\t\t&& scrollpanelContent.scrollTop === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst verticalScrollBar: Element =\r\n\t\t\t\t\t\t\tthis.scrollPanel?.nativeElement.querySelector(\r\n\t\t\t\t\t\t\t\t`.${AppConstants.cssClasses\r\n\t\t\t\t\t\t\t\t\t.scrollPanelVerticalScrollBar}`);\r\n\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(verticalScrollBar))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tverticalScrollBar.classList.add(\r\n\t\t\t\t\t\t\t\tAppConstants.cssClasses.scrollPanelHidden);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscrollpanelContent.scroll(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttop: !AnyHelper.isNull(scrollTo)\r\n\t\t\t\t\t\t\t\t? scrollTo\r\n\t\t\t\t\t\t\t\t: scrollpanelContent.scrollHeight,\r\n\t\t\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\tAppConstants.time.oneHundredMilliseconds);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns a filter value representing the currently\r\n\t * displayed filter panel data.\r\n\t *\r\n\t * @param {boolean} removeStatusCheck\r\n\t * If sent and true this will remove the status check from the filter.\r\n\t * @returns {string}\r\n\t * A calculated filter value that can be used in further table api calls.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate calculateFilter(\r\n\t\tremoveStatusCheck: boolean = false): string\r\n\t{\r\n\t\tlet filter: string = this.calculateModuleFilter();\r\n\r\n\t\tfor (const field of this.filterLayoutSchema)\r\n\t\t{\r\n\t\t\tif (field.key?.toString() ===\r\n\t\t\t\tAppConstants.nestedDataIdentifier\r\n\t\t\t\t\t+ AppConstants.commonProperties.status\r\n\t\t\t\t&& removeStatusCheck === true)\r\n\t\t\t{\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst fieldValue: any =\r\n\t\t\t\tfield.formControl?.value\r\n\t\t\t\t\t|| get(\r\n\t\t\t\t\t\tthis.filterLayoutData,\r\n\t\t\t\t\t\tfield.key.toString());\r\n\r\n\t\t\tif (AnyHelper.isNullOrWhitespace(fieldValue)\r\n\t\t\t\t|| AnyHelper.isNullOrEmptyArray(fieldValue))\r\n\t\t\t{\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(filter))\r\n\t\t\t{\r\n\t\t\t\tfilter += ' and ';\r\n\t\t\t}\r\n\r\n\t\t\tconst fieldKey: string =\r\n\t\t\t\t(field.key).replace(\r\n\t\t\t\t\tAppConstants.nestedDataIdentifier,\r\n\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\tswitch (field.type)\r\n\t\t\t{\r\n\t\t\t\tcase FormlyConstants.customControls.customDataSelect:\r\n\t\t\t\tcase FormlyConstants.customControls.customSelect:\r\n\t\t\t\t\tfilter +=\r\n\t\t\t\t\t\t`(${fieldKey} eq `\r\n\t\t\t\t\t\t\t+ `'${fieldValue}')`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase FormlyConstants.customControls.customCalendar:\r\n\t\t\t\t\tfilter +=\r\n\t\t\t\t\t\t`(${fieldKey} >= `\r\n\t\t\t\t\t\t\t+ `'${fieldValue}')`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase FormlyConstants.customControls.customMultiSelect:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst multiSelectFilter: string =\r\n\t\t\t\t\t\t\tthis.calculateArrayFilter(\r\n\t\t\t\t\t\t\t\tfieldKey,\r\n\t\t\t\t\t\t\t\tfieldValue);\r\n\r\n\t\t\t\t\t\tfilter += `(${multiSelectFilter})`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tfilter +=\r\n\t\t\t\t\t\t`(${fieldKey}.Contains(`\r\n\t\t\t\t\t\t\t+ `'${fieldValue}') eq true)`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filter;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and returns an initial module filter matching the allowed\r\n\t * modules.\r\n\t *\r\n\t * @returns {string}\r\n\t * A calculated module level filter value that can be used in further table\r\n\t * api calls.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate calculateModuleFilter(): string\r\n\t{\r\n\t\tif (this.moduleOptions.length === 0)\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tlet filter = AppConstants.characters.leftParantheses;\r\n\t\tfor (const dropdownOption of\r\n\t\t\tthis.moduleOptions.filter(\r\n\t\t\t\t(moduleOption: IDropdownOption) =>\r\n\t\t\t\t\tAnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\tthis.filterLayoutData.data.module)\r\n\t\t\t\t\t\t|| moduleOption.value ===\r\n\t\t\t\t\t\t\tthis.filterLayoutData.data.module))\r\n\t\t{\r\n\t\t\tif (filter !== AppConstants.characters.leftParantheses)\r\n\t\t\t{\r\n\t\t\t\tfilter += ' or ';\r\n\t\t\t}\r\n\r\n\t\t\tfilter +=\r\n\t\t\t\t`module eq '${dropdownOption.value}'`;\r\n\t\t}\r\n\t\tfilter += AppConstants.characters.rightParantheses;\r\n\r\n\t\treturn filter;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates a filter that will match a multi select data array.\r\n\t *\r\n\t * @param {string} fieldKey\r\n\t * A key used to identify the multi select key.\r\n\t * @param {string[]} fieldValue\r\n\t * A string array representing a multi select array value.\r\n\t * @returns {string}\r\n\t * A calculated multi select level filter value that can be used in\r\n\t * further table api calls.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\t private calculateArrayFilter(\r\n\t\tfieldKey: string,\r\n\t\tfieldValue: string[]): string\r\n\t{\r\n\t\tlet multiSelectFilter: string = AppConstants.empty;\r\n\t\tfor (const selectedValue of fieldValue)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNullOrWhitespace(multiSelectFilter))\r\n\t\t\t{\r\n\t\t\t\tmultiSelectFilter += ' or ';\r\n\t\t\t}\r\n\r\n\t\t\tmultiSelectFilter +=\r\n\t\t\t\t`(${fieldKey} eq `\r\n\t\t\t\t\t+ `'${selectedValue}')`;\r\n\t\t}\r\n\r\n\t\treturn multiSelectFilter;\r\n\t}\r\n\r\n\t/**\r\n\t * Attaches a scroll event to scrollable form content to allow currently\r\n\t * appended form control overlays to close on scroll.\r\n\t *\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate setScrollActions(): void\r\n\t{\r\n\t\t function runOnce()\r\n\t\t {\r\n\t\t\tconst toggleElement: Element =\r\n\t\t\t\tdocument.querySelector(\r\n\t\t\t\t\t'.filter-container-title');\r\n\r\n\t\t\ttoggleElement.dispatchEvent(\r\n\t\t\t\tnew Event(\r\n\t\t\t\t\tWindowEventConstants.click,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbubbles: true\r\n\t\t\t\t\t}));\r\n\r\n\t\t\tthis.getScrollElement()\r\n\t\t\t\t.removeEventListener(\r\n\t\t\t\t\tWindowEventConstants.scroll,\r\n\t\t\t\t\trunOnce);\r\n\t\t}\r\n\r\n\t\tthis.getScrollElement()\r\n\t\t\t.addEventListener(\r\n\t\t\t\tWindowEventConstants.scroll,\r\n\t\t\t\trunOnce.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns the current html element representing the ui\r\n\t * scroll panel content container.\r\n\t *\r\n\t * @returns {Element}\r\n\t * The scroll panel element used to display scrollable form content.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate getScrollElement(): Element\r\n\t{\r\n\t\treturn this.scrollPanel.nativeElement\r\n\t\t\t.querySelector(`.${AppConstants.cssClasses.scrollPanelContent}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the set of entity types that will be displayed in the filter panel\r\n\t * layout.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will resolve to the set of entity\r\n\t * types available for filter selection.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate async loadFilterEntityTypes(): Promise\r\n\t{\r\n\t\tconst orderBy: string =\r\n\t\t\t`${AppConstants.commonProperties.name} `\r\n\t\t\t\t+ AppConstants.sortDirections.descending;\r\n\r\n\t\tconst entityTypes: IEntityType[] =\r\n\t\t\tawait ApiHelper.getFullDataSet(\r\n\t\t\t\tthis.entityTypeApiService,\r\n\t\t\t\t`${AppConstants.commonProperties.name}.StartsWith('`\r\n\t\t\t\t\t+ `${WorkItemConstants.workItemEntityTypePrefix}') eq true`,\r\n\t\t\t\torderBy);\r\n\r\n\t\tconst options: IDropdownOption[] = [];\r\n\t\tfor (const entityType of\r\n\t\t\tentityTypes\r\n\t\t\t\t.map((type: IEntityType) =>\r\n\t\t\t\t\tnew EntityType(type)))\r\n\t\t{\r\n\t\t\toptions.push(\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: entityType.displayName,\r\n\t\t\t\t\tvalue: entityType.id\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn options;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the set of allowed modules that the user has access to.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * An awaitable promise that will resolve to the set of allowed\r\n\t * modules for filter selection.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate async loadAllowedModules(): Promise\r\n\t{\r\n\t\tconst filter: string =\r\n\t\t\t`${AppConstants.commonProperties.name}.Contains('`\r\n\t\t\t\t+ `${AppConstants.OperationIdentifiers.contextMenuModule}')`;\r\n\t\tconst orderBy: string =\r\n\t\t\t`${AppConstants.commonProperties.name} `\r\n\t\t\t\t+ AppConstants.sortDirections.descending;\r\n\r\n\t\t// Allow permissions to remove modules they are not allowed access to.\r\n\t\tconst modules: IOperationGroup[] =\r\n\t\t\t(\r\n\t\t\tawait this.operationGroupApiService\r\n\t\t\t\t.query(\r\n\t\t\t\t\tfilter,\r\n\t\t\t\t\torderBy))\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(operationGroup: IOperationGroup) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toperationGroup.name =\r\n\t\t\t\t\t\t\toperationGroup.name.replace(\r\n\t\t\t\t\t\t\t\tAppConstants.OperationIdentifiers\r\n\t\t\t\t\t\t\t\t\t.contextMenuModule,\r\n\t\t\t\t\t\t\t\tAppConstants.empty);\r\n\r\n\t\t\t\t\t\treturn operationGroup;\r\n\t\t\t\t\t});\r\n\r\n\t\t// Load layouts and remove modules without a filter layout.\r\n\t\tconst promiseArray: Promise[] = [];\r\n\t\tfor (const module of modules)\r\n\t\t{\r\n\t\t\tpromiseArray.push(\r\n\t\t\t\tPromise.resolve(\r\n\t\t\t\t\tawait this.displayComponentFactory\r\n\t\t\t\t\t\t.dynamicLayout(\r\n\t\t\t\t\t\t\tawait this.displayComponentService\r\n\t\t\t\t\t\t\t\t.populateDisplayComponentInstance(\r\n\t\t\t\t\t\t\t\t\tthis.getModuleFilterLayoutName(\r\n\t\t\t\t\t\t\t\t\t\tmodule.name),\r\n\t\t\t\t\t\t\t\t\tthis.pageContext),\r\n\t\t\t\t\t\t\tthis.pageContext)));\r\n\t\t}\r\n\t\tconst allowedLayouts: IDynamicLayoutConfiguration[] =\r\n\t\t\tawait Promise.all(promiseArray);\r\n\r\n\t\tconst layoutConfigurations: IDynamicLayoutConfiguration[] = [];\r\n\t\tfor (const layoutConfiguration of allowedLayouts)\r\n\t\t{\r\n\t\t\tlayoutConfigurations.push(layoutConfiguration);\r\n\t\t}\r\n\r\n\t\t// Initialize options and layout configurations.\r\n\t\tconst options: IDropdownOption[] = [];\r\n\t\tfor (let index: number = 0; index < modules.length; index++)\r\n\t\t{\r\n\t\t\tif (!AnyHelper.isNull(layoutConfigurations[index]))\r\n\t\t\t{\r\n\t\t\t\tconst moduleName: string = modules[index].name;\r\n\r\n\t\t\t\toptions.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: moduleName,\r\n\t\t\t\t\t\tvalue: moduleName\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.moduleLayoutConfigurations =\r\n\t\t\tlayoutConfigurations\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(layoutConfiguration: IDynamicLayoutConfiguration,\r\n\t\t\t\t\t\tindex: number) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!AnyHelper.isNull(layoutConfiguration))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (const field of layoutConfiguration.layout)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfield.props.context =\r\n\t\t\t\t\t\t\t\t\tthis.pageContext;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tmodule: modules[index].name,\r\n\t\t\t\t\t\t\t\tlayoutConfiguration: layoutConfiguration\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t})\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(mappedItem: any) =>\r\n\t\t\t\t\t\t!AnyHelper.isNull(mappedItem.layoutConfiguration));\r\n\r\n\t\tif (options.length === 1)\r\n\t\t{\r\n\t\t\tthis.filterLayoutData.data.module = options[0].value;\r\n\t\t}\r\n\r\n\t\treturn options;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a mapped identifier for a display component of type layout\r\n\t * that will be used for a dynamic module based layout in the filter\r\n\t * panel.\r\n\t *\r\n\t * @param {string} moduleName\r\n\t * The module name to get a filter layout for.\r\n\t * @returns {string}\r\n\t * The mapped filter layout name that will be used to load dynamic modules.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate getModuleFilterLayoutName(\r\n\t\tmoduleName: string): string\r\n\t{\r\n\t\treturn `${moduleName}ModuleFilterLayout`;\r\n\t}\r\n\r\n\t/**\r\n\t * gets the title.\r\n\t *\r\n\t * @returns {string}\r\n\t * the title.\r\n\t * @memberof WorkbenchComponent\r\n\t */\r\n\tprivate getTitle(): string\r\n\t{\r\n\t\treturn StringHelper.getEntityTypeTitle(\r\n\t\t\tthis.commonTableContext.source.selectedItem.entityType,\r\n\t\t\tthis.commonTableContext.source.selectedItem.data.subType);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-work-items',\r\n\ttemplateUrl: './work-items.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main work items page.\r\n *\r\n * @export\r\n * @class WorkItemsComponent\r\n */\r\nexport class WorkItemsComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tEntityInstanceComponent\r\n} from '@entity/components/entity-instance/entity-instance.component';\r\nimport {\r\n\tEntitySearchComponent\r\n} from '@entity/components/entity-search/entity-search.component';\r\nimport {\r\n\tEntityComponent\r\n} from '@entity/entity.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\nimport {\r\n\tWorkbenchComponent\r\n} from '@workItems//components/workbench/workbench.component';\r\nimport {\r\n\tWorkItemExpandComponent\r\n} from '@workItems/components/workbench/work-item-expand/work-item-expand.component';\r\nimport {\r\n\tWorkItemService\r\n} from '@workItems/services/work-item.service';\r\nimport {\r\n\tWorkItemTokenLookup\r\n} from '@workItems/work-item-token.lookup';\r\nimport {\r\n\tWorkItemsComponent\r\n} from '@workItems/work-items.component';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tWorkbenchComponent,\r\n\t\tWorkItemsComponent,\r\n\t\tWorkItemExpandComponent\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'workItems',\r\n\t\t\t\tcomponent: WorkItemsComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.workitemsModuleAccess\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'workbench',\r\n\t\t\t\t\t\tcomponent: WorkbenchComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.securityGroups\r\n\t\t\t\t\t\t\t\t\t\t\t.workitemsModuleAccess\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'entities',\r\n\t\t\t\t\t\tcomponent: EntityComponent,\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/view/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: ':entityType/edit/:id',\r\n\t\t\t\t\t\t\t\tcomponent: EntityInstanceComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: 'display',\r\n\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpath: ':displayComponent/create',\r\n\t\t\t\t\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\tcomponent: EntitySearchComponent,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t\tWorkbenchComponent\r\n\t],\r\n\tproviders: [\r\n\t\tWorkItemService,\r\n\t\t{\r\n\t\t\tprovide: WorkItemTokenLookup.tokens.WorkItemService,\r\n\t\t\tuseClass: WorkItemService\r\n\t\t},\r\n\t\tWorkbenchComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold work item route specific logic and display resources.\r\n *\r\n * @export\r\n * @class WorkItemsModule\r\n */\r\nexport class WorkItemsModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-account',\r\n\ttemplateUrl: './account.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the main\r\n * profile settings page.\r\n *\r\n * @export\r\n * @class AccountComponent\r\n */\r\nexport class AccountComponent\r\n{\r\n}","
    \r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tComponent,\r\n\tDirective,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tEntityEventConstants\r\n} from '@entity/shared/entity-event.constants';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tOperationEventParameterConstants\r\n} from '@operation/shared/operation-event-parameter.constants';\r\nimport {\r\n\tOperationEventConstants\r\n} from '@operation/shared/operation-event.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tcloneDeep\r\n} from 'lodash-es';\r\nimport {\r\n\tObservable,\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tstartWith\r\n} from 'rxjs';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Directive({\r\n\tselector: '[Account]'\r\n})\r\n\r\n/**\r\n * A directive representing shared logic for a component interacting\r\n * with account.\r\n *\r\n * @export\r\n * @class AccountDirective\r\n * @implements {OnInit}\r\n */\r\nexport class AccountDirective\r\nimplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Gets or sets the is saving value of this component.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic saving: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout definitions.\r\n\t *\r\n\t * @type {FormlyFieldConfig}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formlyLayoutDefinitions: FormlyFieldConfig[];\r\n\r\n\t/**\r\n\t * Gets or sets the formly layout definitions.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic userEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets or sets the is loading flag.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic loading: boolean = true;\r\n\r\n\t/**\r\n\t * Gets or sets the flag that a value has changed in the entity instance\r\n\t * displayed and is not saved.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formValuesChanged: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the flag to determine if the validity of the form is valid\r\n\t * or not.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formIsValid: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the observer of form validation changes.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formValidityChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the data for the entity as it exists\r\n\t * in the database.\r\n\t *\r\n\t * @type {IEntityInstance}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic databaseEntityInstance: IEntityInstance;\r\n\r\n\t/**\r\n\t * Gets the page context of this component.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn >\r\n\t\t\t{\r\n\t\t\t\tsource: this,\r\n\t\t\t\tdata: {}\r\n\t\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the delay for a debounced subject change.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tprotected readonly debounceDelay: number = 25;\r\n\r\n\t/**\r\n\t * Handles the submit event sent from the angular schema form\r\n\t * or from a save EmitEvent operation action. This updates\r\n\t * the server to match the schema form data.\r\n\t *\r\n\t * @param {object} _event\r\n\t * The event captured by the host listener.\r\n\t * @memberof AccountDirective\r\n\t */\r\n\t@HostListener(\r\n\t\tOperationEventConstants.saveEntityEvent,\r\n\t\t[OperationEventParameterConstants.event])\r\n\tpublic async save(_event: object): Promise\r\n\t{\r\n\t\tif (this.saving === true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\t\tawait this.saveActivityAction();\r\n\t\tthis.saving = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the before unload event sent from the current window based\r\n\t * on any action that will change the page.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t * @returns {Observable | boolean}\r\n\t * The value that will allow the router to know if the data in this form\r\n\t * is altered or not saved to the database. This implements the\r\n\t * AppCanDeactivateGuard interface.\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.beforeUnloadEvent)\r\n\tpublic canDeactivate(): Observable | boolean\r\n\t{\r\n\t\treturn this.saving === false\r\n\t\t\t&& this.formValuesChanged === false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This will load and initialize the lookups available for report creation.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic async ngOnInit(): Promise\r\n\t{\r\n\t\tawait this.setupPageVariables();\r\n\r\n\t\tthis.formValidityChanged.pipe(\r\n\t\t\tstartWith(false),\r\n\t\t\tdebounceTime(this.debounceDelay),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((enabled: boolean) =>\r\n\t\t\t{\r\n\t\t\t\tthis.emitFormValidityChangedEvent(\r\n\t\t\t\t\tenabled);\r\n\t\t\t});\r\n\r\n\t\tthis.formValidityChanged.next(false);\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * On component destroy event.\r\n\t * This method is used to complete the debounce on the\r\n\t * form validity changed value.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.formValidityChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Emits the form validity changed event to any listening components.\r\n\t * This event signifies whether this current profile form is valid\r\n\t * or not.\r\n\t *\r\n\t * @param {boolean} enabled\r\n\t * Whether or not save or update actions should be enabled. If they\r\n\t * are enabled, we expect any saves or updates to work without error.\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic emitFormValidityChangedEvent(\r\n\t\tenabled: boolean): void\r\n\t{\r\n\t\twindow.dispatchEvent(\r\n\t\t\tnew CustomEvent(\r\n\t\t\t\tEntityEventConstants.enableEntitySave,\r\n\t\t\t\t{\r\n\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\tenabled: enabled\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up save activity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic async saveActivityAction(): Promise\r\n\t{\r\n\t\t// This must be overrode in the implementing class if unique\r\n\t\t// values are desired\r\n\t}\r\n\r\n\t/**\r\n\t * Captures value changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valueChanged\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formValuesChange(\r\n\t\tvalueChanged: boolean): void\r\n\t{\r\n\t\tthis.formValuesChanged = valueChanged;\r\n\r\n\t\tif (this.formValuesChanged === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.formValidityChanged.next(this.formIsValid);\r\n\t}\r\n\r\n\t/**\r\n\t * Captures validity changes sent from the dynamic formly component.\r\n\t *\r\n\t * @param {boolean} valid\r\n\t * Whether or not the current form is valid.\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formValidityChange(\r\n\t\tvalid: boolean): void\r\n\t{\r\n\t\tthis.formIsValid = valid;\r\n\r\n\t\tif (this.formValuesChanged === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.formValidityChanged.next(this.formIsValid);\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to save the data in the last database loaded\r\n\t * or saved entity instance. This data is then used for comparisons\r\n\t * to the current entity form to validate if page changes are allowed\r\n\t * or similar business rules.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic updateLastSavedData(): void\r\n\t{\r\n\t\tthis.databaseEntityInstance =\r\n\t\t\tcloneDeep(this.userEntityInstance);\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to set the backup form validity\r\n\t * to always be as false.\r\n\t *\r\n\t * @memberof AccountDirective\r\n\t */\r\n\tpublic formValidityBackup(): void\r\n\t{\r\n\t\tthis.emitFormValidityChangedEvent(false);\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAccountDirective\r\n} from '@account/directives/account.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tFormlyFieldConfig\r\n} from '@ngx-formly/core';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tSecurityHelper\r\n} from '@shared/helpers/security.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIInputGroupItem\r\n} from '@shared/interfaces/application-objects/input-group-item.interface';\r\nimport {\r\n\tIEntityInstance\r\n} from '@shared/interfaces/entities/entity-instance.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-security',\r\n\ttemplateUrl: './security.component.html',\r\n\tstyleUrls: [\r\n\t\t'./security.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing the sercurity page.\r\n *\r\n * @export\r\n * @class SecurityComponent\r\n */\r\nexport class SecurityComponent\r\n\textends AccountDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the sercurity component.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service use to gather user data data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activityservice user to handle action notifications.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the system security object.\r\n\t *\r\n\t * @type {any}\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic systemSecurity: any;\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tawait this.setUserEntityInstance();\r\n\t\tthis.updateLastSavedData();\r\n\t\tawait this.setFormlyDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the user entity instance data.\r\n\t *\r\n\t * @async\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic async setUserEntityInstance(): Promise\r\n\t{\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t\tthis.userEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(this.sessionService.user.id);\r\n\r\n\t\tthis.userEntityInstance.data.settings.multiFactorAuthenticationEnabled =\r\n\t\t\tJSON.parse(\r\n\t\t\t\tthis.userEntityInstance.data\r\n\t\t\t\t\t.settings.multiFactorAuthenticationEnabled);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly field definitions.\r\n\t *\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic async setFormlyDefinitions(): Promise\r\n\t{\r\n\t\tawait this.setSystemSecurity();\r\n\r\n\t\tthis.formlyLayoutDefinitions =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.userName',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'User Name',\r\n\t\t\t\t\tdisabled: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.settings.multiFactorAuthenticationEnabled',\r\n\t\t\t\ttype: FormlyConstants.customControls.customInputSwitch,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Enable Multi-Factor Authentication',\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.password',\r\n\t\t\t\ttype: 'custom-input-password',\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'New Password',\r\n\t\t\t\t\tsecurityRestrictions:\r\n\t\t\t\t\t\tSecurityHelper.getSecurityRestrictions(\r\n\t\t\t\t\t\t\tthis.systemSecurity),\r\n\t\t\t\t\tkeyup: (field: FormlyFieldConfig) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (field.formControl.value === AppConstants.empty)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdelete this.userEntityInstance.data.password;\r\n\t\t\t\t\t\t\tthis.formValidityChange(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidators: {\r\n\t\t\t\t\tvalidation: ['password']\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.settings.multiFactorAuthenticationMethod',\r\n\t\t\t\ttype: FormlyConstants.customControls.customInputRadioButton,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Multi-Factor Authentication Method',\r\n\t\t\t\t\ttooltip: 'To change the email or phone, '\r\n\t\t\t\t\t\t+ 'navigate to the Profile page. '\r\n\t\t\t\t\t\t+ 'Currently, SMS is not allowed.',\r\n\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\tinputGroupItems:\r\n\t\t\t\t\t\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: 'Email',\r\n\t\t\t\t\t\t\tkey: 'email',\r\n\t\t\t\t\t\t\tdisabledInput: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: 'SMS',\r\n\t\t\t\t\t\t\tkey: 'sms',\r\n\t\t\t\t\t\t\tdisabledInput: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Save activity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic async saveActivityAction(): Promise\r\n\t{\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst newEntityInstance: any = {\r\n\t\t\t\t\t\t\tid: this.userEntityInstance.id,\r\n\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\temail: this.userEntityInstance.data.email,\r\n\t\t\t\t\t\t\t\tuserName: this.userEntityInstance.data.userName,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tmultiFactorAuthenticationEnabled:\r\n\t\t\t\t\t\t\t\t\t\t`${this.userEntityInstance.data.settings\r\n\t\t\t\t\t\t\t\t\t\t\t.multiFactorAuthenticationEnabled}`,\r\n\t\t\t\t\t\t\t\t\tmultiFactorAuthenticationMethod:\r\n\t\t\t\t\t\t\t\t\t\tthis.userEntityInstance.data.settings\r\n\t\t\t\t\t\t\t\t\t\t\t.multiFactorAuthenticationMethod\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tentityType: this.userEntityInstance.entityType,\r\n\t\t\t\t\t\t\tversionNumber: this.userEntityInstance.versionNumber\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tconst isNewPassword: boolean =\r\n\t\t\t\t\t\t\t!AnyHelper.isNullOrWhitespace(\r\n\t\t\t\t\t\t\t\tthis.userEntityInstance.data.password);\r\n\r\n\t\t\t\t\t\tconst updateEntityInstance: Function = async () =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.entityInstanceTypeGroup =\r\n\t\t\t\t\t\t\t\t\tAppConstants.typeGroups.users;\r\n\r\n\t\t\t\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t\t\t\t.update(\r\n\t\t\t\t\t\t\t\t\tthis.userEntityInstance.id,\r\n\t\t\t\t\t\t\t\t\tnewEntityInstance);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (isNewPassword)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnewEntityInstance.data.password =\r\n\t\t\t\t\t\t\t\tthis.userEntityInstance.data.password;\r\n\t\t\t\t\t\t\tawait updateEntityInstance();\r\n\t\t\t\t\t\t\tthis.sessionService.logOut();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait updateEntityInstance();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tawait this.setupPageVariables();\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t'Saving Security Settings',\r\n\t\t\t\t'Saved Security Settings',\r\n\t\t\t\t'Security Settings were saved.',\r\n\t\t\t\t'Security Settings were not saved.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the system security information.\r\n\t *\r\n\t * @async\r\n\t * @returns {Promise}\r\n\t * @memberof SecurityComponent\r\n\t */\r\n\tpublic async setSystemSecurity(): Promise\r\n\t{\r\n\t\tif (AnyHelper.isNull(this.systemSecurity))\r\n\t\t{\r\n\t\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\t\tAppConstants.typeGroups.systems;\r\n\r\n\t\t\tconst systemEntityInstance: IEntityInstance =\r\n\t\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t\t.get(\r\n\t\t\t\t\t\tparseInt(\r\n\t\t\t\t\t\t\tAppConstants.systemId,\r\n\t\t\t\t\t\t\tAppConstants.parseRadix));\r\n\r\n\t\t\tthis.systemSecurity =\r\n\t\t\t\tsystemEntityInstance.data.security;\r\n\t\t}\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAccountDirective\r\n} from '@account/directives/account.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tChangeThemeAction\r\n} from '@operation/actions/change-theme-action';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIDropdownOption\r\n} from '@shared/interfaces/application-objects/dropdown-option.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-site-settings',\r\n\ttemplateUrl: './site-settings.component.html'\r\n})\r\n\r\n/**\r\n * A component representing the site settings page.\r\n *\r\n * @export\r\n * @class SiteSettingsComponent\r\n */\r\nexport class SiteSettingsComponent\r\n\textends AccountDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the site settings page component.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service use to gather user data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get entity type data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activityservice user to handle action notifications.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic changethemeAction: ChangeThemeAction,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup =\r\n\t\t\tAppConstants.typeGroups.users;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tawait this.setUserEntityInstance();\r\n\t\tthis.updateLastSavedData();\r\n\t\tthis.setFormlyDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the user entity instance data.\r\n\t *\r\n\t * @async\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic async setUserEntityInstance(): Promise\r\n\t{\r\n\t\tthis.userEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(this.sessionService.user.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the available theme options.\r\n\t *\r\n\t * @return {IDropdownOption[]}\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic getThemeOptions(): IDropdownOption[]\r\n\t{\r\n\t\treturn this.changethemeAction.allowedEntries\r\n\t\t\t.map((theme: string) =>\r\n\t\t\t\t({\r\n\t\t\t\t\tlabel: StringHelper.toProperCase(theme),\r\n\t\t\t\t\tvalue: theme\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly field definitions.\r\n\t *\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic setFormlyDefinitions(): void\r\n\t{\r\n\t\tthis.formlyLayoutDefinitions =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.settings.themeColor',\r\n\t\t\t\ttype: FormlyConstants.customControls.customSelect,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Theme Color',\r\n\t\t\t\t\toptions: this.getThemeOptions()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Save activity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic async saveActivityAction(): Promise\r\n\t{\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.entityInstanceApiService.update(\r\n\t\t\t\t\t\t\tthis.userEntityInstance.id,\r\n\t\t\t\t\t\t\tthis.userEntityInstance);\r\n\r\n\t\t\t\t\t\tawait this.excecuteChangeThemeAction();\r\n\t\t\t\t\t\tawait this.setupPageVariables();\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t'Saving Site Settings',\r\n\t\t\t\t'Saved Site Settings',\r\n\t\t\t\t'Site Settings were saved.',\r\n\t\t\t\t'Site Settings were not saved.'));\r\n\t}\r\n\r\n\t/**\r\n\t * Change theme action.\r\n\t *\r\n\t * @async\r\n\t * @memberof SiteSettingsComponent\r\n\t */\r\n\tpublic async excecuteChangeThemeAction(): Promise\r\n\t{\r\n\t\tif (this.databaseEntityInstance.data.settings.themeColor ===\r\n\t\t\tthis.userEntityInstance.data.settings.themeColor)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst changeThemeAction: Function =\r\n\t\t\tasync() =>\r\n\t\t\t{\r\n\t\t\t\tconst user: IUser =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...this.sessionService.user\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tuser.data.settings.themeColor =\r\n\t\t\t\t\tthis.userEntityInstance.data.settings.themeColor;\r\n\r\n\t\t\t\tthis.sessionService.user = user;\r\n\r\n\t\t\t\tthis.changethemeAction.theme =\r\n\t\t\t\t\tthis.userEntityInstance.data.settings.themeColor;\r\n\r\n\t\t\t\tawait this.changethemeAction.execute();\r\n\t\t\t};\r\n\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tchangeThemeAction(),\r\n\t\t\t\t'Changing Theme Color',\r\n\t\t\t\t'Changed Theme Color',\r\n\t\t\t\tthis.changethemeAction.operationSuccessMessage,\r\n\t\t\t\tthis.changethemeAction.operationFailureMessage));\r\n\t}\r\n}","\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAccountDirective\r\n} from '@account/directives/account.directive';\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\nimport {\r\n\tEntityInstanceApiService\r\n} from '@api/services/entities/entity-instance.api.service';\r\nimport {\r\n\tEntityTypeApiService\r\n} from '@api/services/entities/entity-type.api.service';\r\nimport {\r\n\tFormlyConstants\r\n} from '@shared/constants/formly.constants';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\n\r\n@Component({\r\n\tselector: 'app-user-profile',\r\n\ttemplateUrl: './user-profile.component.html'\r\n})\r\n\r\n/**\r\n * A component representing the user profile.\r\n *\r\n * @export\r\n * @class UserProfileComponent\r\n */\r\nexport class UserProfileComponent\r\n\textends AccountDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the user profile component.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service use to gather user profile data.\r\n\t * @param {EntityInstanceApiService} entityInstanceApiService\r\n\t * The api service used to get entity instance data.\r\n\t * @param {EntityTypeApiService} entityTypeApiService\r\n\t * The api service used to get entity type data.\r\n\t * @param {ActivityService} activityService\r\n\t * The activityservice user to handle action notifications.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service used for dynamic logic and business rules.\r\n\t * @memberof UserProfileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic entityInstanceApiService: EntityInstanceApiService,\r\n\t\tpublic entityTypeApiService: EntityTypeApiService,\r\n\t\tpublic activityService: ActivityService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.entityInstanceApiService.entityInstanceTypeGroup = 'Users';\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the page variables.\r\n\t *\r\n\t * @async\r\n\t * @memberof UserProfileComponent\r\n\t */\r\n\tpublic async setupPageVariables(): Promise\r\n\t{\r\n\t\tawait this.setUserEntityInstance();\r\n\t\tthis.updateLastSavedData();\r\n\t\tthis.setFormlyDefinitions();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the user entity instance data.\r\n\t *\r\n\t * @async\r\n\t * @memberof UserProfileComponent\r\n\t */\r\n\tpublic async setUserEntityInstance(): Promise\r\n\t{\r\n\t\tthis.userEntityInstance =\r\n\t\t\tawait this.entityInstanceApiService\r\n\t\t\t\t.get(this.sessionService.user.id);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the formly field definitions.\r\n\t *\r\n\t * @memberof UserProfileComponent\r\n\t */\r\n\tpublic setFormlyDefinitions(): void\r\n\t{\r\n\t\tthis.formlyLayoutDefinitions =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.firstName',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'First Name',\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.lastName',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Last Name',\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: 'data.email',\r\n\t\t\t\ttype: FormlyConstants.customControls.input,\r\n\t\t\t\twrappers: [\r\n\t\t\t\t\tFormlyConstants.customControls.customFieldWrapper\r\n\t\t\t\t],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tlabel: 'Email',\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t},\r\n\t\t\t\tvalidators: {\r\n\t\t\t\t\tvalidation: ['email']\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Save activity action.\r\n\t *\r\n\t * @async\r\n\t * @memberof UserProfileComponent\r\n\t */\r\n\tpublic async saveActivityAction(): Promise\r\n\t{\r\n\t\tawait this.activityService.handleActivity(\r\n\t\t\tnew Activity(\r\n\t\t\t\tnew Promise(async(resolve: any, reject: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tawait this.entityInstanceApiService.update(\r\n\t\t\t\t\t\t\tthis.userEntityInstance.id,\r\n\t\t\t\t\t\t\tthis.userEntityInstance);\r\n\r\n\t\t\t\t\t\tawait this.setupPageVariables();\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (exception)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t\t\treject(exception);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t'Saving Profile Settings',\r\n\t\t\t\t'Saved Profile Settings',\r\n\t\t\t\t'Profile Settings were saved.',\r\n\t\t\t\t'Profile Settings were not saved.'));\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tAccountComponent\r\n} from '@account/account.component';\r\nimport {\r\n\tSecurityComponent\r\n} from '@account/components/security/security.component';\r\nimport {\r\n\tSiteSettingsComponent\r\n} from '@account/components/site-settings/site-settings.component';\r\nimport {\r\n\tUserProfileComponent\r\n} from '@account/components/user-profile/user-profile.component';\r\nimport {\r\n\tCommonModule\r\n} from '@angular/common';\r\nimport {\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule\r\n} from '@angular/router';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tAccountComponent,\r\n\t\tSecurityComponent,\r\n\t\tSiteSettingsComponent,\r\n\t\tUserProfileComponent,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSharedModule,\r\n\t\tRouterModule.forChild([\r\n\t\t\t{\r\n\t\t\t\tpath: 'account',\r\n\t\t\t\tcomponent: AccountComponent,\r\n\t\t\t\tcanActivate: [\r\n\t\t\t\t\tAppAuthGuard,\r\n\t\t\t\t\tModuleGuard\r\n\t\t\t\t],\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\troles: [\r\n\t\t\t\t\t\tAppConstants.securityGroups.users\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'security',\r\n\t\t\t\t\t\tcomponent: SecurityComponent\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'siteSettings',\r\n\t\t\t\t\t\tcomponent: SiteSettingsComponent\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'userProfile',\r\n\t\t\t\t\t\tcomponent: UserProfileComponent\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '**',\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tpathMatch: 'full'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}])\r\n\t],\r\n\texports: [\r\n\t],\r\n\tproviders: [\r\n\t]\r\n})\r\n\r\n/**\r\n * A module used to hold profile route specific\r\n * logic and display resources.\r\n *\r\n * @export\r\n * @class AccountModule\r\n */\r\nexport class AccountModule\r\n{\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tApplicationRef,\r\n\tInjectable\r\n} from '@angular/core';\r\nimport {\r\n\tSwUpdate,\r\n\tUnrecoverableStateEvent,\r\n\tVersionReadyEvent\r\n} from '@angular/service-worker';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tActivity\r\n} from '@shared/implementations/application-data/activity';\r\nimport {\r\n\tIIntervalService\r\n} from '@shared/interfaces/application-objects/interval-service.interface';\r\nimport {\r\n\tActivityService\r\n} from '@shared/services/activity.service';\r\nimport {\r\n\tObservable,\r\n\tSubscriber,\r\n\tconcat,\r\n\tfilter,\r\n\tfirst,\r\n\tinterval\r\n} from 'rxjs';\r\n\r\n/**\r\n * A singleton class that monitors for application updates.\r\n *\r\n * @export\r\n * @class UpdateService\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UpdateService implements IIntervalService\r\n{\r\n\t/**\r\n\t * Creates an instance of UpdateService\r\n\t *\r\n\t * @param {ApplicationRef} appReference\r\n\t * The application reference to check for stability.\r\n\t * @param {SwUpdate} swUpdate\r\n\t * The SwUpdate that communicates withthe service worker.\r\n\t * @param {Activity} activityService\r\n\t * The activity service to handle update activities and benners.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic appReference: ApplicationRef,\r\n\t\tpublic swUpdate: SwUpdate,\r\n\t\tpublic activityService: ActivityService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the update check subscriber\r\n\t *\r\n\t * @type {Subscriber}\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate checkForUpdatesSubscriber: Subscriber;\r\n\r\n\t/**\r\n\t * Gets or sets the update available subscriber\r\n\t *\r\n\t * @type {Subscriber}\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate updateFoundSubscriber: Subscriber;\r\n\r\n\t/**\r\n\t * Gets or sets the unrecoverable state subscriber\r\n\t *\r\n\t * @type {Subscriber}\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate unrecoverableStateSubscriber: Subscriber;\r\n\r\n\t/**\r\n\t * Starts the service\r\n\t *\r\n\t * @param {number} serviceInterval\r\n\t * The interval in milliseconds to wait between\r\n\t * checking for updates.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tpublic start(\r\n\t\tserviceInterval: number): void\r\n\t{\r\n\t\tif (this.swUpdate.isEnabled)\r\n\t\t{\r\n\t\t\tthis.unrecoverableStateSubscriber = this\r\n\t\t\t\t.watchForUnrecoverableState();\r\n\r\n\t\t\tthis.updateFoundSubscriber = this\r\n\t\t\t\t.watchForUpdatesFound();\r\n\r\n\t\t\tthis.checkForUpdatesSubscriber = this\r\n\t\t\t\t.checkForUpdatesEvery(serviceInterval);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Stops the service.\r\n\t *\r\n\t * @memberof UpdateService\r\n\t */\r\n\tpublic stop(): void\r\n\t{\r\n\t\tif (this.swUpdate.isEnabled)\r\n\t\t{\r\n\t\t\tthis.checkForUpdatesSubscriber.unsubscribe();\r\n\t\t\tthis.updateFoundSubscriber.unsubscribe();\r\n\t\t\tthis.unrecoverableStateSubscriber.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * checks to see if the current\r\n\t * page is a login page.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * The result of the check. True if on the login page.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tpublic onLoginPage(): boolean\r\n\t{\r\n\t\treturn window\r\n\t\t\t.location\r\n\t\t\t.href\r\n\t\t\t.includes('/login');\r\n\t}\r\n\r\n\t/**\r\n\t * Refreshes the page.\r\n\t *\r\n\t * @memberof UpdateService\r\n\t */\r\n\tpublic refresh(): void\r\n\t{\r\n\t\twindow.location.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Watches for application updates and alerts the user.\r\n\t *\r\n\t * @returns {any}\r\n\t * An any is required here due to the fact that the\r\n\t * return type of subscribe() is @see {Subscription}, however\r\n\t * at runtime it returns a @see {Subscriber}.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate watchForUpdatesFound(): any\r\n\t{\r\n\t\tconst updatesAvailable: any =\r\n\t\t\tthis.swUpdate\r\n\t\t\t\t.versionUpdates\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tfilter(\r\n\t\t\t\t\t\t(event: any): event is VersionReadyEvent =>\r\n\t\t\t\t\t\t\tevent.type === 'VERSION_READY'));\r\n\r\n\t\treturn updatesAvailable\r\n\t\t\t.subscribe(\r\n\t\t\t\tasync(event: VersionReadyEvent) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.onLoginPage())\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst updateActivated: boolean =\r\n\t\t\t\t\t\t\tawait this.swUpdate\r\n\t\t\t\t\t\t\t\t.activateUpdate();\r\n\r\n\t\t\t\t\t\tif (updateActivated === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (this.onLoginPage())\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.refresh();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tEventHelper\r\n\t\t\t\t\t\t\t\t\t.dispatchBannerEvent(\r\n\t\t\t\t\t\t\t\t\t\t'Page Refresh Required',\r\n\t\t\t\t\t\t\t\t\t\t'New application activated.',\r\n\t\t\t\t\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\t\t\t\t\tevent);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tEventHelper\r\n\t\t\t\t\t\t.dispatchBannerEvent(\r\n\t\t\t\t\t\t\t'Application Update Found',\r\n\t\t\t\t\t\t\t'Refresh to get new application version.',\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\t\tevent);\r\n\r\n\t\t\t\t\tconst updateFound: Activity =\r\n\t\t\t\t\t\tnew Activity(\r\n\t\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t\t'Application Update Available',\r\n\t\t\t\t\t\t\t'Application Update Available',\r\n\t\t\t\t\t\t\t'Application Update Available',\r\n\t\t\t\t\t\t\t'Update Available Error');\r\n\r\n\t\t\t\t\tawait this.activityService\r\n\t\t\t\t\t\t.generateActivityBanner(\r\n\t\t\t\t\t\t\tupdateFound,\r\n\t\t\t\t\t\t\tAppConstants.activityStatus.info,\r\n\t\t\t\t\t\t\t'Application Update Found');\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks for application updates on an repeating interval\r\n\t * of the supplied milliseconds\r\n\t *\r\n\t * @param timeInMilliSeconds\r\n\t * The time in milliseconds to wait to check again.\r\n\t * @returns {any}\r\n\t * An any is required here due to the fact that the\r\n\t * return type of subscribe() is @see {Subscription}, however\r\n\t * at runtime it returns a @see {Subscriber}.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate checkForUpdatesEvery(\r\n\t\ttimeInMilliSeconds: number ): any\r\n\t{\r\n\t\tconst stabilityObservable: Observable = this\r\n\t\t\t.appReference\r\n\t\t\t.isStable\r\n\t\t\t.pipe(first(isStable =>\r\n\t\t\t\tisStable === true));\r\n\r\n\t\tconst intervalObservable = interval(timeInMilliSeconds);\r\n\r\n\t\tconst checkForUpdates = concat(\r\n\t\t\tstabilityObservable,\r\n\t\t\tintervalObservable);\r\n\r\n\t\treturn checkForUpdates\r\n\t\t\t.subscribe(\r\n\t\t\t\tasync () =>\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.swUpdate\r\n\t\t\t\t\t\t.checkForUpdate();\r\n\t\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Watches for unrecoverable service worker state and\r\n\t * allertgs the user to refresh.\r\n\t *\r\n\t * @returns {any}\r\n\t * An any is required here due to the fact that the\r\n\t * return type of subscribe() is @see {Subscription}, however\r\n\t * at runtime it returns a @see {Subscriber}.\r\n\t * @memberof UpdateService\r\n\t */\r\n\tprivate watchForUnrecoverableState(): any\r\n\t{\r\n\t\treturn this.swUpdate\r\n\t\t\t.unrecoverable\r\n\t\t\t.subscribe((event: UnrecoverableStateEvent) =>\r\n\t\t\t{\r\n\t\t\t\tEventHelper\r\n\t\t\t\t\t.dispatchBannerEvent(\r\n\t\t\t\t\t\t'Please '\r\n\t\t\t\t\t\t\t+ 'refresh your page.',\r\n\t\t\t\t\t\tevent.reason,\r\n\t\t\t\t\t\tAppConstants.activityStatus.error,\r\n\t\t\t\t\t\tevent);\r\n\t\t\t});\r\n\t}\r\n}","\r\n\r\n\r\n
      0\">\r\n\t\r\n\r\n\t\t
    • \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    • \r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tInput\r\n} from '@angular/core';\r\nimport {\r\n\tClientMessageDetail\r\n} from '@shared/implementations/application-data/client-message-detail';\r\n\r\n@Component({\r\n\tselector: 'app-banner-detail',\r\n\ttemplateUrl: './app-banner-detail.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the banner detail component.\r\n *\r\n * @export\r\n * @class AppBannerDetailComponent\r\n */\r\nexport class AppBannerDetailComponent\r\n{\r\n\t/**\r\n\t * Gets or sets the current extended detail being displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {ClientMessageDetail}\r\n\t * @memberof AppBannerDetailComponent\r\n\t */\r\n\t@Input() public extendedDetail: ClientMessageDetail;\r\n}\r\n","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tAdditional Details available on hover or click.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tBooleanFadeAnimation,\r\n\tDropInAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tClientMessage\r\n} from '@shared/implementations/application-data/client-message';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tdebounceTime,\r\n\tdistinctUntilChanged,\r\n\tstartWith\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-banner',\r\n\ttemplateUrl: './app-banner.component.html',\r\n\tstyleUrls: ['./app-banner.component.scss'],\r\n\tanimations: [\r\n\t\tDropInAnimation,\r\n\t\tBooleanFadeAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing an instance of the banner component.\r\n *\r\n * @export\r\n * @class AppBannerComponent\r\n */\r\nexport class AppBannerComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the app banner component.\r\n\t *\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The dom sanitizer used to set safe html values for display\r\n\t * in the message and title of this banner.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to get the pinned drawers available.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic sanitizer: DomSanitizer,\r\n\t\tpublic siteLayoutService: SiteLayoutService)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the current banner id which will be set incrementally\r\n\t * for each new banner item allowing distinct gets.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic currentMaxId: number = 1;\r\n\r\n\t/**\r\n\t * Gets or sets the display time for informational or completed messages\r\n\t * that do not require user interaction.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic fadeTime: number = 3000;\r\n\r\n\t/**\r\n\t * Gets or sets the animation time for the simple fade animation. This is\r\n\t * used to remove this banner item from the list when fully hidden.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic fadeAnimationTime: number = 500;\r\n\r\n\t/**\r\n\t * Gets or sets the list of all banner messages currently displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {ClientMessage[]}\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic clientMessages: ClientMessage[] = [];\r\n\r\n\t/**\r\n\t * Handles the client add banner event.\r\n\t * This will add a new banner to this banner component. Depending on the\r\n\t * banner status this will fade out if a success or info message and will\r\n\t * require a dismiss click if of type error.\r\n\t *\r\n\t * @async\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to be added to this banner component when creating\r\n\t * the add banner event.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.addBannerEvent,\r\n\t\t[AppEventParameterConstants.clientMessage])\r\n\tpublic async addBannerEvent(\r\n\t\tclientMessage: ClientMessage): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tclientMessage.id = ++this.currentMaxId;\r\n\t\t\tclientMessage.display = true;\r\n\t\t\tclientMessage.safeTitle =\r\n\t\t\t\tthis.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\t\tclientMessage.title);\r\n\t\t\tclientMessage.safeContent =\r\n\t\t\t\tthis.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\t\tclientMessage.content);\r\n\t\t\tawait clientMessage.setExtendedDetails();\r\n\r\n\t\t\tthis.clientMessages =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.clientMessages,\r\n\t\t\t\t\tclientMessage\r\n\t\t\t\t];\r\n\r\n\t\t\tif (clientMessage.status === AppConstants.activityStatus.complete\r\n\t\t\t\t|| clientMessage.status === AppConstants.activityStatus.info)\r\n\t\t\t{\r\n\t\t\t\tclientMessage.displayChanged.pipe(\r\n\t\t\t\t\tstartWith(clientMessage.display),\r\n\t\t\t\t\tdebounceTime(this.fadeTime),\r\n\t\t\t\t\tdistinctUntilChanged())\r\n\t\t\t\t\t.subscribe((newValue: boolean) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tclientMessage.display = newValue;\r\n\r\n\t\t\t\t\t\tif (clientMessage.display === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.fadeBanner(clientMessage);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tclientMessage.displayChanged.next(false);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tthis.clientMessages =\r\n\t\t\t\t[\r\n\t\t\t\t\t...this.clientMessages,\r\n\t\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: ++this.currentMaxId,\r\n\t\t\t\t\t\tdisplay: true,\r\n\t\t\t\t\t\ttitle: 'Unexpected Banner Display Error',\r\n\t\t\t\t\t\tcontent: error.message,\r\n\t\t\t\t\t\tstatus: AppConstants.activityStatus.error\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the dismiss banner click which will remove the selected banner.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to be dismissed.\r\n\t * @param {Event} event\r\n\t * The event for this dismiss banner click.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic dismissBanner(\r\n\t\tclientMessage: ClientMessage,\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tthis.clientMessages =\r\n\t\t\tthis.clientMessages.filter((message: ClientMessage) =>\r\n\t\t\t\tclientMessage.id !== message.id);\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Fades out the banner item if called and removes this from the\r\n\t * list after fully hidden.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to fade out.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic fadeBanner(\r\n\t\tclientMessage: ClientMessage)\r\n\t{\r\n\t\tclientMessage.display = false;\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.clientMessages =\r\n\t\t\t\t\tthis.clientMessages.filter(\r\n\t\t\t\t\t\t(message: ClientMessage) =>\r\n\t\t\t\t\t\t\tclientMessage.id !== message.id);\r\n\t\t\t},\r\n\t\t\tthis.fadeAnimationTime);\r\n\t}\r\n\r\n\t/**\r\n\t * This gets the exact banner x position based on if there are any\r\n\t * pinned drawers, and the available content with.\r\n\t *\r\n\t * @returns {string}\r\n\t * The banner x position in pixels.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic getBannerXPosition(): string\r\n\t{\r\n\t\treturn `${(AppConstants.staticLayoutSizes.standardPadding\r\n\t\t\t+ AppConstants.staticLayoutSizes.utilityMenuWidth)\r\n\t\t\t+ (AppConstants.staticLayoutSizes.drawerWidth\r\n\t\t\t\t* this.siteLayoutService.pinnedDrawerCount)}px`;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the banner hover, focus, or click event.\r\n\t * This will send a debounced change event to ensure that the fade timer is\r\n\t * reset on hover. This ensures that informational or completed banners\r\n\t * will not fade out if this is the user's current focus.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message currently handling the hover or click event.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic bannerMouseIn(\r\n\t\tclientMessage: ClientMessage): void\r\n\t{\r\n\t\tclientMessage.displayChanged.next(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the banner hover out or focus out event.\r\n\t * This will send a debounced change event to ensure that the fade timer is\r\n\t * started again on hover out or a loss of focus. This ensures that\r\n\t * informational or completed banners will fade out appropriately after\r\n\t * resetting on a hover, focus, or click event.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message currently handling the hover or click event.\r\n\t * @memberof AppBannerComponent\r\n\t */\r\n\tpublic bannerMouseOut(\r\n\t\tclientMessage: ClientMessage): void\r\n\t{\r\n\t\tclientMessage.displayChanged.next(false);\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'app-footer',\r\n\ttemplateUrl: './app-footer.component.html'\r\n})\r\n\r\n/**\r\n * A component representing an instance of the application\r\n * footer.\r\n *\r\n * @export\r\n * @class AppFooterComponent\r\n */\r\nexport class AppFooterComponent\r\n{\r\n}","
    \r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n\t\t\r\n\t\r\n
    ","\r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tComponent,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport {\r\n\tDomSanitizer\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAnyHelper\r\n} from '@shared/helpers/any.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tClientMessage\r\n} from '@shared/implementations/application-data/client-message';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'app-full-screen-banner',\r\n\ttemplateUrl: './app-full-screen-banner.component.html',\r\n\tstyleUrls: [\r\n\t\t'./app-full-screen-banner.component.scss'\r\n\t]\r\n})\r\n\r\n/**\r\n * A component representing a full screen banner display.\r\n *\r\n * @export\r\n * @class AppFullScreenBannerComponent\r\n */\r\nexport class AppFullScreenBannerComponent\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the app full screen banner component.\r\n\t *\r\n\t * @param {DomSanitizer} sanitizer\r\n\t * The dom sanitizer used to set safe html values for display\r\n\t * in the message and title of this banner.\r\n\t * @memberof AppFullScreenBannerComponent\r\n\t */\r\n\t public constructor(\r\n\t\tpublic sanitizer: DomSanitizer)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the banner message currently displayed in this\r\n\t * component.\r\n\t *\r\n\t * @type {ClientMessage}\r\n\t * @memberof AppFullScreenBannerComponent\r\n\t */\r\n\tpublic clientMessage: ClientMessage;\r\n\r\n\t/**\r\n\t * Handles the client add full screen banner event.\r\n\t * This will add and display this banner to the user.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to be added to this banner component when creating\r\n\t * the add banner event.\r\n\t * @memberof AppFullScreenBannerComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.addFullScreenBannerEvent,\r\n\t\t[AppEventParameterConstants.clientMessage])\r\n\tpublic addBannerEvent(\r\n\t\tclientMessage: ClientMessage): void\r\n\t{\r\n\t\tclientMessage.display = true;\r\n\t\tclientMessage.safeTitle =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\tclientMessage.title);\r\n\t\tclientMessage.safeContent =\r\n\t\t\tthis.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\tclientMessage.content);\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.clientMessage = clientMessage;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the dismiss banner click which will remove the selected banner.\r\n\t *\r\n\t * @param {ClientMessage} clientMessage\r\n\t * The client message to be dismissed.\r\n\t * @param {Event} event\r\n\t * The event for this dismiss banner click.\r\n\t * @memberof AppFullScreenBannerComponent\r\n\t */\r\n\tpublic performBannerActionAndClose(\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tif (!AnyHelper.isNull(this.clientMessage.actions)\r\n\t\t\t&& this.clientMessage.actions.length > 0)\r\n\t\t{\r\n\t\t\tconst primaryAction: MenuItem = this.clientMessage.actions[0];\r\n\t\t\tprimaryAction.command({});\r\n\t\t\tEventHelper.dispatchBannerEvent(\r\n\t\t\t\tprimaryAction.label,\r\n\t\t\t\tprimaryAction.queryParams?.details,\r\n\t\t\t\tAppConstants.activityStatus.info);\r\n\t\t}\r\n\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.clientMessage = null;\r\n\t\t\t});\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tOperationMenuComponent\r\n} from '@operation/components/operation-menu/operation-menu.component';\r\nimport {\r\n\tBaseOperationMenuDisplayDirective\r\n} from '@operation/directives/base-operation-menu-display.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tResolverService\r\n} from '@shared/services/resolver.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tMenuItem\r\n} from 'primeng/api';\r\n\r\n@Component({\r\n\tselector: 'app-menu',\r\n\ttemplateUrl: './app-menu.component.html',\r\n\tstyleUrls: [\r\n\t\t'./app-menu.component.scss'\r\n\t]\r\n})\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A component used to define primary menu based actions and\r\n * navigation.\r\n *\r\n * @export\r\n * @class AppMenuComponent\r\n * @extends {BaseOperationMenuDisplayComponent}\r\n */\r\nexport class AppMenuComponent\r\n\textends BaseOperationMenuDisplayDirective\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the context menu\r\n\t * component.\r\n\t *\r\n\t * @param {Router} router\r\n\t * The router used for menu navigation.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @param {ResolverService} resolver\r\n\t * The resolver service for acquiring services.\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic resolver: ResolverService)\r\n\t{\r\n\t\tsuper(siteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the event emitter for the close overlays event so this\r\n\t * can be sent to listening parent components.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\t@Output() public closeOverlays: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets the base model used to display the operation\r\n\t * group. This item will display prior to the data\r\n\t * load of the operation group.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\tpublic initialModel: MenuItem[] =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Dashboard',\r\n\t\t\t\ticon: 'menu-logo',\r\n\t\t\t\tcommand: () => {\r\n\t\t\t\t\tthis.router.navigate(\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\tAppConstants.route.dashboardPage\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t/**\r\n\t * Defines the primary navigation group identifier that will\r\n\t * be displayed via this operation group display component.\r\n\t *\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\tpublic primaryNavigationGroupName: string =\r\n\t\tAppConstants.primaryOperationGroups.primaryNavigation;\r\n\r\n\t/**\r\n\t * Gets the page context sent to associated context utilities\r\n\t * and menus.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof EntityInstanceComponent\r\n\t */\r\n\tpublic get pageContext(): IDynamicComponentContext\r\n\t{\r\n\t\treturn >{\r\n\t\t\tsource: this,\r\n\t\t\tdata: {}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Sends the reset event to the navigation menu.\r\n\t *\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\tpublic closeNavigationMenu(\r\n\t\toperationMenu: OperationMenuComponent): void\r\n\t{\r\n\t\toperationMenu.reset = true;\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\toperationMenu.reset = false;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close overlay event sent from the operation menu.\r\n\t * This will emit the close overlay event to listening parent components\r\n\t * signifying that a nested operation action was performed.\r\n\t *\r\n\t * @memberof AppMenuComponent\r\n\t */\r\n\tpublic closeOverlaysEvent(): void\r\n\t{\r\n\t\tthis.closeOverlays.emit();\r\n\t}\r\n}","\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tDirective\r\n} from '@angular/core';\r\nimport {\r\n\tBaseOperationMenuDisplayDirective\r\n} from '@operation/directives/base-operation-menu-display.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tStringHelper\r\n} from '@shared/helpers/string.helper';\r\nimport {\r\n\tISecurityGroup\r\n} from '@shared/interfaces/security/security-group.interface';\r\nimport {\r\n\tIUser\r\n} from '@shared/interfaces/users/user.interface';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n/* eslint-enable max-len */\r\n\r\n/**\r\n * A base class used to handle session based user\r\n * interaction.\r\n *\r\n * @export\r\n * @class BaseSessionUserDirective\r\n * @extends {BaseOperationMenuDisplayDirective}\r\n */\r\n@Directive()\r\nexport class BaseSessionUserDirective\r\n\textends BaseOperationMenuDisplayDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of a BaseSessionUserDirective.\r\n\t *\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layouts service to use for responsive layouts.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service to use for profile menu based dynamic displays.\r\n\t * @memberof BaseSessionUserDirective\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tprivate readonly sessionService: SessionService)\r\n\t{\r\n\t\tsuper(siteLayoutService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the user used in this session user display.\r\n\t *\r\n\t * @returns {IUser | null} The session service\r\n\t * user displayed in this profile.\r\n\t * @memberof BaseSessionUserDirective\r\n\t */\r\n\tpublic get user(): IUser | null\r\n\t{\r\n\t\treturn this.sessionService.user;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the user email address MD5 hash for this session user.\r\n\t *\r\n\t * @readonly\r\n\t * @type {string}\r\n\t * @returns {string} A MD5 hash representing the user email.\r\n\t * @memberof BaseSessionUserDirective\r\n\t */\r\n\tpublic get userEmailHash(): string\r\n\t{\r\n\t\treturn StringHelper.getHash(\r\n\t\t\tStringHelper.trim(\r\n\t\t\t\tthis.user.data.email)\r\n\t\t\t\t.toLowerCase());\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the user display name for this session\r\n\t * user display.\r\n\t *\r\n\t * @returns {string} The session service\r\n\t * user display name for this profile.\r\n\t * @memberof BaseSessionUserDirective\r\n\t */\r\n\tpublic get userDisplayName(): string\r\n\t{\r\n\t\tif (this.user.data.firstName)\r\n\t\t{\r\n\t\t\treturn this.user.data.firstName\r\n\t\t\t\t+ ' '\r\n\t\t\t\t+ this.user.data.lastName;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn this.user.data.userName;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the user display title for this profile\r\n\t * menu display.\r\n\t *\r\n\t * @returns {string} The session service\r\n\t * user display title for this profile.\r\n\t * @memberof BaseSessionUserDirective\r\n\t */\r\n\tpublic get userTitle(): string\r\n\t{\r\n\t\tif (this.user.membershipSecurityGroups == null)\r\n\t\t{\r\n\t\t\treturn AppConstants.empty;\r\n\t\t}\r\n\r\n\t\tconst mappedSecurityGroups: string[] =\r\n\t\t\tthis.user.membershipSecurityGroups\r\n\t\t\t\t.map((securityGroup: ISecurityGroup) =>\r\n\t\t\t\t\tsecurityGroup.name);\r\n\r\n\t\tif (mappedSecurityGroups\r\n\t\t\t.indexOf(AppConstants.securityGroups.administrators) !== -1)\r\n\t\t{\r\n\t\t\treturn AppConstants.securityGroups.administratorDisplay;\r\n\t\t}\r\n\t\telse if (mappedSecurityGroups\r\n\t\t\t.indexOf(AppConstants.securityGroups.supportUsers) !== -1)\r\n\t\t{\r\n\t\t\treturn AppConstants.securityGroups.supportUserDisplay;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn AppConstants.securityGroups.userDisplay;\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tBaseSessionUserDirective\r\n} from '@operation/directives/base-session-user.directive';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime,\r\n\tdistinctUntilChanged\r\n} from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-inline-profile',\r\n\ttemplateUrl: './app-profile.component.html',\r\n\tstyleUrls: ['./app-profile.component.scss']\r\n})\r\n\r\n/**\r\n * A component used to display and handle menu based\r\n * profile actions and navigation.\r\n *\r\n * @export\r\n * @class AppProfileComponent\r\n * @extends {BaseSessionUserComponent}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\nexport class AppProfileComponent\r\n\textends BaseSessionUserDirective\r\n\timplements OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of an AppProfileComponent.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service to use for side menu profile displays.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tsessionService: SessionService,\r\n\t\tsiteLayoutService: SiteLayoutService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tsessionService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the close overlay event emitter which is used to send to\r\n\t * listening components that an action was performed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\t@Output() public closeOverlays: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the event that will be emitted to all listening components\r\n\t * when the active value of this profile has changed.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\t@Output() public activeProfileChanged: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Gets or sets the value used to define if the profile display\r\n\t * is expanded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic active: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the debounced subject which is used to debounce\r\n\t * the active value.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic activeChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Sets the debounce time used when settinng the active value.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic readonly debounceTime: number = 25;\r\n\r\n\t/**\r\n\t * Handles the site layout change event which is called\r\n\t * when the site layout service has altered it's variables.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.siteLayoutChangedEvent)\r\n\tpublic siteLayoutChanged(): void\r\n\t{\r\n\t\tthis.closeListWhenActive();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the hide associated menus event.\r\n\t * This is used to close this list when an associated menu is\r\n\t * opened, such as a sibling navigation menu.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.hideAssociatedMenusEvent,\r\n\t\t[AppEventParameterConstants.id])\r\n\tpublic hideAssociatedMenus(\r\n\t\t_controlIdentifer: string): void\r\n\t{\r\n\t\tthis.closeListWhenActive();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on initialization event.\r\n\t * This is used to set the active changed debounce.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.activeChanged.pipe(\r\n\t\t\tdebounceTime(this.debounceTime),\r\n\t\t\tdistinctUntilChanged())\r\n\t\t\t.subscribe((newValue: boolean) =>\r\n\t\t\t{\r\n\t\t\t\tthis.active = newValue;\r\n\t\t\t\tthis.activeProfileChanged.emit(this.active);\r\n\t\t\t});\r\n\r\n\t\tthis.activeChanged.next(this.active);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy event.\r\n\t * This is used to complete the active changed debounce.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.activeChanged.complete();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on profile display click event by setting the\r\n\t * profile display as expanded or collapsed.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic profileDisplayClick(): void\r\n\t{\r\n\t\tthis.activeChanged.next(!this.active);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the close list event sent from the operation menu.\r\n\t * This is used to close this profile operation list and is sent when a\r\n\t * click outside or operation menu action event occurs.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tpublic closeList(): void\r\n\t{\r\n\t\tthis.activeChanged.next(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Closes List when active if true.\r\n\t *\r\n\t * @memberof AppProfileComponent\r\n\t */\r\n\tprivate closeListWhenActive(): void\r\n\t{\r\n\t\tif (this.active !== true)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.closeList();\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n*/\r\n\r\nimport {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOutput\r\n} from '@angular/core';\r\nimport {\r\n\tBaseSessionUserDirective\r\n} from '@operation/directives/base-session-user.directive';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\n\r\n@Component({\r\n\tselector: 'app-topbar',\r\n\ttemplateUrl: './app-topbar.component.html',\r\n\tstyleUrls: ['./app-topbar.component.scss']\r\n})\r\n\r\n/**\r\n * A component used to display and handle top bar based\r\n * actions and navigation.\r\n *\r\n * @export\r\n * @class AppTopBarComponent\r\n * @extends {BaseSessionUserComponent}\r\n */\r\nexport class AppTopBarComponent\r\n\textends BaseSessionUserDirective\r\n{\r\n\t/**\r\n\t * Creates an instance of an AppTopBarComponent.\r\n\t *\r\n\t * @param {SessionService} sessionService\r\n\t * The session service to use for top bar displays.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service to use for responsive layouts.\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tsessionService: SessionService,\r\n\t\tsiteLayoutService: SiteLayoutService)\r\n\t{\r\n\t\tsuper(\r\n\t\t\tsiteLayoutService,\r\n\t\t\tsessionService);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the rotate menu button value.\r\n\t * This is used to define if the menu display should\r\n\t * have a rotate animation (Used when expanded).\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\t@Input() public rotateMenuButton: boolean = false;\r\n\r\n\t/**\r\n\t * Sets the event emitter for the toggle overlay menu event so this\r\n\t * can be sent to listening parent components.\r\n\t *\r\n\t * @type {EventEmitter}\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\t@Output() public overlayMenuButtonClick: EventEmitter =\r\n\t\tnew EventEmitter();\r\n\r\n\t/**\r\n\t * Defines the profile group identifier that will\r\n\t * be displayed via this operation group display component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\tpublic profileGroupName: string =\r\n\t\tAppConstants.primaryOperationGroups.profileActions;\r\n\r\n\t/**\r\n\t * Defines the settings group identifier that will\r\n\t * be displayed via this operation group display component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\tpublic settingsGroupName: string =\r\n\t\tAppConstants.primaryOperationGroups.settingActions;\r\n\r\n\t/**\r\n\t * Handles the overlay menu toggle buttonn click event.\r\n\t * This sends the overlay menu button click event to the\r\n\t * parent application component.\r\n\t *\r\n\t * @param {Event} event\r\n\t * The click event sent when clicking the overlay menu button.\r\n\t * @memberof AppTopBarComponent\r\n\t */\r\n\tpublic overlayMenuButtonClicked(\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tthis.overlayMenuButtonClick.emit(event);\r\n\r\n\t\tEventHelper.dispatchHideAssociatedMenusEvent(\r\n\t\t\t'primary-navigation');\r\n\t}\r\n}","
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\r\n\t\t\r\n\t
    \r\n
    \r\n\r\n","\r\n\r\n\r\n
    \r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t\t\r\n\t\t\r\n\t
    \r\n\r\n\t
    \r\n\t
    \r\n\r\n\t
    \r\n\t
    \r\n\r\n\t\r\n\t\r\n
    ","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAfterViewInit,\r\n\tComponent,\r\n\tHostListener,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tRenderer2,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport {\r\n\tTitle\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tActivatedRoute,\r\n\tNavigationStart,\r\n\tRouter\r\n} from '@angular/router';\r\nimport {\r\n\tContentAnimation\r\n} from '@shared/app-animations';\r\nimport {\r\n\tAppEventParameterConstants\r\n} from '@shared/constants/app-event-parameter.constants';\r\nimport {\r\n\tAppEventConstants\r\n} from '@shared/constants/app-event.constants';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tWindowEventConstants\r\n} from '@shared/constants/window-event.constants';\r\nimport {\r\n\tDateHelper\r\n} from '@shared/helpers/date.helper';\r\nimport {\r\n\tEventHelper\r\n} from '@shared/helpers/event.helper';\r\nimport {\r\n\tObjectHelper\r\n} from '@shared/helpers/object.helper';\r\nimport {\r\n\tIDynamicComponentContext\r\n} from '@shared/interfaces/application-objects/dynamic-component-context.interface';\r\nimport {\r\n\tLoggerService\r\n} from '@shared/services/logger.service';\r\nimport {\r\n\tModuleService\r\n} from '@shared/services/module.service';\r\nimport {\r\n\tSessionRefreshService\r\n} from '@shared/services/session-refresh.service';\r\nimport {\r\n\tSessionService\r\n} from '@shared/services/session.service';\r\nimport {\r\n\tMenuOrientation,\r\n\tSiteLayoutService\r\n} from '@shared/services/site-layout.service';\r\nimport {\r\n\tStonlyService\r\n} from '@shared/services/stonly.service';\r\nimport {\r\n\tUpdateService\r\n} from '@shared/services/update.service';\r\nimport {\r\n\tSettings\r\n} from 'luxon';\r\nimport {\r\n\tMenuItem,\r\n\tMessageService\r\n} from 'primeng/api';\r\nimport {\r\n\tScrollPanel\r\n} from 'primeng/scrollpanel';\r\nimport {\r\n\tSubject,\r\n\tdebounceTime\r\n} from 'rxjs';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\n\r\n/* eslint-enable max-len */\r\n\r\n@Component({\r\n\tselector: 'app-root',\r\n\ttemplateUrl: './app.component.html',\r\n\tstyleUrls: [\r\n\t\t'./app.component.scss'\r\n\t],\r\n\tproviders: [\r\n\t\tMessageService\r\n\t],\r\n\tanimations: [\r\n\t\tContentAnimation\r\n\t]\r\n})\r\n\r\n/**\r\n * The primary application component class.\r\n *\r\n * @export\r\n * @class AppComponent\r\n * @implements {AfterViewInit}\r\n * @implements {OnInit}\r\n */\r\nexport class AppComponent implements AfterViewInit, OnInit, OnDestroy\r\n{\r\n\t/**\r\n\t * Creates an instance of the application component.\r\n\t *\r\n\t * @param {Renderer2} renderer\r\n\t * The custom renderer for this application component.\r\n\t * @param {LoggerService} logger\r\n\t * The logger service for this application component.\r\n\t * @param {SessionService} sessionService\r\n\t * The session service for this application component.\r\n\t * @param {SiteLayoutService} siteLayoutService\r\n\t * The site layout service for this application component.\r\n\t * @param {Title} titleService\r\n\t * The title service for this application component.\r\n\t * @param {UpdateService} updateService\r\n\t * The service that monitors for application updates.\r\n\t * @param {SessionRefreshService} sessionRefreshService\r\n\t * The service that monitors for application updates.\r\n\t * @param {ActivatedRoute} route\r\n\t * The activated route that opened this component.\r\n\t * @param {Router} router\r\n\t * The router service.\r\n\t * @param {ModuleService} moduleService\r\n\t * The module service.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic constructor(\r\n\t\tpublic renderer: Renderer2,\r\n\t\tpublic logger: LoggerService,\r\n\t\tpublic sessionService: SessionService,\r\n\t\tpublic siteLayoutService: SiteLayoutService,\r\n\t\tpublic titleService: Title,\r\n\t\tpublic updateService: UpdateService,\r\n\t\tpublic sessionRefreshService: SessionRefreshService,\r\n\t\tpublic router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic moduleService: ModuleService,\r\n\t\tpublic stonlyService: StonlyService)\r\n\t{\r\n\t\tthis.router.events.subscribe(\r\n\t\t\tthis.handleRouteChange.bind(this));\r\n\t\tthis.route.params.subscribe(\r\n\t\t\tthis.handleRouteChange.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets or sets the layout menu scroller element reference\r\n\t * from the dom.\r\n\t *\r\n\t * @type {ScrollPanel}\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@ViewChild('layoutMenuScroller')\r\n\tpublic layoutMenuScrollerViewChild: ScrollPanel;\r\n\r\n\t/**\r\n\t * Gets or sets the base page's content context.\r\n\t *\r\n\t * @type {IDynamicComponentContext}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic contentContext: IDynamicComponentContext;\r\n\r\n\t/**\r\n\t * Gets or sets the rotate menu button value.\r\n\t * This is used to define if the menu display should\r\n\t * have a rotate animation (Used when expanded).\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic rotateMenuButton: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the overlay menu button active value.\r\n\t * This is used to define if the site is currently displaying\r\n\t * and overlay navigation menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic overlayMenuActive: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the modal display value of chat. When in mobile views\r\n\t * this chat will add a minimize button to the chat modal we need to\r\n\t * override.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic chatModalDisplayed: boolean = false;\r\n\r\n\t/**\r\n\t * Gets or sets the inactive desktop menu display value.\r\n\t * This is used to define if the primary navigation menu\r\n\t * should be hidden.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic staticMenuDesktopInactive: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the inactive mobile menu display value.\r\n\t * This is used to define if the primary navigation menu\r\n\t * should be displayed.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic staticMenuMobileActive: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the boolean value signifying that the context\r\n\t * menu is open.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic contextMenuDisplayed: boolean;\r\n\r\n\t/**\r\n\t * Gets or sets the layout menu scroll element reference.\r\n\t *\r\n\t * @type {HTMLDivElement}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic layoutMenuScroller: HTMLDivElement;\r\n\r\n\t/**\r\n\t * Gets or sets the layout changed subject which is called\r\n\t * when the site layout sizes are changed in this component.\r\n\t * This updates the site layout service and notifies all observers\r\n\t * that the site layout has changed post data updates.\r\n\t *\r\n\t * @type {Subject}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic layoutChanged: Subject = new Subject();\r\n\r\n\t/**\r\n\t * Gets or sets the value used to define if the profile display\r\n\t * is expanded.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic activeProfileMenu: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the base model used to display the profile operation\r\n\t * group. This item will display prior to the data\r\n\t * load of the operation group.\r\n\t *\r\n\t * @type {MenuItem[]}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic initialProfileModel: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * Gets or sets the profile group identifier that will\r\n\t * be displayed via this operation group display component.\r\n\t *\r\n\t * @type {string}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic profileGroupName: string =\r\n\t\tAppConstants.primaryOperationGroups.profileActions;\r\n\r\n\t/**\r\n\t * Gets or sets the value used to reset the profile operation menu.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic resetProfileMenu: boolean = false;\r\n\r\n\t/**\r\n\t * Gets the current count of pinned drawers that are\r\n\t * consuming content width.\r\n\t *\r\n\t * @type {number}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic get pinnedDrawerCount(): number\r\n\t{\r\n\t\treturn this.siteLayoutService.pinnedDrawerCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the current count of pinned drawers that are\r\n\t * consuming content width.\r\n\t *\r\n\t * @param {number} pinnedDrawerCount\r\n\t * The count of pinned drawers currently displayed.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic set pinnedDrawerCount(\r\n\t\tdrawerCount: number)\r\n\t{\r\n\t\tconst countChanged: boolean =\r\n\t\t\tthis.siteLayoutService.pinnedDrawerCount !== drawerCount;\r\n\r\n\t\tif (countChanged === true)\r\n\t\t{\r\n\t\t\tthis.siteLayoutService.pinnedDrawerCount = drawerCount;\r\n\t\t\tthis.layoutChanged.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the set content context event. This will set the\r\n\t * application level content context.\r\n\t *\r\n\t * @param {IDynamicComponentContext} contentContext\r\n\t * The main content context of this application.\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.setContentContextEvent,\r\n\t\t[AppEventParameterConstants.contentContext])\r\n\tpublic displayContextMenuOverlay(\r\n\t\tcontentContext: IDynamicComponentContext): void\r\n\t{\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\tthis.contentContext = contentContext;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the context menu active event. This is true when the\r\n\t * context menu is open.\r\n\t *\r\n\t * @param {boolean} active\r\n\t * If true, the context menu is open.\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.contextMenuActiveEvent,\r\n\t\t[AppEventParameterConstants.active])\r\n\tpublic contextMenuActive(\r\n\t\tactive: boolean): void\r\n\t{\r\n\t\tif (this.contextMenuDisplayed !== active)\r\n\t\t{\r\n\t\t\tthis.contextMenuDisplayed = active;\r\n\t\t\tthis.layoutChanged.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the chat modal displayed event.\r\n\t * Sets the chat modal window display value. If this is true, the minimize\r\n\t * added to the chat window will be covered so minimize will close the\r\n\t * drawer. This is only visible in 600px or smaller views while\r\n\t * the chat modal is displayed in an overlay drawer.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.chatModalDisplayedEvent,\r\n\t\t[AppEventParameterConstants.displayed])\r\n\tpublic onChatModalDisplayed(\r\n\t\tdisplayed: boolean): void\r\n\t{\r\n\t\tsetTimeout(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\tthis.chatModalDisplayed = displayed;\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on window resize event.\r\n\t * Dispatches any layout changed updates to listening subjects.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tWindowEventConstants.resizeEvent)\r\n\tpublic onResize(): void\r\n\t{\r\n\t\tthis.hideOverlayMenu();\r\n\t\tthis.layoutChanged.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the navigate to access denied event by navigating to the\r\n\t * generic access denied page. This will replace the current url\r\n\t * so that back will not try to access the page that denied access\r\n\t * in the history.\r\n\t *\r\n\t * @param {string} route\r\n\t * The route to be displayed.\r\n\t * @param {string} resources\r\n\t * The set of resources associated with this access denied display.\r\n\t * @param {string} clientMessage\r\n\t * If sent this will add a client message to the access denied display. This\r\n\t * value defaults to an empty string.\r\n\t * @memberof AppComponent\r\n\t */\r\n\t@HostListener(\r\n\t\tAppEventConstants.navigateToAccessDeniedEvent,\r\n\t\t[\r\n\t\t\tAppEventParameterConstants.route,\r\n\t\t\tAppEventParameterConstants.resources,\r\n\t\t\tAppEventParameterConstants.clientMessage,\r\n\t\t])\r\n\tpublic navigateToAccessDenied(\r\n\t\troute: string,\r\n\t\tresources: string[],\r\n\t\tclientMessage: string = AppConstants.empty): void\r\n\t{\r\n\t\tconst moduleName: string =\r\n\t\t\tthis.moduleService.name.toLowerCase() ===\r\n\t\t\t\tAppConstants.moduleNames.dashboard\r\n\t\t\t\t? AppConstants.empty\r\n\t\t\t\t: this.moduleService.name.charAt(0).toLowerCase()\r\n\t\t\t\t\t+ this.moduleService.name.slice(1);\r\n\r\n\t\tthis.router.navigate(\r\n\t\t\t[\r\n\t\t\t\t`${moduleName}/accessDenied`\r\n\t\t\t],\r\n\t\t\t{\r\n\t\t\t\tskipLocationChange: true,\r\n\t\t\t\tqueryParams:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trouteData:\r\n\t\t\t\t\t\t\tObjectHelper.mapRouteData(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\troute: route,\r\n\t\t\t\t\t\t\t\t\tresources: resources,\r\n\t\t\t\t\t\t\t\t\tclientMessage: clientMessage\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * On initialization event.\r\n\t * Initializes user layout settings.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic ngOnInit(): void\r\n\t{\r\n\t\tthis.logger.logInformation('Application component initialized ...');\r\n\r\n\t\t// Set page title based on branding\r\n\t\tthis.titleService.setTitle(\r\n\t\t\tAppConfig.settings.branding.title\r\n\t\t\t\t?? 'WaterStreet - Nautix');\r\n\r\n\t\t// If user is logged in and we have an active session then we should\r\n\t\t// Set the page layout to that users settings.\r\n\t\tif (this.sessionService.isLoggedIn)\r\n\t\t{\r\n\t\t\tthis.siteLayoutService.setFromUserSettings(\r\n\t\t\t\tthis.sessionService.user);\r\n\t\t}\r\n\r\n\t\tthis.layoutChanged.pipe(\r\n\t\t\tdebounceTime(this.siteLayoutService.debounceDelay))\r\n\t\t\t.subscribe(() =>\r\n\t\t\t{\r\n\t\t\t\tthis.setSiteLayoutVariables();\r\n\t\t\t});\r\n\r\n\t\tthis.layoutChanged.next();\r\n\r\n\t\t// Start interval based services.\r\n\t\tthis.updateService\r\n\t\t\t.start(AppConfig.settings\r\n\t\t\t\t.checkForUpdatesInterval);\r\n\r\n\t\tthis.sessionService.addLocalStorageEventListener();\r\n\t}\r\n\r\n\t/**\r\n\t * On after view initialization event.\r\n\t * Handles scrollbar setups based on menu interactions.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic ngAfterViewInit(): void\r\n\t{\r\n\t\tif (this.sessionService.isValidLoggedInAndReady)\r\n\t\t{\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.layoutMenuScrollerViewChild?.moveBar();\r\n\t\t\t\t},\r\n\t\t\t\tthis.siteLayoutService.debounceDelay);\r\n\r\n\t\t\t// Start interval based session services.\r\n\t\t\tthis.sessionRefreshService\r\n\t\t\t\t.start(AppConfig.settings\r\n\t\t\t\t\t.clientExpirationInterval);\r\n\r\n\t\t\tSettings.defaultZone = this.sessionService.systemTimeZone;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Stop interval based session services.\r\n\t\t\tthis.sessionRefreshService\r\n\t\t\t\t.stop();\r\n\r\n\t\t\tSettings.defaultZone = DateHelper.getLocalTimeZone();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the on destroy interface.\r\n\t * This completes any watched subjects to free memory.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic ngOnDestroy(): void\r\n\t{\r\n\t\tthis.layoutChanged.complete();\r\n\t\tthis.updateService.stop();\r\n\t\tthis.sessionRefreshService.stop();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the active profile changed event from the app profile.\r\n\t * Sets the display value of the profile menu.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic activeProfileChanged(\r\n\t\tactive: boolean): void\r\n\t{\r\n\t\tthis.resetProfileMenu = active;\r\n\t\tthis.activeProfileMenu = active;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the singleton variables for the site layout service\r\n\t * on a site initial load or on a layout change event.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic setSiteLayoutVariables(): void\r\n\t{\r\n\t\tconst pinnedDrawerWidth: number =\r\n\t\t\tthis.siteLayoutService.pinnedDrawerCount\r\n\t\t\t* AppConstants.staticLayoutSizes.drawerWidth;\r\n\r\n\t\tconst contextMenuCapturedWidth: number =\r\n\t\t\tthis.siteLayoutService.displayTabletView === true\r\n\t\t\t\t|| (this.siteLayoutService.displayTabletView === false\r\n\t\t\t\t\t&& this.contextMenuDisplayed !== true)\r\n\t\t\t\t? 0\r\n\t\t\t\t: AppConstants.staticLayoutSizes.expandedContextMenuWidth\r\n\t\t\t\t\t- AppConstants.staticLayoutSizes.collapsedContextMenuWidth;\r\n\r\n\t\tthis.siteLayoutService.windowWidth =\r\n\t\t\twindow.innerWidth;\r\n\t\tthis.siteLayoutService.windowHeight =\r\n\t\t\twindow.innerHeight;\r\n\t\tthis.siteLayoutService.contextMenuCapturedWidth =\r\n\t\t\tcontextMenuCapturedWidth;\r\n\t\tthis.siteLayoutService.contentWidth =\r\n\t\t\tthis.siteLayoutService.windowWidth\r\n\t\t\t\t- (pinnedDrawerWidth)\r\n\t\t\t\t- (contextMenuCapturedWidth);\r\n\t\tthis.siteLayoutService.breakpointWidth =\r\n\t\t\tthis.siteLayoutService.contentWidth\r\n\t\t\t\t+ contextMenuCapturedWidth;\r\n\t\tthis.siteLayoutService.contentCssClass =\r\n\t\t\tthis.siteLayoutService.getContentCssClass();\r\n\r\n\t\tEventHelper.dispatchSiteLayoutChangedEvent();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the click event for menu layout changes requested\r\n\t * by the user. Sets variables for defined behaviors based\r\n\t * on the menu layout selection.\r\n\t *\r\n\t * @param {any} event\r\n\t * The event passed from the menu button click event.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic overlayMenuButtonClicked(\r\n\t\tevent: Event): void\r\n\t{\r\n\t\tthis.rotateMenuButton = !this.rotateMenuButton;\r\n\r\n\t\tif (this.siteLayoutService.menuMode === MenuOrientation.OVERLAY)\r\n\t\t{\r\n\t\t\tthis.overlayMenuActive = !this.overlayMenuActive;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (!this.siteLayoutService.displayTabletView)\r\n\t\t\t{\r\n\t\t\t\tthis.staticMenuDesktopInactive =\r\n\t\t\t\t\t!this.staticMenuDesktopInactive;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.staticMenuMobileActive = !this.staticMenuMobileActive;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the overlay menu.\r\n\t *\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic hideOverlayMenu(): void\r\n\t{\r\n\t\tthis.rotateMenuButton = false;\r\n\t\tthis.overlayMenuActive = false;\r\n\t\tthis.staticMenuMobileActive = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the pinning of drawers by notifying the application\r\n\t * of a change in pinned counts. This is used to define available\r\n\t * layout space for main content.\r\n\t *\r\n\t * @param {number} pinnedDrawerCount\r\n\t * The current pinned drawer count.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic pinnedDrawerCountChanged(\r\n\t\tpinnedDrawerCount: number): void\r\n\t{\r\n\t\tthis.pinnedDrawerCount = pinnedDrawerCount;\r\n\t\tthis.layoutChanged.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the is overlay value. This defines if\r\n\t * the application is using an overlay menu display mode.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * If the application is using a overlay menu display mode.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic isOverlay(): boolean\r\n\t{\r\n\t\treturn this.siteLayoutService.menuMode === MenuOrientation.OVERLAY;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the is slim value. This defines if\r\n\t * the application is using a slim menu display mode.\r\n\t *\r\n\t * @returns {boolean}\r\n\t * If the application is using a slim menu display mode.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic isSlim(): boolean\r\n\t{\r\n\t\treturn this.siteLayoutService.menuMode === MenuOrientation.SLIM;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the menu display mode as overlay.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic changeToOverlayMenu(): void\r\n\t{\r\n\t\tthis.siteLayoutService.menuMode = MenuOrientation.OVERLAY;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the menu display mode as slim.\r\n\t *\r\n\t * @type {boolean}\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic changeToSlimMenu(): void\r\n\t{\r\n\t\tthis.siteLayoutService.menuMode = MenuOrientation.SLIM;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the route change events.\r\n\t *\r\n\t * @param {RouterEvent} routerChangeEvent\r\n\t * The router change event.\r\n\t * @memberof AppComponent\r\n\t */\r\n\tpublic handleRouteChange(\r\n\t\trouterChangeEvent: any): void\r\n\t{\r\n\t\tif (routerChangeEvent instanceof NavigationStart)\r\n\t\t{\r\n\t\t\tthis.stonlyService.closeWidget();\r\n\t\t}\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n\r\nimport {\r\n\tModuleWithProviders\r\n} from '@angular/core';\r\nimport {\r\n\tRouterModule,\r\n\tRoutes\r\n} from '@angular/router';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tInsurancePolicySearchComponent\r\n} from '@insurance/components/insurance-policy-search/insurance-policy-search.component';\r\nimport {\r\n\tAppConstants\r\n} from '@shared/constants/app.constants';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tModuleGuard\r\n} from '@shared/guards/module.guard';\r\n\r\n/* eslint-enable max-len */\r\n\r\nexport const routes: Routes = [\r\n\t{\r\n\t\tpath: 'accessDenied',\r\n\t\tcomponent: AccessDeniedComponent,\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard\r\n\t\t],\r\n\t\tdata: {\r\n\t\t\trefreshComponent: true\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tpath: 'dashboard',\r\n\t\tcomponent: GenericDashboardComponent,\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tdata: {\r\n\t\t\trefreshComponent: true\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tpath: 'organization',\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'display',\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\tAppConstants\r\n\t\t\t\t\t\t\t\t\t.securityGroups\r\n\t\t\t\t\t\t\t\t\t.organizationModuleAccess\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tpath: 'test',\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'display',\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\tAppConstants.securityGroups.administrators,\r\n\t\t\t\t\t\t\t\tAppConstants.securityGroups.users\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tpath: 'policy',\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'accessDenied',\r\n\t\t\t\tcomponent: AccessDeniedComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'dashboard/:dashboardType',\r\n\t\t\t\tcomponent: GenericDashboardComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'policySearch',\r\n\t\t\t\tcomponent: InsurancePolicySearchComponent,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'display',\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/view',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':displayComponent/edit',\r\n\t\t\t\t\t\tcomponent: GenericBasePageComponent,\r\n\t\t\t\t\t\tcanActivate: [\r\n\t\t\t\t\t\t\tAppAuthGuard\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\troles: [\r\n\t\t\t\t\t\t\t\tAppConstants.securityGroups.policyModuleAccess\r\n\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\trefreshComponent: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tpath: 'login',\r\n\t\tcomponent: LoginComponent\r\n\t},\r\n\t{\r\n\t\tpath: '',\r\n\t\tpathMatch: 'full',\r\n\t\tcomponent: GenericDashboardComponent,\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tdata: {\r\n\t\t\trefreshComponent: true\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tpath: '**',\r\n\t\tpathMatch: 'full',\r\n\t\tcomponent: GenericDashboardComponent,\r\n\t\tcanActivate: [\r\n\t\t\tAppAuthGuard,\r\n\t\t\tModuleGuard\r\n\t\t],\r\n\t\tdata: {\r\n\t\t\trefreshComponent: true\r\n\t\t}\r\n\t}\r\n];\r\n\r\nexport const AppRoutes: ModuleWithProviders =\r\n\tRouterModule.forRoot(routes);","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tActivatedRouteSnapshot,\r\n\tBaseRouteReuseStrategy\r\n} from '@angular/router';\r\n\r\n/**\r\n * The custom route reuse strategy that will reload the route when\r\n * the same base urls is used. This is used for url parameter based components.\r\n *\r\n * @export\r\n * @class AppRouteReuseStrategy\r\n * @extends {BaseRouteReuseStrategy}\r\n */\r\nexport class AppRouteReuseStrategy\r\n\textends BaseRouteReuseStrategy\r\n{\r\n\t/**\r\n\t * Implements the should reuse route interface.\r\n\t * This method will ensure that same route navigation will cause\r\n\t * a page reload when providing this custom reuse strategy.\r\n\t *\r\n\t * @param {ActivatedRouteSnapshot} future\r\n\t * The future activated route snapshot.\r\n\t * @param {ActivatedRouteSnapshot} current\r\n\t * The current activated route snapshot.\r\n\t * @returns {boolean}\r\n\t * A value signifying whether or not the route change should reload\r\n\t * the component.\r\n\t * @memberof {AppRouteReuseStrategy}\r\n\t */\r\n\tpublic shouldReuseRoute(\r\n\t\tfuture: ActivatedRouteSnapshot,\r\n\t\tcurrent: ActivatedRouteSnapshot): boolean\r\n\t{\r\n\t\treturn future.data.refreshComponent\r\n\t\t\t? false\r\n\t\t\t: future.routeConfig === current.routeConfig;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\n/* eslint-disable max-len */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport {\r\n\tAdminModule\r\n} from '@admin/admin.module';\r\nimport {\r\n\tAPP_BASE_HREF,\r\n\tLocationStrategy,\r\n\tPathLocationStrategy\r\n} from '@angular/common';\r\nimport {\r\n\tHTTP_INTERCEPTORS,\r\n\tHttpClientModule\r\n} from '@angular/common/http';\r\nimport {\r\n\tAPP_INITIALIZER,\r\n\tApplicationRef,\r\n\tErrorHandler,\r\n\tInjector,\r\n\tNgModule\r\n} from '@angular/core';\r\nimport {\r\n\tFormsModule,\r\n\tReactiveFormsModule\r\n} from '@angular/forms';\r\nimport {\r\n\tBrowserModule,\r\n\tHAMMER_GESTURE_CONFIG,\r\n\tHammerModule\r\n} from '@angular/platform-browser';\r\nimport {\r\n\tRouteReuseStrategy\r\n} from '@angular/router';\r\nimport {\r\n\tServiceWorkerModule,\r\n\tSwUpdate\r\n} from '@angular/service-worker';\r\nimport {\r\n\tApiModule\r\n} from '@api/api.module';\r\nimport {\r\n\tAccessDeniedComponent\r\n} from '@appComponents/access-denied/access-denied.component';\r\nimport {\r\n\tAppBannerDetailComponent\r\n} from '@appComponents/app-banner/app-banner-detail/app-banner-detail.component';\r\nimport {\r\n\tAppBannerComponent\r\n} from '@appComponents/app-banner/app-banner/app-banner.component';\r\nimport {\r\n\tAppDrawerComponent\r\n} from '@appComponents/app-drawers/app-drawer/app-drawer.component';\r\nimport {\r\n\tAppDrawersComponent\r\n} from '@appComponents/app-drawers/app-drawers.component';\r\nimport {\r\n\tAppFooterComponent\r\n} from '@appComponents/app-footer/app-footer.component';\r\nimport {\r\n\tAppFullScreenBannerComponent\r\n} from '@appComponents/app-full-screen-banner/app-full-screen-banner.component';\r\nimport {\r\n\tAppMenuComponent\r\n} from '@appComponents/app-menu/app-menu.component';\r\nimport {\r\n\tAppProfileComponent\r\n} from '@appComponents/app-profile/app-profile.component';\r\nimport {\r\n\tAppTopBarComponent\r\n} from '@appComponents/app-topbar/app-topbar.component';\r\nimport {\r\n\tAppUtilityMenuComponent\r\n} from '@appComponents/app-utility-menu/app-utility-menu.component';\r\nimport {\r\n\tGenericBasePageComponent\r\n} from '@appComponents/generic-base-page/generic-base-page.component';\r\nimport {\r\n\tGenericDashboardComponent\r\n} from '@appComponents/generic-dashboard/generic-dashboard.component';\r\nimport {\r\n\tLoginChangePasswordComponent\r\n} from '@appComponents/login/login-change-password.component';\r\nimport {\r\n\tLoginDialogComponent\r\n} from '@appComponents/login/login-dialog.component';\r\nimport {\r\n\tLoginResetComponent\r\n} from '@appComponents/login/login-reset.component';\r\nimport {\r\n\tLoginVerifyComponent\r\n} from '@appComponents/login/login-verify.component';\r\nimport {\r\n\tLoginComponent\r\n} from '@appComponents/login/login.component';\r\nimport {\r\n\tBiModule\r\n} from '@bi/bi.module';\r\nimport {\r\n\tClaimsModule\r\n} from '@claims/claims.module';\r\nimport {\r\n\tEntityModule\r\n} from '@entity/entity.module';\r\nimport {\r\n\tInsuranceModule\r\n} from '@insurance/insurance.module';\r\nimport {\r\n\tOperationModule\r\n} from '@operation/operation.module';\r\nimport {\r\n\tAppCacheHttpInterceptor\r\n} from '@shared/app-cache-http.interceptor';\r\nimport {\r\n\tAppDataTransformHttpInterceptor\r\n} from '@shared/app-data-transform-http.interceptor';\r\nimport {\r\n\tAppErrorHandler\r\n} from '@shared/app-error-handler';\r\nimport {\r\n\tAppHammerConfig\r\n} from '@shared/app-hammer.config';\r\nimport {\r\n\tAppSecurityHttpInterceptor\r\n} from '@shared/app-security-http.interceptor';\r\nimport {\r\n\tDisplayComponentParameterDirective\r\n} from '@shared/directives/display-component-parameter.directive';\r\nimport {\r\n\tAppAuthGuard\r\n} from '@shared/guards/app-auth.guard';\r\nimport {\r\n\tSharedModule\r\n} from '@shared/shared.module';\r\nimport {\r\n\tWorkItemsModule\r\n} from '@workItems/work-items.module';\r\nimport {\r\n\tAccountModule\r\n} from 'src/app/account/account.module';\r\nimport {\r\n\tAppComponent\r\n} from 'src/app/app.component';\r\nimport {\r\n\tAppConfig\r\n} from 'src/app/app.config';\r\nimport {\r\n\tAppRoutes\r\n} from 'src/app/app.routes';\r\nimport {\r\n\tenvironment\r\n} from 'src/environments/environment';\r\nimport {\r\n\tAppRouteReuseStrategy\r\n} from './app.route-reuse-strategy';\r\n\r\n/* eslint-enable max-len */\r\n\r\nexport function initializeApp()\r\n{\r\n\treturn async () =>\r\n\t\tAppConfig.settings = await AppConfig.load();\r\n}\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tAccountModule,\r\n\t\tAdminModule,\r\n\t\tBiModule,\r\n\t\tApiModule,\r\n\t\tAppRoutes,\r\n\t\tBrowserModule,\r\n\t\tClaimsModule,\r\n\t\tEntityModule,\r\n\t\tFormsModule,\r\n\t\tHammerModule,\r\n\t\tHttpClientModule,\r\n\t\tInsuranceModule,\r\n\t\tOperationModule,\r\n\t\tReactiveFormsModule,\r\n\t\tServiceWorkerModule.register(\r\n\t\t\t'ngsw-worker.js',\r\n\t\t\t{\r\n\t\t\t\tenabled: environment.production\r\n\t\t\t}),\r\n\t\tSharedModule,\r\n\t\tWorkItemsModule\r\n\t],\r\n\tdeclarations: [\r\n\t\tAccessDeniedComponent,\r\n\t\tAppBannerComponent,\r\n\t\tAppBannerDetailComponent,\r\n\t\tAppComponent,\r\n\t\tAppDrawerComponent,\r\n\t\tAppDrawersComponent,\r\n\t\tAppFooterComponent,\r\n\t\tAppFullScreenBannerComponent,\r\n\t\tAppMenuComponent,\r\n\t\tAppProfileComponent,\r\n\t\tAppUtilityMenuComponent,\r\n\t\tAppTopBarComponent,\r\n\t\tDisplayComponentParameterDirective,\r\n\t\tGenericBasePageComponent,\r\n\t\tGenericDashboardComponent,\r\n\t\tLoginChangePasswordComponent,\r\n\t\tLoginComponent,\r\n\t\tLoginDialogComponent,\r\n\t\tLoginResetComponent,\r\n\t\tLoginVerifyComponent\r\n\t],\r\n\tproviders: [\r\n\t\tAppAuthGuard,\r\n\t\tAppConfig,\r\n\t\tApplicationRef,\r\n\t\tSwUpdate,\r\n\t\t{\r\n\t\t\tprovide: APP_BASE_HREF,\r\n\t\t\tuseValue: '/'\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\tuseFactory: initializeApp,\r\n\t\t\tdeps: [AppConfig],\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: ErrorHandler,\r\n\t\t\tuseClass: AppErrorHandler\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HAMMER_GESTURE_CONFIG,\r\n\t\t\tuseClass: AppHammerConfig\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: AppSecurityHttpInterceptor,\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: AppCacheHttpInterceptor,\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: AppDataTransformHttpInterceptor,\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: LocationStrategy,\r\n\t\t\tuseClass: PathLocationStrategy\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: RouteReuseStrategy,\r\n\t\t\tuseClass: AppRouteReuseStrategy\r\n\t\t}\r\n\t],\r\n\tbootstrap: [\r\n\t\tAppComponent\r\n\t]\r\n})\r\n\r\n/**\r\n * The primary application module.\r\n *\r\n * @export\r\n * @class SharedModule\r\n */\r\nexport class AppModule\r\n{\r\n\t/**\r\n\t * Initializes a new instance of the AppModule class.\r\n\t *\r\n\t * @param {Injector} injector The injector.\r\n\t * @memberof AppModule\r\n\t */\r\n\tpublic constructor(\r\n\t\tinjector: Injector)\r\n\t{\r\n\t\tAppModule.injector = injector;\r\n\t}\r\n\r\n\t/**\r\n\t* Allows for retrieving singletons using `AppModule.injector.get(MyService)`\r\n\t* This is good to prevent injecting the service as constructor parameter.\r\n\t*/\r\n\tpublic static injector: Injector;\r\n}\r\n\r\n/**\r\n * Global declaration for the module.\r\n */\r\ndeclare global\r\n{\r\n\t/**\r\n\t * An interface to expand the window accessiability.\r\n\t *\r\n\t * @interface Window\r\n\t */\r\n\tinterface Window\r\n\t{\r\n\t\t/**\r\n\t\t * The Genesys object.\r\n\t\t *\r\n\t\t * @type {any}\r\n\t\t * @memberof Window\r\n\t\t */\r\n\t\tGenesys: any;\r\n\r\n\t\t/**\r\n\t\t * The stonly widget id.\r\n\t\t *\r\n\t\t * @type {string}\r\n\t\t * @memberof Window\r\n\t\t */\r\n\t\tSTONLY_WID: string;\r\n\r\n\t\t/**\r\n\t\t * The stonly widget object.\r\n\t\t *\r\n\t\t * @type {any}\r\n\t\t * @memberof Window\r\n\t\t */\r\n\t\tStonlyWidget: any;\r\n\t}\r\n}","/**\r\n * @copyright WaterStreet. All rights reserved.\r\n */\r\n\r\nimport {\r\n\tenableProdMode\r\n} from '@angular/core';\r\nimport {\r\n\tplatformBrowserDynamic\r\n} from '@angular/platform-browser-dynamic';\r\nimport 'hammerjs';\r\nimport {\r\n\tAppModule\r\n} from 'src/app/app.module';\r\nimport {\r\n\tenvironment\r\n} from 'src/environments/environment';\r\n\r\nif (environment.production)\r\n{\r\n\tenableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n\t.bootstrapModule(AppModule)\r\n\t.catch(err => console.log(err));\r\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup ){\n listTagVal += this.j2x(item, level + 1).val;\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Guid = /** @class */ (function () {\r\n function Guid(guid) {\r\n if (!guid) {\r\n throw new TypeError(\"Invalid argument; `value` has no value.\");\r\n }\r\n this.value = Guid.EMPTY;\r\n if (guid && Guid.isGuid(guid)) {\r\n this.value = guid;\r\n }\r\n }\r\n Guid.isGuid = function (guid) {\r\n var value = guid.toString();\r\n return guid && (guid instanceof Guid || Guid.validator.test(value));\r\n };\r\n Guid.create = function () {\r\n return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\"));\r\n };\r\n Guid.createEmpty = function () {\r\n return new Guid(\"emptyguid\");\r\n };\r\n Guid.parse = function (guid) {\r\n return new Guid(guid);\r\n };\r\n Guid.raw = function () {\r\n return [Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\");\r\n };\r\n Guid.gen = function (count) {\r\n var out = \"\";\r\n for (var i = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n };\r\n Guid.prototype.equals = function (other) {\r\n // Comparing string `value` against provided `guid` will auto-call\r\n // toString on `guid` for comparison\r\n return Guid.isGuid(other) && this.value === other.toString();\r\n };\r\n Guid.prototype.isEmpty = function () {\r\n return this.value === Guid.EMPTY;\r\n };\r\n Guid.prototype.toString = function () {\r\n return this.value;\r\n };\r\n Guid.prototype.toJSON = function () {\r\n return {\r\n value: this.value\r\n };\r\n };\r\n Guid.validator = new RegExp(\"^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$\", \"i\");\r\n Guid.EMPTY = \"00000000-0000-0000-0000-000000000000\";\r\n return Guid;\r\n}());\r\nexports.Guid = Guid;\r\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar dereference_1 = require(\"./src/dereference\");\r\nexports.dereference = dereference_1.dereference;\r\nvar traverse_1 = require(\"./src/traverse\");\r\nexports.traverse = traverse_1.traverse;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction clone(object) {\r\n return JSON.parse(JSON.stringify(object));\r\n}\r\nexports.clone = clone;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar clone_1 = require(\"./clone\");\r\nvar resolve_1 = require(\"./resolve\");\r\nfunction dereference(object) {\r\n if (object && typeof object === 'object') {\r\n var duplicate = clone_1.clone(object);\r\n return clone_1.clone(resolve_1.resolve(duplicate));\r\n }\r\n return clone_1.clone(object);\r\n}\r\nexports.dereference = dereference;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction getProperties(object) {\r\n return Object.getOwnPropertyNames(object);\r\n}\r\nexports.getProperties = getProperties;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar getProperties_1 = require(\"./getProperties\");\r\nvar traverse_1 = require(\"./traverse\");\r\nvar $ref = '$ref';\r\nfunction resolve(object, root, memory) {\r\n if (root === void 0) { root = object; }\r\n if (memory === void 0) { memory = {}; }\r\n if (object !== null && typeof object === 'object') {\r\n var properties = getProperties_1.getProperties(object);\r\n if (properties.includes($ref)) {\r\n if (properties.length !== 1) {\r\n throw new Error(\"References cannot have sibling properties \" + object);\r\n }\r\n if (memory[object.$ref] !== undefined) {\r\n object = memory[object.$ref];\r\n }\r\n else {\r\n var ref = traverse_1.traverse(root, object.$ref);\r\n object = memory[object.$ref] = resolve(ref, root, memory);\r\n }\r\n }\r\n else {\r\n properties.forEach(function (p) { return object[p] = resolve(object[p], root, memory); });\r\n }\r\n }\r\n return object;\r\n}\r\nexports.resolve = resolve;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction toString(object) {\r\n return JSON.stringify(object, null, 2);\r\n}\r\nexports.toString = toString;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar toString_1 = require(\"./toString\");\r\nfunction traverse(object, pointer) {\r\n var ref = pointer.split('#');\r\n var _a = isFragment(pointer) ? [ref[0], ref[1], decodeURIComponent] : ['', ref[0], function (i) { return i; }], id = _a[0], path = _a[1], decoder = _a[2];\r\n if (id !== '' && id !== object.id) {\r\n throw new Error(\"The library does not support foreign references \" + pointer);\r\n }\r\n var parts = path.split('/');\r\n if (!parts.length || parts[0] !== '') {\r\n throw new Error(\"Bad JSON pointer \" + pointer);\r\n }\r\n return stepThrough(object, parts.slice(1), decoder);\r\n}\r\nexports.traverse = traverse;\r\nfunction isFragment(pointer) {\r\n if (!pointer.includes('#')) {\r\n return false;\r\n }\r\n if (pointer.match(/#/g).length === 1) {\r\n return true;\r\n }\r\n throw new Error(\"Bad URI fragment identifier \" + pointer);\r\n}\r\nexports.isFragment = isFragment;\r\nfunction stepThrough(object, keys, decoder) {\r\n if (decoder === void 0) { decoder = decodeURIComponent; }\r\n if (!keys.length) {\r\n return object;\r\n }\r\n var key = decoder(keys.shift()).replace(/~0/g, '~').replace(/~1/g, '/');\r\n if (object[key] === undefined) {\r\n throw new Error(\"Object does not have a property of '\" + key + \"' \" + toString_1.toString(object));\r\n }\r\n return stepThrough(object[key], keys, decoder);\r\n}\r\nexports.stepThrough = stepThrough;\r\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\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 */\n function 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\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function 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\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 */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\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 */\n function 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\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\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 */\n function 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\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 */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\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 */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\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 */\n function 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\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\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 */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\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 */\n function 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\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\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 */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\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 */\n function 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\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\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 */\n function 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\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\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 */\n function 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\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function 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\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\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 */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\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 */\n function 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\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\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 */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\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 */\n function 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\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\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 * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\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 */\n function 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\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\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 */\n var 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\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\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 */\n function 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\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\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 */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\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 */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\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 */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\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 */\n function 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\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\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 */\n function 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\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\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 */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\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 */\n function 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\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 */\n function 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\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\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 */\n function 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\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\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 */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\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 */\n function 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\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\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 */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\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 */\n function 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\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\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 */\n var 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\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 */\n function 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\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\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 */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\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 */\n function 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`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\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 * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

    ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\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 omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\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 */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\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 * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\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 assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '